| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
Adds a missing modulo calculation that would result in index -1 being
returned instead of zero when the ringbuffer skipped back to the
beginning.
|
|
|
|
|
|
| |
This avoids holding the long locks during accept() and alloc_res()
calls. Small reduction of time of other locks held. No changes in
locking logic.
|
|
|
|
|
| |
fd and flows are now all protected by the flows_lock while the overall
state of the AP is protected by the data_lock.
|
|
|
|
| |
The application can call accept(fd, NULL, NULL);
|
|
|
|
|
| |
cleanup of file descriptors for the shared memory.
also adds a missing NULL check and some invalidation in dev.c
|
|
|
|
|
| |
Port_id's weren't correctly released. Also removes remaining debug
logs from the library.
|
|
|
|
|
| |
Locking is required for multi-threaded applications. Flows are locked
separately. Read/Write locks are used for concurrent reads.
|
| |
|
|
|
|
|
| |
allows setting the oflags to make flow_read and flow_write blocking or
non-blocking (FLOW_O_NONBLOCK).
|
|
|
|
|
|
| |
This allows someone to disable the use of DNS in the shim UDP. It also
adds a config file specific for the shim UDP (which holds the nsupdate
location). Certain defines were also moved to the global config file.
|
|
|
|
|
| |
This commit adds locking to the IRMd with a single global lock.
It also fixes some issues in cleaning up the daemon.
|
|
|
|
|
| |
returning -1 as uint32_t leads to bugs.
also changed types in GPB to sint to use zigzag encoding.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit has a first implementation of flow allocation (the "slow
path") and read/write (the "fast path") for ouroboros. It provides
basic but unstable communications over the shared memory.
It required a lot of changes all over the stack, and fixes a number of
previously undetected issues.
This PR still need heavy revision regarding data model, locking and
cleanup.
lib/dev: modifications to the API. It now uses an ap_init() call to
set the AP name and sets the Instance ID to the pid of the process. It
also binds the AP to the shared memory and creates tables for mappings
in the fast path. A call to ap_fini() releases the resources.
lib/shm_ap_rbuff: added ring buffer for data exchange between
processes in the fast path. It passes an index in the shm_du_map.
lib/shm_du_map: rewrote API to work with calls from dev.c. Garbage
collector added. Tests updated to new API.
ipcpd/ipcp-data: removed everything related to flows, as these are
universal for all ap's and kept in ap_data (dev.c), or similar structs
for shim ipcps.
shim-udp: added flow allocator and read/write functions and shm
elements.
irmd: revised data model and structures necessary for flow allocation.
tools: echo updated to new dev.h API.
messaging system was updated to comply with new flow allocation
messages. All exchanges use pid and port_id to bootstrap the fast
path.
|
|
|
|
|
| |
flow allocation now propagates on the client side up to the IPCP.
added UNKNOWN_AP and UNKNOWN_AE definitions to dev.h
|
|
|
|
|
|
|
|
|
|
|
|
| |
Unregistering ap's now works. An AP now registers/unregisters its AP-I
by sending its AP name and its pid to the IRMd. The IPCPs register
whatevercast names. An AP name is currently mapped on a whatevercast
name represented by the same string literal. The IRMd allows
registration of only one AP-I per AP. A Name Space Management system
is needed in the processing system so we can resolve this completely.
Changing the stack to register whatevercast names required some changes
all over the ipcpd implemented and in the library.
|
|
|
|
|
| |
All messages sent to the IRMd now also get a reply back with the
result of the operation.
|
|
|
|
|
| |
IRMd and dev.c now also use GPB instead of our own ser/des. irm_msg
struct has been dropped as well as the methods associated with it.
|
|
|
|
|
|
| |
This adds several messages for the dev.h API calls to communicate with
the IRM daemon. The deserializing of these messages is still missing
and the irmd hasn't been updated with them either.
|
|
This adds a simple echo application written to show application how to
use the API. It also updates the dev.h header file with the insights
gained from performing this excercise.
|