| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
The flow resources are Delta-t protocol machines that will time out
and free their resources without any required signaling. Flows can be
cleaned locally when the application requests it and all FRCT
instances have timed out and released their resources.
|
|
|
|
|
|
|
| |
The frct instance was previously destroyed before sending the message,
resulting in the destination address being 0 and the message getting
dropped. Some fixes in the normal for deallocation, but will require
further revision once all data transfer protocols are in place.
|
| |
|
|\
| |
| |
| | |
ipcpd: normal: Split connection establishment
|
| |
| |
| |
| |
| |
| | |
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.
|
|/
|
|
|
|
|
|
| |
The IPCP will now report the DIF name and the hash value to the IRMd
as a dif_info struct. This can later be extended to add further
capability reporting. Some bugfixes in normal.
Fixes #24
|
| |
|
|
|
|
|
|
|
| |
This adds a call ipcp_sdb_reserve to reserve memory in the rdrbuff
without directly writing to a flow. The ipcp_flow_del function was
renamed to ipcp_sdb_release. The functions operating on sdbs are moved
to their own header.
|
|
|
|
|
|
| |
The flow sets were still kept within the FA and DT components, when it
makes more sense that they are kept within the SDU scheduler
component.
|
|
|
|
|
|
| |
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: Build complete graph with gam
|
| |
| |
| |
| |
| | |
The complete policy will now build a complete graph. Currently a
simple timer is used to check the member list periodically.
|
|/
|
|
|
|
| |
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.
|
|
|
|
| |
Currently CRC32, MD5, and SHA3 (224, 256, 384 and 512 bit) are supported.
|
| |
|
|
|
|
|
|
|
|
|
| |
All information passed over the IRMd/IPCP boundary for using IPC
services (flow allocation, registration) is now hashed. This
effectively fixes the shared namespace between DIFs and the IRMDs.
This PR also fixes some API issues (adding const identifiers),
shuffles the include headers a bit and some small bugs.
|
| |
|
|
|
|
|
|
| |
An assertion was done instead of NULL check, where the FRCT instance
could legitimately be NULL, resulting in the IPCP dying when it
shouldn't.
|
|
|
|
|
| |
A missing else clause was missing in the fast path, causing the PCI to
be shrunk when it should not be. A double free has also been fixed.
|
|
|
|
|
| |
This adds a lock to prevent a race condition between flow_req_arr and
flow_alloc_resp.
|
|
|
|
|
|
|
| |
Since there are no SDUs on most QoS cubes, the fmgr was always timing
out on most QoS cubes, causing considerable delays in most SDUs. The
timeout was reset to a very small value (so the bug in glibc 2.25 will
cause lockups again).
|
| |
|
|
|
|
|
| |
This removes some logs in the graph component and replaces prints of
uin64_t variables with an architecture agnostic variant.
|
|
|
|
| |
This fixes the bug in handling multiple concurrent flow allocations.
|
|\
| |
| |
| | |
lib: Revise flow allocation API
|
| |
| |
| |
| |
| |
| | |
The flow_alloc_res and flow_alloc_resp calls have been removed. The
flow_alloc and flow_accept calls are now both blocking and take an
additional timeout argument.
|
|/ |
|
|
|
|
|
| |
The FRCT instance was not properly cleaned when the PFF could not find
the next hop.
|
|
|
|
|
|
| |
This fixes a bug in enrollment where only the first enrollment would
happen correctly since the booleans indicating whether boot, members,
and DIF name were sent were not initialized back to false.
|
|
|
|
|
| |
This adds a regression test for the graph component to test the
routing table.
|
|
|
|
|
|
| |
This turns the directed graph into an undirected one. Only one side of
the flow creates an FSDB entry. The graph structure creates an edge
object for every vertex involved when an edge is updated or removed.
|
|
|
|
| |
They were not consumed upon reading, causing the rdrbuff to fill up.
|
| |
|
| |
|
|
|
|
|
| |
The PCI was being freed by frct, but it was stack memory which was
created in the fmgr, resulting in an illegal free.
|
|
|
|
|
|
| |
The shm PCI was never initialized during flow manager init. This
commit will do that, and initialize the pdu length correctly as well,
since it was not being written into the RIB, nor read in shm_pci_init.
|
|
|
|
|
| |
The index j in the function that transforms the list of predecessors
to a routing table was incremented at the wrong time.
|
|
|
|
|
|
| |
This adds fixes the locking of the PFF which was externalized, but not
yet correctly updated within the PFF component itself and within the
flow manager.
|
|
|
|
|
|
| |
This removes the graph_add_edge operation of the graph component. The
routing component now only listens to RO_MODIFY events, and updates
the graph accordingly.
|
|
|
|
|
| |
This fixes several bugs in the ro sets, rib. And it fixes several bugs
in the graph and routing component of the normal IPCP.
|
| |
|
|
|
|
|
| |
The flow manager should clean up the buffer after the call to frct
create instance has either failed or succeeded.
|
| |
|
| |
|
|
|
|
|
|
| |
The routing now takes the results of the routing table to fill in the
forwarding table, by going through the neighbors and filling in the
right fd.
|
|
|
|
|
| |
This fixes a bad free. The table was only freed if it was NULL,
instead of the other way around.
|
|
|
|
|
| |
This adds a check to prevent a negative malloc in case the graph
structure is empty.
|
|
|
|
|
| |
The next vertex was not taken at the end of the Dijkstra calculation
loop.
|
|
|
|
|
|
|
| |
This fixes a dumb segfault in the dijkstra calculation. If an entry
can be removed from the table it was set to NULL. However, if the
table is completely empty, the index was -1, resulting in an illegal
access into the table.
|