| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
| |
If a thread with a pending flow terminates, ap_fini would wait for the
condvar to destroy the flow indefinitely.
|
|
|
|
|
| |
The QoS cubes were not initialized in dev.c, which sometimes caused
segfaults in the fmgr when calling ipcp_flow_get_qoscube.
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Adds a simple cleanup handler that avoids abrupt termination during an
sdu_write call, which potentially locks up the entire system due to
the writes in the rdrbuff and rbuff not being handled as a single
transaction.
|
|\
| |
| |
| | |
irmd, ipcp: Call select on FreeBSD
|
| |
| |
| |
| |
| |
| | |
*BSD accept() doesn't timeout on the timeval set by setsockopt
SO_RCVTIMEO. The irmd and ipcp will now call select on the irmd fd
with the same timeout.
|
|\ \
| | |
| | |
| | | |
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 a segmentation fault in irm unbind api when no pid is specified
and improves the help information for bind/unbind.
|
| |
|
|
|
|
|
| |
Fixes issues with uint64_t not corresponding with unsigned long in
printf statements. Reorganises a calculation to reduce overflows.
|
|
|
|
|
| |
This removes log output in applications and some size_t printf errors
when compiling on 32 bit machines.
|
|
|
|
|
|
| |
size_t is 32 bits on those machines, failing as an argument to
printf. Some variables in oping and operf were changed to uint32_t and
uint64_t to avoid issues.
|
|
|
|
|
| |
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.
|
|\
| |
| |
| | |
Be addr pol
|
| |
| |
| |
| | |
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.
|
| |
| |
| |
| | |
Also cleans up the flow_set if an AP-I dies abruptly.
|
|/ |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
Timerwheel would skip some additions due to a missed wakeup signal.
Addition of timespecs and timevals in the time utilities would
overflow tv_nsec/tv_usec if the sum is an integer number of seconds.
|
|\
| |
| |
| | |
ipcpd: Add timerwheel
|
| |
| |
| |
| |
| | |
The timerwheel can be used to defer work to a certain timeslot in the
future.
|
|/ |
|
|
|
|
|
|
| |
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.
|
|\
| |
| |
| | |
ipcpd: normal: Add syncing of RIB objects
|
| |
| |
| |
| |
| | |
This adds the remote syncing of RIB objects. Subscribers are notified
upon receipt of new/deleted/updated RIB objects.
|
| |
| |
| |
| |
| |
| | |
Using nanosleep in between sending SDUs is not accurate enough when
sending thousands of SDUs per second. The --sleep option is added for
lowering CPU consumption in low bandwidth tests.
|
| |
| |
| |
| | |
Total SDU size (including LLC header) cannot exceed 1500 bytes.
|
| |
| |
| |
| |
| |
| | |
Now that we have an rbuff per flow per AP, there is no more need to
keep the dst_api in the rdrbuff. This also simplifies the sanitizer in
the irmd.
|
| |
| |
| |
| |
| | |
Creation and destruction of the rbuffs is now completely handled in
the irm_flow.
|
|\ \
| | |
| | |
| | | |
tools: Fix likely overflow in cbr output
|
| | | |
|
| |/
|/|
| |
| |
| | |
The IRMd should not send messages to the IPCPs after its mainloop
terminated. IPCPs should cleanup al state when they get the SIGTERM.
|
|/
|
|
|
| |
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.
|