test: statd: Refactor cli and yanger testing

Existing tests relied on manually captured system data from various
points in Infix's history, making them hard to extend as we add new
features.

Move to a new model where we:

To update a unit test:
1. Use Infamy tests to setup a DUT in a known state
2. Use yanger's wrapper mode to capture the system state needed to
   produce operational data for a set of YANG models
3. Use cli-pretty to create the expected output for a set of show
   commands

When running unit tests, we can then use the captured data to verify
that yanger and cli-pretty works as expected without the need for a
running Infix system - just like before.  The difference is that it is
now much easier to capture a new snapshot when the system evolves.
This commit is contained in:
Tobias Waldekranz
2025-01-20 13:44:14 +01:00
parent 6f2face898
commit beecff2acf
98 changed files with 1706 additions and 3715 deletions
+10 -4
View File
@@ -1,9 +1,15 @@
---
# Tests in this suite can be run on localhost without a target environment
- name: cli-output
suite: cli/all.yaml
- name: statd-yanger
suite: statd/all.yaml
opts:
- yanger
- check
- name: cli-pretty
suite: cli_pretty/all.yaml
- name: statd-cli
suite: statd/all.yaml
opts:
- cli
- check
-3
View File
@@ -1,3 +0,0 @@
---
- case: run.sh
name: "cli-check-output"
@@ -1,7 +0,0 @@
BRIDGE VID GROUP PORTS 
br0 230.1.32.100 e0
br0 230.1.2.100 e1
br0 01:01:01:01:01:01 e1
br0 230.1.2.2 e0
br1 30 ff02::6a e2
br1 30 224.2.2.2 e2
@@ -1,9 +0,0 @@
name : br0
index : 7
mtu : 1500
operational status : up
physical address : 02:00:00:00:00:00
ipv4 addresses :
ipv6 addresses :
in-octets : 0
out-octets : 3158
@@ -1,24 +0,0 @@
name : e0
index : 2
mtu : 1500
operational status : up
auto-negotiation : on
duplex : full
speed : 10000
physical address : 02:00:00:00:00:00
ipv4 addresses :
ipv6 addresses :
in-octets : 20891
out-octets : 6537
eth-out-frames : 713
eth-out-multicast-frames : 605
eth-out-broadcast-frames : 69
eth-in-frames : 418
eth-in-multicast-frames : 336
eth-in-broadcast-frames : 46
eth-in-error-fcs-frames : 0
eth-out-good-octets : 129130
eth-in-good-octets : 72571
eth-in-total-frames : 418
eth-in-error-oversize-frames : 0
@@ -1,24 +0,0 @@
name : e1
index : 3
mtu : 1500
operational status : up
auto-negotiation : on
duplex : full
speed : 10000
physical address : 02:00:00:00:00:01
ipv4 addresses :
ipv6 addresses :
in-octets : 24849
out-octets : 1397
eth-out-frames : 713
eth-out-multicast-frames : 605
eth-out-broadcast-frames : 69
eth-in-frames : 418
eth-in-multicast-frames : 336
eth-in-broadcast-frames : 46
eth-in-error-fcs-frames : 0
eth-out-good-octets : 129130
eth-in-good-octets : 72571
eth-in-total-frames : 418
eth-in-error-oversize-frames : 0
@@ -1,9 +0,0 @@
name : e2
index : 4
mtu : 1500
operational status : up
physical address : 02:00:00:00:00:02
ipv4 addresses :
ipv6 addresses : fe80::ff:fe00:2/64 (link-layer)
in-octets : 19114
out-octets : 0
@@ -1,9 +0,0 @@
name : e3
index : 5
mtu : 1500
operational status : up
physical address : 02:00:00:00:00:03
ipv4 addresses :
ipv6 addresses :
in-octets : 15057
out-octets : 1327
@@ -1,9 +0,0 @@
name : e4
index : 6
mtu : 1500
operational status : down
physical address : 02:00:00:00:00:04
ipv4 addresses :
ipv6 addresses :
in-octets : 19022
out-octets : 1327
@@ -1,16 +0,0 @@
INTERFACE PROTOCOL STATE DATA 
br0 bridge  vlan:40u,50t pvid:1
│ ethernet UP 02:00:00:00:00:00
├ e0 bridge DISABLED vlan:10u,20t pvid:10
└ e1 bridge BLOCKING vlan:10t,20u pvid:20
br1 bridge  
│ ethernet UP 02:00:00:00:00:02
└ e2 bridge FORWARDING vlan:30u pvid:30
e2 container system 
e3 ethernet UP 02:00:00:00:00:03
e4 ethernet DOWN 02:00:00:00:00:04
veth0b container system 
veth0j ethernet UP b2:82:e3:ce:d5:9e
veth peer:veth0k
ipv4 192.168.1.1/24 (static)
veth0k container system2 
-9
View File
@@ -1,9 +0,0 @@
ADDRESS MODE STATE STRATUM POLL-INTERVAL
185.125.190.56 peer candidate 2 8
185.125.190.58 server unstable 2 7
185.125.190.57 server falseticker 2 8
91.189.91.157 local-clock outlier 2 6
192.121.108.100 server candidate 3 8
85.24.237.72 server selected 2 8
162.159.200.1 server unusable 3 7
85.24.237.71 server candidate 2 8
@@ -1,11 +0,0 @@
 DESTINATION PREF NEXT-HOP PROTO UPTIME
>* 0.0.0.0/0 110/2 10.0.23.1 ospfv2 00:00:00
>* 10.0.0.1/32 110/4000 10.0.13.1 ospfv2 00:00:00
10.0.0.3/32 110/0 lo ospfv2 00:00:00
>* 10.0.0.3/32 0/0 lo direct 00:00:00
10.0.13.0/30 110/2000 e5 ospfv2 00:00:00
>* 10.0.13.0/30 0/0 e5 direct 00:00:00
10.0.23.0/30 110/1 e6 ospfv2 00:00:00
>* 10.0.23.0/30 0/0 e6 direct 20:10:05
192.168.3.0/24 110/1 e2 ospfv2 5d13h05m
>* 192.168.3.0/24 0/0 e2 direct 01w1d13h
@@ -1,11 +0,0 @@
 DESTINATION PREF NEXT-HOP PROTO UPTIME
