| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
The acceptor will not log disconnects with IRMd. Unexpected
disconnects will be reported and handled by management components.
|
|
|
|
|
|
| |
This removes the logs that would print to stdout if the IPCP fails to
initialize. If the user had asked that logs would be printed to the
syslog this would be unwanted behaviour.
|
|
|
|
|
|
| |
On 32-bit systems size_t is different than on 64 bit systems. The
correct way to print a size_t is with %z. uint64_t is printed portably
with the PRIu64 macro.
|
|
|
|
|
|
|
|
| |
The IPCP will now respond with an ipcp_create_r message when it fails,
informing the IRMd.
Also adds some const qualifiers in the public headers and fixes
some formatting in dev.c.
|
|
|
|
|
|
| |
irm_bind has to be called after ipcp_init() since it targets the AP-I
and needs the pid to be registered with the IRMd. Also fixes missing
unbinding of the AP-I.
|
|
|
|
|
|
|
|
|
|
| |
This removes the logfile and outputs log messages to the logging
system. The creation of the logfiles (as well as the ap_init() call)
were moved into ipcp_init() to simplify the IPCP creation and
shutdown.
Fixes #25
Fixes #27
|
|
|
|
|
|
|
|
|
| |
The ipcp-ops header was removed and merged into ipcp.h. The common
components dif_name and ipcp_type have been moved to the main ipcp
struct. After this move, ipcp_data only contained shim information, so
it was renamed to shim_data. The ipcp_init() function checks the type
and will only include the shim_data if the type is not an IPCP_NORMAL.
All ipcps have been adapted to this change in API.
|
|
|
|
|
|
|
|
|
|
| |
This PR updates the normal IPCP to use the new RIB. The old ribmgr is
removed and replaced by a stub that needs to be implemented. All
components (dir, fmgr, frct) were adapted to the new RIB API. A lot
of functionality was moved outside of the ribmgr, such as the
addr_auth, which is now a component of the IPCP. The address is also
stored to the ipcpi struct. The irm tool has an option to set the gam
policy of the rib manager.
|
| |
|
|
|
|
|
| |
This commit adds the graph adjacency manager to the normal IPCP, which
sets up N-1 flows to other members.
|
|
|
|
|
|
|
| |
This allows IPCPs to bind a name, so that they can announce their name
to neighbors which can then allocate a flow to them. Registering of
the name happens by an administrator. It also moves the irmd_api to
common ground, since it is used by all IPCPs.
|
|
|
|
|
| |
The state of the IPCP should revert to INIT when pthread_create fails
in the normal and bootstrapping procedures.
|
|
|
|
|
|
|
| |
These operations separe the starting and joining of the main ipcp
threads into ipcp_boot() and ipcp_shutdown() operations. This allows
the proper cleanup of user data and user threads after the IPCP is
requested to shut down.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reorganizes the normal IPCP a bit to make sure internal components do
not need to access the state of the IPCP. The IPCP has now a thread
calling accept and delegating it to the correct component based on the
AE name (this used to be in the fmgr).
Internal components are initialized upon enrollment or bootstrap of
the IPCP. If a step fails, the IPCP goes back to the INIT state, if
all components boot correctly, it goes to the operational state.
RIB synchronization is still done by sending a CDAP start/stop and
syncing with a ribmgr state, but needs revision later on.
|
|
|
|
|
|
| |
The main thread will wait for the IPCP_OPERATIONAL state before
starting the fmgr main thread by calling fmgr_init(), instead of the
fmgr itself waiting for that state.
|
|
|
|
|
| |
This corrects the license statements on all files. Installed headers
are LGPLv2.1, the rest of the code is GPLv2.
|
|\
| |
| |
| | |
ipcpd: Change IPCP_RUNNING to IPCP_OPERATIONAL
|
| |
| |
| |
| | |
Changes a state of the IPCP to a more correct terminology.
|
|/
|
|
|
| |
This fixes several bad cleanups in the normal IPCP when it is shutting
down.
|
|
|
|
|
| |
This adds a directory to the normal IPCP that maps names on IPCP
addresses.
|
|
|
|
|
|
|
|
| |
This will split the IPCP state PENDING_ENROL into IPCP_CONFIG and
IPCP_BOOTING. IPCP_CONFIG is concerned only with configuring the IPCP
with the bare essence. When in IPCP_BOOTING, the IPCP will complete
its configuration by starting its policies, and thus making the IPCP
completely functioning.
|
|
|
|
| |
This fixes some bugs in connection establishment over the normal IPCP.
|
|
|
|
|
|
|
|
|
| |
This adds the ability to query IPCPs if a name can be reached through
them, e.g. if a name is available in a DIF. This means that in the
shim-udp a DNS query is performed, in the shim-eth-llc an ARP-like
query has been added, in the local a check is done to see if the name
is registered, and in the normal currently no application is reachable
through it.
|
|
|
|
|
| |
This reduces the risk for some bugs, for instance due to
signed/unsigned mismatches and unused variables.
|
|
|
|
|
|
|
|
| |
This commit will remove the RMT component from the normal IPCP, as
some of its functionality would else be duplicated in the FMGR. Now
all reading from flows, either N-1 or N+1 is done in the FMGR, then
either passed to the FRCT or a lookup is performed in the PFF (not
there yet) and the PDU is forwarded.
|
|
|
|
|
|
|
|
|
|
|
|
| |
IPCPs can now use ap_init() to initialize the memory. All flows are
accessed using flow descriptors, this greatly simplifies IPCP
development. Reverts the fast path to a single ap_rbuff per process.
Splits lib/ipcp into irmd/ipcp and lib/ipcp-dev. Adds a lib/shim-dev
holding tailored functions for shims. Moves the buffer_t to utils.h.
Fixes the shim-eth-llc length field. Removes the flow from shared.h.
Fixes #4
Fixes #5
|
|
|
|
| |
Fast path is split in north and southbound paths.
|
|
|
|
|
|
|
|
|
|
| |
The shm_du_map is renamed to shm_rdrbuff to reflect the Random
Deletion Ringbuffer used in the implementation. The close_on_exit call
is removed and SDUs are cleaned up by the application in the ap_fini()
call. This required a non-blocking peek() operation in the shm_ap_rbuff.
Some initial implementation for future support of qos cubes has been
added to the shm_rdrbuff.
|
|
|
|
| |
IPCPs will report their pid on shutdown for faster debugging.
|
|
|
|
| |
Destruction of the object in the reply stage was unsafe.
|
| |
|
|
|
|
|
|
| |
The state lock was reverted to an rwlock to avoid interference of
management functions with the fast path. IPCPs now close without
calling unsafe functions in the signal handler.
|
|
|
|
|
|
|
|
| |
This adds a condition variable with a timeout to the CDAP request so
that we can respond correctly to the answer from the remote. It also
adds a timeout to the condition variable waiting on completion of
enrollment. Furthermore, for every CDAP callback a new thread is now
spawned, to avoid deadlocking in case a callback is stuck.
|
|
|
|
|
| |
Calling api_bind during bootstrap caused the IRMd to lock up.
api_bind is now called after the normal completes bootstrapping.
|
|
|
|
|
|
|
| |
This adds a condition variable to the IPCP state, so that upon state
changes any listeners to state changes can be notified. It also
replaces the read/write lock with a mutex in order to be able to do
so.
|
|
|
|
|
| |
conf->dif_name was not copied from the dif_config gpb message.
Fixes some logs.
|
| |
|
|
|
|
|
|
|
| |
This call will allow grouping AP instances of a certain AP together
which are configured identically. Adds the bind operation to dev and
updates the applications to make use of this call. Flow_alloc is now
only called with the pid and doesn't send the apn anymore.
|
|
|
|
|
|
| |
This will notify the IRMd when the IPCP is initialized and ready to
receive messages. Previously a bootstrap could fail since the IPCP was
not listening to the socket yet.
|
|
|
|
|
|
| |
This adds the functionality of exchanging the static DIF information
between 2 DIF members. After exchange the enrollment is stopped, and
the IPCP that initiated enrollment transitions to the enrolled state.
|
|
|
|
|
|
|
| |
This will add more functionality for enrolling two normal IPCPs with
each other. Some bugs were fixed in CDAP. Now on enrolling, an IPCP
will send a START message to the other IPCP. Next step is syncing the
RIBs.
|
|
|
|
|
|
| |
This provides the normal IPCP with bootstrapping and the initial steps
for enrollment. Next step is actually reacting to an enrollment
request and sending the data transfer constants.
|
|
|
|
|
|
| |
This adds the main loop to the normal IPCP, just like it is present in
the shim IPCPs. So in essence, the normal IPCP now reacts to all
operations from ipcp.h.
|
|
|
|
|
|
|
|
|
| |
This adds the intial implementation of establishing management N-1
flows between normal IPCPs. On calling fmgr_mgmt_flow, a management
flow will be setup to a certain destination IPCP. After flow
allocation, the fd is handed to the RIB manager. The flow manager also
listens for incoming flow requests. In case they are management flows,
they are handed to the RIB manager, otherwise to the FRCT.
|
|
Basic functions for implementation of IPC processes, and
implementation of core functions of the shim IPCP over UDP. Updates
to the build system to compile these IPC processes, as well as some
fixes in the irmd (rudimentary capturing exit signals) and some fixes
in the library, mainly relating to the messaging.
Basic implementation of creation / bootstrapping / deletion of the
shim UDP. Placeholders for other functions.
|