diff options
| author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2026-08-16 18:55:15 +0000 |
|---|---|---|
| committer | Sander Vrijders <sander@ouroboros.rocks> | 2026-08-31 08:31:45 +0200 |
| commit | 5c239c128c04883dbed6d66f574edf8b48d11e11 (patch) | |
| tree | 6dfcc043c81bd10e1366172b9db5cf5ce93bb8d8 /cmake/config/ipcp | |
| parent | a830ed966eb3b7d6dbcc43e42a7b6b7c5d796c6a (diff) | |
| download | ouroboros-5c239c128c04883dbed6d66f574edf8b48d11e11.tar.gz ouroboros-5c239c128c04883dbed6d66f574edf8b48d11e11.zip | |
lib: Replace shim IPCPs with points of attachment
Removes the UDP and Ethernet shim IPCPs. The unicast and broadcast
IPCPs can now directly attach to a "legacy" socket. We adopt Saltzer's
Point-of-Attachment terminology, also advocated in Day's "Patterns in
Network Architecture". The "poa" component manages these
PoA's with one management thread, one link monitoring thread and one
thread per attached point.
For Ethernet PoA's the irm connect and enroll can resolve the
destination IPCP or Layer name with a broadcast name query over the
attached PoAs (first reply wins). UDP PoA's require a destination IP
address or FQDN.
attach to a local endpoint (required both server and client side):
irm ipcp poa attach name a udp 10.0.0.1
irm ipcp poa attach name a udp 10.0.0.1:3435
irm ipcp poa attach name a udp [::1]:3435
irm ipcp poa attach name a eth dev eth0
irm ipcp poa attach name a eth dev eth0 ethertype 0xA000
release a PoA (refused while it carries a flow):
irm ipcp poa detach name a udp 10.0.0.1:3435
irm ipcp poa detach name a eth eth0
list an IPCP's PoAs:
irm ipcp poa list name a
connect to a peer, by name or at an address:
irm ipcp connect name b dst a
irm ipcp connect name b dst a eth
irm ipcp connect name b dst a eth dev eth0
irm ipcp connect name b dst a udp 10.0.0.1:3435
irm ipcp connect name b dst a udp peer.example.com:3435
disconnect by peer name, no address:
irm ipcp disconnect name b dst a
irm ipcp disconnect name b dst a component mgmt
enroll has the same shape as connect:
irm ipcp enroll name b layer lr autobind
irm ipcp enroll name b layer lr autobind eth dev eth0
irm ipcp enroll name b layer lr autobind udp 10.0.0.1:3435
the IRMd config file attaches PoAs and names peers the same way:
udp = [ "10.0.0.1", "10.0.0.1:3436" ]
eth = [ "eth0", {dev="eth1", ethertype=0xA007} ]
enrol={dst="LAN", eth={dev="eth0"}}
conn=[{dst="lan3", eth={}}, {dst="lan4", udp="10.0.0.1:3435"}]
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'cmake/config/ipcp')
| -rw-r--r-- | cmake/config/ipcp/common.cmake | 6 | ||||
| -rw-r--r-- | cmake/config/ipcp/eth.cmake | 22 | ||||
| -rw-r--r-- | cmake/config/ipcp/udp.cmake | 16 |
3 files changed, 0 insertions, 44 deletions
diff --git a/cmake/config/ipcp/common.cmake b/cmake/config/ipcp/common.cmake index 7dbc252b..79c822a3 100644 --- a/cmake/config/ipcp/common.cmake +++ b/cmake/config/ipcp/common.cmake @@ -49,10 +49,4 @@ if(HAVE_FUSE) if(IPCP_FLOW_STATS) message(STATUS "IPCP flow statistics enabled") endif() - - set(IPCP_ETH_FLOW_STATS FALSE CACHE BOOL - "Enable ipcpd-eth flow statistics via RIB") - if(IPCP_ETH_FLOW_STATS) - message(STATUS "ipcpd-eth flow statistics enabled") - endif() endif() diff --git a/cmake/config/ipcp/eth.cmake b/cmake/config/ipcp/eth.cmake deleted file mode 100644 index 6a044d4b..00000000 --- a/cmake/config/ipcp/eth.cmake +++ /dev/null @@ -1,22 +0,0 @@ -# Ethernet IPCP configuration options for Ouroboros -# Options for eth-llc and eth-dix IPCPs - -set(IPCP_ETH_LLC_TARGET ipcpd-eth-llc) -set(IPCP_ETH_DIX_TARGET ipcpd-eth-dix) - -set(IPCP_ETH_RD_THR 1 CACHE STRING - "Number of reader threads in Ethernet IPCP") -set(IPCP_ETH_WR_THR 1 CACHE STRING - "Number of writer threads in Ethernet IPCP") -set(IPCP_ETH_QDISC_BYPASS false CACHE BOOL - "Bypass the Qdisc in the kernel when using raw sockets") -set(IPCP_ETH_SNDBUF 4096 CACHE STRING - "Raw socket SO_SNDBUF in bytes (floored to one frame); 0 = kernel default") -set(IPCP_ETH_RCVBUF 0 CACHE STRING - "Raw socket SO_RCVBUF in bytes; 0 = leave kernel default (rmem_default)") -set(IPCP_ETH_LO_MTU 9000 CACHE STRING - "Restrict Ethernet MTU over loopback interfaces") -set(IPCP_ETH_MGMT_FRAME_SIZE 9000 CACHE STRING - "Management frame buffer size for Ethernet IPCPs") -set(IPCP_ETH_MPL 100 CACHE STRING - "Default maximum packet lifetime for the Ethernet IPCPs, in ms") diff --git a/cmake/config/ipcp/udp.cmake b/cmake/config/ipcp/udp.cmake deleted file mode 100644 index af84a844..00000000 --- a/cmake/config/ipcp/udp.cmake +++ /dev/null @@ -1,16 +0,0 @@ -# UDP IPCP configuration options for Ouroboros -# Options for udp4 and udp6 IPCPs - -set(IPCP_UDP4_TARGET ipcpd-udp4) -set(IPCP_UDP6_TARGET ipcpd-udp6) - -set(IPCP_UDP_RD_THR 3 CACHE STRING - "Number of reader threads in UDP IPCPs") -set(IPCP_UDP_WR_THR 3 CACHE STRING - "Number of writer threads in UDP IPCPs") -set(IPCP_UDP_MPL 5000 CACHE STRING - "Default maximum packet lifetime for the UDP IPCPs, in ms") -set(IPCP_UDP4_MTU 1472 CACHE STRING - "Fallback UDP4 layer MTU when getsockopt(IP_MTU) is unavailable, in bytes") -set(IPCP_UDP6_MTU 1452 CACHE STRING - "Fallback UDP6 layer MTU when getsockopt(IPV6_MTU) is unavailable, in bytes") |