>* ::/0 1/0 2001:db8:3c4d:50::1 static 00:00:00
>* 2001:db8:3c4d:50::/64 0/0 e6 direct 00:00:00
>* 2001:db8:3c4d:200::1/128 0/0 lo direct 00:00:00
* fe80::/64 0/0 e7 direct 00:00:00
* fe80::/64 0/0 e6 direct 00:00:00
* fe80::/64 0/0 e5 direct 00:00:00
* fe80::/64 0/0 e4 direct 00:00:00
* fe80::/64 0/0 e3 direct 00:00:00
* fe80::/64 0/0 e2 direct 00:00:00
>* fe80::/64 0/0 e1 direct 00:00:00
@@ -1,6 +0,0 @@
BOOT ORDER
net primary secondary
NAME STATE VERSION DATE 
secondary inactive pr873.2a39a38 2024-12-16T14:40:54Z
primary inactive pr871.a4ef38f 2024-12-13T20:00:42Z
-144
View File
@@ -1,144 +0,0 @@
#!/bin/sh
SCRIPT_PATH="$(dirname "$(readlink -f "$0")")"
ROOT_PATH="$SCRIPT_PATH/../../../"
CLI_OUTPUT_PATH="$SCRIPT_PATH/cli-output/"
CLI_PRETTY_TOOL="$ROOT_PATH/src/statd/python/cli_pretty/cli_pretty.py"
SR_EMULATOR_TOOL="$SCRIPT_PATH/sysrepo-emulator.sh"
CLI_OUTPUT_FILE="$(mktemp)"
TEST=1
cleanup() {
rm -f "$CLI_OUTPUT_FILE"
}
trap cleanup EXIT
ok() {
echo "ok $TEST - $1"
TEST=$((TEST + 1))
}
fail() {
echo "not ok $TEST - $1"
exit 1
}
print_update_txt() {
echo
echo "# CLI output has changed. This might not be an error if you intentionally"
echo "# changed something in yanger or cli-pretty. If you did, you need to update"
echo "# the template file."
echo
echo "# Here's how you update the CLI output templates:"
echo "# $SCRIPT_PATH/run.sh update <cli-pretty command>"
echo
echo "# Check the result"
echo "# git diff"
echo
echo "# Then finish up by committing the new template"
echo
}
if [ ! -e "$CLI_PRETTY_TOOL" ]; then
echo "Error, cli-pretty tool not found"
exit 1
fi
if [ $# -eq 2 ] && [ $1 = "update" ]; then
if [ $2 = "show-interfaces" ]; then
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-interfaces" > "$CLI_OUTPUT_PATH/show-interfaces.txt"
for iface in "br0" "e0" "e1" "e2" "e3" "e4"; do
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-interfaces" -n "$iface" \
> "$CLI_OUTPUT_PATH/show-interface-${iface}.txt"
done
elif [ $2 = "show-routing-table" ]; then
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "-t" "show-routing-table" -i "ipv4" > "$CLI_OUTPUT_PATH/show-routes-ipv4.txt"
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "-t" "show-routing-table" -i "ipv6" > "$CLI_OUTPUT_PATH/show-routes-ipv6.txt"
elif [ $2 = "show-bridge-mdb" ]; then
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-bridge-mdb" > "$CLI_OUTPUT_PATH/show-bridge-mdb.txt"
elif [ $2 = "show-ntp" ]; then
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-ntp" > "$CLI_OUTPUT_PATH/show-ntp.txt"
elif [ $2 = "show-software" ]; then
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-software" > "$CLI_OUTPUT_PATH/show-software.txt"
else
echo "Unsupported cli-pretty command $2"
exit 1
fi
echo "All files updated. Check git diff and commit if they look OK"
exit 0
fi
echo "1..12"
echo "# Running:"
# Show interfaces
echo "# $SR_EMULATOR_TOOL | $CLI_PRETTY_TOOL show-interfaces"
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-interfaces" > "$CLI_OUTPUT_FILE"
if ! diff -u "$CLI_OUTPUT_PATH/show-interfaces.txt" "$CLI_OUTPUT_FILE"; then
print_update_txt
fail "\"show interfaces\" output has changed"
fi
ok "\"show interfaces\" output looks intact"
echo "# $SR_EMULATOR_TOOL | $CLI_PRETTY_TOOL show-bridge-mdb"
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-bridge-mdb" > "$CLI_OUTPUT_FILE"
if ! diff -u "$CLI_OUTPUT_PATH/show-bridge-mdb.txt" "$CLI_OUTPUT_FILE"; then
print_update_txt
fail "\"show bridge mdb\" output has changed"
fi
ok "\"show bridge mdb\" output looks intact"
# Show NTP
echo "# $SR_EMULATOR_TOOL | $CLI_PRETTY_TOOL show-ntp"
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-ntp" > "$CLI_OUTPUT_FILE"
if ! diff -u "$CLI_OUTPUT_PATH/show-ntp.txt" "$CLI_OUTPUT_FILE"; then
print_update_txt
fail "\"show ntp\" output has changed"
fi
ok "\"show ntp\" output looks intact"
# Show software
echo "# $SR_EMULATOR_TOOL | $CLI_PRETTY_TOOL show-software"
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-software" > "$CLI_OUTPUT_FILE"
if ! diff -u "$CLI_OUTPUT_PATH/show-software.txt" "$CLI_OUTPUT_FILE"; then
print_update_txt
fail "\"show software\" output has changed"
fi
ok "\"show software\" output looks intact"
# Show ipv4 routes
echo "# $SR_EMULATOR_TOOL | $CLI_PRETTY_TOOL -t show-routing-table -i ipv4"
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "-t" "show-routing-table" -i "ipv4" > "$CLI_OUTPUT_FILE"
if ! diff -u "$CLI_OUTPUT_PATH/show-routes-ipv4.txt" "$CLI_OUTPUT_FILE"; then
print_update_txt
fail "\"show routes ipv4\" output has changed"
fi
ok "\"show routes ipv4\" output looks intact"
# Show ipv6 routes
echo "# $SR_EMULATOR_TOOL | $CLI_PRETTY_TOOL -t show-routing-table -i ipv6"
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "-t" "show-routing-table" -i "ipv6" > "$CLI_OUTPUT_FILE"
if ! diff -u "$CLI_OUTPUT_PATH/show-routes-ipv6.txt" "$CLI_OUTPUT_FILE"; then
print_update_txt
fail "\"show routes ipv6\" output has changed"
fi
ok "\"show routes ipv6\" output looks intact"
# Show detailed interfaces
for iface in "br0" "e0" "e1" "e2" "e3" "e4"; do
"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-interfaces" -n "$iface" > "$CLI_OUTPUT_FILE"
if ! diff -u "$CLI_OUTPUT_PATH/show-interface-${iface}.txt" "$CLI_OUTPUT_FILE"; then
print_update_txt
fail "\"show interface name $iface\" output has changed"
fi
ok "\"show interface name $iface\" output looks intact"
done
-34
View File
@@ -1,34 +0,0 @@
#!/bin/sh
SCRIPT_PATH="$(dirname "$(readlink -f "$0")")"
ROOT_PATH="$SCRIPT_PATH/../../../"
YANGER_TOOL="$ROOT_PATH/src/statd/python/yanger/yanger"
INTERFACES_OUTPUT_FILE="$(mktemp)"
ROUTES_OUTPUT_FILE="$(mktemp)"
SYSTEM_OUTPUT_FILE="$(mktemp)"
cleanup() {
rm -f "$INTERFACES_OUTPUT_FILE"
rm -f "$ROUTES_OUTPUT_FILE"
rm -f "$SYSTEM_OUTPUT_FILE"
}
trap cleanup EXIT
if [ ! -e "$YANGER_TOOL" ]; then
echo "Error, yanger tool not found"
exit 1
fi
if ! "$YANGER_TOOL" "ietf-interfaces" \
-t "$SCRIPT_PATH/system-output/" >> "$INTERFACES_OUTPUT_FILE"; then
echo "Error, running yanger for interface $iface" >&2
exit 1
fi
$YANGER_TOOL "ietf-routing" -t "$SCRIPT_PATH/system-output/" > "$ROUTES_OUTPUT_FILE"
$YANGER_TOOL "ietf-system" -t "$SCRIPT_PATH/system-output/" > "$SYSTEM_OUTPUT_FILE"
# Merge all module files
jq -s '.[0] * .[1] * .[2]' $ROUTES_OUTPUT_FILE $INTERFACES_OUTPUT_FILE $SYSTEM_OUTPUT_FILE
@@ -1 +0,0 @@
{"vendor": "QEMU", "product-name": "VM", "part-number": null, "serial-number": null, "mac-address": "02:00:00:00:00:00", "factory-password-hash": "$5$mI/zpOAqZYKLC2WU$i7iPzZiIjOjrBF3NyftS9CCq8dfYwHwrmUK097Jca9A", "vpd": {"product": {"board": "product", "available": false, "trusted": true, "data": {}}}, "usb-ports": [{"name": "USB", "path": "/sys/bus/usb/devices/usb1/authorized"}, {"name": "USB", "path": "/sys/bus/usb/devices/usb1/authorized_default"}, {"name": "USB2", "path": "/sys/bus/usb/devices/usb2/authorized"}, {"name": "USB2", "path": "/sys/bus/usb/devices/usb2/authorized_default"}]}
File diff suppressed because one or more lines are too long
@@ -1,47 +0,0 @@
[
{
"ifindex": 2,
"ifname": "e0",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"master": "br0",
"state": "disabled",
"priority": 32,
"cost": 100
},
{
"ifindex": 3,
"ifname": "e1",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"master": "br0",
"state": "blocking",
"priority": 32,
"cost": 100
},
{
"ifindex": 4,
"ifname": "e2",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"master": "br1",
"state": "forwarding",
"priority": 32,
"cost": 100
}
]
@@ -1,17 +0,0 @@
[
{
"ifindex": 2,
"ifname": "e0",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"master": "br0",
"state": "disabled",
"priority": 32,
"cost": 100
}
]
@@ -1,17 +0,0 @@
[
{
"ifindex": 3,
"ifname": "e1",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"master": "br0",
"state": "blocking",
"priority": 32,
"cost": 100
}
]
@@ -1,17 +0,0 @@
[
{
"ifindex": 4,
"ifname": "e2",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"master": "br1",
"state": "forwarding",
"priority": 32,
"cost": 100
}
]
@@ -1,57 +0,0 @@
[
{
"ifname": "e0",
"vlans": [
{
"vlan": 10,
"flags": [
"PVID",
"Egress Untagged"
]
},
{
"vlan": 20
}
]
},
{
"ifname": "e1",
"vlans": [
{
"vlan": 10
},
{
"vlan": 20,
"flags": [
"PVID",
"Egress Untagged"
]
}
]
},
{
"ifname": "e2",
"vlans": [
{
"vlan": 30,
"flags": [
"Egress Untagged"
]
}
]
},
{
"ifname": "br0",
"vlans": [
{
"vlan": 40,
"flags": [
"Egress Untagged"
]
},
{
"vlan": 50
}
]
}
]
@@ -1 +0,0 @@
[{"ifname":"br0","vlans":[{"vlan":1,"flags":["PVID","Egress Untagged"]},{"vlan":33}]}]
@@ -1 +0,0 @@
[{"ifname":"br1","vlans":[]}]
@@ -1,17 +0,0 @@
[
{
"ifname": "e0",
"vlans": [
{
"vlan": 10,
"flags": [
"PVID",
"Egress Untagged"
]
},
{
"vlan": 20
}
]
}
]
@@ -1,17 +0,0 @@
[
{
"ifname": "e1",
"vlans": [
{
"vlan": 10
},
{
"vlan": 20,
"flags": [
"PVID",
"Egress Untagged"
]
}
]
}
]
@@ -1,14 +0,0 @@
[
{
"ifname": "e2",
"vlans": [
{
"vlan": 30,
"flags": [
"PVID",
"Egress Untagged"
]
}
]
}
]
@@ -1,8 +0,0 @@
=,+,185.125.190.56,2,8,377,166,0.005469983,0.005822986,0.033335429
^,~,185.125.190.58,2,7,377,37,0.003233160,0.003233160,0.028441129
^,x,185.125.190.57,2,8,377,167,-0.000418652,-0.000065722,0.027703809
#,-,91.189.91.157,2,6,377,488,0.000970410,0.001490889,0.077348366
^,+,192.121.108.100,3,8,377,101,0.005757879,0.006114979,0.024731735
^,*,85.24.237.72,2,8,377,37,0.006444688,0.006805896,0.017862743
^,?,162.159.200.1,3,7,377,34,-0.000447366,-0.000447366,0.009887429
^,+,85.24.237.71,2,8,377,169,0.003875532,0.004228305,0.015323908
@@ -1,61 +0,0 @@
[
{
"ifname": "e1",
"eth-phy": {},
"eth-mac": {
"FramesTransmittedOK": 713,
"SingleCollisionFrames": 0,
"MultipleCollisionFrames": 0,
"FramesReceivedOK": 418,
"FrameCheckSequenceErrors": 0,
"OctetsTransmittedOK": 129130,
"FramesWithDeferredXmissions": 0,
"LateCollisions": 0,
"OctetsReceivedOK": 72571,
"MulticastFramesXmittedOK": 605,
"BroadcastFramesXmittedOK": 69,
"FramesWithExcessiveDeferral": 0,
"MulticastFramesReceivedOK": 336,
"BroadcastFramesReceivedOK": 46
},
"eth-ctrl": {},
"rmon": {
"etherStatsUndersizePkts": 0,
"etherStatsOversizePkts": 0,
"etherStatsFragments": 0,
"etherStatsJabbers": 0,
"rx-pktsNtoM": [
{
"low": 64,
"high": 64,
"val": 12
},
{
"low": 65,
"high": 127,
"val": 603
},
{
"low": 128,
"high": 255,
"val": 168
},
{
"low": 256,
"high": 511,
"val": 348
},
{
"low": 512,
"high": 1023,
"val": 0
},
{
"low": 1024,
"high": 65535,
"val": 0
}
]
}
}
]
@@ -1,7 +0,0 @@
[ {
"ifname": "dsa0",
"eth-phy": {},
"eth-mac": {},
"eth-ctrl": {},
"rmon": {}
} ]
@@ -1,61 +0,0 @@
[
{
"ifname": "e0",
"eth-phy": {},
"eth-mac": {
"FramesTransmittedOK": 713,
"SingleCollisionFrames": 0,
"MultipleCollisionFrames": 0,
"FramesReceivedOK": 418,
"FrameCheckSequenceErrors": 0,
"OctetsTransmittedOK": 129130,
"FramesWithDeferredXmissions": 0,
"LateCollisions": 0,
"OctetsReceivedOK": 72571,
"MulticastFramesXmittedOK": 605,
"BroadcastFramesXmittedOK": 69,
"FramesWithExcessiveDeferral": 0,
"MulticastFramesReceivedOK": 336,
"BroadcastFramesReceivedOK": 46
},
"eth-ctrl": {},
"rmon": {
"etherStatsUndersizePkts": 0,
"etherStatsOversizePkts": 0,
"etherStatsFragments": 0,
"etherStatsJabbers": 0,
"rx-pktsNtoM": [
{
"low": 64,
"high": 64,
"val": 12
},
{
"low": 65,
"high": 127,
"val": 603
},
{
"low": 128,
"high": 255,
"val": 168
},
{
"low": 256,
"high": 511,
"val": 348
},
{
"low": 512,
"high": 1023,
"val": 0
},
{
"low": 1024,
"high": 65535,
"val": 0
}
]
}
}
]
@@ -1,61 +0,0 @@
[
{
"ifname": "e1",
"eth-phy": {},
"eth-mac": {
"FramesTransmittedOK": 713,
"SingleCollisionFrames": 0,
"MultipleCollisionFrames": 0,
"FramesReceivedOK": 418,
"FrameCheckSequenceErrors": 0,
"OctetsTransmittedOK": 129130,
"FramesWithDeferredXmissions": 0,
"LateCollisions": 0,
"OctetsReceivedOK": 72571,
"MulticastFramesXmittedOK": 605,
"BroadcastFramesXmittedOK": 69,
"FramesWithExcessiveDeferral": 0,
"MulticastFramesReceivedOK": 336,
"BroadcastFramesReceivedOK": 46
},
"eth-ctrl": {},
"rmon": {
"etherStatsUndersizePkts": 0,
"etherStatsOversizePkts": 0,
"etherStatsFragments": 0,
"etherStatsJabbers": 0,
"rx-pktsNtoM": [
{
"low": 64,
"high": 64,
"val": 12
},
{
"low": 65,
"high": 127,
"val": 603
},
{
"low": 128,
"high": 255,
"val": 168
},
{
"low": 256,
"high": 511,
"val": 348
},
{
"low": 512,
"high": 1023,
"val": 0
},
{
"low": 1024,
"high": 65535,
"val": 0
}
]
}
}
]
@@ -1,61 +0,0 @@
[
{
"ifname": "e2",
"eth-phy": {},
"eth-mac": {
"FramesTransmittedOK": 713,
"SingleCollisionFrames": 0,
"MultipleCollisionFrames": 0,
"FramesReceivedOK": 418,
"FrameCheckSequenceErrors": 0,
"OctetsTransmittedOK": 129130,
"FramesWithDeferredXmissions": 0,
"LateCollisions": 0,
"OctetsReceivedOK": 72571,
"MulticastFramesXmittedOK": 605,
"BroadcastFramesXmittedOK": 69,
"FramesWithExcessiveDeferral": 0,
"MulticastFramesReceivedOK": 336,
"BroadcastFramesReceivedOK": 46
},
"eth-ctrl": {},
"rmon": {
"etherStatsUndersizePkts": 0,
"etherStatsOversizePkts": 0,
"etherStatsFragments": 0,
"etherStatsJabbers": 0,
"rx-pktsNtoM": [
{
"low": 64,
"high": 64,
"val": 12
},
{
"low": 65,
"high": 127,
"val": 603
},
{
"low": 128,
"high": 255,
"val": 168
},
{
"low": 256,
"high": 511,
"val": 348
},
{
"low": 512,
"high": 1023,
"val": 0
},
{
"low": 1024,
"high": 65535,
"val": 0
}
]
}
}
]
@@ -1,61 +0,0 @@
[
{
"ifname": "e3",
"eth-phy": {},
"eth-mac": {
"FramesTransmittedOK": 713,
"SingleCollisionFrames": 0,
"MultipleCollisionFrames": 0,
"FramesReceivedOK": 418,
"FrameCheckSequenceErrors": 0,
"OctetsTransmittedOK": 129130,
"FramesWithDeferredXmissions": 0,
"LateCollisions": 0,
"OctetsReceivedOK": 72571,
"MulticastFramesXmittedOK": 605,
"BroadcastFramesXmittedOK": 69,
"FramesWithExcessiveDeferral": 0,
"MulticastFramesReceivedOK": 336,
"BroadcastFramesReceivedOK": 46
},
"eth-ctrl": {},
"rmon": {
"etherStatsUndersizePkts": 0,
"etherStatsOversizePkts": 0,
"etherStatsFragments": 0,
"etherStatsJabbers": 0,
"rx-pktsNtoM": [
{
"low": 64,
"high": 64,
"val": 12
},
{
"low": 65,
"high": 127,
"val": 603
},
{
"low": 128,
"high": 255,
"val": 168
},
{
"low": 256,
"high": 511,
"val": 348
},
{
"low": 512,
"high": 1023,
"val": 0
},
{
"low": 1024,
"high": 65535,
"val": 0
}
]
}
}
]
@@ -1,61 +0,0 @@
[
{
"ifname": "e4",
"eth-phy": {},
"eth-mac": {
"FramesTransmittedOK": 713,
"SingleCollisionFrames": 0,
"MultipleCollisionFrames": 0,
"FramesReceivedOK": 418,
"FrameCheckSequenceErrors": 0,
"OctetsTransmittedOK": 129130,
"FramesWithDeferredXmissions": 0,
"LateCollisions": 0,
"OctetsReceivedOK": 72571,
"MulticastFramesXmittedOK": 605,
"BroadcastFramesXmittedOK": 69,
"FramesWithExcessiveDeferral": 0,
"MulticastFramesReceivedOK": 336,
"BroadcastFramesReceivedOK": 46
},
"eth-ctrl": {},
"rmon": {
"etherStatsUndersizePkts": 0,
"etherStatsOversizePkts": 0,
"etherStatsFragments": 0,
"etherStatsJabbers": 0,
"rx-pktsNtoM": [
{
"low": 64,
"high": 64,
"val": 12
},
{
"low": 65,
"high": 127,
"val": 603
},
{
"low": 128,
"high": 255,
"val": 168
},
{
"low": 256,
"high": 511,
"val": 348
},
{
"low": 512,
"high": 1023,
"val": 0
},
{
"low": 1024,
"high": 65535,
"val": 0
}
]
}
}
]
@@ -1,17 +0,0 @@
Settings for br0:
Supported ports: [ ]
Supported link modes: Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: Unknown!
Duplex: Unknown! (255)
Auto-negotiation: off
Port: Other
PHYAD: 0
Transceiver: internal
Link detected: yes
@@ -1,32 +0,0 @@
Settings for dsa0:
Supported ports: [ MII ]
Supported link modes: 10000baseT/Full
10000baseKX4/Full
10000baseKR/Full
10000baseCR/Full
10000baseSR/Full
10000baseLR/Full
10000baseLRM/Full
10000baseER/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10000baseT/Full
10000baseKX4/Full
10000baseKR/Full
10000baseCR/Full
10000baseSR/Full
10000baseLR/Full
10000baseLRM/Full
10000baseER/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Auto-negotiation: on
Port: MII
PHYAD: 0
Transceiver: internal
netlink error: Operation not permitted
Link detected: yes
@@ -1,39 +0,0 @@
Settings for e0:
Supported ports: [ ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Auto-negotiation: on
Port: Twisted Pair
PHYAD: 4
Transceiver: external
MDI-X: on (auto)
Supports Wake-on: g
Wake-on: d
Link detected: yes
@@ -1,39 +0,0 @@
Settings for e1:
Supported ports: [ ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Auto-negotiation: on
Port: Twisted Pair
PHYAD: 4
Transceiver: external
MDI-X: on (auto)
Supports Wake-on: g
Wake-on: d
Link detected: yes
@@ -1,39 +0,0 @@
Settings for e2:
Supported ports: [ ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Auto-negotiation: on
Port: Twisted Pair
PHYAD: 4
Transceiver: external
MDI-X: on (auto)
Supports Wake-on: g
Wake-on: d
Link detected: yes
@@ -1,39 +0,0 @@
Settings for e3:
Supported ports: [ ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Auto-negotiation: on
Port: Twisted Pair
PHYAD: 4
Transceiver: external
MDI-X: on (auto)
Supports Wake-on: g
Wake-on: d
Link detected: yes
@@ -1,39 +0,0 @@
Settings for e4:
Supported ports: [ ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Auto-negotiation: on
Port: Twisted Pair
PHYAD: 4
Transceiver: external
MDI-X: on (auto)
Supports Wake-on: g
Wake-on: d
Link detected: yes
@@ -1 +0,0 @@
BOOT_ORDER=net primary secondary
@@ -1,661 +0,0 @@
[
{
"ifindex": 2,
"ifname": "dsa0",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1504,
"qdisc": "mq",
"operstate": "UP",
"group": "internal",
"txqlen": 2048,
"link_type": "ether",
"address": "02:00:de:ad:02:20",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 9888,
"num_tx_queues": 8,
"num_rx_queues": 4,
"gso_max_size": 65536,
"gso_max_segs": 300,
"tso_max_size": 65536,
"tso_max_segs": 300,
"gro_max_size": 65536,
"gso_ipv4_max_size": 65536,
"gro_ipv4_max_size": 65536,
"parentbus": "platform",
"parentdev": "f2000000.ethernet",
"addr_info": [],
"stats64": {
"rx": {
"bytes": 1756811,
"packets": 6777,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 1849127,
"packets": 7157,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 7,
"ifname": "br0",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "noqueue",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:00",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 65535,
"linkinfo": {
"info_kind": "bridge",
"info_data": {
"forward_delay": 1500,
"hello_time": 200,
"max_age": 2000,
"ageing_time": 30000,
"stp_state": 0,
"priority": 32768,
"vlan_filtering": 1,
"vlan_protocol": "802.1Q",
"bridge_id": "8000.2:0:0:0:0:0",
"root_id": "8000.2:0:0:0:0:0",
"root_port": 0,
"root_path_cost": 0,
"topology_change": 0,
"topology_change_detected": 0,
"hello_timer": 0,
"tcn_timer": 0,
"topology_change_timer": 0,
"gc_timer": 63.88,
"vlan_default_pvid": 0,
"vlan_stats_enabled": 0,
"vlan_stats_per_port": 0,
"group_fwd_mask": "0",
"group_addr": "01:80:c2:00:00:00",
"mcast_snooping": 0,
"no_linklocal_learn": 0,
"mcast_vlan_snooping": 0,
"mcast_router": 1,
"mcast_query_use_ifaddr": 0,
"mcast_querier": 0,
"mcast_hash_elasticity": 16,
"mcast_hash_max": 4096,
"mcast_last_member_cnt": 2,
"mcast_startup_query_cnt": 2,
"mcast_last_member_intvl": 100,
"mcast_membership_intvl": 26000,
"mcast_querier_intvl": 25500,
"mcast_query_intvl": 12500,
"mcast_query_response_intvl": 1000,
"mcast_startup_query_intvl": 3124,
"mcast_stats_enabled": 0,
"mcast_igmp_version": 2,
"mcast_mld_version": 1,
"nf_call_iptables": 0,
"nf_call_ip6tables": 0,
"nf_call_arptables": 0
}
},
"inet6_addr_gen_mode": "none",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"stats64": {
"rx": {
"bytes": 3158,
"packets": 42,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 37
},
"tx": {
"bytes": 0,
"packets": 0,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 8,
"ifname": "br1",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "noqueue",
"operstate": "UP",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:02",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 65535,
"linkinfo": {
"info_kind": "bridge",
"info_data": {
"forward_delay": 1500,
"hello_time": 200,
"max_age": 2000,
"ageing_time": 30000,
"stp_state": 0,
"priority": 32768,
"vlan_filtering": 1,
"vlan_protocol": "802.1Q",
"bridge_id": "8000.2:0:0:0:0:2",
"root_id": "8000.2:0:0:0:0:2",
"root_port": 0,
"root_path_cost": 0,
"topology_change": 0,
"topology_change_detected": 0,
"hello_timer": 0.00,
"tcn_timer": 0.00,
"topology_change_timer": 0.00,
"gc_timer": 0.00,
"vlan_default_pvid": 0,
"vlan_stats_enabled": 0,
"vlan_stats_per_port": 0,
"group_fwd_mask": "0",
"group_addr": "01:80:c2:00:00:00",
"mcast_snooping": 0,
"no_linklocal_learn": 0,
"mcast_vlan_snooping": 0,
"mcast_router": 1,
"mcast_query_use_ifaddr": 0,
"mcast_querier": 0,
"mcast_hash_elasticity": 16,
"mcast_hash_max": 4096,
"mcast_last_member_cnt": 2,
"mcast_startup_query_cnt": 2,
"mcast_last_member_intvl": 100,
"mcast_membership_intvl": 26000,
"mcast_querier_intvl": 25500,
"mcast_query_intvl": 12500,
"mcast_query_response_intvl": 1000,
"mcast_startup_query_intvl": 3124,
"mcast_stats_enabled": 0,
"mcast_igmp_version": 2,
"mcast_mld_version": 1,
"nf_call_iptables": 0,
"nf_call_ip6tables": 0,
"nf_call_arptables": 0
}
},
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"addr_info": [],
"stats64": {
"rx": {
"bytes": 0,
"packets": 0,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 0,
"packets": 0,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 2,
"ifname": "e0",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "pfifo_fast",
"master": "br0",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:00",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 1,
"allmulti": 1,
"min_mtu": 68,
"max_mtu": 65535,
"linkinfo": {
"info_slave_kind": "bridge",
"info_slave_data": {
"state": "forwarding",
"priority": 32,
"cost": 100,
"hairpin": false,
"guard": false,
"root_block": false,
"fastleave": false,
"learning": true,
"flood": true,
"id": "0x8001",
"no": "0x1",
"designated_port": 32769,
"designated_cost": 0,
"bridge_id": "8000.2:0:0:0:0:0",
"root_id": "8000.2:0:0:0:0:0",
"hold_timer": 0,
"message_age_timer": 0,
"forward_delay_timer": 0,
"topology_change_ack": 0,
"config_pending": 0,
"proxy_arp": false,
"proxy_arp_wifi": false,
"multicast_router": 1,
"mcast_flood": true,
"bcast_flood": true,
"mcast_to_unicast": false,
"neigh_suppress": false,
"group_fwd_mask": "0",
"group_fwd_mask_str": "0x0",
"vlan_tunnel": false,
"isolated": false,
"locked": false
}
},
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"parentbus": "virtio",
"parentdev": "virtio2",
"stats64": {
"rx": {
"bytes": 6795,
"packets": 62,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 22830,
"packets": 114,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 3,
"ifname": "e1",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "pfifo_fast",
"master": "br0",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:01",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 1,
"allmulti": 1,
"min_mtu": 68,
"max_mtu": 65535,
"linkinfo": {
"info_slave_kind": "bridge",
"info_slave_data": {
"state": "forwarding",
"priority": 32,
"cost": 100,
"hairpin": false,
"guard": false,
"root_block": false,
"fastleave": false,
"learning": true,
"flood": true,
"id": "0x8002",
"no": "0x2",
"designated_port": 32770,
"designated_cost": 0,
"bridge_id": "8000.2:0:0:0:0:0",
"root_id": "8000.2:0:0:0:0:0",
"hold_timer": 0,
"message_age_timer": 0,
"forward_delay_timer": 0,
"topology_change_ack": 0,
"config_pending": 0,
"proxy_arp": false,
"proxy_arp_wifi": false,
"multicast_router": 1,
"mcast_flood": true,
"bcast_flood": true,
"mcast_to_unicast": false,
"neigh_suppress": false,
"group_fwd_mask": "0",
"group_fwd_mask_str": "0x0",
"vlan_tunnel": false,
"isolated": false,
"locked": false
}
},
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"parentbus": "virtio",
"parentdev": "virtio3",
"stats64": {
"rx": {
"bytes": 1397,
"packets": 11,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 23781,
"packets": 126,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 4,
"ifname": "e2",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "pfifo_fast",
"master": "br1",
"operstate": "UP",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:02",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 0,
"allmulti": 1,
"min_mtu": 68,
"max_mtu": 65535,
"linkinfo": {
"info_slave_kind": "bridge",
"info_slave_data": {
"state": "forwarding",
"priority": 32,
"cost": 100,
"hairpin": false,
"guard": false,
"root_block": false,
"fastleave": false,
"learning": true,
"flood": true,
"id": "0x8001",
"no": "0x1",
"designated_port": 32769,
"designated_cost": 0,
"bridge_id": "8000.2:0:0:0:0:2",
"root_id": "8000.2:0:0:0:0:2",
"hold_timer": 0.00,
"message_age_timer": 0.00,
"forward_delay_timer": 0.00,
"topology_change_ack": 0,
"config_pending": 0,
"proxy_arp": false,
"proxy_arp_wifi": false,
"multicast_router": 1,
"mcast_flood": true,
"bcast_flood": true,
"mcast_to_unicast": false,
"neigh_suppress": false,
"group_fwd_mask": "0",
"group_fwd_mask_str": "0x0",
"vlan_tunnel": false,
"isolated": false,
"locked": false
}
},
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"parentbus": "virtio",
"parentdev": "virtio4",
"addr_info": [
{
"family": "inet6",
"local": "fe80::ff:fe00:2",
"prefixlen": 64,
"scope": "link",
"protocol": "kernel_ll",
"valid_life_time": 4294967295,
"preferred_life_time": 4294967295
}
],
"stats64": {
"rx": {
"bytes": 0,
"packets": 0,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 19676,
"packets": 83,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 5,
"ifname": "e3",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "pfifo_fast",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:03",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 65535,
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"parentbus": "virtio",
"parentdev": "virtio5",
"stats64": {
"rx": {
"bytes": 1327,
"packets": 10,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 13837,
"packets": 67,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 6,
"ifname": "e4",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "pfifo_fast",
"operstate": "DOWN",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:04",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 65535,
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"parentbus": "virtio",
"parentdev": "virtio6",
"stats64": {
"rx": {
"bytes": 1327,
"packets": 10,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 18046,
"packets": 91,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 9,
"link_index": 8,
"ifname": "veth0j",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "noqueue",
"operstate": "UP",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "b2:82:e3:ce:d5:9e",
"broadcast": "ff:ff:ff:ff:ff:ff",
"link_netnsid": 1,
"addr_info": [
{
"family": "inet",
"local": "192.168.1.1",
"prefixlen": 24,
"scope": "global",
"protocol": "static",
"label": "veth0j",
"valid_life_time": 4294967295,
"preferred_life_time": 4294967295
}
]
}
]
@@ -1,10 +0,0 @@
[
{
"name": "57ff63cb",
"id": 0
},
{
"name": "db5ad90e",
"id": 1
}
]
@@ -1,678 +0,0 @@
[
{
"ifindex": 2,
"ifname": "dsa0",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1504,
"qdisc": "mq",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "internal",
"txqlen": 2048,
"link_type": "ether",
"address": "02:00:de:ad:02:20",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 9888,
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 8,
"num_rx_queues": 4,
"gso_max_size": 65536,
"gso_max_segs": 300,
"tso_max_size": 65536,
"tso_max_segs": 300,
"gro_max_size": 65536,
"gso_ipv4_max_size": 65536,
"gro_ipv4_max_size": 65536,
"parentbus": "platform",
"parentdev": "f2000000.ethernet",
"stats64": {
"rx": {
"bytes": 1751876,
"packets": 6757,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 1843945,
"packets": 7136,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 7,
"ifname": "br0",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "noqueue",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:00",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 65535,
"linkinfo": {
"info_kind": "bridge",
"info_data": {
"forward_delay": 1500,
"hello_time": 200,
"max_age": 2000,
"ageing_time": 30000,
"stp_state": 0,
"priority": 32768,
"vlan_filtering": 1,
"vlan_protocol": "802.1Q",
"bridge_id": "8000.2:0:0:0:0:0",
"root_id": "8000.2:0:0:0:0:0",
"root_port": 0,
"root_path_cost": 0,
"topology_change": 0,
"topology_change_detected": 0,
"hello_timer": 0,
"tcn_timer": 0,
"topology_change_timer": 0,
"gc_timer": 27.38,
"vlan_default_pvid": 0,
"vlan_stats_enabled": 0,
"vlan_stats_per_port": 0,
"group_fwd_mask": "0",
"group_addr": "01:80:c2:00:00:00",
"mcast_snooping": 0,
"no_linklocal_learn": 0,
"mcast_vlan_snooping": 0,
"mcast_router": 1,
"mcast_query_use_ifaddr": 0,
"mcast_querier": 0,
"mcast_hash_elasticity": 16,
"mcast_hash_max": 4096,
"mcast_last_member_cnt": 2,
"mcast_startup_query_cnt": 2,
"mcast_last_member_intvl": 100,
"mcast_membership_intvl": 26000,
"mcast_querier_intvl": 25500,
"mcast_query_intvl": 12500,
"mcast_query_response_intvl": 1000,
"mcast_startup_query_intvl": 3124,
"mcast_stats_enabled": 0,
"mcast_igmp_version": 2,
"mcast_mld_version": 1,
"nf_call_iptables": 0,
"nf_call_ip6tables": 0,
"nf_call_arptables": 0
}
},
"inet6_addr_gen_mode": "none",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"stats64": {
"rx": {
"bytes": 3158,
"packets": 42,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 37
},
"tx": {
"bytes": 0,
"packets": 0,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 8,
"ifname": "br1",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "noqueue",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:02",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 65535,
"linkinfo": {
"info_kind": "bridge",
"info_data": {
"forward_delay": 1500,
"hello_time": 200,
"max_age": 2000,
"ageing_time": 30000,
"stp_state": 0,
"priority": 32768,
"vlan_filtering": 1,
"vlan_protocol": "802.1Q",
"bridge_id": "8000.2:0:0:0:0:2",
"root_id": "8000.2:0:0:0:0:2",
"root_port": 0,
"root_path_cost": 0,
"topology_change": 0,
"topology_change_detected": 0,
"hello_timer": 0.00,
"tcn_timer": 0.00,
"topology_change_timer": 0.00,
"gc_timer": 53.73,
"vlan_default_pvid": 0,
"vlan_stats_enabled": 0,
"vlan_stats_per_port": 0,
"group_fwd_mask": "0",
"group_addr": "01:80:c2:00:00:00",
"mcast_snooping": 0,
"no_linklocal_learn": 0,
"mcast_vlan_snooping": 0,
"mcast_router": 1,
"mcast_query_use_ifaddr": 0,
"mcast_querier": 0,
"mcast_hash_elasticity": 16,
"mcast_hash_max": 4096,
"mcast_last_member_cnt": 2,
"mcast_startup_query_cnt": 2,
"mcast_last_member_intvl": 100,
"mcast_membership_intvl": 26000,
"mcast_querier_intvl": 25500,
"mcast_query_intvl": 12500,
"mcast_query_response_intvl": 1000,
"mcast_startup_query_intvl": 3124,
"mcast_stats_enabled": 0,
"mcast_igmp_version": 2,
"mcast_mld_version": 1,
"nf_call_iptables": 0,
"nf_call_ip6tables": 0,
"nf_call_arptables": 0
}
},
"inet6_addr_gen_mode": "none",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"stats64": {
"rx": {
"bytes": 0,
"packets": 0,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 0,
"packets": 0,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 2,
"ifname": "e0",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "pfifo_fast",
"master": "br0",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:00",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 1,
"allmulti": 1,
"min_mtu": 68,
"max_mtu": 65535,
"linkinfo": {
"info_slave_kind": "bridge",
"info_slave_data": {
"state": "forwarding",
"priority": 32,
"cost": 100,
"hairpin": false,
"guard": false,
"root_block": false,
"fastleave": false,
"learning": true,
"flood": true,
"id": "0x8001",
"no": "0x1",
"designated_port": 32769,
"designated_cost": 0,
"bridge_id": "8000.2:0:0:0:0:0",
"root_id": "8000.2:0:0:0:0:0",
"hold_timer": 0,
"message_age_timer": 0,
"forward_delay_timer": 0,
"topology_change_ack": 0,
"config_pending": 0,
"proxy_arp": false,
"proxy_arp_wifi": false,
"multicast_router": 1,
"mcast_flood": true,
"bcast_flood": true,
"mcast_to_unicast": false,
"neigh_suppress": false,
"group_fwd_mask": "0",
"group_fwd_mask_str": "0x0",
"vlan_tunnel": false,
"isolated": false,
"locked": false
}
},
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"parentbus": "e1000",
"parentdev": "e1000-foobar",
"stats64": {
"rx": {
"bytes": 6537,
"packets": 59,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 20891,
"packets": 106,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 3,
"ifname": "e1",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "pfifo_fast",
"master": "br0",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:01",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 1,
"allmulti": 1,
"min_mtu": 68,
"max_mtu": 65535,
"linkinfo": {
"info_slave_kind": "bridge",
"info_slave_data": {
"state": "forwarding",
"priority": 32,
"cost": 100,
"hairpin": false,
"guard": false,
"root_block": false,
"fastleave": false,
"learning": true,
"flood": true,
"id": "0x8002",
"no": "0x2",
"designated_port": 32770,
"designated_cost": 0,
"bridge_id": "8000.2:0:0:0:0:0",
"root_id": "8000.2:0:0:0:0:0",
"hold_timer": 0,
"message_age_timer": 0,
"forward_delay_timer": 0,
"topology_change_ack": 0,
"config_pending": 0,
"proxy_arp": false,
"proxy_arp_wifi": false,
"multicast_router": 1,
"mcast_flood": true,
"bcast_flood": true,
"mcast_to_unicast": false,
"neigh_suppress": false,
"group_fwd_mask": "0",
"group_fwd_mask_str": "0x0",
"vlan_tunnel": false,
"isolated": false,
"locked": false
}
},
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"parentbus": "e1000",
"parentdev": "e1000-foobar",
"stats64": {
"rx": {
"bytes": 1397,
"packets": 11,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 24849,
"packets": 130,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 4,
"ifname": "e2",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "pfifo_fast",
"master": "br1",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:02",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 0,
"allmulti": 1,
"min_mtu": 68,
"max_mtu": 65535,
"linkinfo": {
"info_slave_kind": "bridge",
"info_slave_data": {
"state": "forwarding",
"priority": 32,
"cost": 100,
"hairpin": false,
"guard": false,
"root_block": false,
"fastleave": false,
"learning": true,
"flood": true,
"id": "0x8001",
"no": "0x1",
"designated_port": 32769,
"designated_cost": 0,
"bridge_id": "8000.2:0:0:0:0:2",
"root_id": "8000.2:0:0:0:0:2",
"hold_timer": 0.00,
"message_age_timer": 0.00,
"forward_delay_timer": 0.00,
"topology_change_ack": 0,
"config_pending": 0,
"proxy_arp": false,
"proxy_arp_wifi": false,
"multicast_router": 1,
"mcast_flood": true,
"bcast_flood": true,
"mcast_to_unicast": false,
"neigh_suppress": false,
"group_fwd_mask": "0",
"group_fwd_mask_str": "0x0",
"vlan_tunnel": false,
"isolated": false,
"locked": false
}
},
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"parentbus": "virtio",
"parentdev": "virtio4",
"stats64": {
"rx": {
"bytes": 0,
"packets": 0,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 19114,
"packets": 81,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 5,
"ifname": "e3",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "pfifo_fast",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:03",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 65535,
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"parentbus": "virtio",
"parentdev": "virtio5",
"stats64": {
"rx": {
"bytes": 1327,
"packets": 10,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 15057,
"packets": 72,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 6,
"ifname": "e4",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "pfifo_fast",
"operstate": "DOWN",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:04",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 65535,
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"parentbus": "virtio",
"parentdev": "virtio6",
"stats64": {
"rx": {
"bytes": 1327,
"packets": 10,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 19022,
"packets": 95,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 9,
"link_index": 8,
"ifname": "veth0j",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "noqueue",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "b2:82:e3:ce:d5:9e",
"broadcast": "ff:ff:ff:ff:ff:ff",
"link_netnsid": 1,
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 65535,
"linkinfo": {
"info_kind": "veth"
},
"inet6_addr_gen_mode": "none",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 524280,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"gso_ipv4_max_size": 65536,
"gro_ipv4_max_size": 65536,
"stats64": {
"rx": {
"bytes": 1006,
"packets": 13,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 18668,
"packets": 50,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
}
]
@@ -1,119 +0,0 @@
[
{
"ifindex": 1,
"ifname": "lo",
"flags": [
"LOOPBACK",
"UP",
"LOWER_UP"
],
"mtu": 65536,
"qdisc": "noqueue",
"operstate": "UNKNOWN",
"group": "default",
"txqlen": 1000,
"link_type": "loopback",
"address": "00:00:00:00:00:00",
"broadcast": "00:00:00:00:00:00",
"addr_info": [
{
"family": "inet",
"local": "127.0.0.1",
"prefixlen": 8,
"scope": "host",
"label": "lo",
"valid_life_time": 4294967295,
"preferred_life_time": 4294967295
},
{
"family": "inet6",
"local": "::1",
"prefixlen": 128,
"scope": "host",
"protocol": "kernel_lo",
"valid_life_time": 4294967295,
"preferred_life_time": 4294967295
}
]
},
{
"ifindex": 3,
"ifname": "eth0",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "pfifo_fast",
"operstate": "UP",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:02",
"broadcast": "ff:ff:ff:ff:ff:ff",
"addr_info": [
{
"family": "inet",
"local": "172.0.0.1",
"prefixlen": 24,
"broadcast": "172.0.0.255",
"scope": "global",
"label": "eth0",
"valid_life_time": 4294967295,
"preferred_life_time": 4294967295
},
{
"family": "inet6",
"local": "fe80::ff:fe00:2",
"prefixlen": 64,
"scope": "link",
"protocol": "kernel_ll",
"valid_life_time": 4294967295,
"preferred_life_time": 4294967295
}
]
},
{
"ifindex": 6,
"link_index": 7,
"ifname": "eth1",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "noqueue",
"operstate": "UP",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "62:64:85:4c:7c:87",
"broadcast": "ff:ff:ff:ff:ff:ff",
"link_netnsid": 0,
"addr_info": [
{
"family": "inet",
"local": "192.168.0.2",
"prefixlen": 24,
"broadcast": "192.168.0.255",
"scope": "global",
"label": "eth1",
"valid_life_time": 4294967295,
"preferred_life_time": 4294967295
},
{
"family": "inet6",
"local": "fe80::6064:85ff:fe4c:7c87",
"prefixlen": 64,
"scope": "link",
"protocol": "kernel_ll",
"valid_life_time": 4294967295,
"preferred_life_time": 4294967295
}
]
}
]
@@ -1,163 +0,0 @@
[
{
"ifindex": 1,
"ifname": "lo",
"flags": [
"LOOPBACK",
"UP",
"LOWER_UP"
],
"mtu": 65536,
"qdisc": "noqueue",
"operstate": "UNKNOWN",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "loopback",
"address": "00:00:00:00:00:00",
"broadcast": "00:00:00:00:00:00",
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 0,
"max_mtu": 0,
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 524280,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"gso_ipv4_max_size": 65536,
"gro_ipv4_max_size": 65536,
"stats64": {
"rx": {
"bytes": 0,
"packets": 0,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 0,
"packets": 0,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 3,
"ifname": "eth0",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "pfifo_fast",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "02:00:00:00:00:02",
"broadcast": "ff:ff:ff:ff:ff:ff",
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 65535,
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 65536,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"gso_ipv4_max_size": 65536,
"gro_ipv4_max_size": 65536,
"parentbus": "virtio",
"parentdev": "virtio3",
"ifalias": "e2",
"stats64": {
"rx": {
"bytes": 0,
"packets": 0,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 1006,
"packets": 13,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 6,
"link_index": 7,
"ifname": "eth1",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "noqueue",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "62:64:85:4c:7c:87",
"broadcast": "ff:ff:ff:ff:ff:ff",
"link_netnsid": 0,
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 65535,
"linkinfo": {
"info_kind": "veth"
},
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 524280,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"gso_ipv4_max_size": 65536,
"gro_ipv4_max_size": 65536,
"ifalias": "veth0b",
"stats64": {
"rx": {
"bytes": 17643,
"packets": 44,
"errors": 0,
"dropped": 24,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 1006,
"packets": 13,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
}
]
@@ -1,80 +0,0 @@
[
{
"ifindex": 1,
"ifname": "lo",
"flags": [
"LOOPBACK",
"UP",
"LOWER_UP"
],
"mtu": 65536,
"qdisc": "noqueue",
"operstate": "UNKNOWN",
"group": "default",
"txqlen": 1000,
"link_type": "loopback",
"address": "00:00:00:00:00:00",
"broadcast": "00:00:00:00:00:00",
"addr_info": [
{
"family": "inet",
"local": "127.0.0.1",
"prefixlen": 8,
"scope": "host",
"label": "lo",
"valid_life_time": 4294967295,
"preferred_life_time": 4294967295
},
{
"family": "inet6",
"local": "::1",
"prefixlen": 128,
"scope": "host",
"protocol": "kernel_lo",
"valid_life_time": 4294967295,
"preferred_life_time": 4294967295
}
]
},
{
"ifindex": 8,
"link_index": 9,
"ifname": "eth0",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "noqueue",
"operstate": "UP",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "c2:1b:78:88:e2:b8",
"broadcast": "ff:ff:ff:ff:ff:ff",
"link_netnsid": 0,
"addr_info": [
{
"family": "inet",
"local": "192.168.1.2",
"prefixlen": 24,
"broadcast": "192.168.1.255",
"scope": "global",
"label": "eth0",
"valid_life_time": 4294967295,
"preferred_life_time": 4294967295
},
{
"family": "inet6",
"local": "fe80::c01b:78ff:fe88:e2b8",
"prefixlen": 64,
"scope": "link",
"protocol": "kernel_ll",
"valid_life_time": 4294967295,
"preferred_life_time": 4294967295
}
]
}
]
@@ -1,109 +0,0 @@
[
{
"ifindex": 1,
"ifname": "lo",
"flags": [
"LOOPBACK",
"UP",
"LOWER_UP"
],
"mtu": 65536,
"qdisc": "noqueue",
"operstate": "UNKNOWN",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "loopback",
"address": "00:00:00:00:00:00",
"broadcast": "00:00:00:00:00:00",
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 0,
"max_mtu": 0,
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 524280,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"gso_ipv4_max_size": 65536,
"gro_ipv4_max_size": 65536,
"stats64": {
"rx": {
"bytes": 0,
"packets": 0,
"errors": 0,
"dropped": 0,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 0,
"packets": 0,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
},
{
"ifindex": 8,
"link_index": 9,
"ifname": "eth0",
"flags": [
"BROADCAST",
"MULTICAST",
"UP",
"LOWER_UP"
],
"mtu": 1500,
"qdisc": "noqueue",
"operstate": "UP",
"linkmode": "DEFAULT",
"group": "default",
"txqlen": 1000,
"link_type": "ether",
"address": "c2:1b:78:88:e2:b8",
"broadcast": "ff:ff:ff:ff:ff:ff",
"link_netnsid": 0,
"promiscuity": 0,
"allmulti": 0,
"min_mtu": 68,
"max_mtu": 65535,
"linkinfo": {
"info_kind": "veth"
},
"inet6_addr_gen_mode": "eui64",
"num_tx_queues": 1,
"num_rx_queues": 1,
"gso_max_size": 65536,
"gso_max_segs": 65535,
"tso_max_size": 524280,
"tso_max_segs": 65535,
"gro_max_size": 65536,
"gso_ipv4_max_size": 65536,
"gro_ipv4_max_size": 65536,
"ifalias": "veth0k",
"stats64": {
"rx": {
"bytes": 15197,
"packets": 37,
"errors": 0,
"dropped": 22,
"over_errors": 0,
"multicast": 0
},
"tx": {
"bytes": 1006,
"packets": 13,
"errors": 0,
"dropped": 0,
"carrier_errors": 0,
"collisions": 0
}
}
}
]
@@ -1,61 +0,0 @@
{
"pid": 6510,
"query-interval": 125,
"query-response-interval": 10,
"query-last-member-interval": 1,
"robustness": 2,
"router-timeout": 255,
"router-alert": true,
"fast-leave-ports": [ ],
"multicast-router-ports": [ ],
"multicast-flood-ports": [ "e0", "e1", "e2" ],
"multicast-queriers": [
{
"interface": "br0",
"state": "up",
"querier": "0.0.0.0",
"interval": 125,
"version": 3
}
],
"multicast-groups": [
{
"bridge": "br0",
"group": "230.1.32.100",
"mac": "01:00:5e:01:20:64",
"ports": [ "e0" ]
},
{
"bridge": "br0",
"group": "230.1.2.100",
"mac": "01:00:5e:01:02:64",
"ports": [ "e1" ]
},
{
"bridge": "br0",
"group": "01:01:01:01:01:01",
"mac": "01:01:01:01:01:01",
"ports": [ "e1" ]
},
{
"bridge": "br0",
"group": "230.1.2.2",
"mac": "01:00:5e:01:02:02",
"ports": [ "e0" ]
},
{
"bridge": "br1",
"vid": 30,
"group": "ff02::6a",
"mac": "33:33:00:00:00:6a",
"ports": [ "e2" ]
},
{
"bridge": "br1",
"vid": 30,
"group": "224.2.2.2",
"mac": "33:33:00:00:00:6a",
"ports": [ "e2" ]
}
]
}
@@ -1,73 +0,0 @@
[
{
"AutoRemove": false,
"Command": null,
"CreatedAt": "25 minutes ago",
"Exited": false,
"ExitedAt": 1730216567,
"ExitCode": 0,
"Id": "cf054e1bc3ff7d7d6fec0cc9a0435f0c96f166e54bc9e9d92149ab53ffa60321",
"Image": "ghcr.io/kernelkit/curios:edge",
"ImageID": "cee712df3c4ea28bd3f03ca50d46e53788b1526812f4dac8d9133870eb5c49c0",
"IsInfra": false,
"Labels": {
"org.opencontainers.image.title": "curiOS",
"org.opencontainers.image.url": "https://github.com/kernelkit/curiOS"
},
"Mounts": [],
"Names": [
"system2"
],
"Namespaces": {
},
"Networks": [
"veth0k"
],
"Pid": 3934,
"Pod": "",
"PodName": "",
"Ports": null,
"Size": null,
"StartedAt": 1730216629,
"State": "running",
"Status": "Up 3 minutes",
"Created": 1730215318
},
{
"AutoRemove": false,
"Command": null,
"CreatedAt": "22 minutes ago",
"Exited": false,
"ExitedAt": 1730216567,
"ExitCode": 0,
"Id": "400172de2290a387bd10de7c2995a0876169a4b69679b862b474c645308dcea1",
"Image": "ghcr.io/kernelkit/curios:edge",
"ImageID": "cee712df3c4ea28bd3f03ca50d46e53788b1526812f4dac8d9133870eb5c49c0",
"IsInfra": false,
"Labels": {
"org.opencontainers.image.title": "curiOS",
"org.opencontainers.image.url": "https://github.com/kernelkit/curiOS"
},
"Mounts": [],
"Names": [
"system"
],
"Namespaces": {
},
"Networks": [
"e2",
"veth0b"
],
"Pid": 3933,
"Pod": "",
"PodName": "",
"Ports": null,
"Size": null,
"StartedAt": 1730216629,
"State": "running",
"Status": "Up 3 minutes",
"Created": 1730215507
}
]
@@ -1 +0,0 @@
{"operation": "idle", "progress": {"percentage": "100", "message": "Installing failed."}}
@@ -1 +0,0 @@
{"compatible":"infix-aarch64","variant":"","booted":"net","boot_primary":"net.0","slots":[{"rootfs.1":{"class":"rootfs","device":"/dev/disk/by-partlabel/secondary","type":"raw","bootname":"secondary","state":"inactive","parent":null,"mountpoint":null,"boot_status":"bad","slot_status":{"bundle":{"compatible":"infix-aarch64","version":"pr873.2a39a38","hash":"99a9543fe85a2b32a4a28409f7103099fd8cfce3f3bbccb5175ace74e7bf9ea6"},"checksum":{"sha256":"d2595e8af8468c19a5da6c3fffbf27ff8e00d7ac2559a87f60591829151fd7e3","size":59707392},"installed":{"timestamp":"2024-12-16T14:40:54Z","count":12},"activated":{"timestamp":"2024-12-16T14:40:54Z","count":12},"status":"ok"}}},{"rootfs.0":{"class":"rootfs","device":"/dev/disk/by-partlabel/primary","type":"raw","bootname":"primary","state":"inactive","parent":null,"mountpoint":null,"boot_status":"bad","slot_status":{"bundle":{"compatible":"infix-aarch64","version":"pr871.a4ef38f","hash":"d36189afff31ac1193ee7eda161f7e9b2007df08ccdc0014cfa231f9a836780a"},"checksum":{"sha256":"d78a9ef52f08238972b6b9151c381327dd0c40e410f9ed4634e379056f9bacd8","size":59699200},"installed":{"timestamp":"2024-12-13T20:00:42Z","count":3},"activated":{"timestamp":"2024-12-13T20:00:42Z","count":4},"status":"ok"}}},{"net.0":{"class":"net","device":"/dev/ram0","type":"raw","bootname":"net","state":"booted","parent":null,"mountpoint":null,"boot_status":"good","slot_status":{"bundle":{"compatible":null}}}}]}
@@ -1 +0,0 @@
{"10.0.0.1/32":{"routeType":"N","transit":false,"cost":0,"area":"0.0.0.1","nexthops":[{"ip":" ","directlyAttachedTo":"lo"}]},"10.0.0.2/32":{"routeType":"N","transit":false,"cost":1,"area":"0.0.0.0","nexthops":[{"ip":"10.0.12.2","via":"e5","advertisedRouter":"1.1.1.1"}]},"10.0.0.3/32":{"routeType":"N","transit":false,"cost":2000,"area":"0.0.0.1","nexthops":[{"ip":"10.0.13.2","via":"e6","advertisedRouter":"10.0.0.3"}]},"10.0.0.4/32":{"routeType":"N IA","cost":2001,"area":"0.0.0.0","nexthops":[{"ip":"10.0.12.2","via":"e5","advertisedRouter":"1.1.1.1"}]},"10.0.12.0/30":{"routeType":"N","transit":true,"cost":1,"area":"0.0.0.0","nexthops":[{"ip":" ","directlyAttachedTo":"e5"}]},"10.0.13.0/30":{"routeType":"N","transit":true,"cost":2000,"area":"0.0.0.1","nexthops":[{"ip":" ","directlyAttachedTo":"e6"}]},"10.0.23.0/30":{"routeType":"N","transit":true,"cost":2001,"area":"0.0.0.1","nexthops":[{"ip":"10.0.13.2","via":"e6","advertisedRouter":"10.0.0.3"}]},"10.0.24.0/30":{"routeType":"N IA","cost":2001,"area":"0.0.0.0","nexthops":[{"ip":"10.0.12.2","via":"e5","advertisedRouter":"1.1.1.1"}]},"10.0.41.0/30":{"routeType":"N IA","cost":2002,"area":"0.0.0.0","nexthops":[{"ip":"10.0.12.2","via":"e5","advertisedRouter":"1.1.1.1"}]},"11.0.8.1/32":{"routeType":"N","transit":false,"cost":0,"area":"0.0.0.1","nexthops":[{"ip":" ","directlyAttachedTo":"lo"}]},"11.0.9.1/32":{"routeType":"N","transit":false,"cost":1,"area":"0.0.0.0","nexthops":[{"ip":"10.0.12.2","via":"e5","advertisedRouter":"1.1.1.1"}]},"11.0.10.1/32":{"routeType":"N","transit":false,"cost":1,"area":"0.0.0.0","nexthops":[{"ip":"10.0.12.2","via":"e5","advertisedRouter":"1.1.1.1"}]},"11.0.11.1/32":{"routeType":"N","transit":false,"cost":1,"area":"0.0.0.0","nexthops":[{"ip":"10.0.12.2","via":"e5","advertisedRouter":"1.1.1.1"}]},"11.0.12.1/32":{"routeType":"N","transit":false,"cost":1,"area":"0.0.0.0","nexthops":[{"ip":"10.0.12.2","via":"e5","advertisedRouter":"1.1.1.1"}]},"11.0.13.1/32":{"routeType":"N","transit":false,"cost":1,"area":"0.0.0.0","nexthops":[{"ip":"10.0.12.2","via":"e5","advertisedRouter":"1.1.1.1"}]},"11.0.14.1/32":{"routeType":"N","transit":false,"cost":1,"area":"0.0.0.0","nexthops":[{"ip":"10.0.12.2","via":"e5","advertisedRouter":"1.1.1.1"}]},"11.0.15.1/32":{"routeType":"N","transit":false,"cost":1,"area":"0.0.0.0","nexthops":[{"ip":"10.0.12.2","via":"e5","advertisedRouter":"1.1.1.1"}]},"192.168.3.0/24":{"routeType":"N","transit":false,"cost":2001,"area":"0.0.0.1","nexthops":[{"ip":"10.0.13.2","via":"e6","advertisedRouter":"10.0.0.3"}]},"1.1.1.1":{"routeType":"R ","cost":1,"area":"0.0.0.0","routerType":"abr","nexthops":[{"ip":"10.0.12.2","via":"e5"}]},"10.0.0.4":{"routeType":"R ","cost":2001,"area":"0.0.0.0","IA":true,"ia":true,"routerType":"asbr","nexthops":[{"ip":"10.0.12.2","via":"e5"}]},"192.168.4.0/24":{"routeType":"N E2","cost":2001,"type2cost":20,"tag":0,"nexthops":[{"ip":"10.0.12.2","via":"e5","advertisedRouter":"1.1.1.1"}]}}
@@ -1,302 +0,0 @@
{
"0.0.0.0/0":[
{
"prefix":"0.0.0.0/0",
"prefixLen":0,
"protocol":"ospf",
"vrfId":0,
"vrfName":"default",
"selected":true,
"destSelected":true,
"distance":110,
"metric":2,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":8,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":42,
"installedNexthopGroupId":42,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"ip":"10.0.23.1",
"afi":"ipv4",
"interfaceIndex":7,
"interfaceName":"e6",
"active":true,
"weight":1
}
]
}
],
"10.0.0.1/32":[
{
"prefix":"10.0.0.1/32",
"prefixLen":32,
"protocol":"ospf",
"vrfId":0,
"vrfName":"default",
"selected":true,
"destSelected":true,
"distance":110,
"metric":4000,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":8,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":43,
"installedNexthopGroupId":43,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"ip":"10.0.13.1",
"afi":"ipv4",
"interfaceIndex":6,
"interfaceName":"e5",
"active":true,
"weight":1
}
]
}
],
"10.0.0.3/32":[
{
"prefix":"10.0.0.3/32",
"prefixLen":32,
"protocol":"ospf",
"vrfId":0,
"vrfName":"default",
"distance":110,
"metric":0,
"table":254,
"internalStatus":0,
"internalFlags":0,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":30,
"uptime":"00:00:00",
"nexthops":[
{
"flags":1,
"directlyConnected":true,
"interfaceIndex":1,
"interfaceName":"lo",
"active":true,
"weight":1
}
]
},
{
"prefix":"10.0.0.3/32",
"prefixLen":32,
"protocol":"connected",
"vrfId":0,
"vrfName":"default",
"selected":true,
"destSelected":true,
"distance":0,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":8,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":25,
"installedNexthopGroupId":25,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"directlyConnected":true,
"interfaceIndex":1,
"interfaceName":"lo",
"active":true
}
]
}
],
"10.0.13.0/30":[
{
"prefix":"10.0.13.0/30",
"prefixLen":30,
"protocol":"ospf",
"vrfId":0,
"vrfName":"default",
"distance":110,
"metric":2000,
"table":254,
"internalStatus":0,
"internalFlags":0,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":31,
"uptime":"00:00:00",
"nexthops":[
{
"flags":1,
"directlyConnected":true,
"interfaceIndex":6,
"interfaceName":"e5",
"active":true,
"weight":1
}
]
},
{
"prefix":"10.0.13.0/30",
"prefixLen":30,
"protocol":"connected",
"vrfId":0,
"vrfName":"default",
"selected":true,
"destSelected":true,
"distance":0,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":8,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":20,
"installedNexthopGroupId":20,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"directlyConnected":true,
"interfaceIndex":6,
"interfaceName":"e5",
"active":true
}
]
}
],
"10.0.23.0/30":[
{
"prefix":"10.0.23.0/30",
"prefixLen":30,
"protocol":"ospf",
"vrfId":0,
"vrfName":"default",
"distance":110,
"metric":1,
"table":254,
"internalStatus":0,
"internalFlags":0,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":32,
"uptime":"00:00:00",
"nexthops":[
{
"flags":1,
"directlyConnected":true,
"interfaceIndex":7,
"interfaceName":"e6",
"active":true,
"weight":1
}
]
},
{
"prefix":"10.0.23.0/30",
"prefixLen":30,
"protocol":"connected",
"vrfId":0,
"vrfName":"default",
"selected":true,
"destSelected":true,
"distance":0,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":8,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":23,
"installedNexthopGroupId":23,
"uptime":"20:10:05",
"nexthops":[
{
"flags":3,
"fib":true,
"directlyConnected":true,
"interfaceIndex":7,
"interfaceName":"e6",
"active":true
}
]
}
],
"192.168.3.0/24":[
{
"prefix":"192.168.3.0/24",
"prefixLen":24,
"protocol":"ospf",
"vrfId":0,
"vrfName":"default",
"distance":110,
"metric":1,
"table":254,
"internalStatus":0,
"internalFlags":0,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":33,
"uptime":"5d13h05m",
"nexthops":[
{
"flags":1,
"directlyConnected":true,
"interfaceIndex":3,
"interfaceName":"e2",
"active":true,
"weight":1
}
]
},
{
"prefix":"192.168.3.0/24",
"prefixLen":24,
"protocol":"connected",
"vrfId":0,
"vrfName":"default",
"selected":true,
"destSelected":true,
"distance":0,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":8,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":17,
"installedNexthopGroupId":17,
"uptime":"01w1d13h",
"nexthops":[
{
"flags":3,
"fib":true,
"directlyConnected":true,
"interfaceIndex":3,
"interfaceName":"e2",
"active":true
}
]
}
]
}
@@ -1,294 +0,0 @@
{
"::/0":[
{
"prefix":"::/0",
"prefixLen":0,
"protocol":"static",
"vrfId":0,
"vrfName":"default",
"selected":true,
"destSelected":true,
"distance":1,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":73,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":24,
"installedNexthopGroupId":24,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"ip":"2001:db8:3c4d:50::1",
"afi":"ipv6",
"interfaceIndex":7,
"interfaceName":"e6",
"active":true,
"weight":1
}
]
}
],
"2001:db8:3c4d:50::/64":[
{
"prefix":"2001:db8:3c4d:50::/64",
"prefixLen":64,
"protocol":"connected",
"vrfId":0,
"vrfName":"default",
"selected":true,
"destSelected":true,
"distance":0,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":8,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":15,
"installedNexthopGroupId":15,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"directlyConnected":true,
"interfaceIndex":7,
"interfaceName":"e6",
"active":true
}
]
}
],
"2001:db8:3c4d:200::1/128":[
{
"prefix":"2001:db8:3c4d:200::1/128",
"prefixLen":128,
"protocol":"connected",
"vrfId":0,
"vrfName":"default",
"selected":true,
"destSelected":true,
"distance":0,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":8,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":13,
"installedNexthopGroupId":13,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"directlyConnected":true,
"interfaceIndex":1,
"interfaceName":"lo",
"active":true
}
]
}
],
"fe80::/64":[
{
"prefix":"fe80::/64",
"prefixLen":64,
"protocol":"connected",
"vrfId":0,
"vrfName":"default",
"distance":0,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":0,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":14,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"directlyConnected":true,
"interfaceIndex":8,
"interfaceName":"e7",
"active":true
}
]
},
{
"prefix":"fe80::/64",
"prefixLen":64,
"protocol":"connected",
"vrfId":0,
"vrfName":"default",
"distance":0,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":0,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":15,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"directlyConnected":true,
"interfaceIndex":7,
"interfaceName":"e6",
"active":true
}
]
},
{
"prefix":"fe80::/64",
"prefixLen":64,
"protocol":"connected",
"vrfId":0,
"vrfName":"default",
"distance":0,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":0,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":16,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"directlyConnected":true,
"interfaceIndex":6,
"interfaceName":"e5",
"active":true
}
]
},
{
"prefix":"fe80::/64",
"prefixLen":64,
"protocol":"connected",
"vrfId":0,
"vrfName":"default",
"distance":0,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":0,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":17,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"directlyConnected":true,
"interfaceIndex":5,
"interfaceName":"e4",
"active":true
}
]
},
{
"prefix":"fe80::/64",
"prefixLen":64,
"protocol":"connected",
"vrfId":0,
"vrfName":"default",
"distance":0,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":0,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":18,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"directlyConnected":true,
"interfaceIndex":4,
"interfaceName":"e3",
"active":true
}
]
},
{
"prefix":"fe80::/64",
"prefixLen":64,
"protocol":"connected",
"vrfId":0,
"vrfName":"default",
"distance":0,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":0,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":19,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"directlyConnected":true,
"interfaceIndex":3,
"interfaceName":"e2",
"active":true
}
]
},
{
"prefix":"fe80::/64",
"prefixLen":64,
"protocol":"connected",
"vrfId":0,
"vrfName":"default",
"selected":true,
"destSelected":true,
"distance":0,
"metric":0,
"installed":true,
"table":254,
"internalStatus":16,
"internalFlags":8,
"internalNextHopNum":1,
"internalNextHopActiveNum":1,
"nexthopGroupId":20,
"installedNexthopGroupId":20,
"uptime":"00:00:00",
"nexthops":[
{
"flags":3,
"fib":true,
"directlyConnected":true,
"interfaceIndex":2,
"interfaceName":"e1",
"active":true
}
]
}
]
}
+3
View File
@@ -0,0 +1,3 @@
---
- case: interfaces-all/test
name: "interfaces-all"
@@ -0,0 +1,46 @@
INTERFACE PROTOCOL STATE DATA 
lo ethernet UP 00:00:00:00:00:00
ipv4 127.0.0.1/8 (static)
ipv6 ::1/128 (static)
br-0 bridge DOWN 
ethernet DOWN 00:a0:85:00:03:00
br-D bridge  
│ ethernet UP 00:a0:85:00:03:00
│ ipv4 10.0.0.1/8 (static)
│ ipv4 192.168.20.1/24 (static)
│ ipv6 2001:db8::1/64 (static)
│ ipv6 fe80::2a0:85ff:fe00:300/64 (link-layer)
└ veth0a.20 bridge FORWARDING 
br-Q bridge  vlan:10u,20u,30t,40t pvid:10
│ ethernet UP 00:a0:85:00:03:00
├ e3 bridge FORWARDING vlan:20t,30t,40t
└ veth0b bridge FORWARDING vlan:10t,20t,30t,40t
br-Q.40 ethernet UP 00:a0:85:00:03:00
└ br-Q ethernet UP 00:a0:85:00:03:00
br-X bridge  
│ ethernet UP 00:a0:85:00:03:00
└ e2.30 bridge FORWARDING 
e1 ethernet UP 00:a0:85:00:03:01
ipv6 fe80::2a0:85ff:fe00:301/64 (link-layer)
e2 ethernet UP 00:a0:85:00:03:02
ipv6 fe80::2a0:85ff:fe00:302/64 (link-layer)
e2.30 ethernet UP 00:a0:85:00:03:02
└ e2 ethernet UP 00:a0:85:00:03:02
e3.10 ethernet UP 00:a0:85:00:03:03
└ e3 ethernet UP 00:a0:85:00:03:03
e4 ethernet UP 00:a0:85:00:03:04
ipv6 fe80::2a0:85ff:fe00:304/64 (link-layer)
e5 ethernet UP 00:a0:85:00:03:05
ipv6 fe80::2a0:85ff:fe00:305/64 (link-layer)
e6 ethernet UP 00:a0:85:00:03:06
ipv6 fe80::2a0:85ff:fe00:306/64 (link-layer)
e7 ethernet UP 00:a0:85:00:03:07
ipv6 fe80::2a0:85ff:fe00:307/64 (link-layer)
gre-v4 ethernet UP 
gre-v6 ethernet UP 
gretap-v4 ethernet UP 1e:9d:e1:46:5d:9e
gretap-v6 ethernet UP ae:c7:28:08:7c:ca
veth0a ethernet UP 86:2a:11:4e:5d:9f
veth0a.20 ethernet UP 86:2a:11:4e:5d:9f
└ veth0a ethernet UP 86:2a:11:4e:5d:9f
veth0b ethernet UP e2:f0:55:1b:34:f3
@@ -0,0 +1,633 @@
{
"ietf-interfaces:interfaces": {
"interface": [
{
"type": "infix-if-type:loopback",
"name": "lo",
"if-index": 1,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:00:00:00:00:00",
"statistics": {
"in-octets": "420569",
"out-octets": "420569"
},
"ietf-ip:ipv4": {
"address": [
{
"ip": "127.0.0.1",
"prefix-length": 8,
"origin": "static"
}
]
},
"ietf-ip:ipv6": {
"mtu": 65536,
"address": [
{
"ip": "::1",
"prefix-length": 128,
"origin": "static"
}
]
}
},
{
"type": "infix-if-type:etherlike",
"name": "e1",
"if-index": 2,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:01",
"statistics": {
"in-octets": "5654369",
"out-octets": "8200041"
},
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500,
"address": [
{
"ip": "fe80::2a0:85ff:fe00:301",
"prefix-length": 64,
"origin": "link-layer"
}
]
}
},
{
"type": "infix-if-type:etherlike",
"name": "e2",
"if-index": 3,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:02",
"statistics": {
"out-octets": "101161"
},
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500,
"address": [
{
"ip": "fe80::2a0:85ff:fe00:302",
"prefix-length": 64,
"origin": "link-layer"
}
]
}
},
{
"type": "infix-if-type:etherlike",
"name": "e3",
"if-index": 4,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:03",
"statistics": {
"in-octets": "23589",
"out-octets": "251584"
},
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"infix-interfaces:bridge-port": {
"bridge": "br-Q",
"flood": {
"broadcast": true,
"unicast": true,
"multicast": true
},
"multicast": {
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
}
},
{
"type": "infix-if-type:etherlike",
"name": "e4",
"if-index": 5,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:04",
"statistics": {
"in-octets": "30583",
"out-octets": "231318"
},
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500,
"address": [
{
"ip": "fe80::2a0:85ff:fe00:304",
"prefix-length": 64,
"origin": "link-layer"
}
]
}
},
{
"type": "infix-if-type:etherlike",
"name": "e5",
"if-index": 6,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:05",
"statistics": {
"in-octets": "67364",
"out-octets": "105244"
},
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500,
"address": [
{
"ip": "fe80::2a0:85ff:fe00:305",
"prefix-length": 64,
"origin": "link-layer"
}
]
}
},
{
"type": "infix-if-type:etherlike",
"name": "e6",
"if-index": 7,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:06",
"statistics": {
"in-octets": "136295",
"out-octets": "209032"
},
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500,
"address": [
{
"ip": "fe80::2a0:85ff:fe00:306",
"prefix-length": 64,
"origin": "link-layer"
}
]
}
},
{
"type": "infix-if-type:etherlike",
"name": "e7",
"if-index": 8,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:07",
"statistics": {
"in-octets": "70752",
"out-octets": "108022"
},
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500,
"address": [
{
"ip": "fe80::2a0:85ff:fe00:307",
"prefix-length": 64,
"origin": "link-layer"
}
]
}
},
{
"type": "infix-if-type:bridge",
"name": "br-0",
"if-index": 47,
"admin-status": "up",
"oper-status": "down",
"phys-address": "00:a0:85:00:03:00",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"infix-interfaces:bridge": {
"multicast": {
"snooping": false,
"querier": "off"
},
"multicast-filters": {
"multicast-filter": []
}
}
},
{
"type": "infix-if-type:vlan",
"name": "e2.30",
"if-index": 48,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:02",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"infix-interfaces:vlan": {
"tag-type": "ieee802-dot1q-types:c-vlan",
"id": 30,
"lower-layer-if": "e2"
},
"infix-interfaces:bridge-port": {
"bridge": "br-X",
"flood": {
"broadcast": true,
"unicast": true,
"multicast": true
},
"multicast": {
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
}
},
{
"type": "infix-if-type:bridge",
"name": "br-X",
"if-index": 49,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"infix-interfaces:bridge": {
"multicast": {
"snooping": false,
"querier": "off"
},
"multicast-filters": {
"multicast-filter": []
}
}
},
{
"type": "infix-if-type:veth",
"name": "veth0b",
"if-index": 50,
"admin-status": "up",
"oper-status": "up",
"phys-address": "e2:f0:55:1b:34:f3",
"statistics": {
"in-octets": "13501"
},
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"infix-interfaces:veth": {
"peer": "veth0a"
},
"infix-interfaces:bridge-port": {
"bridge": "br-Q",
"flood": {
"broadcast": true,
"unicast": true,
"multicast": true
},
"multicast": {
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
}
},
{
"type": "infix-if-type:veth",
"name": "veth0a",
"if-index": 51,
"admin-status": "up",
"oper-status": "up",
"phys-address": "86:2a:11:4e:5d:9f",
"statistics": {
"out-octets": "13501"
},
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"infix-interfaces:veth": {
"peer": "veth0b"
}
},
{
"type": "infix-if-type:vlan",
"name": "veth0a.20",
"if-index": 52,
"admin-status": "up",
"oper-status": "up",
"phys-address": "86:2a:11:4e:5d:9f",
"statistics": {
"out-octets": "13501"
},
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"infix-interfaces:vlan": {
"tag-type": "ieee802-dot1q-types:c-vlan",
"id": 20,
"lower-layer-if": "veth0a"
},
"infix-interfaces:bridge-port": {
"bridge": "br-D",
"flood": {
"broadcast": true,
"unicast": true,
"multicast": true
},
"multicast": {
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
}
},
{
"type": "infix-if-type:bridge",
"name": "br-D",
"if-index": 53,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"statistics": {
"out-octets": "13501"
},
"ietf-ip:ipv4": {
"mtu": 1500,
"address": [
{
"ip": "10.0.0.1",
"prefix-length": 8,
"origin": "static"
},
{
"ip": "192.168.20.1",
"prefix-length": 24,
"origin": "static"
}
]
},
"ietf-ip:ipv6": {
"mtu": 1500,
"address": [
{
"ip": "2001:db8::1",
"prefix-length": 64,
"origin": "static"
},
{
"ip": "fe80::2a0:85ff:fe00:300",
"prefix-length": 64,
"origin": "link-layer"
}
]
},
"infix-interfaces:bridge": {
"multicast": {
"snooping": false,
"querier": "off"
},
"multicast-filters": {
"multicast-filter": []
}
}
},
{
"type": "infix-if-type:bridge",
"name": "br-Q",
"if-index": 54,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"statistics": {
"in-octets": "9469"
},
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"infix-interfaces:bridge": {
"vlans": {
"proto": "ieee802-dot1q-types:c-vlan",
"vlan": [
{
"vid": 10,
"untagged": [
"br-Q"
],
"tagged": [
"veth0b"
],
"multicast": {
"snooping": true,
"querier": "off"
},
"multicast-filters": {
"multicast-filter": []
}
},
{
"vid": 20,
"untagged": [
"br-Q"
],
"tagged": [
"e3",
"veth0b"
],
"multicast": {
"snooping": true,
"querier": "off"
},
"multicast-filters": {
"multicast-filter": []
}
},
{
"vid": 30,
"untagged": [],
"tagged": [
"br-Q",
"e3",
"veth0b"
],
"multicast": {
"snooping": true,
"querier": "off"
},
"multicast-filters": {
"multicast-filter": []
}
},
{
"vid": 40,
"untagged": [],
"tagged": [
"br-Q",
"e3",
"veth0b"
],
"multicast": {
"snooping": true,
"querier": "off"
},
"multicast-filters": {
"multicast-filter": []
}
}
]
}
},
"infix-interfaces:bridge-port": {
"pvid": 10
}
},
{
"type": "infix-if-type:vlan",
"name": "br-Q.40",
"if-index": 55,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"infix-interfaces:vlan": {
"tag-type": "ieee802-dot1q-types:c-vlan",
"id": 40,
"lower-layer-if": "br-Q"
}
},
{
"type": "infix-if-type:vlan",
"name": "e3.10",
"if-index": 56,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:03",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"infix-interfaces:vlan": {
"tag-type": "ieee802-dot1q-types:c-vlan",
"id": 10,
"lower-layer-if": "e3"
}
},
{
"type": "infix-if-type:gre",
"name": "gre-v4",
"if-index": 57,
"admin-status": "up",
"oper-status": "up",
"ietf-ip:ipv4": {
"mtu": 1476
},
"ietf-ip:ipv6": {
"mtu": 1476
},
"infix-interfaces:gre": {
"local": "192.168.20.1",
"remote": "192.168.20.2"
}
},
{
"type": "infix-if-type:gre",
"name": "gre-v6",
"if-index": 58,
"admin-status": "up",
"oper-status": "up",
"ietf-ip:ipv4": {
"mtu": 1448
},
"ietf-ip:ipv6": {
"mtu": 1448
},
"infix-interfaces:gre": {
"local": "2001:db8::1",
"remote": "2001:db8::2"
}
},
{
"type": "infix-if-type:gretap",
"name": "gretap-v4",
"if-index": 59,
"admin-status": "up",
"oper-status": "up",
"phys-address": "1e:9d:e1:46:5d:9e",
"ietf-ip:ipv4": {
"mtu": 1462
},
"ietf-ip:ipv6": {
"mtu": 1462
},
"infix-interfaces:gre": {
"local": "192.168.20.1",
"remote": "192.168.20.2"
}
},
{
"type": "infix-if-type:gretap",
"name": "gretap-v6",
"if-index": 60,
"admin-status": "up",
"oper-status": "up",
"phys-address": "ae:c7:28:08:7c:ca",
"ietf-ip:ipv4": {
"mtu": 1434
},
"ietf-ip:ipv6": {
"mtu": 1434
},
"infix-interfaces:gre": {
"local": "2001:db8::1",
"remote": "2001:db8::2"
}
}
]
}
}
@@ -0,0 +1,633 @@
{
"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": "420569",
"out-octets": "420569"
},
"type": "infix-if-type:loopback"
},
{
"admin-status": "up",
"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": "5654369",
"out-octets": "8200041"
},
"type": "infix-if-type:etherlike"
},
{
"admin-status": "up",
"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": {
"out-octets": "101161"
},
"type": "infix-if-type:etherlike"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 4,
"infix-interfaces:bridge-port": {
"bridge": "br-Q",
"flood": {
"broadcast": true,
"multicast": true,
"unicast": true
},
"multicast": {
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
},
"name": "e3",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:03",
"statistics": {
"in-octets": "23589",
"out-octets": "251584"
},
"type": "infix-if-type:etherlike"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"address": [
{
"ip": "fe80::2a0:85ff:fe00:304",
"origin": "link-layer",
"prefix-length": 64
}
],
"mtu": 1500
},
"if-index": 5,
"name": "e4",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:04",
"statistics": {
"in-octets": "30583",
"out-octets": "231318"
},
"type": "infix-if-type:etherlike"
},
{
"admin-status": "up",
"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": "67364",
"out-octets": "105244"
},
"type": "infix-if-type:etherlike"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"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": "136295",
"out-octets": "209032"
},
"type": "infix-if-type:etherlike"
},
{
"admin-status": "up",
"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": "70752",
"out-octets": "108022"
},
"type": "infix-if-type:etherlike"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 47,
"infix-interfaces:bridge": {
"multicast": {
"querier": "off",
"snooping": false
},
"multicast-filters": {
"multicast-filter": []
}
},
"name": "br-0",
"oper-status": "down",
"phys-address": "00:a0:85:00:03:00",
"type": "infix-if-type:bridge"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 48,
"infix-interfaces:bridge-port": {
"bridge": "br-X",
"flood": {
"broadcast": true,
"multicast": true,
"unicast": true
},
"multicast": {
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
},
"infix-interfaces:vlan": {
"id": 30,
"lower-layer-if": "e2",
"tag-type": "ieee802-dot1q-types:c-vlan"
},
"name": "e2.30",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:02",
"type": "infix-if-type:vlan"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 49,
"infix-interfaces:bridge": {
"multicast": {
"querier": "off",
"snooping": false
},
"multicast-filters": {
"multicast-filter": []
}
},
"name": "br-X",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"type": "infix-if-type:bridge"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 50,
"infix-interfaces:bridge-port": {
"bridge": "br-Q",
"flood": {
"broadcast": true,
"multicast": true,
"unicast": true
},
"multicast": {
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
},
"infix-interfaces:veth": {
"peer": "veth0a"
},
"name": "veth0b",
"oper-status": "up",
"phys-address": "e2:f0:55:1b:34:f3",
"statistics": {
"in-octets": "13501"
},
"type": "infix-if-type:veth"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 51,
"infix-interfaces:veth": {
"peer": "veth0b"
},
"name": "veth0a",
"oper-status": "up",
"phys-address": "86:2a:11:4e:5d:9f",
"statistics": {
"out-octets": "13501"
},
"type": "infix-if-type:veth"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 52,
"infix-interfaces:bridge-port": {
"bridge": "br-D",
"flood": {
"broadcast": true,
"multicast": true,
"unicast": true
},
"multicast": {
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
},
"infix-interfaces:vlan": {
"id": 20,
"lower-layer-if": "veth0a",
"tag-type": "ieee802-dot1q-types:c-vlan"
},
"name": "veth0a.20",
"oper-status": "up",
"phys-address": "86:2a:11:4e:5d:9f",
"statistics": {
"out-octets": "13501"
},
"type": "infix-if-type:vlan"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"address": [
{
"ip": "10.0.0.1",
"origin": "static",
"prefix-length": 8
},
{
"ip": "192.168.20.1",
"origin": "static",
"prefix-length": 24
}
],
"mtu": 1500
},
"ietf-ip:ipv6": {
"address": [
{
"ip": "2001:db8::1",
"origin": "static",
"prefix-length": 64
},
{
"ip": "fe80::2a0:85ff:fe00:300",
"origin": "link-layer",
"prefix-length": 64
}
],
"mtu": 1500
},
"if-index": 53,
"infix-interfaces:bridge": {
"multicast": {
"querier": "off",
"snooping": false
},
"multicast-filters": {
"multicast-filter": []
}
},
"name": "br-D",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"statistics": {
"out-octets": "13501"
},
"type": "infix-if-type:bridge"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 54,
"infix-interfaces:bridge": {
"vlans": {
"proto": "ieee802-dot1q-types:c-vlan",
"vlan": [
{
"multicast": {
"querier": "off",
"snooping": true
},
"multicast-filters": {
"multicast-filter": []
},
"tagged": [
"veth0b"
],
"untagged": [
"br-Q"
],
"vid": 10
},
{
"multicast": {
"querier": "off",
"snooping": true
},
"multicast-filters": {
"multicast-filter": []
},
"tagged": [
"e3",
"veth0b"
],
"untagged": [
"br-Q"
],
"vid": 20
},
{
"multicast": {
"querier": "off",
"snooping": true
},
"multicast-filters": {
"multicast-filter": []
},
"tagged": [
"br-Q",
"e3",
"veth0b"
],
"untagged": [],
"vid": 30
},
{
"multicast": {
"querier": "off",
"snooping": true
},
"multicast-filters": {
"multicast-filter": []
},
"tagged": [
"br-Q",
"e3",
"veth0b"
],
"untagged": [],
"vid": 40
}
]
}
},
"infix-interfaces:bridge-port": {
"pvid": 10
},
"name": "br-Q",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"statistics": {
"in-octets": "9469"
},
"type": "infix-if-type:bridge"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 55,
"infix-interfaces:vlan": {
"id": 40,
"lower-layer-if": "br-Q",
"tag-type": "ieee802-dot1q-types:c-vlan"
},
"name": "br-Q.40",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"type": "infix-if-type:vlan"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 56,
"infix-interfaces:vlan": {
"id": 10,
"lower-layer-if": "e3",
"tag-type": "ieee802-dot1q-types:c-vlan"
},
"name": "e3.10",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:03",
"type": "infix-if-type:vlan"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1476
},
"ietf-ip:ipv6": {
"mtu": 1476
},
"if-index": 57,
"infix-interfaces:gre": {
"local": "192.168.20.1",
"remote": "192.168.20.2"
},
"name": "gre-v4",
"oper-status": "up",
"type": "infix-if-type:gre"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1448
},
"ietf-ip:ipv6": {
"mtu": 1448
},
"if-index": 58,
"infix-interfaces:gre": {
"local": "2001:db8::1",
"remote": "2001:db8::2"
},
"name": "gre-v6",
"oper-status": "up",
"type": "infix-if-type:gre"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1462
},
"ietf-ip:ipv6": {
"mtu": 1462
},
"if-index": 59,
"infix-interfaces:gre": {
"local": "192.168.20.1",
"remote": "192.168.20.2"
},
"name": "gretap-v4",
"oper-status": "up",
"phys-address": "1e:9d:e1:46:5d:9e",
"type": "infix-if-type:gretap"
},
{
"admin-status": "up",
"ietf-ip:ipv4": {
"mtu": 1434
},
"ietf-ip:ipv6": {
"mtu": 1434
},
"if-index": 60,
"infix-interfaces:gre": {
"local": "2001:db8::1",
"remote": "2001:db8::2"
},
"name": "gretap-v6",
"oper-status": "up",
"phys-address": "ae:c7:28:08:7c:ca",
"type": "infix-if-type:gretap"
}
]
}
}
@@ -0,0 +1 @@
[{"mdb":[],"router":{}}]
@@ -0,0 +1 @@
[{"mdb":[],"router":{}}]
@@ -0,0 +1 @@
[{"mdb":[],"router":{}}]
@@ -0,0 +1 @@
[{"mdb":[],"router":{}}]
@@ -0,0 +1 @@
[{"mdb":[],"router":{}}]
@@ -0,0 +1 @@
[{"mdb":[],"router":{}}]
@@ -0,0 +1 @@
[{"mdb":[],"router":{}}]
@@ -0,0 +1 @@
[{"ifname":"br-Q","vlans":[{"vlan":10,"mcast_snooping":1,"mcast_querier":0,"mcast_igmp_version":2,"mcast_mld_version":1,"mcast_last_member_count":2,"mcast_last_member_interval":100,"mcast_startup_query_count":2,"mcast_startup_query_interval":3124,"mcast_membership_interval":26000,"mcast_querier_interval":25500,"mcast_query_interval":12500,"mcast_query_response_interval":1000,"msti":0},{"vlan":20,"mcast_snooping":1,"mcast_querier":0,"mcast_igmp_version":2,"mcast_mld_version":1,"mcast_last_member_count":2,"mcast_last_member_interval":100,"mcast_startup_query_count":2,"mcast_startup_query_interval":3124,"mcast_membership_interval":26000,"mcast_querier_interval":25500,"mcast_query_interval":12500,"mcast_query_response_interval":1000,"msti":0},{"vlan":30,"mcast_snooping":1,"mcast_querier":0,"mcast_igmp_version":2,"mcast_mld_version":1,"mcast_last_member_count":2,"mcast_last_member_interval":100,"mcast_startup_query_count":2,"mcast_startup_query_interval":3124,"mcast_membership_interval":26000,"mcast_querier_interval":25500,"mcast_query_interval":12500,"mcast_query_response_interval":1000,"msti":0},{"vlan":40,"mcast_snooping":1,"mcast_querier":0,"mcast_igmp_version":2,"mcast_mld_version":1,"mcast_last_member_count":2,"mcast_last_member_interval":100,"mcast_startup_query_count":2,"mcast_startup_query_interval":3124,"mcast_membership_interval":26000,"mcast_querier_interval":25500,"mcast_query_interval":12500,"mcast_query_response_interval":1000,"msti":0}]}]
@@ -0,0 +1 @@
[{"ifname":"e3","vlans":[{"vlan":20},{"vlan":30},{"vlan":40}]},{"ifname":"veth0b","vlans":[{"vlan":10},{"vlan":20},{"vlan":30},{"vlan":40}]},{"ifname":"br-Q","vlans":[{"vlan":10,"flags":["PVID","Egress Untagged"]},{"vlan":20,"flags":["Egress Untagged"]},{"vlan":30},{"vlan":40}]}]
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+11
View File
@@ -0,0 +1,11 @@
#!/bin/sh
yang_models="ietf-interfaces"
gen_test=ietf_interfaces/verify_all_interface_types/test.py
gen_iface=d3a
cli_commands="show-interfaces"
. $(readlink -f $(dirname $0)/../test.sh)
main "$@"
+336
View File
@@ -0,0 +1,336 @@
set -e
usage()
{
local me="$(basename $0)"
cat <<EOF
usage: $me [<command>]
Verify that yanger produces the expected operational data for
$yang_models, and that cli_pretty produces the expected output for
$cli_commands.
Commands:
If no command is specified it defaults to "check"
gen
(Re)generate system state, operational.json and expected
cli_pretty output based on $gen_test
check
Check yanger and CLI output
yanger gen
Run $gen_test and capture the system status from the Infix
device behind $gen_iface
yanger check
Verify that yanger produces the operational data previously
recorded in operational.json
yanger live
Produce the operational data for $yang_models from the Infix
device behind $gen_iface, and write it to stdout
cli gen
Update the expected output of $cli_commands from the current
operational.json
cli check
Verify that cli_pretty produces the expected output for
$cli_commands, based on the current operational.json
EOF
}
casedir=$(readlink -f $(dirname $0))
ixdir=$(readlink -f $casedir/../../../../)
YANGER=${YANGER:-$ixdir/src/statd/python/yanger/yanger}
CLI=${CLI:-$ixdir/src/statd/python/cli_pretty/cli_pretty.py}
wrapper="$ixdir/utils/ixll -A ssh $gen_iface sudo"
# Make sure topology matchings are stable since we capture system
# states by referencing a _physical_ interface, which must match the
# expected _logical_ node.
export PYTHONHASHSEED=0
exitcode=0
n_steps=0
step()
{
local status="$1"
shift
if [ "$status" != "ok" ]; then
exitcode=1
fi
n_steps=$((n_steps+1))
echo "$status $n_steps - $*"
}
plan()
{
echo "$n_steps..$n_steps"
exit $exitcode
}
prepare_infamy_test()
{
$ixdir/test/case/meta/wait.py && \
$ixdir/test/case/$1
}
yanger_exec()
{
local opts=
while getopts "w:t:" opt; do
case ${opt} in
w)
opts="$opts -w \"$OPTARG\""
;;
t)
opts="$opts -t \"$OPTARG\""
;;
esac
done
shift $((OPTIND - 1))
eval "$YANGER" $opts "$1"
}
yanger_gen()
{
local operfiles=
if type gen_exec &>/dev/null; then
gen_exec
return
fi
if ! [ "$gen_test" ] && [ "$gen_iface" ]; then
echo "!!! Not implemented" >&2
false
fi
echo ">>> RUNNING $gen_test" >&2
prepare_infamy_test "$gen_test"
set $yang_models
while [ $# -gt 0 ]; do
echo ">>> CAPTURING $1 from $gen_iface" >&2
yanger_exec \
-t "$casedir/system" \
-w "$wrapper" \
$1 \
>"$casedir/$1.json"
operfiles="$operfiles $casedir/$1.json"
echo ">>> OK" >&2
shift
done
echo ">>> GENERATING operational.json" >&2
cat $operfiles | jq --slurp --sort-keys \
'reduce .[] as $item ({}; . * $item)' \
>"$casedir/operational.json"
echo ">>> OK" >&2
}
yanger_check()
{
local status=
local diff=$(mktemp)
set $yang_models
while [ $# -gt 0 ]; do
status="ok"
if ! diff -up \
"$casedir/$1.json" \
<(yanger_exec -t "$casedir/system" $1) \
>"$diff"; then
cat $diff | sed 's/^/# /'
status="not ok"
fi
rm $diff
step "$status" \
"yanger output of \"$1\" matches $1.json"
shift
done
}
yanger_cat()
{
if [ $# -eq 0 ]; then
set $yang_models
fi
while [ $# -gt 0 ]; do
yanger_exec -t "$casedir/system" $1
shift
done
}
yanger_live()
{
if [ $# -eq 0 ]; then
set $yang_models
fi
while [ $# -gt 0 ]; do
yanger_exec -w "$wrapper" $1
shift
done
}
yanger()
{
local cmd=check
if [ $# -gt 0 ]; then
cmd="$1"
shift
fi
case "$cmd" in
cat|gen|live)
"yanger_$cmd" "$@"
return
;;
check)
yanger_check "$@"
plan
esac
false
}
cli_exec()
{
$CLI -t $(echo "$1" | tr '_' ' ')
}
cli_gen()
{
mkdir -p "$casedir/cli"
set $cli_commands
while [ $# -gt 0 ]; do
cli_exec "$1" <"$casedir/operational.json" >"$casedir/cli/$1"
shift
done
}
cli_check()
{
local diff=
local status=
set $cli_commands
while [ $# -gt 0 ]; do
diff="$(mktemp)"
status="ok"
if ! diff -up \
"$casedir/cli/$1" \
<(cli_exec "$1" <"$casedir/operational.json") \
>"$diff"; then
cat $diff | sed 's/^/# /'
status="not ok"
fi
rm $diff
step "$status" \
"cli output of \"$1\" matches cli/$1"
shift
done
}
cli_cat()
{
if [ $# -eq 0 ]; then
set $cli_commands
fi
while [ $# -gt 0 ]; do
echo ">>> Running $1" >&2
cli_exec "$1" <"$casedir/operational.json"
shift
done
}
cli_live()
{
local json=$(mktemp)
echo ">>> Capturing live state" >&2
yanger_live >$json
echo ">>> OK" >&2
if [ $# -eq 0 ]; then
set $cli_commands
fi
while [ $# -gt 0 ]; do
echo ">>> Running $1" >&2
cli_exec "$1" <"$casedir/cli/$1"
shift
done
rm $json
}
cli()
{
local cmd=check
if [ $# -gt 0 ]; then
cmd="$1"
shift
fi
case "$cmd" in
cat|gen|live)
"cli_$cmd" "$@"
return
;;
check)
cli_check "$@"
plan
;;
esac
false
}
main()
{
local cmd=check
if [ $# -gt 0 ]; then
cmd="$1"
shift
fi
case $cmd in
gen)
yanger gen && cli gen
;;
check)
yanger_check && cli_check
plan
;;
yanger|cli)
"$cmd" "$@"
;;
-h|--help|help)
usage
;;
*)
echo "!!! Unknown command \"$cmd\"" >&2
usage >&2
exit 1
;;
esac
}