| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
|
| | |
|
|\|
| |
| |
| | |
ipcpd: Refactor normal ipcp, initial commit
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|/
|
|
|
|
|
|
|
|
| |
Now correctly relays the qoscube end-to-end in the stack.
A simple function specifying the cube in the spec is used for initial
testing.
The translation is now done in dev.c, but it could be moved elsewhere
when qos cabability matures and the need arises.
|
| |
|
|
|
|
|
|
| |
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 avoids normal ipcps using the flat address policy having a high
probability for picking the same address when created from a script.
|
|\
| |
| |
| | |
ipcpd: Fix missing return in ribmgr
|
| | |
|
|/
|
|
|
| |
This corrects the license statements on all files. Installed headers
are LGPLv2.1, the rest of the code is GPLv2.
|
|
|
|
|
| |
Refactors the normal IPCP fmgr and ribmgr, and modifies the API for
cdap so that no callbacks are needed.
|
|
|
|
|
|
|
| |
This adds a hash table that takes 64-bit integers as key and uses
separate chaining on collision. It also adds the PDU Forwarding
Function, which the Flow Manager can use to lookup the fd towards the
next hop. Routing policies will add/update/remove entries in the PFF.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Receiver timeouts can now be set on a flow using the flow_set_timeout
function. Specifying NULL disables the timeout. The flow_get_timeout
function gets the value for the timeout.
This commit also deprecates fcntl in favor of flow_get_flags and
flow_set_flags functions.
struct qos_spec is typedef'd as a qosspec_t.
The tools and cdap.c are updated to use the new API.
Fixes a bug in operf client where the client's writer thread wouldn't
cancel on SIGINT.
|
|\
| |
| |
| | |
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.
|
|
|
|
|
| |
Fixes issues with uint64_t not corresponding with unsigned long in
printf statements. Reorganises a calculation to reduce overflows.
|
|
|
|
|
| |
This adds a directory to the normal IPCP that maps names on IPCP
addresses.
|
|
|
|
|
| |
The release build failed since an assert was optimized out, which
resulted in a unused variable error.
|
|
|
|
| |
This addresses some comments after a code review by Dimitri.
|
|
|
|
|
|
|
|
| |
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 adds some helper functions to construct pathnames. Users of the
RIB manager may find these handy when constructing RIB objects.
|
|
|
|
|
|
|
| |
This changes the way RIB object attributes are set. Previously the
struct was called ro_props and it had to be allocated on the heap. Now
it follows the model of pthreads closely. This commit also changes the
callbacks of the RO subscribers to return void instead of int.
|
|
|
|
|
| |
This will add a check in the flat address policy to see if the address
is in use or not.
|
|
|
|
|
|
|
| |
The RIB manager now keeps track of ROs it has already received. The
identification of a RO it knows is kept in a struct ro id. For the
deletion of these RO ids, a timerwheel to the RIB manager. It also
deletes ROs if they have a specified timeout.
|
|
|
|
|
|
| |
This adds a syntax version to the protobuf files. The latest version
of protobuf otherwise complains that it is missing. The GPL license is
also added on files where it was missing.
|
|
|
|
|
| |
This adds the remote syncing of RIB objects. Subscribers are notified
upon receipt of new/deleted/updated RIB objects.
|
|
|
|
|
| |
This adds the ability to create/update/destroy RIB objects. Syncing
with other DIF members is not yet supported.
|
|
|
|
|
|
| |
This will simplify the CDAP API. Now the opcode has to be given when
sending a CDAP request. Before a separate operation was provided since
some of the function parameters are unused for certain commands.
|
|
|
|
|
|
| |
This adds a policy for obtaining a flat address, and thus also the
infrastructure for policies in the IPCP. The IPCP should check if the
address is available; this is currently not there yet.
|
|
|
|
| |
This fixes some bugs in connection establishment over the normal IPCP.
|
|\
| |
| |
| | |
lib: API for accepting flows with QoS
|
| | |
|
|/
|
|
|
|
|
|
|
| |
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 has the code checked with -Wcast-qual and -Wconversion flags.
These flags were removed because SWIG generated code fails.
|
|
|
|
|
| |
This reduces the risk for some bugs, for instance due to
signed/unsigned mismatches and unused variables.
|
|\
| |
| |
| | |
lib: Demultiplex the fast path
|
| |
| |
| |
| |
| |
| |
| |
| | |
The fast path will now use an incoming ring buffer per flow per
process. This necessitated the development of a new method for the
asynchronous io call, which is now based on an event queue system for
scalability (fqueue). The ipcpd's and tools have been updated to this
API.
|
|/
|
|
|
| |
There was no check to see if the normal IPCP was enrolled or not when
a flow allocation request is done.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
This is the first version of the fast path bootstrap in the normal
IPCP. It sets up a connection with the other end, and creates the
appropriate data structures. N+1 and N-1 SDUs are read and written and
passed through the right components.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
There was some crapped up indentation in the crc32 source file.
|
|\
| |
| |
| | |
ipcpd: normal: Add operations to get and set the PCI
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This adds the operations needed in the normal IPCP to get and set the
Protocol Control Information. It allows to allocate or release space
in the current DU. The struct pci can be serialized into newly
allocate space. Vice versa, a struct pci can be deserialized given a
DU. It allows for decreasing the TTL in the DU and for calculating the
CRC32. The TTL and CRC32 can now be selected when creating a new DIF.
|
|\ \
| |/
|/|
| | |
lib: Add northbound ringbuffers
|