summaryrefslogtreecommitdiff
path: root/src/ipcpd/normal/CMakeLists.txt
Commit message (Collapse)AuthorAgeFilesLines
* ipcpd: normal: Make routing a policySander Vrijders2017-05-151-4/+5
| | | | | | This makes the routing component into a policy since different approaches may exist to do this, depending on how high the rank of the DIF is.
* ipcpd: Remove FRCT from normal IPCPdimitri staessens2017-05-101-2/+0
| | | | | | | In order to ensure 100% reliable transfer, the protocol state machine that takes care of retransmission and SDU ordering has to be in the application. Flow allocation in the normal now uses fds. The PDU_type field was deprecated and AE's within the DIF can use reserved fds.
* ipcpd: normal: Split connection establishmentSander Vrijders2017-04-281-1/+2
| | | | | | Connection establishment was done at the same time as flow allocation. This splits it more cleanly, and allows to re-use the DT AE for other purposes.
* ipcpd: normal: Split flow manager into DT and FASander Vrijders2017-04-211-1/+2
| | | | | | This splits the flow manager into the Data Transfer AE, which is in charge of routing SDUs, and the Flow Allocator AE, which handles flow allocations.
* ipcpd: normal: Extract SDU scheduling componentSander Vrijders2017-04-191-0/+1
| | | | | | This extracts the SDU scheduling component out of the Flow Manager since the functionality was duplicated. For both the N-1 and N+1 flow sets an SDU scheduling component is now created.
* ipcpd: normal: Add graph regression testSander Vrijders2017-03-291-1/+1
| | | | | This adds a regression test for the graph component to test the routing table.
* ipcpd: normal: routing: Listen to RIB eventsSander Vrijders2017-03-201-1/+2
| | | | | | This lets the routing component listen to RIB events. It listens to /fsdb which is populated with FSOs. The graph that is kept within the routing component is updated depending on the event that was received.
* ipcpd: normal: Add graph structureSander Vrijders2017-03-141-0/+1
| | | | | | This adds a graph structure which will be updated by routing when it is notified about a new RIB event. The routing can then use this graph as input for calculating the shortest path to a destination.
* build: Format CMakeLists.txt filesSander Vrijders2017-03-031-4/+4
| | | | The CMakeLists files are now properly indented.
* ipcpd: normal: Deprecate CDAP flowSander Vrijders2017-03-031-1/+0
| | | | This removes the CDAP flow class, which is no longer needed.
* ipcpd: normal: Refactor application entities and add neighbors structSander Vrijders2017-03-031-0/+2
| | | | | | | | | | | | | | | | | | | | This refactors the different Application Entities of the normal IPCP. They all listen to and use the connection manager to establish new application connections. This commit also adds a neighbors struct to the normal IPCP. It contains neighbor structs that contain application connection. Notifiers can be registered in case a neighbor changes (added, removed, QoS changed). The flow manager has an instance of this neighbors struct and listens to these events to update its flow set. The routing component also listens to these events so that it can update the FSDB if needed. The flow manager now also creates the PFF instances and the routing instances per QoS cube. The RIB manager also uses this an instance of the neighbors struct and listens to neighbor events as well.
* ipcpd: normal: Add connection managerSander Vrijders2017-03-021-0/+1
| | | | | | | This adds the connection manager which allows the different AEs of the normal IPCP to register with it. An AE can then use the connection manager to allocate a flow to a neighbor, or to wait for a new connection from a neighbor.
* ipcpd: Allocation of authenticated CDAP flowsdimitri staessens2017-02-201-2/+2
| | | | | Avoids some code duplication in the normal IPCP with respect to establishing authenticated CDAP flows.
* ipcpd, lib: Revise normal IPCPdimitri staessens2017-02-061-7/+2
| | | | | | | | | | 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.
* lib: Move CRC32 implementation to librarydimitri staessens2017-01-141-1/+0
| | | | The CRC32 implementation will be used to ID objects in the RIB.
* ipcpd: normal: Create policies for GAMSander Vrijders2017-01-121-0/+1
| | | | | This allows the selection of a policy for the graph adjacency manager. Currently we only support constructing a complete graph.
* ipcpd: normal: Add graph adjacency managerSander Vrijders2017-01-091-0/+1
| | | | | This commit adds the graph adjacency manager to the normal IPCP, which sets up N-1 flows to other members.
* ipcpd: Rename normal/path to normal/pathnamedimitri staessens2016-12-281-1/+1
|
* ipcpd, lib: Refactor normal ipcp and cdapdimitri staessens2016-12-241-1/+0
| | | | | Refactors the normal IPCP fmgr and ribmgr, and modifies the API for cdap so that no callbacks are needed.
* lib, ipcpd: Add hashtable and PDU Forwarding FunctionSander Vrijders2016-12-211-0/+1
| | | | | | | 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.
* ipcpd: normal: Provide directory for registered namesSander Vrijders2016-12-021-0/+1
| | | | | This adds a directory to the normal IPCP that maps names on IPCP addresses.
* ipcpd: normal: Add helper functions for pathnamesSander Vrijders2016-11-291-0/+1
| | | | | This adds some helper functions to construct pathnames. Users of the RIB manager may find these handy when constructing RIB objects.
* ipcpd: normal: Complete flat address policySander Vrijders2016-11-291-12/+13
| | | | | This will add a check in the flat address policy to see if the address is in use or not.
* ipcpd: normal: Add syncing of RIB objectsSander Vrijders2016-11-191-1/+3
| | | | | This adds the remote syncing of RIB objects. Subscribers are notified upon receipt of new/deleted/updated RIB objects.
* ipcpd: normal: Add policy for obtaining a flat addressSander Vrijders2016-11-011-0/+2
| | | | | | 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.
* ipcpd: normal: Improve upon the internal designSander Vrijders2016-10-121-1/+0
| | | | | | | | 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.
* ipcpd: normal: Add operations to get and set the PCISander Vrijders2016-09-071-2/+4
| | | | | | | | | 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.
* ipcpd, normal: Safe handling of CDAP requestsdimitri staessens2016-08-251-0/+1
| | | | Destruction of the object in the reply stage was unsafe.
* ipcpd: normal: Add initial steps for N+1 flow allocationSander Vrijders2016-08-231-3/+7
| | | | | | | | | | | This adds the initial framework for flow allocation between two N+1 endpoints. The FMGR will receive flow allocation requests and will create a connection as a result, addressed to the right address, it will also pass a flow allocation message to this address. Upon receipt on the other side, the FMGR will be receive a flow allocation message and a pointer to a new connection. The FMGR can then accept or destroy the connection. This commit also introduces the RMT function, which is needed by the FRCT to forward its SDUs on the right file descriptor.
* ipcpd: normal: Allow exchange of static DIF informationSander Vrijders2016-08-081-1/+5
| | | | | | 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.
* ipcpd: normal: Establish N-1 management flowsSander Vrijders2016-07-141-0/+3
| | | | | | | | | 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.
* lib, ipcpd: removed du_buff and pcidimitri staessens2016-06-291-1/+0
| | | | Fixes #3
* build: addresses comments on cffd94adimitri staessens2016-06-281-1/+1
|
* build: Fix installation prefixSander Vrijders2016-06-271-1/+1
| | | | | | The installation prefix was taking a trailing backslash, while it is common not to do so. Fixed it so that any trailing backslash is removed by the compilation and installation scripts.
* build: Change install directories and set correct permissionsSander Vrijders2016-06-201-1/+1
| | | | | | | | | This sets the correct install directories for all the binaries, library and header files. It also sets the right permissions on the sockets and shared memory so that regular users can also use the ouroboros library. Root privileges are required to run the irmd. Fixes #7
* lib, ipcpd, irmd: Add QoS cube definitionSander Vrijders2016-05-141-2/+4
| | | | | | | | | | 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.
* ipcpd: initial IPC processesdimitri staessens2016-04-181-0/+32
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.