| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
The AE name should not be passed over the layer boundaries. If an
application has more than one AE it should exchange this in CACEP.
|
|
|
|
|
| |
Copyright is set to 2016 - 2017. License text on includes and sources
in the library are changed to indicate the LGPLv2.1 license.
|
| |
|
|
|
|
|
| |
This corrects the license statements on all files. Installed headers
are LGPLv2.1, the rest of the code is GPLv2.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
This removes the parameter N-1 DIF from the enroll operation. IPCPs
should just allocate a flow to a DIF name and let the N-1 DIF resolve
it.
|
| |
|
|
|
|
| |
Changes the variable name as well to API instead of PID.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changes the IRM API after discussions with Dimitri. The register
operation is now split into a bind and register operation. The same
for unregister; unbind and unregister. PIDs are now used as the
application instance name. A name for a PID is only provided for
scriptability in bash. It is therefore also no longer passed down to
the IPCP. Every operation on an IPCP through the IRM API has to use
the PID. Quering of the PIDs by name is possible. The IRM tool has
been updated to use this new API as well. A subcommand 'ipcp' has been
added for operations that take effect on IPCPs only.
Fixes #12
|
|
|
|
|
|
| |
Functionality that was previously thought to be part of the DIF
Allocator is actually namespace management. Hence the file has been
renamed and the API updated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The registration function has been moved to the irm tool, applications
now need to be registered by an administrator. Currently only supports
one instance per registered name, and an AP can be registered under
only one name.
The irmd can now start a registered server application on demand.
For the full functionality of the tool, execute "irm register".
AP name removed from flow allocation. Flow allocation does not send
the source ap name as it is quite useless. The accept() call now only
returns the AE name.
|
|
|
|
|
|
|
|
|
| |
It uses UDP port 0x0D1F on all hosts to send and receive flow
allocation messages. It supports communication between server and
client AP over a single shim IPCP.
Implementation of full flow deallocation is pending. Both the client
and the server still have to call flow_dealloc();
|
|
|
|
|
|
| |
This fixes wrong header inclusion that would make programs which are
not developed within ouroboros fail upon compilation, since they would
not find certain headers on their system.
|
|
|
|
|
|
|
|
|
|
| |
This adds the QoS cube definition, which is an enum to select which
QoS is needed in the IPCP. An application has to use the qos_spec in
qos.h to define what it needs. The IRMd will map this unto a qos cube
definition.
Some headers are now also no longer installed on the system, since
they are only to be used within the irmd and ipcps.
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
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.
|