mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-30 04:33:00 +02:00
Import ieee802-ethernet-interface@2025-09-10.yang, from IEEE 802.3.2-2025, and companion ieee802-ethernet-phy-type.yang, replacing the 2019 revision. Operational interface speed moves to ietf-interfaces:speed, RFC 8343, eth:speed is now obsolete. Bump infix-interfaces.yang revision to track the upgrade. The CLI 'show interface' command renders interfaces as bottom-up layered protocol rows. Ethernet interfaces a new IEEE link-mode row (1000baseT, 10GbaseLR, ...) is added with 'duplex: full|half' in the DATA column. Without link the ethernet row is the first row. Tunnels and wifi follow the same layering: gre/vxlan rows carry remote:/vni: tokens with optional ethernet sub-row for the L2-bearing variants; wifi rows carry 'station' or 'access-point' ssid:, signal:, stations: tokens. admin@bpi-76-8f-c2:/> show interface ⚑ INTERFACE PROTOCOL STATE DATA ⇅ lo loopback UP ipv4 127.0.0.1/8 (static) ipv6 ::1/128 (static) ⇅ br0 bridge DOWN │ ethernet 32:2e:3f:76:8f:c2 │ ipv4 192.168.0.1/24 (static) ⇅ ├ lan0 bridge LOWER-DOWN ⇅ ├ lan1 bridge LOWER-DOWN ⇅ ├ lan2 bridge LOWER-DOWN ⇅ └ lan3 bridge LOWER-DOWN ⇅ gre0 gre UP remote: 198.51.100.7 ipv4 10.255.0.1/30 (static) ⇅ sfp1 ethernet DOWN ca:59:f0:77:80:5b ⇅ wan 1000baseT UP duplex: full ethernet 32:2e:3f:76:8f:c2 ipv4 192.168.0.235/24 (dhcp) ipv6 fe80::302e:3fff:fe76:8fc2/64 (link-layer) ⇅ wan.10 vlan UP vid: 10 │ ipv4 10.0.10.1/24 (static) └ wan ⇅ wan.10.20 vlan UP vid: 20 │ ipv4 10.0.10.20/28 (static) └ wan.10 ⇅ wifi0 wifi UP station ssid: corp-net signal: good ethernet dc:a6:32:00:11:22 ipv4 192.168.7.42/24 (dhcp) yanger populates phy-type and pmd-type from a static ETHTOOL link-mode identity table keyed on (port, speed, duplex). Both leaves are populated for unambiguous media (copper, DAC, copper-T); for generic fiber where the (port, speed, duplex) tuple can map to multiple PMDs (SR vs LR vs ER, etc.) only the phy-type family identity is emitted — guessing the PMD would be misleading. cli_pretty prefers pmd-type (specific) and falls back to phy-type (family) for display. yanger also emits ietf-interfaces:speed and fixes a long-standing 'auto-negotation' typo (yanger had never matched ethtool's correctly- spelled JSON field, so operational auto-negotiation always read 'unknown'). Filling the WG's gap on fixed-speed config ------------------------------------------ IEEE Std 802.3.2-2025 obsoleted the eth:speed leaf without providing a config-true replacement; the standards-correct way to express what older Infix configurations called 'fixed speed' is to restrict the set of PMDs auto-negotiation may advertise. Augment auto-negotiation with two leaf-lists: auto-negotiation/advertised-pmd-types config-true, leaf-list of pmd-type ethernet/supported-pmd-types config-false, leaf-list of pmd-type Pinning a port to a single mode is now expressed as a single-entry advertised-pmd-types list. The kernel-supported set is exposed as operational state for diagnosis — SFP/SFP+ cages report the inserted module's capabilities, narrowing the list to a single PMD when the optic only supports one mode (as suggested by @wkz in PR review). When the supported list collapses to a single entry, yanger uses it to refine the operational pmd-type leaf — more accurate than the (port, speed, duplex) lookup for fiber. confd C apply path (src/confd/src/ieee802-ethernet-interface.c) translates each advertised pmd-type identity to the corresponding ETHTOOL_LINK_MODE_*_BIT_*, ORs them into a mask, and emits 'ethtool --change <if> autoneg on advertise 0x<mask>'. An empty list keeps the historical default of advertising every supported mode. The (legacy) 'auto-negotiation/enable = false' + speed/duplex branch is removed — it has no model representation any more. cli_pretty's detail view gains 'advertised' and 'supported' rows listing the PMDs in each set. A new _pr_label_list() helper unifies multi-row rendering across these new rows and the pre-existing ipv4/ipv6 address rows. The detailed interface view also gains a 'link mode' row carrying the pmd-type / phy-type-derived label. Migration of existing startup configurations -------------------------------------------- Bump confd version 1.8 → 1.9 to trigger the migration on upgrade. share/migrate/1.9/10-ethernet-advertise.sh translates old configs of the form ethernet { auto-negotiation { enable false; } speed S; duplex D; } into ethernet { auto-negotiation { advertised-pmd-types [PMD]; } duplex D; } mapping (S, D) → PMD via a static lookup covering the copper-T speeds the deprecated speed leaf historically supported (10/100/1000/2.5G/ 5G/10G). Interfaces that don't disable auto-negotiation, or that lack a speed leaf, are passed through untouched. Closes #530 Closes #805 Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
1246 lines
35 KiB
JSON
1246 lines
35 KiB
JSON
{
|
|
"ietf-interfaces:interfaces": {
|
|
"interface": [
|
|
{
|
|
"admin-status": "up",
|
|
"ietf-ip:ipv4": {
|
|
"address": [
|
|
{
|
|
"ip": "127.0.0.1",
|
|
"origin": "static",
|
|
"prefix-length": 8
|
|
}
|
|
]
|
|
},
|
|
"ietf-ip:ipv6": {
|
|
"address": [
|
|
{
|
|
"ip": "::1",
|
|
"origin": "static",
|
|
"prefix-length": 128
|
|
}
|
|
],
|
|
"mtu": 65536
|
|
},
|
|
"if-index": 1,
|
|
"name": "lo",
|
|
"oper-status": "up",
|
|
"phys-address": "00:00:00:00:00:00",
|
|
"statistics": {
|
|
"in-octets": "29943",
|
|
"out-octets": "29943"
|
|
},
|
|
"type": "infix-if-type:loopback"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ieee802-ethernet-interface:ethernet": {
|
|
"auto-negotiation": {
|
|
"enable": false
|
|
}
|
|
},
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"ietf-ip:ipv6": {
|
|
"address": [
|
|
{
|
|
"ip": "fe80::2a0:85ff:fe00:301",
|
|
"origin": "link-layer",
|
|
"prefix-length": 64
|
|
}
|
|
],
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 2,
|
|
"name": "e1",
|
|
"oper-status": "up",
|
|
"phys-address": "00:a0:85:00:03:01",
|
|
"statistics": {
|
|
"in-octets": "274021",
|
|
"out-octets": "2236951"
|
|
},
|
|
"type": "infix-if-type:ethernet"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ieee802-ethernet-interface:ethernet": {
|
|
"auto-negotiation": {
|
|
"enable": false
|
|
}
|
|
},
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"ietf-ip:ipv6": {
|
|
"address": [
|
|
{
|
|
"ip": "fe80::2a0:85ff:fe00:302",
|
|
"origin": "link-layer",
|
|
"prefix-length": 64
|
|
}
|
|
],
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 3,
|
|
"name": "e2",
|
|
"oper-status": "up",
|
|
"phys-address": "00:a0:85:00:03:02",
|
|
"statistics": {
|
|
"in-octets": "2050",
|
|
"out-octets": "72419"
|
|
},
|
|
"type": "infix-if-type:ethernet"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ieee802-ethernet-interface:ethernet": {
|
|
"auto-negotiation": {
|
|
"enable": false
|
|
}
|
|
},
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"ietf-ip:ipv6": {
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 4,
|
|
"infix-interfaces:bridge-port": {
|
|
"bridge": "br0",
|
|
"flood": {
|
|
"broadcast": true,
|
|
"multicast": true,
|
|
"unicast": true
|
|
},
|
|
"multicast": {
|
|
"fast-leave": false,
|
|
"router": "auto"
|
|
},
|
|
"pvid": 1,
|
|
"stp": {
|
|
"cist": {
|
|
"state": "forwarding"
|
|
}
|
|
}
|
|
},
|
|
"name": "e3",
|
|
"oper-status": "up",
|
|
"phys-address": "00:a0:85:00:03:03",
|
|
"statistics": {
|
|
"in-octets": "13502",
|
|
"out-octets": "117434"
|
|
},
|
|
"type": "infix-if-type:ethernet"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ieee802-ethernet-interface:ethernet": {
|
|
"auto-negotiation": {
|
|
"enable": false
|
|
}
|
|
},
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"ietf-ip:ipv6": {
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 5,
|
|
"infix-interfaces:bridge-port": {
|
|
"bridge": "br0",
|
|
"flood": {
|
|
"broadcast": true,
|
|
"multicast": true,
|
|
"unicast": true
|
|
},
|
|
"multicast": {
|
|
"fast-leave": false,
|
|
"router": "auto"
|
|
},
|
|
"pvid": 1,
|
|
"stp": {
|
|
"cist": {
|
|
"state": "forwarding"
|
|
}
|
|
}
|
|
},
|
|
"name": "e4",
|
|
"oper-status": "up",
|
|
"phys-address": "00:a0:85:00:03:04",
|
|
"statistics": {
|
|
"in-octets": "11449",
|
|
"out-octets": "113004"
|
|
},
|
|
"type": "infix-if-type:ethernet"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ieee802-ethernet-interface:ethernet": {
|
|
"auto-negotiation": {
|
|
"enable": false
|
|
}
|
|
},
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"ietf-ip:ipv6": {
|
|
"address": [
|
|
{
|
|
"ip": "fe80::2a0:85ff:fe00:305",
|
|
"origin": "link-layer",
|
|
"prefix-length": 64
|
|
}
|
|
],
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 6,
|
|
"name": "e5",
|
|
"oper-status": "up",
|
|
"phys-address": "00:a0:85:00:03:05",
|
|
"statistics": {
|
|
"in-octets": "31213",
|
|
"out-octets": "34316"
|
|
},
|
|
"type": "infix-if-type:ethernet"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ieee802-ethernet-interface:ethernet": {
|
|
"auto-negotiation": {
|
|
"enable": false
|
|
}
|
|
},
|
|
"ietf-ip:ipv4": {
|
|
"address": [
|
|
{
|
|
"ip": "10.1.1.101",
|
|
"origin": "static",
|
|
"prefix-length": 24
|
|
}
|
|
],
|
|
"mtu": 1500
|
|
},
|
|
"ietf-ip:ipv6": {
|
|
"address": [
|
|
{
|
|
"ip": "fe80::2a0:85ff:fe00:306",
|
|
"origin": "link-layer",
|
|
"prefix-length": 64
|
|
}
|
|
],
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 7,
|
|
"name": "e6",
|
|
"oper-status": "up",
|
|
"phys-address": "00:a0:85:00:03:06",
|
|
"statistics": {
|
|
"in-octets": "48652",
|
|
"out-octets": "60687"
|
|
},
|
|
"type": "infix-if-type:ethernet"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ieee802-ethernet-interface:ethernet": {
|
|
"auto-negotiation": {
|
|
"enable": false
|
|
}
|
|
},
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"ietf-ip:ipv6": {
|
|
"address": [
|
|
{
|
|
"ip": "fe80::2a0:85ff:fe00:307",
|
|
"origin": "link-layer",
|
|
"prefix-length": 64
|
|
}
|
|
],
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 8,
|
|
"name": "e7",
|
|
"oper-status": "up",
|
|
"phys-address": "00:a0:85:00:03:07",
|
|
"statistics": {
|
|
"in-octets": "31741",
|
|
"out-octets": "34279"
|
|
},
|
|
"type": "infix-if-type:ethernet"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 11,
|
|
"infix-interfaces:bridge-port": {
|
|
"bridge": "br0",
|
|
"flood": {
|
|
"broadcast": true,
|
|
"multicast": true,
|
|
"unicast": true
|
|
},
|
|
"multicast": {
|
|
"fast-leave": false,
|
|
"router": "auto"
|
|
},
|
|
"pvid": 1,
|
|
"stp": {
|
|
"cist": {
|
|
"state": "forwarding"
|
|
}
|
|
}
|
|
},
|
|
"name": "veth0b",
|
|
"oper-status": "up",
|
|
"phys-address": "e6:19:75:86:80:dd",
|
|
"statistics": {
|
|
"in-octets": "2013",
|
|
"out-octets": "34341"
|
|
},
|
|
"type": "infix-if-type:veth"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 13,
|
|
"infix-interfaces:bridge-port": {
|
|
"bridge": "br0",
|
|
"flood": {
|
|
"broadcast": true,
|
|
"multicast": true,
|
|
"unicast": true
|
|
},
|
|
"multicast": {
|
|
"fast-leave": false,
|
|
"router": "auto"
|
|
},
|
|
"pvid": 1,
|
|
"stp": {
|
|
"cist": {
|
|
"state": "forwarding"
|
|
}
|
|
}
|
|
},
|
|
"name": "veth2b",
|
|
"oper-status": "up",
|
|
"phys-address": "b2:fa:30:63:98:f0",
|
|
"statistics": {
|
|
"in-octets": "266",
|
|
"out-octets": "37752"
|
|
},
|
|
"type": "infix-if-type:veth"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ietf-ip:ipv4": {
|
|
"address": [
|
|
{
|
|
"ip": "169.254.1.1",
|
|
"origin": "random",
|
|
"prefix-length": 16
|
|
}
|
|
],
|
|
"mtu": 1500
|
|
},
|
|
"ietf-ip:ipv6": {
|
|
"address": [
|
|
{
|
|
"ip": "fe80::2a0:85ff:fe00:300",
|
|
"origin": "link-layer",
|
|
"prefix-length": 64
|
|
}
|
|
]
|
|
},
|
|
"if-index": 14,
|
|
"infix-interfaces:bridge": {
|
|
"vlans": {
|
|
"proto": "ieee802-dot1q-types:c-vlan",
|
|
"vlan": [
|
|
{
|
|
"multicast": {
|
|
"querier": "off",
|
|
"snooping": true
|
|
},
|
|
"multicast-filters": {
|
|
"multicast-filter": []
|
|
},
|
|
"tagged": [],
|
|
"untagged": [
|
|
"br0",
|
|
"e3",
|
|
"e4",
|
|
"veth0b",
|
|
"veth2b"
|
|
],
|
|
"vid": 1
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"infix-interfaces:bridge-port": {
|
|
"pvid": 1
|
|
},
|
|
"name": "br0",
|
|
"oper-status": "up",
|
|
"phys-address": "00:a0:85:00:03:00",
|
|
"statistics": {
|
|
"in-octets": "3213",
|
|
"out-octets": "38442"
|
|
},
|
|
"type": "infix-if-type:bridge"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 16,
|
|
"infix-interfaces:bridge-port": {
|
|
"bridge": "br1",
|
|
"flood": {
|
|
"broadcast": true,
|
|
"multicast": true,
|
|
"unicast": true
|
|
},
|
|
"multicast": {
|
|
"fast-leave": false,
|
|
"router": "auto"
|
|
},
|
|
"pvid": 6,
|
|
"stp": {
|
|
"cist": {
|
|
"state": "forwarding"
|
|
}
|
|
}
|
|
},
|
|
"name": "veth1b",
|
|
"oper-status": "up",
|
|
"phys-address": "3e:67:0f:15:24:14",
|
|
"statistics": {
|
|
"in-octets": "726",
|
|
"out-octets": "812"
|
|
},
|
|
"type": "infix-if-type:veth"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 18,
|
|
"infix-interfaces:bridge-port": {
|
|
"bridge": "br1",
|
|
"flood": {
|
|
"broadcast": true,
|
|
"multicast": true,
|
|
"unicast": true
|
|
},
|
|
"multicast": {
|
|
"fast-leave": false,
|
|
"router": "auto"
|
|
},
|
|
"stp": {
|
|
"cist": {
|
|
"state": "forwarding"
|
|
}
|
|
}
|
|
},
|
|
"name": "veth3b",
|
|
"oper-status": "up",
|
|
"phys-address": "b2:1c:fa:a7:45:eb",
|
|
"statistics": {
|
|
"in-octets": "726",
|
|
"out-octets": "512"
|
|
},
|
|
"type": "infix-if-type:veth"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 19,
|
|
"infix-interfaces:bridge": {
|
|
"vlans": {
|
|
"proto": "ieee802-dot1q-types:c-vlan",
|
|
"vlan": [
|
|
{
|
|
"multicast": {
|
|
"querier": "off",
|
|
"snooping": true
|
|
},
|
|
"multicast-filters": {
|
|
"multicast-filter": []
|
|
},
|
|
"tagged": [],
|
|
"untagged": [
|
|
"veth1b"
|
|
],
|
|
"vid": 6
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"name": "br1",
|
|
"oper-status": "up",
|
|
"phys-address": "00:a0:85:00:03:00",
|
|
"statistics": {
|
|
"in-octets": "600"
|
|
},
|
|
"type": "infix-if-type:bridge"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ietf-ip:ipv4": {
|
|
"address": [
|
|
{
|
|
"ip": "10.1.1.1",
|
|
"origin": "static",
|
|
"prefix-length": 32
|
|
}
|
|
],
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 20,
|
|
"infix-interfaces:vlan": {
|
|
"id": 8,
|
|
"lower-layer-if": "e3",
|
|
"tag-type": "ieee802-dot1q-types:c-vlan"
|
|
},
|
|
"name": "e3.8",
|
|
"oper-status": "up",
|
|
"phys-address": "00:a0:85:00:03:03",
|
|
"statistics": {
|
|
"in-octets": "10654",
|
|
"out-octets": "14688"
|
|
},
|
|
"type": "infix-if-type:vlan"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"ietf-ip:ipv4": {
|
|
"address": [
|
|
{
|
|
"ip": "10.1.1.1",
|
|
"origin": "static",
|
|
"prefix-length": 32
|
|
}
|
|
],
|
|
"mtu": 1500
|
|
},
|
|
"if-index": 21,
|
|
"infix-interfaces:vlan": {
|
|
"id": 8,
|
|
"lower-layer-if": "e4",
|
|
"tag-type": "ieee802-dot1q-types:c-vlan"
|
|
},
|
|
"name": "e4.8",
|
|
"oper-status": "up",
|
|
"phys-address": "00:a0:85:00:03:04",
|
|
"statistics": {
|
|
"in-octets": "8835",
|
|
"out-octets": "15085"
|
|
},
|
|
"type": "infix-if-type:vlan"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"description": "eth0",
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"ietf-ip:ipv6": {
|
|
"address": [
|
|
{
|
|
"ip": "fe80::4a0:85ff:fe00:300",
|
|
"origin": "link-layer",
|
|
"prefix-length": 64
|
|
}
|
|
]
|
|
},
|
|
"if-index": 12,
|
|
"infix-interfaces:container-network": {
|
|
"containers": [
|
|
"container-B"
|
|
]
|
|
},
|
|
"name": "veth2a",
|
|
"oper-status": "up",
|
|
"phys-address": "06:a0:85:00:03:00",
|
|
"statistics": {
|
|
"in-octets": "38078",
|
|
"out-octets": "266"
|
|
},
|
|
"type": "infix-if-type:veth"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"description": "eth1",
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"ietf-ip:ipv6": {
|
|
"address": [
|
|
{
|
|
"ip": "fe80::4a0:85ff:fe00:300",
|
|
"origin": "link-layer",
|
|
"prefix-length": 64
|
|
}
|
|
]
|
|
},
|
|
"if-index": 17,
|
|
"infix-interfaces:container-network": {
|
|
"containers": [
|
|
"container-B"
|
|
]
|
|
},
|
|
"name": "veth3a",
|
|
"oper-status": "up",
|
|
"phys-address": "06:a0:85:00:03:00",
|
|
"statistics": {
|
|
"in-octets": "768",
|
|
"out-octets": "726"
|
|
},
|
|
"type": "infix-if-type:veth"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"description": "br0",
|
|
"ietf-ip:ipv4": {
|
|
"address": [
|
|
{
|
|
"ip": "169.254.1.2",
|
|
"origin": "other",
|
|
"prefix-length": 16
|
|
}
|
|
],
|
|
"mtu": 1500
|
|
},
|
|
"ietf-ip:ipv6": {
|
|
"address": [
|
|
{
|
|
"ip": "fe80::4a0:85ff:fe00:300",
|
|
"origin": "link-layer",
|
|
"prefix-length": 64
|
|
}
|
|
]
|
|
},
|
|
"if-index": 10,
|
|
"infix-interfaces:container-network": {
|
|
"containers": [
|
|
"container-A"
|
|
]
|
|
},
|
|
"name": "veth0a",
|
|
"oper-status": "up",
|
|
"phys-address": "06:a0:85:00:03:00",
|
|
"statistics": {
|
|
"in-octets": "35483",
|
|
"out-octets": "2013"
|
|
},
|
|
"type": "infix-if-type:veth"
|
|
},
|
|
{
|
|
"admin-status": "up",
|
|
"description": "br1",
|
|
"ietf-ip:ipv4": {
|
|
"mtu": 1500
|
|
},
|
|
"ietf-ip:ipv6": {
|
|
"address": [
|
|
{
|
|
"ip": "fe80::4a0:85ff:fe00:300",
|
|
"origin": "link-layer",
|
|
"prefix-length": 64
|
|
}
|
|
]
|
|
},
|
|
"if-index": 15,
|
|
"infix-interfaces:container-network": {
|
|
"containers": [
|
|
"container-A"
|
|
]
|
|
},
|
|
"name": "veth1a",
|
|
"oper-status": "up",
|
|
"phys-address": "06:a0:85:00:03:00",
|
|
"statistics": {
|
|
"in-octets": "812",
|
|
"out-octets": "726"
|
|
},
|
|
"type": "infix-if-type:veth"
|
|
}
|
|
]
|
|
},
|
|
"ietf-routing:routing": {
|
|
"control-plane-protocols": {
|
|
"control-plane-protocol": [
|
|
{
|
|
"ietf-ospf:ospf": {
|
|
"ietf-ospf:address-family": "ipv4",
|
|
"ietf-ospf:areas": {
|
|
"ietf-ospf:area": [
|
|
{
|
|
"ietf-ospf:area-id": "0.0.0.1",
|
|
"ietf-ospf:area-type": "nssa-area",
|
|
"ietf-ospf:interfaces": {
|
|
"ietf-ospf:interface": [
|
|
{
|
|
"cost": 1,
|
|
"dead-interval": 40,
|
|
"enabled": true,
|
|
"hello-interval": 10,
|
|
"hello-timer": 2,
|
|
"ietf-ospf:neighbors": {
|
|
"ietf-ospf:neighbor": [
|
|
{
|
|
"address": "10.1.2.1",
|
|
"dead-timer": 22,
|
|
"infix-routing:interface-name": "e3.8:10.1.1.1",
|
|
"infix-routing:role": "DROther",
|
|
"infix-routing:uptime": 57,
|
|
"neighbor-router-id": "10.1.2.1",
|
|
"priority": 1,
|
|
"state": "full"
|
|
}
|
|
]
|
|
},
|
|
"interface-type": "point-to-point",
|
|
"name": "e3.8",
|
|
"passive": false,
|
|
"priority": 1,
|
|
"retransmit-interval": 5,
|
|
"state": "point-to-point",
|
|
"transmit-delay": 1,
|
|
"wait-timer": 40
|
|
},
|
|
{
|
|
"cost": 1,
|
|
"dead-interval": 40,
|
|
"enabled": true,
|
|
"hello-interval": 10,
|
|
"hello-timer": 2,
|
|
"ietf-ospf:neighbors": {
|
|
"ietf-ospf:neighbor": [
|
|
{
|
|
"address": "10.1.3.1",
|
|
"dead-timer": 22,
|
|
"infix-routing:interface-name": "e4.8:10.1.1.1",
|
|
"infix-routing:role": "DROther",
|
|
"infix-routing:uptime": 57,
|
|
"neighbor-router-id": "10.1.3.1",
|
|
"priority": 1,
|
|
"state": "full"
|
|
}
|
|
]
|
|
},
|
|
"interface-type": "point-to-point",
|
|
"name": "e4.8",
|
|
"passive": false,
|
|
"priority": 1,
|
|
"retransmit-interval": 5,
|
|
"state": "point-to-point",
|
|
"transmit-delay": 1,
|
|
"wait-timer": 40
|
|
},
|
|
{
|
|
"bdr-ip-addr": "10.1.1.101",
|
|
"bdr-router-id": "10.1.1.1",
|
|
"cost": 1,
|
|
"dead-interval": 40,
|
|
"dr-ip-addr": "10.1.1.100",
|
|
"dr-router-id": "192.168.100.1",
|
|
"enabled": true,
|
|
"hello-interval": 10,
|
|
"hello-timer": 2,
|
|
"ietf-ospf:neighbors": {
|
|
"ietf-ospf:neighbor": [
|
|
{
|
|
"address": "10.1.1.100",
|
|
"bdr-router-id": "10.1.1.1",
|
|
"dead-timer": 31,
|
|
"dr-router-id": "192.168.100.1",
|
|
"infix-routing:interface-name": "e6:10.1.1.101",
|
|
"infix-routing:role": "DR",
|
|
"infix-routing:uptime": 23,
|
|
"neighbor-router-id": "192.168.100.1",
|
|
"priority": 1,
|
|
"state": "full"
|
|
}
|
|
]
|
|
},
|
|
"interface-type": "broadcast",
|
|
"name": "e6",
|
|
"passive": false,
|
|
"priority": 1,
|
|
"retransmit-interval": 5,
|
|
"state": "bdr",
|
|
"transmit-delay": 1,
|
|
"wait-timer": 40
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ietf-ospf:local-rib": {
|
|
"ietf-ospf:route": [
|
|
{
|
|
"infix-routing:area-id": "0.0.0.1",
|
|
"metric": 2,
|
|
"next-hops": {
|
|
"next-hop": [
|
|
{
|
|
"next-hop": "10.1.1.100"
|
|
}
|
|
]
|
|
},
|
|
"prefix": "0.0.0.0/0",
|
|
"route-type": "inter-area"
|
|
},
|
|
{
|
|
"infix-routing:area-id": "0.0.0.1",
|
|
"metric": 1,
|
|
"next-hops": {
|
|
"next-hop": [
|
|
{
|
|
"outgoing-interface": "e6"
|
|
}
|
|
]
|
|
},
|
|
"prefix": "10.1.1.0/24",
|
|
"route-type": "intra-area"
|
|
},
|
|
{
|
|
"infix-routing:area-id": "0.0.0.1",
|
|
"metric": 2,
|
|
"next-hops": {
|
|
"next-hop": [
|
|
{
|
|
"next-hop": "10.1.1.100"
|
|
},
|
|
{
|
|
"next-hop": "10.1.2.1"
|
|
}
|
|
]
|
|
},
|
|
"prefix": "10.1.2.0/24",
|
|
"route-type": "intra-area"
|
|
},
|
|
{
|
|
"infix-routing:area-id": "0.0.0.1",
|
|
"metric": 2,
|
|
"next-hops": {
|
|
"next-hop": [
|
|
{
|
|
"next-hop": "10.1.1.100"
|
|
},
|
|
{
|
|
"next-hop": "10.1.3.1"
|
|
}
|
|
]
|
|
},
|
|
"prefix": "10.1.3.0/24",
|
|
"route-type": "intra-area"
|
|
}
|
|
]
|
|
},
|
|
"ietf-ospf:router-id": "10.1.1.1"
|
|
},
|
|
"name": "default",
|
|
"type": "infix-routing:ospfv2"
|
|
}
|
|
]
|
|
},
|
|
"interfaces": {
|
|
"interface": []
|
|
},
|
|
"ribs": {
|
|
"rib": [
|
|
{
|
|
"address-family": "ipv4",
|
|
"name": "ipv4",
|
|
"routes": {
|
|
"route": [
|
|
{
|
|
"active": [
|
|
null
|
|
],
|
|
"ietf-ipv4-unicast-routing:destination-prefix": "0.0.0.0/0",
|
|
"ietf-ospf:metric": 2,
|
|
"last-updated": "2026-02-25T05:16:22+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"ietf-ipv4-unicast-routing:address": "10.1.1.100",
|
|
"infix-routing:installed": [
|
|
null
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 110,
|
|
"source-protocol": "ietf-ospf:ospfv2"
|
|
},
|
|
{
|
|
"ietf-ipv4-unicast-routing:destination-prefix": "0.0.0.0/0",
|
|
"last-updated": "2026-02-25T05:15:42+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"outgoing-interface": "br0"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 254,
|
|
"source-protocol": "static"
|
|
},
|
|
{
|
|
"ietf-ipv4-unicast-routing:destination-prefix": "10.1.1.0/24",
|
|
"ietf-ospf:metric": 1,
|
|
"last-updated": "2026-02-25T05:15:28+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"outgoing-interface": "e6"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 110,
|
|
"source-protocol": "ietf-ospf:ospfv2"
|
|
},
|
|
{
|
|
"active": [
|
|
null
|
|
],
|
|
"ietf-ipv4-unicast-routing:destination-prefix": "10.1.1.0/24",
|
|
"last-updated": "2026-02-25T05:15:28+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"infix-routing:installed": [
|
|
null
|
|
],
|
|
"outgoing-interface": "e6"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 0,
|
|
"source-protocol": "direct"
|
|
},
|
|
{
|
|
"ietf-ipv4-unicast-routing:destination-prefix": "10.1.1.1/32",
|
|
"last-updated": "2026-02-25T05:15:27+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"infix-routing:installed": [
|
|
null
|
|
],
|
|
"outgoing-interface": "e4.8"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 0,
|
|
"source-protocol": "direct"
|
|
},
|
|
{
|
|
"active": [
|
|
null
|
|
],
|
|
"ietf-ipv4-unicast-routing:destination-prefix": "10.1.1.1/32",
|
|
"last-updated": "2026-02-25T05:15:27+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"infix-routing:installed": [
|
|
null
|
|
],
|
|
"outgoing-interface": "e3.8"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 0,
|
|
"source-protocol": "direct"
|
|
},
|
|
{
|
|
"active": [
|
|
null
|
|
],
|
|
"ietf-ipv4-unicast-routing:destination-prefix": "10.1.2.0/24",
|
|
"ietf-ospf:metric": 2,
|
|
"last-updated": "2026-02-25T05:16:22+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"ietf-ipv4-unicast-routing:address": "10.1.1.100",
|
|
"infix-routing:installed": [
|
|
null
|
|
]
|
|
},
|
|
{
|
|
"ietf-ipv4-unicast-routing:address": "10.1.2.1",
|
|
"infix-routing:installed": [
|
|
null
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 110,
|
|
"source-protocol": "ietf-ospf:ospfv2"
|
|
},
|
|
{
|
|
"active": [
|
|
null
|
|
],
|
|
"ietf-ipv4-unicast-routing:destination-prefix": "10.1.3.0/24",
|
|
"ietf-ospf:metric": 2,
|
|
"last-updated": "2026-02-25T05:16:22+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"ietf-ipv4-unicast-routing:address": "10.1.1.100",
|
|
"infix-routing:installed": [
|
|
null
|
|
]
|
|
},
|
|
{
|
|
"ietf-ipv4-unicast-routing:address": "10.1.3.1",
|
|
"infix-routing:installed": [
|
|
null
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 110,
|
|
"source-protocol": "ietf-ospf:ospfv2"
|
|
},
|
|
{
|
|
"active": [
|
|
null
|
|
],
|
|
"ietf-ipv4-unicast-routing:destination-prefix": "169.254.0.0/16",
|
|
"last-updated": "2026-02-25T05:15:33+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"infix-routing:installed": [
|
|
null
|
|
],
|
|
"outgoing-interface": "br0"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 0,
|
|
"source-protocol": "direct"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"address-family": "ipv6",
|
|
"name": "ipv6",
|
|
"routes": {
|
|
"route": [
|
|
{
|
|
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
|
|
"last-updated": "2026-02-25T05:15:29+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"infix-routing:installed": [
|
|
null
|
|
],
|
|
"outgoing-interface": "e6"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 0,
|
|
"source-protocol": "direct"
|
|
},
|
|
{
|
|
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
|
|
"last-updated": "2026-02-25T05:15:28+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"infix-routing:installed": [
|
|
null
|
|
],
|
|
"outgoing-interface": "br0"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 0,
|
|
"source-protocol": "direct"
|
|
},
|
|
{
|
|
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
|
|
"last-updated": "2026-02-25T05:15:26+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"infix-routing:installed": [
|
|
null
|
|
],
|
|
"outgoing-interface": "e2"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 0,
|
|
"source-protocol": "direct"
|
|
},
|
|
{
|
|
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
|
|
"last-updated": "2026-02-25T05:14:36+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"infix-routing:installed": [
|
|
null
|
|
],
|
|
"outgoing-interface": "e7"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 0,
|
|
"source-protocol": "direct"
|
|
},
|
|
{
|
|
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
|
|
"last-updated": "2026-02-25T05:14:36+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"infix-routing:installed": [
|
|
null
|
|
],
|
|
"outgoing-interface": "e5"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 0,
|
|
"source-protocol": "direct"
|
|
},
|
|
{
|
|
"active": [
|
|
null
|
|
],
|
|
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
|
|
"last-updated": "2026-02-25T05:14:36+00:00",
|
|
"next-hop": {
|
|
"next-hop-list": {
|
|
"next-hop": [
|
|
{
|
|
"infix-routing:installed": [
|
|
null
|
|
],
|
|
"outgoing-interface": "e1"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"route-preference": 0,
|
|
"source-protocol": "direct"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"infix-containers:containers": {
|
|
"container": [
|
|
{
|
|
"cmdline": "/usr/bin/tini -- /usr/sbin/httpd -f -v",
|
|
"id": "78d28082c2e5d494c82aa181c95118ce498e25930ad9e288ba010257ca336378",
|
|
"image": "localhost/curios-httpd-oci-amd64-v24.11.0:latest",
|
|
"image-id": "d6930d60a73be9980f8e19b4b4f63586a6d3492178e20bea962e4e9b8c654033",
|
|
"name": "container-B",
|
|
"network": {
|
|
"interface": [
|
|
{
|
|
"name": "veth2a"
|
|
},
|
|
{
|
|
"name": "veth3a"
|
|
}
|
|
],
|
|
"publish": []
|
|
},
|
|
"running": true,
|
|
"status": "Up About a minute"
|
|
},
|
|
{
|
|
"cmdline": "/usr/bin/tini -- /usr/sbin/httpd -f -v -p 91",
|
|
"id": "3451cfceca4eee1091c1dfedece2faee99bc8a729e781799d9c0b4368a31d86d",
|
|
"image": "localhost/curios-httpd-oci-amd64-v24.11.0:latest",
|
|
"image-id": "d6930d60a73be9980f8e19b4b4f63586a6d3492178e20bea962e4e9b8c654033",
|
|
"name": "container-A",
|
|
"network": {
|
|
"interface": [
|
|
{
|
|
"name": "veth0a"
|
|
},
|
|
{
|
|
"name": "veth1a"
|
|
}
|
|
],
|
|
"publish": [
|
|
"34515:91/tcp"
|
|
]
|
|
},
|
|
"running": true,
|
|
"status": "Up About a minute"
|
|
},
|
|
{
|
|
"cmdline": "/usr/bin/tini -- /usr/sbin/nft-helper /etc/nftables.conf",
|
|
"id": "4e7c3daeba15546e7640014b9ee46e389737ed36583e5cb2f8b75a07a82e8523",
|
|
"image": "localhost/curios-nftables-oci-amd64-v24.11.0:latest",
|
|
"image-id": "7a3cc502436250357a6664100a600f306334b4d7203890b85b7ea9b8da6b5665",
|
|
"name": "firewall",
|
|
"network": {
|
|
"host": true
|
|
},
|
|
"running": true,
|
|
"status": "Up About a minute"
|
|
}
|
|
]
|
|
}
|
|
}
|