Merge pull request #910 from kernelkit/stp-operational

Operational data support for STP
This commit is contained in:
Tobias Waldekranz
2025-01-24 21:53:05 +01:00
committed by GitHub
63 changed files with 1388 additions and 601 deletions
@@ -1,8 +1,9 @@
# A single mstpd instance can manage multiple bridges, which are
# dynamically added/removed by the kernel via the /sbin/bridge-stp
# usermode helper. We depend on usr/mstpd so that confd can
# enable/disable the service without an initctl barrier, since it
# needs to already be running when a bridge interface with spanning
# tree enabled is created.
service env:-/etc/default/mstpd <!usr/mstpd> \
# usermode helper. We use a manual service so that confd can
# enable/disable it without an initctl barrier, since it needs to
# already be running when a bridge interface with spanning tree
# enabled is created.
service env:-/etc/default/mstpd manual:yes \
[S0123456789] mstpd $MSTPD_ARGS -- Spanning Tree daemon
+10
View File
@@ -76,6 +76,7 @@ commands:
ifaces Show interfaces and their addresses
fdb Show forwarding database (unicast)
mdb Show multicast forwarding database
stp Show spanning tree status
ip addr Show IPv4 addresses
route Show routing table
ipv6 addr Show IPv6 addresses
@@ -188,6 +189,12 @@ rstp()
mstpctl showport br0
}
stp()
{
sysrepocfg -f json -X -d operational -m ietf-interfaces | \
/usr/libexec/statd/cli-pretty "show-bridge-stp"
}
fdb()
{
bridge $bopt fdb show
@@ -353,6 +360,9 @@ case $cmd in
span*)
rstp
;;
stp*)
stp
;;
sys*)
system
;;
+5 -2
View File
@@ -327,7 +327,7 @@ int bridge_mstpd_gen(struct lyd_node *cifs)
if (!cond)
return -EIO;
fputs("initctl -bnq cond set mstpd\n"
fputs("initctl -bnq start mstpd\n"
"/usr/libexec/confd/mstpd-wait-online || exit 1\n", cond);
fclose(cond);
} else if (!dagger_is_bootstrap(&confd.netdag)) {
@@ -335,7 +335,7 @@ int bridge_mstpd_gen(struct lyd_node *cifs)
if (!cond)
return -EIO;
fputs("initctl -bnq cond clear mstpd\n", cond);
fputs("initctl -bnq stop mstpd\n", cond);
fclose(cond);
}
@@ -371,6 +371,9 @@ static int gen_stp(struct ixif_br *br)
fprintf(mstpctl, "setforcevers %s %s\n", br->name,
lydx_get_cattr(stp, "force-protocol"));
fprintf(mstpctl, "sethello %s %s\n", br->name,
lydx_get_cattr(stp, "hello-time"));
fprintf(mstpctl, "setfdelay %s %s\n", br->name,
lydx_get_cattr(stp, "forward-delay"));
+202 -10
View File
@@ -3,6 +3,9 @@ submodule infix-if-bridge {
belongs-to infix-interfaces {
prefix infix-if;
}
import ietf-yang-types {
prefix yang;
}
import iana-if-type {
prefix ianaift;
}
@@ -29,6 +32,9 @@ submodule infix-if-bridge {
revision 2025-01-08 {
description "Add Spanning Tree Protocol (STP) support.
Move STP port state from the old `stp-state` to the
new `stp/cist/state`.
Drop the `default-priority` bridge port option, which
has never been supported but was accidentally
included in the model.";
@@ -203,6 +209,30 @@ submodule infix-if-bridge {
}
}
typedef stp-port-role {
description "Spanning Tree (STP) port role.";
type enumeration {
enum root {
description "Root port.";
}
enum designated {
description "Designated port.";
}
enum alternate {
description "Alternate port.";
}
enum backup {
description "Backup port.";
}
enum master {
description "Master port.";
}
enum disabled {
description "Disabled port.";
}
}
}
typedef stp-priority {
type uint8 {
range "0..15";
@@ -211,6 +241,18 @@ submodule infix-if-bridge {
default 8;
}
typedef stp-system-id {
type uint16 {
range "0..4095";
}
}
typedef stp-port-id {
type uint16 {
range "0..4095";
}
}
typedef stp-bool-or-auto {
type union {
type enumeration {
@@ -381,12 +423,121 @@ submodule infix-if-bridge {
}
}
grouping stp-bridge-id {
leaf priority {
description "Priority.";
type stp-priority;
}
leaf system-id {
description "System ID.";
type stp-system-id;
}
leaf address {
description "MAC address.";
type yang:mac-address;
}
}
grouping stp-port-id {
leaf priority {
description "Priority.";
type stp-priority;
}
leaf port-id {
description "Port ID.";
type stp-system-id;
}
}
grouping stp-tree-state {
container bridge-id {
config false;
uses stp-bridge-id;
}
container root-id {
config false;
uses stp-bridge-id;
}
leaf root-port {
config false;
description "Root port.";
type if:interface-ref;
}
container topology-change {
config false;
leaf count {
description "Cumulative number of topology changes.";
type yang:counter32;
}
leaf in-progress {
description "Topology change is currently in progress.";
type boolean;
}
leaf port {
description "Source port of the most recent topology change.";
type if:interface-ref;
}
leaf time {
description "The time of the most recent topology change.";
type yang:date-and-time;
}
}
}
grouping stp-tree {
leaf priority {
description "Priority.";
type stp-priority;
reference "IEEE 802.1Q-2018 13.18";
}
uses stp-tree-state;
}
grouping stp-tree-port-state {
container port-id {
config false;
uses stp-port-id;
}
leaf state {
config false;
description "Operational state.";
type stp-state;
}
leaf role {
config false;
description "Role.";
type stp-port-role;
}
leaf disputed {
config false;
description "Disputed.";
type boolean;
}
container designated {
config false;
description "Designated bridge.";
container bridge-id {
uses stp-bridge-id;
}
container port-id {
uses stp-port-id;
}
}
}
grouping stp-tree-port {
@@ -402,11 +553,7 @@ submodule infix-if-bridge {
reference "IEEE 802.1Q-2018 13.18";
}
leaf state {
description "Operational state.";
type stp-state;
config false;
}
uses stp-tree-port-state;
}
/*
@@ -492,6 +639,15 @@ submodule infix-if-bridge {
reference "IEEE 802.1Q-2018 13.7.2";
}
leaf hello-time {
description "Hello time.";
type uint8 {
range "1..10";
}
default 2;
reference "IEEE 802.1Q-2018 13.25";
}
leaf forward-delay {
description "Forward delay.";
type uint8 {
@@ -696,12 +852,48 @@ submodule infix-if-bridge {
// uses stp-tree-port;
// }
}
leaf stp-state {
type stp-state;
config false;
description "The operation state of the bridge port.";
container statistics {
config false;
leaf in-bpdus {
type yang:counter64;
units frames;
description "Number of received BPDUs.";
}
leaf in-bpdus-filtered {
type yang:counter64;
units frames;
description "Number of received, but filtered, BPDUs.";
}
leaf in-tcns {
type yang:counter64;
units frames;
description "Number of received TCNs.";
}
leaf out-bpdus {
type yang:counter64;
units frames;
description "Number of transmitted BPDUs.";
}
leaf out-tcns {
type yang:counter64;
units frames;
description "Number of transmitted TCNs.";
}
leaf to-blocking {
type yang:counter64;
units transitions;
description "Number of transitions into the blocking state.";
}
leaf to-forwarding {
type yang:counter64;
units transitions;
description "Number of transitions into the forwarding state.";
}
}
}
}
+6
View File
@@ -249,6 +249,12 @@
/usr/libexec/statd/cli-pretty show-bridge-mdb |pager
</ACTION>
</COMMAND>
<COMMAND name="stp" help="Show spanning tree status">
<ACTION sym="script" in="tty" out="tty" interrupt="true">
sysrepocfg -d operational -X -f json -x /ietf-interfaces:interfaces | \
/usr/libexec/statd/cli-pretty show-bridge-stp |pager
</ACTION>
</COMMAND>
<COMMAND name="vlan" help="Show VLAN table">
<ACTION sym="script">bridge -color vlan</ACTION>
<SWITCH name="optional" min="0">
+212 -6
View File
@@ -20,6 +20,15 @@ class PadMdb:
group = 20
ports = 45
class PadStpPort:
port = 12
id = 7
state = 12
role = 12
edge = 6
designated = 31
total = 12 + 7 + 12 + 12 + 6 + 31
class PadRoute:
dest = 30
@@ -70,6 +79,10 @@ class Decore():
def invert(txt):
return Decore.decorate("7", txt)
@staticmethod
def bold(txt):
return Decore.decorate("1", txt)
@staticmethod
def red(txt):
return Decore.decorate("31", txt, "39")
@@ -111,6 +124,55 @@ def remove_yang_prefix(key):
return parts[1]
return key
class Date(datetime):
def _pretty_delta(delta):
assert(delta.total_seconds() > 0)
days = delta.days
seconds = delta.seconds
hours, remainder = divmod(seconds, 3600)
minutes, seconds = divmod(remainder, 60)
segments = (
("day", days),
("hour", hours),
("minute", minutes),
("second", seconds),
)
for i, seg in enumerate(segments):
if not seg[1]:
continue
out = f"{seg[1]} {seg[0]}{'s' if seg[1] != 1 else ''}"
if seg[0] == "second":
return out
seg = segments[i+1]
out += f" and {seg[1]} {seg[0]}{'s' if seg[1] != 1 else ''}"
return out
def pretty(self):
now = datetime_now()
if self < now:
delta = Date._pretty_delta(now - self)
return f"{delta} ago"
elif self > now:
delta = Date._pretty_delta(self - now)
return f"in {delta}"
return "now"
@classmethod
def from_yang(cls, ydate):
"""Conver a YANG formatted date string into a Python datetime"""
if not ydate:
return None
date, tz = ydate.split("+")
tz = tz.replace(":", "")
return cls.strptime(f"{date}+{tz}", "%Y-%m-%dT%H:%M:%S%z")
class Route:
def __init__(self, data, ip):
@@ -265,6 +327,30 @@ class USBport:
row += f"{self.state:<{PadUsbPort.state}}"
print(row)
class STPBridgeID:
def __init__(self, id):
self.id = id
def __str__(self):
prio, sysid, addr = (
self.id["priority"],
self.id["system-id"],
self.id["address"]
)
return f"{prio:1x}.{sysid:03x}.{addr}"
class STPPortID:
def __init__(self, id):
self.id = id
def __str__(self):
prio, pid = (
self.id["priority"],
self.id["port-id"],
)
return f"{prio:1x}.{pid:03x}"
class Iface:
def __init__(self, data):
self.data = data
@@ -282,7 +368,8 @@ class Iface:
self.br_vlans = get_json_data({}, self.data, 'infix-interfaces:bridge', 'vlans', "vlan")
self.bridge = get_json_data('', self.data, 'infix-interfaces:bridge-port', 'bridge')
self.pvid = get_json_data('', self.data, 'infix-interfaces:bridge-port', 'pvid')
self.stp_state = get_json_data('', self.data, 'infix-interfaces:bridge-port', 'stp-state')
self.stp_state = get_json_data('', self.data, 'infix-interfaces:bridge-port',
'stp', 'cist', 'state')
self.containers = get_json_data('', self.data, 'infix-interfaces:container-network', 'containers')
@@ -621,6 +708,36 @@ class Iface:
row += f"{ports}"
print(row)
def pr_stp(self):
if not (stp := get_json_data({}, self.data, 'infix-interfaces:bridge', 'stp')):
return
if bid := stp["cist"].get("bridge-id"):
bid = STPBridgeID(bid)
else:
bid = "UNKNOWN BRIDGE ID"
if rid := stp["cist"].get("root-id"):
rid = STPBridgeID(rid)
else:
rid = "none"
print(f"{'bridge-id':<{20}}: {bid} ({self.name})")
print(f"{'root-id':<{20}}: {rid}")
print(f"{'protocol':<{20}}: {stp.get('force-protocol', 'UNKNOWN')}")
print(f"{'hello time':<{20}}: {stp.get('hello-time', 'UNKNOWN'):2} seconds")
print(f"{'forward delay':<{20}}: {stp.get('forward-delay', 'UNKNOWN'):2} seconds")
print(f"{'max age':<{20}}: {stp.get('max-age', 'UNKNOWN'):2} seconds")
print(f"{'transmit hold count':<{20}}: {stp.get('transmit-hold-count', 'UNKNOWN'):2}")
print(f"{'max hops':<{20}}: {stp.get('max-hops', 'UNKNOWN'):2}")
if tc := stp["cist"].get("topology-change"):
print(f"{'topology change':<{20}}:")
print(f"{' count':<{20}}: {tc.get('count', 'UNKNOWN')}")
print(f"{' in progress':<{20}}: {'YES' if tc.get('in-progress') else 'no'}")
print(f"{' last change':<{20}}: {Date.from_yang(tc.get('time')).pretty()}")
print(f"{' port':<{20}}: {tc.get('port', 'UNKNOWN')}")
def find_iface(_ifaces, name):
for _iface in [Iface(data) for data in _ifaces]:
@@ -630,9 +747,15 @@ def find_iface(_ifaces, name):
return False
def version_sort(iface):
return [int(x) if x.isdigit() else x for x in re.split(r'(\d+)',
iface['name'])]
def version_sort(s):
return [int(x) if x.isdigit() else x for x in re.split(r'(\d+)', s)]
def ifname_sort(iface):
return version_sort(iface["name"])
def brport_sort(iface):
brname = iface.get("infix-interfaces:bridge-port", {}).get("bridge", "")
return version_sort(brname) + version_sort(iface["name"])
def print_interface(iface):
@@ -651,7 +774,7 @@ def pr_interface_list(json):
print(Decore.invert(hdr))
ifaces = sorted(json["ietf-interfaces:interfaces"]["interface"],
key=version_sort)
key=ifname_sort)
iface = find_iface(ifaces, "lo")
if iface:
iface.pr_loopback()
@@ -721,7 +844,7 @@ def show_bridge_mdb(json):
sys.exit(1)
ifaces = sorted(json["ietf-interfaces:interfaces"]["interface"],
key=version_sort)
key=ifname_sort)
for iface in [Iface(data) for data in ifaces]:
if iface.type != "infix-if-type:bridge":
continue
@@ -736,6 +859,85 @@ def show_bridge_mdb(json):
iface.pr_vlans_mdb(iface.name)
def show_bridge_stp_port(ifname, brport):
stp = brport["stp"]
state = stp["cist"]["state"]
if state == "forwarding":
state = Decore.green(f"{state.upper():<{PadStpPort.state}}")
else:
state = Decore.yellow(f"{state.upper():<{PadStpPort.state}}")
role = stp["cist"]["role"]
if role == "root":
role = Decore.bold(f"{role:<{PadStpPort.role}}")
else:
role = f"{role:<{PadStpPort.role}}"
designated = "unknown"
if cdesbr := stp["cist"].get("designated", {}).get("bridge-id"):
brid = str(STPBridgeID(cdesbr))
cdesport = stp["cist"]["designated"].get("port-id")
port = str(STPPortID(cdesport)) if cdesport else "UNKNOWN"
designated = f"{brid} ({port})"
row = (
f"{ifname:<{PadStpPort.port}}"
f"{str(STPPortID(stp['cist']['port-id'])):<{PadStpPort.id}}"
f"{state}"
f"{role}"
f"{'yes' if stp['edge'] else 'no':<{PadStpPort.edge}}"
f"{designated:<{PadStpPort.designated}}"
)
print(row)
def show_bridge_stp(json):
if not json.get("ietf-interfaces:interfaces"):
print("Error, top level \"ietf-interfaces:interface\" missing")
sys.exit(1)
brs = sorted(filter(lambda i: i.get("type") == "infix-if-type:bridge",
json["ietf-interfaces:interfaces"].get("interface",[])),
key=ifname_sort)
for i, br in enumerate(brs):
if i:
print()
Iface(br).pr_stp()
ports = sorted(filter(lambda i: i.get("infix-interfaces:bridge-port"),
json["ietf-interfaces:interfaces"].get("interface",[])),
key=brport_sort)
if not ports:
return
print()
hdr = (
f"{'PORT':<{PadStpPort.port}}"
f"{'ID':<{PadStpPort.id}}"
f"{'STATE':<{PadStpPort.state}}"
f"{'ROLE':<{PadStpPort.role}}"
f"{'EDGE':<{PadStpPort.edge}}"
f"{'DESIGNATED BRIDGE':<{PadStpPort.designated}}"
)
print(Decore.invert(hdr))
lastbr = None
for port in ports:
brport = port["infix-interfaces:bridge-port"]
if not brport.get("stp"):
continue
if brport["bridge"] != lastbr:
lastbr = brport["bridge"]
separator = f"{'bridge:'+lastbr:<{PadStpPort.total}}"
print(Decore.gray_bg(separator))
show_bridge_stp_port(port["name"], brport)
def show_routing_table(json, ip):
if not json.get("ietf-routing:routing"):
print("Error, top level \"ietf-routing:routing\" missing")
@@ -860,6 +1062,8 @@ def main():
parser_show_interfaces.add_argument('-n', '--name', help='Interface name')
parser_show_bridge_mdb = subparsers.add_parser('show-bridge-mdb', help='Show bridge MDB')
parser_show_bridge_stp = subparsers.add_parser('show-bridge-stp',
help='Show spanning tree state')
parser_show_software = subparsers.add_parser('show-software', help='Show software versions')
parser_show_software.add_argument('-n', '--name', help='Slotname')
@@ -881,6 +1085,8 @@ def main():
show_software(json_data, args.name)
elif args.command == "show-bridge-mdb":
show_bridge_mdb(json_data)
elif args.command == "show-bridge-stp":
show_bridge_stp(json_data)
elif args.command == "show-hardware":
show_hardware(json_data)
elif args.command == "show-ntp":
+23
View File
@@ -1,5 +1,28 @@
from datetime import timedelta
from . import host
LOG = None
class YangDate:
def __init__(self, dt=None):
self.dt = dt if dt else host.HOST.now()
def __str__(self):
datestr = self.dt.strftime("%Y-%m-%dT%H:%M:%S%z")
# Translate strftime's timezone format (HHMM) to the one
# expected by YANG (HH:MM)
return datestr[:-2] + ':' + datestr[-2:]
@classmethod
def from_delta(cls, delta):
return cls(host.HOST.now() - delta)
@classmethod
def from_seconds(cls, seconds):
return cls.from_delta(timedelta(seconds=seconds))
def insert(obj, *path_and_value):
""""This function inserts a value into a nested json object"""
@@ -1,6 +1,6 @@
from functools import cache
from ..common import LOG
from ..common import LOG, YangDate
from ..host import HOST
from .common import iplinks, iplinks_lower_of
@@ -13,6 +13,103 @@ def bridge_vlan():
return { v["ifname"]: v for v in HOST.run_json("bridge -j vlan show".split(), []) }
def stp_bridge_id(idstr):
segs = idstr.split(".")
return {
"priority": int(segs[0], 16),
"system-id": int(segs[1], 16),
"address": segs[2].lower(),
}
def stp_port_id(idstr):
segs = idstr.split(".")
return {
"priority": int(segs[0], 16),
"port-id": int(segs[1], 16),
}
def stp_port_statistics(port):
STATMAP = {
"in-bpdus": "num-rx-bpdu",
"in-bpdus-filtered": "num-rx-bpdu-filtered",
"in-tcns": "num-rx-tcn",
"out-bpdus": "num-tx-bpdu",
"out-tcns": "num-tx-tcn",
"to-blocking": "num-transition-blk",
"to-forwarding": "num-transition-fwd",
}
stats = {}
for yname , pname in STATMAP.items():
if pstat := port.get(pname):
# Do _not_ convert pstat to int, since the JSON encoding
# of >32bit YANG types are strings.
stats[yname] = pstat
return stats
def lower_stp_tree(iplink, msti):
if not (tport := HOST.run_json(["mstpctl", "-f", "json",
"showtreeport",
iplink["master"], iplink["ifname"], str(msti)],
default={})):
return {}
port = {
"port-id": stp_port_id(tport["port-id"]),
# "state": None # Sourced from bridge
"role": tport["role"].lower(),
"disputed": tport["disputed"] == "yes",
}
designated = {}
if dbr := tport["designated-bridge"]:
designated["bridge-id"] = stp_bridge_id(dbr)
if dp := tport["designated-port"]:
designated["port-id"] = stp_port_id(dp)
if designated:
port["designated"] = designated
return port
def lower_stp(iplink):
info = iplink["linkinfo"]["info_slave_data"]
ciststate = info.get("state", "disabled")
if not (port := HOST.run_json(["mstpctl", "-f", "json",
"showportdetail",
iplink["master"], iplink["ifname"]],
default=[{}])[0]):
return {
"cist": {
"state": ciststate,
}
}
stp = {
"edge": port.get("oper-edge-port") == "yes",
"cist": lower_stp_tree(iplink, 0),
}
stp["cist"]["state"] = ciststate
if ecost := port.get("external-path-cost"):
stp["cist"]["external-path-cost"] = ecost
if stats := stp_port_statistics(port):
stp["statistics"] = stats
return stp
def lower(iplink):
lower = {}
@@ -43,10 +140,63 @@ def lower(iplink):
}.get(info["multicast_router"], "UNKNOWN"),
},
"stp-state": info["state"],
"stp": lower_stp(iplink),
}
def stp_tree(brname, mst):
if not (state := HOST.run_json(["mstpctl", "-f", "json",
"showtree",
brname, str(mst)],
default={})):
return {}
tree = {
"priority": int(state["bridge-id"][0], 16),
"bridge-id": stp_bridge_id(state["bridge-id"]),
}
if rport := state.get("root-port"):
tree["root-port"] = rport.split()[0]
if state.get("topology-change-count"):
tree["topology-change"] = {
"count": int(state["topology-change-count"]),
"in-progress": True if state["topology-change"] == "yes" else False,
"port": state["topology-change-port"],
"time": str(YangDate.from_seconds(int(state["time-since-topology-change"]))),
}
return tree
def stp(iplink):
state = HOST.run_json(["mstpctl", "-f", "json",
"showbridge",
iplink["ifname"]], default=[{}])[0]
if not state:
return {}
stp = {
"force-protocol": state["force-protocol-version"],
"hello-time": int(state["hello-time"]),
"forward-delay": int(state["forward-delay"]),
"max-age": int(state["max-age"]),
"transmit-hold-count": int(state["tx-hold-count"]),
"max-hops": int(state["max-hops"]),
"cist": stp_tree(iplink["ifname"], 0),
}
# This information ought to be available in `showtree`, so it is
# still an open question how we should source the per-tree root id
# when adding MSTP support
if state.get("designated-root"):
stp["cist"]["root-id"] = stp_bridge_id(state["designated-root"])
return stp
def mctlq2yang_mode(mctlq):
if state := mctlq.get("state"):
return "proxy" if state == "proxy" else "auto"
@@ -166,6 +316,11 @@ def bridge(iplink):
info = iplink["linkinfo"]["info_data"]
if info.get("vlan_filtering"):
return qbridge(iplink)
br = qbridge(iplink)
else:
return dbridge(iplink)
br = dbridge(iplink)
if info.get("stp_state"):
br["stp"] = stp(iplink)
return br
+2 -7
View File
@@ -1,10 +1,9 @@
from datetime import timedelta
from re import match
from .common import insert
from .common import insert, YangDate
from .host import HOST
def uptime2datetime(uptime):
"""
Convert uptime to YANG format (YYYY-MM-DDTHH:MM:SS+00:00)
@@ -36,11 +35,7 @@ def uptime2datetime(uptime):
h += days * 24
uptime_delta = timedelta(hours=h, minutes=m, seconds=s)
current_time = HOST.now()
last_updated = current_time - uptime_delta
date_timestd = last_updated.strftime('%Y-%m-%dT%H:%M:%S%z')
return date_timestd[:-2] + ':' + date_timestd[-2:]
return str(YangDate.from_delta(uptime_delta))
def add_protocol(routes, proto):
@@ -1,12 +1,16 @@
=== Bridge STP Basic
==== Description
Verify that a fully connected mesh of 4 DUTs is pruned to a spanning
tree.
First, verify that a fully connected mesh of 4 DUTs is pruned to a
spanning tree.
Since the mesh contains 3 redundant paths, can infer that a spanning
tree has been created if all host interfaces can reach each other
while exactly three links are in the blocking state.
Then, assign explicit priorities to all bridges and ports, and verify
that a spanning tree rooted at A is formed, with B, C, and D all
directly connected to A.
==== Topology
ifdef::topdoc[]
image::{topdoc}../../test/case/ietf_interfaces/bridge_stp_basic/topology.svg[Bridge STP Basic topology]
@@ -25,6 +29,10 @@ endif::topdoc[]
. Add an IP address to each host interface in the 10.0.0.0/24 subnet
. Verify that exactly three links are blocking
. Verify that host:a can reach host:{b,c,d}
. Add explicit port and bridge priorities: a,b,c,d=>1,2,3,4
. Verify that A, B, C and D agrees on A being the root bridge
. Verify that B, C and D all use their direct connection to on A
. Verify that host:a can reach host:{b,c,d}
<<<
@@ -1,13 +1,17 @@
#!/usr/bin/env python3
r"""Bridge STP Basic
Verify that a fully connected mesh of 4 DUTs is pruned to a spanning
tree.
First, verify that a fully connected mesh of 4 DUTs is pruned to a
spanning tree.
Since the mesh contains 3 redundant paths, can infer that a spanning
tree has been created if all host interfaces can reach each other
while exactly three links are in the blocking state.
Then, assign explicit priorities to all bridges and ports, and verify
that a spanning tree rooted at A is formed, with B, C, and D all
directly connected to A.
"""
import infamy
from infamy.util import parallel, until
@@ -54,14 +58,79 @@ def addbr(dut):
}
})
def explicit_prios(dut):
def prio(n):
match n:
case "a"|"A":
return 1
case "b"|"B":
return 2
case "c"|"C":
return 3
case "d"|"D":
return 4
brports = [
{
"name": dut[n],
"infix-interfaces:bridge-port": {
"stp": {
"cist": {
"priority": prio(n),
},
},
}
} for n in ("a", "b", "c", "d") if n != dut.name.lower()
]
dut.put_config_dicts({
"ietf-interfaces": {
"interfaces": {
"interface": [
{
"name": "br0",
"bridge": {
"stp": {
"cist": {
"priority": prio(dut.name),
},
},
},
}
] + brports,
}
}
})
def num_blocking(dut):
num = 0
for iface in dut.get_data("/ietf-interfaces:interfaces")["interfaces"]["interface"]:
if iface.get("bridge-port", {}).get("stp-state") == "blocking":
state = iface.get("bridge-port", {}).get("stp", {}).get("cist", {}).get("state")
if state == "blocking":
num += 1
return num
def bridge_id(dut, id):
br0 = dut.get_data("/ietf-interfaces:interfaces/interface[name='br0']")\
["interfaces"]["interface"]["br0"]
cist = br0.get("bridge", {}).get("stp", {}).get("cist", {})
if not (cid := cist.get(id)):
return None
return f"{cid['priority']:1x}.{cid['system-id']:03x}.{cid['address']}"
def port_role(dut, port):
iface = dut.get_data(f"/ietf-interfaces:interfaces/interface[name='{port}']")\
["interfaces"]["interface"][port]
return iface.get("bridge-port", {}).get("stp", {}).get("cist", {}).get("role")
with infamy.Test() as test:
with test.step("Set up topology and attach to target DUT"):
env = infamy.Env()
@@ -86,4 +155,21 @@ with infamy.Test() as test:
lambda: ns["a"].must_reach("10.0.0.3"),
lambda: ns["a"].must_reach("10.0.0.4"))
with test.step("Add explicit port and bridge priorities: a,b,c,d=>1,2,3,4"):
parallel(lambda: explicit_prios(a), lambda: explicit_prios(b),
lambda: explicit_prios(c), lambda: explicit_prios(d))
with test.step("Verify that A, B, C and D agrees on A being the root bridge"):
a_id = bridge_id(a, "bridge-id")
print(f"A's bridge-id: {a_id}")
until(lambda: all(map(lambda n: bridge_id(n, "root-id") == a_id, (a, b, c, d))), 60)
with test.step("Verify that B, C and D all use their direct connection to on A"):
until(lambda: all(map(lambda n: port_role(n, n["a"]) == "root", (b, c, d))), 60)
with test.step("Verify that host:a can reach host:{b,c,d}"):
parallel(lambda: ns["a"].must_reach("10.0.0.2"),
lambda: ns["a"].must_reach("10.0.0.3"),
lambda: ns["a"].must_reach("10.0.0.4"))
test.succeed()
+34 -22
View File
@@ -9,8 +9,8 @@
"oper-status": "up",
"phys-address": "00:00:00:00:00:00",
"statistics": {
"in-octets": "568136",
"out-octets": "568136"
"in-octets": "15212",
"out-octets": "15212"
},
"ietf-ip:ipv4": {
"address": [
@@ -40,8 +40,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:01",
"statistics": {
"in-octets": "6056801",
"out-octets": "8943399"
"in-octets": "143181",
"out-octets": "1975737"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -65,8 +65,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:02",
"statistics": {
"in-octets": "4388",
"out-octets": "223073"
"in-octets": "1980",
"out-octets": "46052"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -85,7 +85,11 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
}
},
{
@@ -96,8 +100,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:03",
"statistics": {
"in-octets": "25889",
"out-octets": "375562"
"in-octets": "866",
"out-octets": "47146"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -116,7 +120,11 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
}
},
{
@@ -127,8 +135,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:04",
"statistics": {
"in-octets": "32799",
"out-octets": "354844"
"in-octets": "936",
"out-octets": "46200"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -147,7 +155,11 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
}
},
{
@@ -158,8 +170,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:05",
"statistics": {
"in-octets": "68102",
"out-octets": "151156"
"in-octets": "14460",
"out-octets": "17169"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -183,8 +195,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:06",
"statistics": {
"in-octets": "137033",
"out-octets": "255084"
"in-octets": "15383",
"out-octets": "17129"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -208,8 +220,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:07",
"statistics": {
"in-octets": "71136",
"out-octets": "153864"
"in-octets": "12245",
"out-octets": "17169"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -228,13 +240,13 @@
{
"type": "infix-if-type:bridge",
"name": "br0",
"if-index": 62,
"if-index": 9,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"statistics": {
"in-octets": "2200",
"out-octets": "27797"
"in-octets": "2312",
"out-octets": "38953"
},
"ietf-ip:ipv4": {
"mtu": 1500,
+34 -22
View File
@@ -27,8 +27,8 @@
"oper-status": "up",
"phys-address": "00:00:00:00:00:00",
"statistics": {
"in-octets": "568136",
"out-octets": "568136"
"in-octets": "15212",
"out-octets": "15212"
},
"type": "infix-if-type:loopback"
},
@@ -52,8 +52,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:01",
"statistics": {
"in-octets": "6056801",
"out-octets": "8943399"
"in-octets": "143181",
"out-octets": "1975737"
},
"type": "infix-if-type:etherlike"
},
@@ -77,14 +77,18 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
},
"name": "e2",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:02",
"statistics": {
"in-octets": "4388",
"out-octets": "223073"
"in-octets": "1980",
"out-octets": "46052"
},
"type": "infix-if-type:etherlike"
},
@@ -108,14 +112,18 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
},
"name": "e3",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:03",
"statistics": {
"in-octets": "25889",
"out-octets": "375562"
"in-octets": "866",
"out-octets": "47146"
},
"type": "infix-if-type:etherlike"
},
@@ -139,14 +147,18 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
},
"name": "e4",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:04",
"statistics": {
"in-octets": "32799",
"out-octets": "354844"
"in-octets": "936",
"out-octets": "46200"
},
"type": "infix-if-type:etherlike"
},
@@ -170,8 +182,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:05",
"statistics": {
"in-octets": "68102",
"out-octets": "151156"
"in-octets": "14460",
"out-octets": "17169"
},
"type": "infix-if-type:etherlike"
},
@@ -195,8 +207,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:06",
"statistics": {
"in-octets": "137033",
"out-octets": "255084"
"in-octets": "15383",
"out-octets": "17129"
},
"type": "infix-if-type:etherlike"
},
@@ -220,8 +232,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:07",
"statistics": {
"in-octets": "71136",
"out-octets": "153864"
"in-octets": "12245",
"out-octets": "17169"
},
"type": "infix-if-type:etherlike"
},
@@ -240,7 +252,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 62,
"if-index": 9,
"infix-interfaces:bridge": {
"multicast": {
"querier": "auto",
@@ -283,8 +295,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"statistics": {
"in-octets": "2200",
"out-octets": "27797"
"in-octets": "2312",
"out-octets": "38953"
},
"type": "infix-if-type:bridge"
}
@@ -1 +1 @@
[{"mdb":[{"index":62,"dev":"br0","port":"e3","grp":"01:00:00:01:02:03","state":"permanent","flags":[]},{"index":62,"dev":"br0","port":"e3","grp":"224.1.1.1","state":"permanent","flags":[]},{"index":62,"dev":"br0","port":"br0","grp":"ff02::6a","state":"temp","flags":[]}],"router":{}}]
[{"mdb":[{"index":9,"dev":"br0","port":"e3","grp":"01:00:00:01:02:03","state":"permanent","flags":[]},{"index":9,"dev":"br0","port":"e3","grp":"224.1.1.1","state":"permanent","flags":[]},{"index":9,"dev":"br0","port":"br0","grp":"ff02::6a","state":"temp","flags":[]}],"router":{}}]
@@ -1 +1 @@
[{"ifindex":1,"ifname":"lo","flags":["LOOPBACK","UP","LOWER_UP"],"mtu":65536,"qdisc":"noqueue","operstate":"UP","group":"iface","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","protocol":"static","label":"lo","valid_life_time":4294967295,"preferred_life_time":4294967295},{"family":"inet6","local":"::1","prefixlen":128,"scope":"host","protocol":"static","valid_life_time":4294967295,"preferred_life_time":4294967295}]},{"ifindex":2,"ifname":"e1","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:01","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[{"family":"inet6","local":"fe80::2a0:85ff:fe00:301","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]},{"ifindex":3,"ifname":"e2","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","master":"br0","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:02","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[]},{"ifindex":4,"ifname":"e3","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","master":"br0","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:03","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[]},{"ifindex":5,"ifname":"e4","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","master":"br0","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:04","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[]},{"ifindex":6,"ifname":"e5","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:05","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[{"family":"inet6","local":"fe80::2a0:85ff:fe00:305","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]},{"ifindex":7,"ifname":"e6","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:06","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[{"family":"inet6","local":"fe80::2a0:85ff:fe00:306","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]},{"ifindex":8,"ifname":"e7","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:07","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[{"family":"inet6","local":"fe80::2a0:85ff:fe00:307","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]},{"ifindex":62,"ifname":"br0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:00","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[{"family":"inet","local":"10.0.0.1","prefixlen":24,"scope":"global","protocol":"static","label":"br0","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]
[{"ifindex":1,"ifname":"lo","flags":["LOOPBACK","UP","LOWER_UP"],"mtu":65536,"qdisc":"noqueue","operstate":"UP","group":"iface","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","protocol":"static","label":"lo","valid_life_time":4294967295,"preferred_life_time":4294967295},{"family":"inet6","local":"::1","prefixlen":128,"scope":"host","protocol":"static","valid_life_time":4294967295,"preferred_life_time":4294967295}]},{"ifindex":2,"ifname":"e1","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:01","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[{"family":"inet6","local":"fe80::2a0:85ff:fe00:301","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]},{"ifindex":3,"ifname":"e2","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","master":"br0","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:02","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[]},{"ifindex":4,"ifname":"e3","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","master":"br0","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:03","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[]},{"ifindex":5,"ifname":"e4","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","master":"br0","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:04","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[]},{"ifindex":6,"ifname":"e5","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:05","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[{"family":"inet6","local":"fe80::2a0:85ff:fe00:305","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]},{"ifindex":7,"ifname":"e6","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:06","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[{"family":"inet6","local":"fe80::2a0:85ff:fe00:306","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]},{"ifindex":8,"ifname":"e7","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:07","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[{"family":"inet6","local":"fe80::2a0:85ff:fe00:307","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]},{"ifindex":9,"ifname":"br0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"00:a0:85:00:03:00","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[{"family":"inet","local":"10.0.0.1","prefixlen":24,"scope":"global","protocol":"static","label":"br0","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
{
"pid": 4570,
"pid": 4261,
"query-interval": 125,
"query-response-interval": 10,
"query-last-member-interval": 1,
@@ -32,10 +32,10 @@ e6 ethernet UP 00:a0:85:00:03:06
e7 ethernet UP 00:a0:85:00:03:07
ipv6 fe80::2a0:85ff:fe00:307/64 (link-layer)
veth0a container container-A 
veth0b veth UP 46:85:68:aa:a0:d1
veth0b veth UP e6:19:75:86:80:dd
veth1a container container-A 
veth1b veth UP 62:f5:af:85:38:a5
veth1b veth UP 3e:67:0f:15:24:14
veth2a container container-B 
veth2b veth UP aa:08:99:ea:03:99
veth2b veth UP b2:fa:30:63:98:f0
veth3a container container-B 
veth3b veth UP 1a:03:f7:20:d2:5b
veth3b veth UP b2:1c:fa:a7:45:eb
@@ -1,12 +1,12 @@
 DESTINATION PREF NEXT-HOP PROTO UPTIME
>* 0.0.0.0/0 110/2 10.1.1.100 ospfv2 02:04:13
0.0.0.0/0 254/0 br0 static 02:04:52
10.1.1.0/24 110/1 e6 ospfv2 02:05:05
>* 10.1.1.0/24 0/0 e6 direct 02:05:06
* 10.1.1.1/32 0/0 e4.8 direct 02:05:07
>* 10.1.1.1/32 0/0 e3.8 direct 02:05:07
>* 10.1.2.0/24 110/2 10.1.1.100 ospfv2 02:04:13
>* 0.0.0.0/0 110/2 10.1.1.100 ospfv2 22:05:05
0.0.0.0/0 254/0 br0 static 22:05:45
10.1.1.0/24 110/1 e6 ospfv2 22:05:59
>* 10.1.1.0/24 0/0 e6 direct 22:05:59
* 10.1.1.1/32 0/0 e4.8 direct 22:06:00
>* 10.1.1.1/32 0/0 e3.8 direct 22:06:00
>* 10.1.2.0/24 110/2 10.1.1.100 ospfv2 22:05:05
* 10.1.2.1
>* 10.1.3.0/24 110/2 10.1.1.100 ospfv2 02:04:13
>* 10.1.3.0/24 110/2 10.1.1.100 ospfv2 22:05:05
* 10.1.3.1
>* 169.254.0.0/16 0/0 br0 direct 02:05:01
>* 169.254.0.0/16 0/0 br0 direct 22:05:54
@@ -1,7 +1,7 @@
 DESTINATION PREF NEXT-HOP PROTO UPTIME
* fe80::/64 0/0 e6 direct 02:05:05
* fe80::/64 0/0 br0 direct 02:05:05
* fe80::/64 0/0 e7 direct 02:05:25
* fe80::/64 0/0 e5 direct 02:05:25
* fe80::/64 0/0 e2 direct 02:05:25
>* fe80::/64 0/0 e1 direct 02:05:25
* fe80::/64 0/0 e6 direct 22:05:58
* fe80::/64 0/0 br0 direct 22:05:59
* fe80::/64 0/0 e2 direct 22:06:01
* fe80::/64 0/0 e7 direct 22:06:51
* fe80::/64 0/0 e5 direct 22:06:51
>* fe80::/64 0/0 e1 direct 22:06:51
+107 -83
View File
@@ -9,8 +9,8 @@
"oper-status": "up",
"phys-address": "00:00:00:00:00:00",
"statistics": {
"in-octets": "38742",
"out-octets": "38742"
"in-octets": "29943",
"out-octets": "29943"
},
"ietf-ip:ipv4": {
"address": [
@@ -40,8 +40,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:01",
"statistics": {
"in-octets": "147241",
"out-octets": "2027800"
"in-octets": "274021",
"out-octets": "2236951"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -65,8 +65,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:02",
"statistics": {
"in-octets": "70",
"out-octets": "43409"
"in-octets": "2050",
"out-octets": "72419"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -90,8 +90,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:03",
"statistics": {
"in-octets": "9499",
"out-octets": "87012"
"in-octets": "13502",
"out-octets": "117434"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -111,7 +111,11 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
}
},
{
@@ -122,8 +126,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:04",
"statistics": {
"in-octets": "15551",
"out-octets": "87027"
"in-octets": "11449",
"out-octets": "113004"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -143,7 +147,11 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
}
},
{
@@ -154,8 +162,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:05",
"statistics": {
"in-octets": "43803",
"out-octets": "44713"
"in-octets": "31213",
"out-octets": "34316"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -179,8 +187,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:06",
"statistics": {
"in-octets": "35346",
"out-octets": "67149"
"in-octets": "48652",
"out-octets": "60687"
},
"ietf-ip:ipv4": {
"mtu": 1500,
@@ -211,8 +219,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:07",
"statistics": {
"in-octets": "27446",
"out-octets": "43597"
"in-octets": "31741",
"out-octets": "34279"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -231,13 +239,13 @@
{
"type": "infix-if-type:veth",
"name": "veth0b",
"if-index": 10,
"if-index": 11,
"admin-status": "up",
"oper-status": "up",
"phys-address": "46:85:68:aa:a0:d1",
"phys-address": "e6:19:75:86:80:dd",
"statistics": {
"in-octets": "1541",
"out-octets": "25110"
"in-octets": "2013",
"out-octets": "34341"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -257,19 +265,23 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
}
},
{
"type": "infix-if-type:veth",
"name": "veth2b",
"if-index": 12,
"if-index": 13,
"admin-status": "up",
"oper-status": "up",
"phys-address": "aa:08:99:ea:03:99",
"phys-address": "b2:fa:30:63:98:f0",
"statistics": {
"in-octets": "726",
"out-octets": "21517"
"in-octets": "266",
"out-octets": "37752"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -289,19 +301,23 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
}
},
{
"type": "infix-if-type:bridge",
"name": "br0",
"if-index": 13,
"if-index": 14,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"statistics": {
"in-octets": "3201",
"out-octets": "37293"
"in-octets": "3213",
"out-octets": "38442"
},
"ietf-ip:ipv4": {
"mtu": 1500,
@@ -355,10 +371,10 @@
{
"type": "infix-if-type:veth",
"name": "veth1b",
"if-index": 15,
"if-index": 16,
"admin-status": "up",
"oper-status": "up",
"phys-address": "62:f5:af:85:38:a5",
"phys-address": "3e:67:0f:15:24:14",
"statistics": {
"in-octets": "726",
"out-octets": "812"
@@ -381,16 +397,20 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
}
},
{
"type": "infix-if-type:veth",
"name": "veth3b",
"if-index": 17,
"if-index": 18,
"admin-status": "up",
"oper-status": "up",
"phys-address": "1a:03:f7:20:d2:5b",
"phys-address": "b2:1c:fa:a7:45:eb",
"statistics": {
"in-octets": "726",
"out-octets": "512"
@@ -412,13 +432,17 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
}
},
{
"type": "infix-if-type:bridge",
"name": "br1",
"if-index": 18,
"if-index": 19,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
@@ -456,13 +480,13 @@
{
"type": "infix-if-type:vlan",
"name": "e3.8",
"if-index": 19,
"if-index": 20,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:03",
"statistics": {
"in-octets": "7733",
"out-octets": "25352"
"in-octets": "10654",
"out-octets": "14688"
},
"ietf-ip:ipv4": {
"mtu": 1500,
@@ -486,13 +510,13 @@
{
"type": "infix-if-type:vlan",
"name": "e4.8",
"if-index": 20,
"if-index": 21,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:04",
"statistics": {
"in-octets": "13695",
"out-octets": "25121"
"in-octets": "8835",
"out-octets": "15085"
},
"ietf-ip:ipv4": {
"mtu": 1500,
@@ -516,14 +540,14 @@
{
"type": "infix-if-type:veth",
"name": "veth2a",
"if-index": 11,
"if-index": 12,
"admin-status": "up",
"oper-status": "up",
"description": "eth0",
"phys-address": "06:a0:85:00:03:00",
"statistics": {
"in-octets": "21517",
"out-octets": "726"
"in-octets": "38078",
"out-octets": "266"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -546,13 +570,13 @@
{
"type": "infix-if-type:veth",
"name": "veth3a",
"if-index": 16,
"if-index": 17,
"admin-status": "up",
"oper-status": "up",
"description": "eth1",
"phys-address": "06:a0:85:00:03:00",
"statistics": {
"in-octets": "512",
"in-octets": "768",
"out-octets": "726"
},
"ietf-ip:ipv4": {
@@ -573,48 +597,17 @@
]
}
},
{
"type": "infix-if-type:veth",
"name": "veth1a",
"if-index": 14,
"admin-status": "up",
"oper-status": "up",
"description": "br1",
"phys-address": "06:a0:85:00:03:00",
"statistics": {
"in-octets": "812",
"out-octets": "796"
},
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500,
"address": [
{
"ip": "fe80::4a0:85ff:fe00:300",
"prefix-length": 64,
"origin": "link-layer"
}
]
},
"infix-interfaces:container-network": {
"containers": [
"container-A"
]
}
},
{
"type": "infix-if-type:veth",
"name": "veth0a",
"if-index": 9,
"if-index": 10,
"admin-status": "up",
"oper-status": "up",
"description": "br0",
"phys-address": "06:a0:85:00:03:00",
"statistics": {
"in-octets": "25110",
"out-octets": "1541"
"in-octets": "35483",
"out-octets": "2013"
},
"ietf-ip:ipv4": {
"mtu": 1500,
@@ -641,6 +634,37 @@
"container-A"
]
}
},
{
"type": "infix-if-type:veth",
"name": "veth1a",
"if-index": 15,
"admin-status": "up",
"oper-status": "up",
"description": "br1",
"phys-address": "06:a0:85:00:03:00",
"statistics": {
"in-octets": "812",
"out-octets": "726"
},
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"mtu": 1500,
"address": [
{
"ip": "fe80::4a0:85ff:fe00:300",
"prefix-length": 64,
"origin": "link-layer"
}
]
},
"infix-interfaces:container-network": {
"containers": [
"container-A"
]
}
}
]
}
+3 -3
View File
@@ -18,7 +18,7 @@
{
"neighbor-router-id": "10.1.2.1",
"address": "10.1.2.1",
"dead-timer": 23299,
"dead-timer": 22506,
"state": "full"
}
]
@@ -35,7 +35,7 @@
{
"neighbor-router-id": "10.1.3.1",
"address": "10.1.3.1",
"dead-timer": 22827,
"dead-timer": 22334,
"state": "full"
}
]
@@ -52,7 +52,7 @@
{
"neighbor-router-id": "192.168.100.1",
"address": "10.1.1.100",
"dead-timer": 39999,
"dead-timer": 31385,
"state": "full",
"dr-router-id": "192.168.100.1",
"bdr-router-id": "10.1.1.1"
+49 -49
View File
@@ -15,7 +15,7 @@
"active": [
null
],
"last-updated": "2025-01-24T09:55:47+00:00",
"last-updated": "2025-01-24T13:54:55+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -33,7 +33,7 @@
"ietf-ipv4-unicast-routing:destination-prefix": "0.0.0.0/0",
"source-protocol": "static",
"route-preference": 254,
"last-updated": "2025-01-24T09:55:08+00:00",
"last-updated": "2025-01-24T13:54:15+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -49,7 +49,7 @@
"source-protocol": "ietf-ospf:ospfv2",
"route-preference": 110,
"ietf-ospf:metric": 1,
"last-updated": "2025-01-24T09:54:55+00:00",
"last-updated": "2025-01-24T13:54:01+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -67,7 +67,7 @@
"active": [
null
],
"last-updated": "2025-01-24T09:54:54+00:00",
"last-updated": "2025-01-24T13:54:01+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -85,7 +85,7 @@
"ietf-ipv4-unicast-routing:destination-prefix": "10.1.1.1/32",
"source-protocol": "direct",
"route-preference": 0,
"last-updated": "2025-01-24T09:54:53+00:00",
"last-updated": "2025-01-24T13:54:00+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -106,7 +106,7 @@
"active": [
null
],
"last-updated": "2025-01-24T09:54:53+00:00",
"last-updated": "2025-01-24T13:54:00+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -128,7 +128,7 @@
"active": [
null
],
"last-updated": "2025-01-24T09:55:47+00:00",
"last-updated": "2025-01-24T13:54:55+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -156,7 +156,7 @@
"active": [
null
],
"last-updated": "2025-01-24T09:55:47+00:00",
"last-updated": "2025-01-24T13:54:55+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -183,7 +183,7 @@
"active": [
null
],
"last-updated": "2025-01-24T09:54:59+00:00",
"last-updated": "2025-01-24T13:54:06+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -209,7 +209,7 @@
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"source-protocol": "direct",
"route-preference": 0,
"last-updated": "2025-01-24T09:54:55+00:00",
"last-updated": "2025-01-24T13:54:02+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -227,7 +227,7 @@
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"source-protocol": "direct",
"route-preference": 0,
"last-updated": "2025-01-24T09:54:55+00:00",
"last-updated": "2025-01-24T13:54:01+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -245,43 +245,7 @@
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"source-protocol": "direct",
"route-preference": 0,
"last-updated": "2025-01-24T09:54:35+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
{
"outgoing-interface": "e7",
"infix-routing:installed": [
null
]
}
]
}
}
},
{
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"source-protocol": "direct",
"route-preference": 0,
"last-updated": "2025-01-24T09:54:35+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
{
"outgoing-interface": "e5",
"infix-routing:installed": [
null
]
}
]
}
}
},
{
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"source-protocol": "direct",
"route-preference": 0,
"last-updated": "2025-01-24T09:54:35+00:00",
"last-updated": "2025-01-24T13:53:59+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -295,6 +259,42 @@
}
}
},
{
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"source-protocol": "direct",
"route-preference": 0,
"last-updated": "2025-01-24T13:53:09+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
{
"outgoing-interface": "e7",
"infix-routing:installed": [
null
]
}
]
}
}
},
{
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"source-protocol": "direct",
"route-preference": 0,
"last-updated": "2025-01-24T13:53:09+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
{
"outgoing-interface": "e5",
"infix-routing:installed": [
null
]
}
]
}
}
},
{
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"source-protocol": "direct",
@@ -302,7 +302,7 @@
"active": [
null
],
"last-updated": "2025-01-24T09:54:35+00:00",
"last-updated": "2025-01-24T13:53:09+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -3,11 +3,11 @@
"container": [
{
"name": "container-B",
"id": "54f467f95bae15a0891acb1efbdf416232c49ea46bb60e796da187d320a746fc",
"id": "78d28082c2e5d494c82aa181c95118ce498e25930ad9e288ba010257ca336378",
"image": "localhost/curios-httpd-oci-amd64-v24.11.0:latest",
"image-id": "d6930d60a73be9980f8e19b4b4f63586a6d3492178e20bea962e4e9b8c654033",
"running": true,
"status": "Up 59 seconds",
"status": "Up About a minute",
"command": "/usr/sbin/httpd -f -v",
"network": {
"interface": [
@@ -23,33 +23,33 @@
},
{
"name": "container-A",
"id": "d3a542dc43f4d6ca7a9e2cff254126f337e41bb5f1e10f6613272d31ec8d5e79",
"id": "3451cfceca4eee1091c1dfedece2faee99bc8a729e781799d9c0b4368a31d86d",
"image": "localhost/curios-httpd-oci-amd64-v24.11.0:latest",
"image-id": "d6930d60a73be9980f8e19b4b4f63586a6d3492178e20bea962e4e9b8c654033",
"running": true,
"status": "Up 59 seconds",
"status": "Up About a minute",
"command": "/usr/sbin/httpd -f -v -p 91",
"network": {
"interface": [
{
"name": "veth1a"
"name": "veth0a"
},
{
"name": "veth0a"
"name": "veth1a"
}
],
"publish": [
"35121->91/tcp"
"34515->91/tcp"
]
}
},
{
"name": "firewall",
"id": "7ae41768fb053a16b25ee3596a80bad0cf2422dada9ac862d24af744c8ad0e6e",
"id": "4e7c3daeba15546e7640014b9ee46e389737ed36583e5cb2f8b75a07a82e8523",
"image": "localhost/curios-nftables-oci-amd64-v24.11.0:latest",
"image-id": "7a3cc502436250357a6664100a600f306334b4d7203890b85b7ea9b8da6b5665",
"running": true,
"status": "Up 59 seconds",
"status": "Up About a minute",
"command": "/usr/sbin/nft-helper /etc/nftables.conf",
"network": {
"host": true
+151 -127
View File
@@ -27,8 +27,8 @@
"oper-status": "up",
"phys-address": "00:00:00:00:00:00",
"statistics": {
"in-octets": "38742",
"out-octets": "38742"
"in-octets": "29943",
"out-octets": "29943"
},
"type": "infix-if-type:loopback"
},
@@ -52,8 +52,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:01",
"statistics": {
"in-octets": "147241",
"out-octets": "2027800"
"in-octets": "274021",
"out-octets": "2236951"
},
"type": "infix-if-type:etherlike"
},
@@ -77,8 +77,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:02",
"statistics": {
"in-octets": "70",
"out-octets": "43409"
"in-octets": "2050",
"out-octets": "72419"
},
"type": "infix-if-type:etherlike"
},
@@ -103,14 +103,18 @@
"router": "auto"
},
"pvid": 1,
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
},
"name": "e3",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:03",
"statistics": {
"in-octets": "9499",
"out-octets": "87012"
"in-octets": "13502",
"out-octets": "117434"
},
"type": "infix-if-type:etherlike"
},
@@ -135,14 +139,18 @@
"router": "auto"
},
"pvid": 1,
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
},
"name": "e4",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:04",
"statistics": {
"in-octets": "15551",
"out-octets": "87027"
"in-octets": "11449",
"out-octets": "113004"
},
"type": "infix-if-type:etherlike"
},
@@ -166,8 +174,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:05",
"statistics": {
"in-octets": "43803",
"out-octets": "44713"
"in-octets": "31213",
"out-octets": "34316"
},
"type": "infix-if-type:etherlike"
},
@@ -198,8 +206,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:06",
"statistics": {
"in-octets": "35346",
"out-octets": "67149"
"in-octets": "48652",
"out-octets": "60687"
},
"type": "infix-if-type:etherlike"
},
@@ -223,8 +231,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:07",
"statistics": {
"in-octets": "27446",
"out-octets": "43597"
"in-octets": "31741",
"out-octets": "34279"
},
"type": "infix-if-type:etherlike"
},
@@ -236,7 +244,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 10,
"if-index": 11,
"infix-interfaces:bridge-port": {
"bridge": "br0",
"flood": {
@@ -249,14 +257,18 @@
"router": "auto"
},
"pvid": 1,
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
},
"name": "veth0b",
"oper-status": "up",
"phys-address": "46:85:68:aa:a0:d1",
"phys-address": "e6:19:75:86:80:dd",
"statistics": {
"in-octets": "1541",
"out-octets": "25110"
"in-octets": "2013",
"out-octets": "34341"
},
"type": "infix-if-type:veth"
},
@@ -268,7 +280,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 12,
"if-index": 13,
"infix-interfaces:bridge-port": {
"bridge": "br0",
"flood": {
@@ -281,14 +293,18 @@
"router": "auto"
},
"pvid": 1,
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
},
"name": "veth2b",
"oper-status": "up",
"phys-address": "aa:08:99:ea:03:99",
"phys-address": "b2:fa:30:63:98:f0",
"statistics": {
"in-octets": "726",
"out-octets": "21517"
"in-octets": "266",
"out-octets": "37752"
},
"type": "infix-if-type:veth"
},
@@ -314,7 +330,7 @@
],
"mtu": 1500
},
"if-index": 13,
"if-index": 14,
"infix-interfaces:bridge": {
"vlans": {
"proto": "ieee802-dot1q-types:c-vlan",
@@ -347,8 +363,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"statistics": {
"in-octets": "3201",
"out-octets": "37293"
"in-octets": "3213",
"out-octets": "38442"
},
"type": "infix-if-type:bridge"
},
@@ -360,7 +376,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 15,
"if-index": 16,
"infix-interfaces:bridge-port": {
"bridge": "br1",
"flood": {
@@ -373,11 +389,15 @@
"router": "auto"
},
"pvid": 6,
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
},
"name": "veth1b",
"oper-status": "up",
"phys-address": "62:f5:af:85:38:a5",
"phys-address": "3e:67:0f:15:24:14",
"statistics": {
"in-octets": "726",
"out-octets": "812"
@@ -392,7 +412,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 17,
"if-index": 18,
"infix-interfaces:bridge-port": {
"bridge": "br1",
"flood": {
@@ -404,11 +424,15 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
},
"name": "veth3b",
"oper-status": "up",
"phys-address": "1a:03:f7:20:d2:5b",
"phys-address": "b2:1c:fa:a7:45:eb",
"statistics": {
"in-octets": "726",
"out-octets": "512"
@@ -423,7 +447,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 18,
"if-index": 19,
"infix-interfaces:bridge": {
"vlans": {
"proto": "ieee802-dot1q-types:c-vlan",
@@ -468,7 +492,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 19,
"if-index": 20,
"infix-interfaces:vlan": {
"id": 8,
"lower-layer-if": "e3",
@@ -478,8 +502,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:03",
"statistics": {
"in-octets": "7733",
"out-octets": "25352"
"in-octets": "10654",
"out-octets": "14688"
},
"type": "infix-if-type:vlan"
},
@@ -498,7 +522,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 20,
"if-index": 21,
"infix-interfaces:vlan": {
"id": 8,
"lower-layer-if": "e4",
@@ -508,8 +532,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:04",
"statistics": {
"in-octets": "13695",
"out-octets": "25121"
"in-octets": "8835",
"out-octets": "15085"
},
"type": "infix-if-type:vlan"
},
@@ -528,7 +552,7 @@
}
]
},
"if-index": 11,
"if-index": 12,
"infix-interfaces:container-network": {
"containers": [
"container-B"
@@ -538,8 +562,8 @@
"oper-status": "up",
"phys-address": "06:a0:85:00:03:00",
"statistics": {
"in-octets": "21517",
"out-octets": "726"
"in-octets": "38078",
"out-octets": "266"
},
"type": "infix-if-type:veth"
},
@@ -558,7 +582,7 @@
}
]
},
"if-index": 16,
"if-index": 17,
"infix-interfaces:container-network": {
"containers": [
"container-B"
@@ -568,42 +592,11 @@
"oper-status": "up",
"phys-address": "06:a0:85:00:03:00",
"statistics": {
"in-octets": "512",
"in-octets": "768",
"out-octets": "726"
},
"type": "infix-if-type:veth"
},
{
"admin-status": "up",
"description": "br1",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"address": [
{
"ip": "fe80::4a0:85ff:fe00:300",
"origin": "link-layer",
"prefix-length": 64
}
],
"mtu": 1500
},
"if-index": 14,
"infix-interfaces:container-network": {
"containers": [
"container-A"
]
},
"name": "veth1a",
"oper-status": "up",
"phys-address": "06:a0:85:00:03:00",
"statistics": {
"in-octets": "812",
"out-octets": "796"
},
"type": "infix-if-type:veth"
},
{
"admin-status": "up",
"description": "br0",
@@ -627,7 +620,7 @@
],
"mtu": 1500
},
"if-index": 9,
"if-index": 10,
"infix-interfaces:container-network": {
"containers": [
"container-A"
@@ -637,8 +630,39 @@
"oper-status": "up",
"phys-address": "06:a0:85:00:03:00",
"statistics": {
"in-octets": "25110",
"out-octets": "1541"
"in-octets": "35483",
"out-octets": "2013"
},
"type": "infix-if-type:veth"
},
{
"admin-status": "up",
"description": "br1",
"ietf-ip:ipv4": {
"mtu": 1500
},
"ietf-ip:ipv6": {
"address": [
{
"ip": "fe80::4a0:85ff:fe00:300",
"origin": "link-layer",
"prefix-length": 64
}
],
"mtu": 1500
},
"if-index": 15,
"infix-interfaces:container-network": {
"containers": [
"container-A"
]
},
"name": "veth1a",
"oper-status": "up",
"phys-address": "06:a0:85:00:03:00",
"statistics": {
"in-octets": "812",
"out-octets": "726"
},
"type": "infix-if-type:veth"
}
@@ -663,7 +687,7 @@
"ietf-ospf:neighbor": [
{
"address": "10.1.2.1",
"dead-timer": 23299,
"dead-timer": 22506,
"neighbor-router-id": "10.1.2.1",
"state": "full"
}
@@ -680,7 +704,7 @@
"ietf-ospf:neighbor": [
{
"address": "10.1.3.1",
"dead-timer": 22827,
"dead-timer": 22334,
"neighbor-router-id": "10.1.3.1",
"state": "full"
}
@@ -702,7 +726,7 @@
{
"address": "10.1.1.100",
"bdr-router-id": "10.1.1.1",
"dead-timer": 39999,
"dead-timer": 31385,
"dr-router-id": "192.168.100.1",
"neighbor-router-id": "192.168.100.1",
"state": "full"
@@ -793,7 +817,7 @@
],
"ietf-ipv4-unicast-routing:destination-prefix": "0.0.0.0/0",
"ietf-ospf:metric": 2,
"last-updated": "2025-01-24T09:55:47+00:00",
"last-updated": "2025-01-24T13:54:55+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -811,7 +835,7 @@
},
{
"ietf-ipv4-unicast-routing:destination-prefix": "0.0.0.0/0",
"last-updated": "2025-01-24T09:55:08+00:00",
"last-updated": "2025-01-24T13:54:15+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -827,7 +851,7 @@
{
"ietf-ipv4-unicast-routing:destination-prefix": "10.1.1.0/24",
"ietf-ospf:metric": 1,
"last-updated": "2025-01-24T09:54:55+00:00",
"last-updated": "2025-01-24T13:54:01+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -845,7 +869,7 @@
null
],
"ietf-ipv4-unicast-routing:destination-prefix": "10.1.1.0/24",
"last-updated": "2025-01-24T09:54:54+00:00",
"last-updated": "2025-01-24T13:54:01+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -863,7 +887,7 @@
},
{
"ietf-ipv4-unicast-routing:destination-prefix": "10.1.1.1/32",
"last-updated": "2025-01-24T09:54:53+00:00",
"last-updated": "2025-01-24T13:54:00+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -884,7 +908,7 @@
null
],
"ietf-ipv4-unicast-routing:destination-prefix": "10.1.1.1/32",
"last-updated": "2025-01-24T09:54:53+00:00",
"last-updated": "2025-01-24T13:54:00+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -906,7 +930,7 @@
],
"ietf-ipv4-unicast-routing:destination-prefix": "10.1.2.0/24",
"ietf-ospf:metric": 2,
"last-updated": "2025-01-24T09:55:47+00:00",
"last-updated": "2025-01-24T13:54:55+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -934,7 +958,7 @@
],
"ietf-ipv4-unicast-routing:destination-prefix": "10.1.3.0/24",
"ietf-ospf:metric": 2,
"last-updated": "2025-01-24T09:55:47+00:00",
"last-updated": "2025-01-24T13:54:55+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -961,7 +985,7 @@
null
],
"ietf-ipv4-unicast-routing:destination-prefix": "169.254.0.0/16",
"last-updated": "2025-01-24T09:54:59+00:00",
"last-updated": "2025-01-24T13:54:06+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -987,7 +1011,7 @@
"route": [
{
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"last-updated": "2025-01-24T09:54:55+00:00",
"last-updated": "2025-01-24T13:54:02+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -1005,7 +1029,7 @@
},
{
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"last-updated": "2025-01-24T09:54:55+00:00",
"last-updated": "2025-01-24T13:54:01+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -1023,7 +1047,25 @@
},
{
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"last-updated": "2025-01-24T09:54:35+00:00",
"last-updated": "2025-01-24T13:53:59+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
{
"infix-routing:installed": [
null
],
"outgoing-interface": "e2"
}
]
}
},
"route-preference": 0,
"source-protocol": "direct"
},
{
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"last-updated": "2025-01-24T13:53:09+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -1041,7 +1083,7 @@
},
{
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"last-updated": "2025-01-24T09:54:35+00:00",
"last-updated": "2025-01-24T13:53:09+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -1057,30 +1099,12 @@
"route-preference": 0,
"source-protocol": "direct"
},
{
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"last-updated": "2025-01-24T09:54:35+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
{
"infix-routing:installed": [
null
],
"outgoing-interface": "e2"
}
]
}
},
"route-preference": 0,
"source-protocol": "direct"
},
{
"active": [
null
],
"ietf-ipv6-unicast-routing:destination-prefix": "fe80::/64",
"last-updated": "2025-01-24T09:54:35+00:00",
"last-updated": "2025-01-24T13:53:09+00:00",
"next-hop": {
"next-hop-list": {
"next-hop": [
@@ -1106,7 +1130,7 @@
"container": [
{
"command": "/usr/sbin/httpd -f -v",
"id": "54f467f95bae15a0891acb1efbdf416232c49ea46bb60e796da187d320a746fc",
"id": "78d28082c2e5d494c82aa181c95118ce498e25930ad9e288ba010257ca336378",
"image": "localhost/curios-httpd-oci-amd64-v24.11.0:latest",
"image-id": "d6930d60a73be9980f8e19b4b4f63586a6d3492178e20bea962e4e9b8c654033",
"name": "container-B",
@@ -1122,33 +1146,33 @@
"publish": []
},
"running": true,
"status": "Up 59 seconds"
"status": "Up About a minute"
},
{
"command": "/usr/sbin/httpd -f -v -p 91",
"id": "d3a542dc43f4d6ca7a9e2cff254126f337e41bb5f1e10f6613272d31ec8d5e79",
"id": "3451cfceca4eee1091c1dfedece2faee99bc8a729e781799d9c0b4368a31d86d",
"image": "localhost/curios-httpd-oci-amd64-v24.11.0:latest",
"image-id": "d6930d60a73be9980f8e19b4b4f63586a6d3492178e20bea962e4e9b8c654033",
"name": "container-A",
"network": {
"interface": [
{
"name": "veth1a"
"name": "veth0a"
},
{
"name": "veth0a"
"name": "veth1a"
}
],
"publish": [
"35121->91/tcp"
"34515->91/tcp"
]
},
"running": true,
"status": "Up 59 seconds"
"status": "Up About a minute"
},
{
"command": "/usr/sbin/nft-helper /etc/nftables.conf",
"id": "7ae41768fb053a16b25ee3596a80bad0cf2422dada9ac862d24af744c8ad0e6e",
"id": "4e7c3daeba15546e7640014b9ee46e389737ed36583e5cb2f8b75a07a82e8523",
"image": "localhost/curios-nftables-oci-amd64-v24.11.0:latest",
"image-id": "7a3cc502436250357a6664100a600f306334b4d7203890b85b7ea9b8da6b5665",
"name": "firewall",
@@ -1156,7 +1180,7 @@
"host": true
},
"running": true,
"status": "Up 59 seconds"
"status": "Up About a minute"
}
]
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
[{"name":"netns-ce78a6f5-04dd-6854-9574-c9ab03166846","id":0},{"name":"netns-539c0d36-21c9-3fc1-802f-3f997402e299","id":1}]
[{"name":"netns-40c00224-efb2-b342-3864-6b04af49448f","id":0},{"name":"netns-8426947a-3522-348c-ba3b-225c429fb8f6","id":1}]
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
[{"ifindex":16,"link_index":17,"ifname":"eth1","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","broadcast":"ff:ff:ff:ff:ff:ff","link_netnsid":0,"addr_info":[{"family":"inet6","local":"fe80::4a0:85ff:fe00:300","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]
[{"ifindex":12,"link_index":13,"ifname":"eth0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","broadcast":"ff:ff:ff:ff:ff:ff","link_netnsid":0,"addr_info":[{"family":"inet6","local":"fe80::4a0:85ff:fe00:300","prefixlen":64,"scope":"link","dadfailed":true,"tentative":true,"protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]
@@ -1 +1 @@
[{"ifindex":11,"link_index":12,"ifname":"eth0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","broadcast":"ff:ff:ff:ff:ff:ff","link_netnsid":0,"addr_info":[{"family":"inet6","local":"fe80::4a0:85ff:fe00:300","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]
[{"ifindex":17,"link_index":18,"ifname":"eth1","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","broadcast":"ff:ff:ff:ff:ff:ff","link_netnsid":0,"addr_info":[{"family":"inet6","local":"fe80::4a0:85ff:fe00:300","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]
@@ -1 +1 @@
[{"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":28,"packets":1,"errors":0,"dropped":0,"over_errors":0,"multicast":0},"tx":{"bytes":28,"packets":1,"errors":0,"dropped":0,"carrier_errors":0,"collisions":0}}},{"ifindex":11,"link_index":12,"ifname":"eth0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","linkmode":"DEFAULT","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","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":"veth2a","stats64":{"rx":{"bytes":21517,"packets":66,"errors":0,"dropped":2,"over_errors":0,"multicast":0},"tx":{"bytes":726,"packets":9,"errors":0,"dropped":0,"carrier_errors":0,"collisions":0}}},{"ifindex":16,"link_index":17,"ifname":"eth1","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","linkmode":"DEFAULT","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","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":"veth3a","stats64":{"rx":{"bytes":512,"packets":2,"errors":0,"dropped":2,"over_errors":0,"multicast":0},"tx":{"bytes":726,"packets":9,"errors":0,"dropped":0,"carrier_errors":0,"collisions":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":28,"packets":1,"errors":0,"dropped":0,"over_errors":0,"multicast":0},"tx":{"bytes":28,"packets":1,"errors":0,"dropped":0,"carrier_errors":0,"collisions":0}}},{"ifindex":12,"link_index":13,"ifname":"eth0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","linkmode":"DEFAULT","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","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":"veth2a","stats64":{"rx":{"bytes":38078,"packets":121,"errors":0,"dropped":3,"over_errors":0,"multicast":0},"tx":{"bytes":266,"packets":3,"errors":0,"dropped":0,"carrier_errors":0,"collisions":0}}},{"ifindex":17,"link_index":18,"ifname":"eth1","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","linkmode":"DEFAULT","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","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":"veth3a","stats64":{"rx":{"bytes":768,"packets":3,"errors":0,"dropped":3,"over_errors":0,"multicast":0},"tx":{"bytes":726,"packets":9,"errors":0,"dropped":0,"carrier_errors":0,"collisions":0}}}]
@@ -0,0 +1 @@
[{"ifindex":10,"link_index":11,"ifname":"br0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","broadcast":"ff:ff:ff:ff:ff:ff","link_netnsid":0,"addr_info":[{"family":"inet","local":"169.254.1.2","prefixlen":16,"broadcast":"169.254.255.255","scope":"global","label":"br0","valid_life_time":4294967295,"preferred_life_time":4294967295},{"family":"inet6","local":"fe80::4a0:85ff:fe00:300","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]
@@ -1 +1 @@
[{"ifindex":14,"link_index":15,"ifname":"br1","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","broadcast":"ff:ff:ff:ff:ff:ff","link_netnsid":0,"addr_info":[{"family":"inet6","local":"fe80::4a0:85ff:fe00:300","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]
[{"ifindex":15,"link_index":16,"ifname":"br1","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","broadcast":"ff:ff:ff:ff:ff:ff","link_netnsid":0,"addr_info":[{"family":"inet6","local":"fe80::4a0:85ff:fe00:300","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]
@@ -0,0 +1 @@
[{"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":28,"packets":1,"errors":0,"dropped":0,"over_errors":0,"multicast":0},"tx":{"bytes":28,"packets":1,"errors":0,"dropped":0,"carrier_errors":0,"collisions":0}}},{"ifindex":10,"link_index":11,"ifname":"br0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","linkmode":"DEFAULT","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","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":"veth0a","stats64":{"rx":{"bytes":35483,"packets":127,"errors":0,"dropped":3,"over_errors":0,"multicast":0},"tx":{"bytes":2013,"packets":24,"errors":0,"dropped":0,"carrier_errors":0,"collisions":0}}},{"ifindex":15,"link_index":16,"ifname":"br1","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","linkmode":"DEFAULT","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","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":"veth1a","stats64":{"rx":{"bytes":812,"packets":3,"errors":0,"dropped":3,"over_errors":0,"multicast":0},"tx":{"bytes":726,"packets":9,"errors":0,"dropped":0,"carrier_errors":0,"collisions":0}}}]
@@ -1 +0,0 @@
[{"ifindex":9,"link_index":10,"ifname":"br0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","broadcast":"ff:ff:ff:ff:ff:ff","link_netnsid":0,"addr_info":[{"family":"inet","local":"169.254.1.2","prefixlen":16,"broadcast":"169.254.255.255","scope":"global","label":"br0","valid_life_time":4294967295,"preferred_life_time":4294967295},{"family":"inet6","local":"fe80::4a0:85ff:fe00:300","prefixlen":64,"scope":"link","dadfailed":true,"tentative":true,"protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]
@@ -1 +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":28,"packets":1,"errors":0,"dropped":0,"over_errors":0,"multicast":0},"tx":{"bytes":28,"packets":1,"errors":0,"dropped":0,"carrier_errors":0,"collisions":0}}},{"ifindex":9,"link_index":10,"ifname":"br0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","linkmode":"DEFAULT","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","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":"veth0a","stats64":{"rx":{"bytes":25110,"packets":99,"errors":0,"dropped":2,"over_errors":0,"multicast":0},"tx":{"bytes":1541,"packets":18,"errors":0,"dropped":0,"carrier_errors":0,"collisions":0}}},{"ifindex":14,"link_index":15,"ifname":"br1","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"noqueue","operstate":"UP","linkmode":"DEFAULT","group":"default","txqlen":1000,"link_type":"ether","address":"06:a0:85:00:03:00","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":"veth1a","stats64":{"rx":{"bytes":812,"packets":3,"errors":0,"dropped":3,"over_errors":0,"multicast":0},"tx":{"bytes":796,"packets":10,"errors":0,"dropped":0,"carrier_errors":0,"collisions":0}}}]
@@ -1,7 +1,7 @@
[
{
"Id": "d3a542dc43f4d6ca7a9e2cff254126f337e41bb5f1e10f6613272d31ec8d5e79",
"Created": "2025-01-24T09:54:57.992948403Z",
"Id": "3451cfceca4eee1091c1dfedece2faee99bc8a729e781799d9c0b4368a31d86d",
"Created": "2025-01-24T13:54:02.156136117Z",
"Path": "/usr/bin/tini",
"Args": [
"--",
@@ -19,18 +19,18 @@
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 5540,
"ConmonPid": 5522,
"Pid": 6768,
"ConmonPid": 6766,
"ExitCode": 0,
"Error": "",
"StartedAt": "2025-01-24T09:54:59.376108203Z",
"StartedAt": "2025-01-24T13:54:02.73077427Z",
"FinishedAt": "0001-01-01T00:00:00Z",
"Health": {
"Status": "",
"FailingStreak": 0,
"Log": null
},
"CgroupPath": "/containers/libpod-d3a542dc43f4d6ca7a9e2cff254126f337e41bb5f1e10f6613272d31ec8d5e79",
"CgroupPath": "/containers/libpod-3451cfceca4eee1091c1dfedece2faee99bc8a729e781799d9c0b4368a31d86d",
"CheckpointedAt": "0001-01-01T00:00:00Z",
"RestoredAt": "0001-01-01T00:00:00Z"
},
@@ -39,14 +39,14 @@
"ImageName": "localhost/curios-httpd-oci-amd64-v24.11.0:latest",
"Rootfs": "",
"Pod": "",
"ResolvConfPath": "/run/containers/storage/overlay-containers/d3a542dc43f4d6ca7a9e2cff254126f337e41bb5f1e10f6613272d31ec8d5e79/userdata/resolv.conf",
"HostnamePath": "/run/containers/storage/overlay-containers/d3a542dc43f4d6ca7a9e2cff254126f337e41bb5f1e10f6613272d31ec8d5e79/userdata/hostname",
"HostsPath": "/run/containers/storage/overlay-containers/d3a542dc43f4d6ca7a9e2cff254126f337e41bb5f1e10f6613272d31ec8d5e79/userdata/hosts",
"StaticDir": "/var/lib/containers/storage/overlay-containers/d3a542dc43f4d6ca7a9e2cff254126f337e41bb5f1e10f6613272d31ec8d5e79/userdata",
"OCIConfigPath": "/var/lib/containers/storage/overlay-containers/d3a542dc43f4d6ca7a9e2cff254126f337e41bb5f1e10f6613272d31ec8d5e79/userdata/config.json",
"ResolvConfPath": "/run/containers/storage/overlay-containers/3451cfceca4eee1091c1dfedece2faee99bc8a729e781799d9c0b4368a31d86d/userdata/resolv.conf",
"HostnamePath": "/run/containers/storage/overlay-containers/3451cfceca4eee1091c1dfedece2faee99bc8a729e781799d9c0b4368a31d86d/userdata/hostname",
"HostsPath": "/run/containers/storage/overlay-containers/3451cfceca4eee1091c1dfedece2faee99bc8a729e781799d9c0b4368a31d86d/userdata/hosts",
"StaticDir": "/var/lib/containers/storage/overlay-containers/3451cfceca4eee1091c1dfedece2faee99bc8a729e781799d9c0b4368a31d86d/userdata",
"OCIConfigPath": "/var/lib/containers/storage/overlay-containers/3451cfceca4eee1091c1dfedece2faee99bc8a729e781799d9c0b4368a31d86d/userdata/config.json",
"OCIRuntime": "crun",
"ConmonPidFile": "/run/container:container-A.pid",
"PidFile": "/run/containers/storage/overlay-containers/d3a542dc43f4d6ca7a9e2cff254126f337e41bb5f1e10f6613272d31ec8d5e79/userdata/pidfile",
"PidFile": "/run/containers/storage/overlay-containers/3451cfceca4eee1091c1dfedece2faee99bc8a729e781799d9c0b4368a31d86d/userdata/pidfile",
"Name": "container-A",
"RestartCount": 0,
"Driver": "overlay",
@@ -84,9 +84,9 @@
"Name": "overlay",
"Data": {
"LowerDir": "/var/lib/containers/storage/overlay/7f1ed5e7f0b5c759a9e1864bdb0bf0b03751a85345c51a97cea18d4701f2fb53/diff",
"MergedDir": "/var/lib/containers/storage/overlay/8d5b3287022924b1e7d4a3ebd2a66603b9859f3cad910aa7e1c415a0d958e862/merged",
"UpperDir": "/var/lib/containers/storage/overlay/8d5b3287022924b1e7d4a3ebd2a66603b9859f3cad910aa7e1c415a0d958e862/diff",
"WorkDir": "/var/lib/containers/storage/overlay/8d5b3287022924b1e7d4a3ebd2a66603b9859f3cad910aa7e1c415a0d958e862/work"
"MergedDir": "/var/lib/containers/storage/overlay/06b3765ecf089fdf49d57afc0c528ed5f2ae56841814330bbb017f7d6afe3dae/merged",
"UpperDir": "/var/lib/containers/storage/overlay/06b3765ecf089fdf49d57afc0c528ed5f2ae56841814330bbb017f7d6afe3dae/diff",
"WorkDir": "/var/lib/containers/storage/overlay/06b3765ecf089fdf49d57afc0c528ed5f2ae56841814330bbb017f7d6afe3dae/work"
}
},
"Mounts": [
@@ -125,11 +125,11 @@
"91/tcp": [
{
"HostIp": "",
"HostPort": "35121"
"HostPort": "34515"
}
]
},
"SandboxKey": "/run/netns/netns-ce78a6f5-04dd-6854-9574-c9ab03166846",
"SandboxKey": "/run/netns/netns-8426947a-3522-348c-ba3b-225c429fb8f6",
"Networks": {
"veth0a": {
"EndpointID": "",
@@ -145,7 +145,7 @@
"IPAMConfig": null,
"Links": null,
"Aliases": [
"d3a542dc43f4"
"3451cfceca4e"
]
},
"veth1a": {
@@ -162,7 +162,7 @@
"IPAMConfig": null,
"Links": null,
"Aliases": [
"d3a542dc43f4"
"3451cfceca4e"
]
}
}
@@ -264,7 +264,7 @@
"91/tcp": [
{
"HostIp": "",
"HostPort": "35121"
"HostPort": "34515"
}
]
},
@@ -1,7 +1,7 @@
[
{
"Id": "54f467f95bae15a0891acb1efbdf416232c49ea46bb60e796da187d320a746fc",
"Created": "2025-01-24T09:54:57.989283803Z",
"Id": "78d28082c2e5d494c82aa181c95118ce498e25930ad9e288ba010257ca336378",
"Created": "2025-01-24T13:54:02.12977494Z",
"Path": "/usr/bin/tini",
"Args": [
"--",
@@ -17,18 +17,18 @@
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 5582,
"ConmonPid": 5580,
"Pid": 6667,
"ConmonPid": 6662,
"ExitCode": 0,
"Error": "",
"StartedAt": "2025-01-24T09:54:59.47076885Z",
"StartedAt": "2025-01-24T13:54:02.69291425Z",
"FinishedAt": "0001-01-01T00:00:00Z",
"Health": {
"Status": "",
"FailingStreak": 0,
"Log": null
},
"CgroupPath": "/containers/libpod-54f467f95bae15a0891acb1efbdf416232c49ea46bb60e796da187d320a746fc",
"CgroupPath": "/containers/libpod-78d28082c2e5d494c82aa181c95118ce498e25930ad9e288ba010257ca336378",
"CheckpointedAt": "0001-01-01T00:00:00Z",
"RestoredAt": "0001-01-01T00:00:00Z"
},
@@ -37,14 +37,14 @@
"ImageName": "localhost/curios-httpd-oci-amd64-v24.11.0:latest",
"Rootfs": "",
"Pod": "",
"ResolvConfPath": "/run/containers/storage/overlay-containers/54f467f95bae15a0891acb1efbdf416232c49ea46bb60e796da187d320a746fc/userdata/resolv.conf",
"HostnamePath": "/run/containers/storage/overlay-containers/54f467f95bae15a0891acb1efbdf416232c49ea46bb60e796da187d320a746fc/userdata/hostname",
"HostsPath": "/run/containers/storage/overlay-containers/54f467f95bae15a0891acb1efbdf416232c49ea46bb60e796da187d320a746fc/userdata/hosts",
"StaticDir": "/var/lib/containers/storage/overlay-containers/54f467f95bae15a0891acb1efbdf416232c49ea46bb60e796da187d320a746fc/userdata",
"OCIConfigPath": "/var/lib/containers/storage/overlay-containers/54f467f95bae15a0891acb1efbdf416232c49ea46bb60e796da187d320a746fc/userdata/config.json",
"ResolvConfPath": "/run/containers/storage/overlay-containers/78d28082c2e5d494c82aa181c95118ce498e25930ad9e288ba010257ca336378/userdata/resolv.conf",
"HostnamePath": "/run/containers/storage/overlay-containers/78d28082c2e5d494c82aa181c95118ce498e25930ad9e288ba010257ca336378/userdata/hostname",
"HostsPath": "/run/containers/storage/overlay-containers/78d28082c2e5d494c82aa181c95118ce498e25930ad9e288ba010257ca336378/userdata/hosts",
"StaticDir": "/var/lib/containers/storage/overlay-containers/78d28082c2e5d494c82aa181c95118ce498e25930ad9e288ba010257ca336378/userdata",
"OCIConfigPath": "/var/lib/containers/storage/overlay-containers/78d28082c2e5d494c82aa181c95118ce498e25930ad9e288ba010257ca336378/userdata/config.json",
"OCIRuntime": "crun",
"ConmonPidFile": "/run/container:container-B.pid",
"PidFile": "/run/containers/storage/overlay-containers/54f467f95bae15a0891acb1efbdf416232c49ea46bb60e796da187d320a746fc/userdata/pidfile",
"PidFile": "/run/containers/storage/overlay-containers/78d28082c2e5d494c82aa181c95118ce498e25930ad9e288ba010257ca336378/userdata/pidfile",
"Name": "container-B",
"RestartCount": 0,
"Driver": "overlay",
@@ -142,9 +142,9 @@
"Name": "overlay",
"Data": {
"LowerDir": "/var/lib/containers/storage/overlay/7f1ed5e7f0b5c759a9e1864bdb0bf0b03751a85345c51a97cea18d4701f2fb53/diff",
"MergedDir": "/var/lib/containers/storage/overlay/c2836541997ba59077c6bda30a983705527a749cb598f33a0943c433cc56384d/merged",
"UpperDir": "/var/lib/containers/storage/overlay/c2836541997ba59077c6bda30a983705527a749cb598f33a0943c433cc56384d/diff",
"WorkDir": "/var/lib/containers/storage/overlay/c2836541997ba59077c6bda30a983705527a749cb598f33a0943c433cc56384d/work"
"MergedDir": "/var/lib/containers/storage/overlay/9b73b4ec0679e1b18a2d6cd70b3209cbd118a361d68de04b6837f13cd3c09a1f/merged",
"UpperDir": "/var/lib/containers/storage/overlay/9b73b4ec0679e1b18a2d6cd70b3209cbd118a361d68de04b6837f13cd3c09a1f/diff",
"WorkDir": "/var/lib/containers/storage/overlay/9b73b4ec0679e1b18a2d6cd70b3209cbd118a361d68de04b6837f13cd3c09a1f/work"
}
},
"Mounts": [],
@@ -166,7 +166,7 @@
"Ports": {
"80/tcp": null
},
"SandboxKey": "/run/netns/netns-539c0d36-21c9-3fc1-802f-3f997402e299",
"SandboxKey": "/run/netns/netns-40c00224-efb2-b342-3864-6b04af49448f",
"Networks": {
"veth2a": {
"EndpointID": "",
@@ -182,7 +182,7 @@
"IPAMConfig": null,
"Links": null,
"Aliases": [
"54f467f95bae"
"78d28082c2e5"
]
},
"veth3a": {
@@ -199,7 +199,7 @@
"IPAMConfig": null,
"Links": null,
"Aliases": [
"54f467f95bae"
"78d28082c2e5"
]
}
}
@@ -1,7 +1,7 @@
[
{
"Id": "7ae41768fb053a16b25ee3596a80bad0cf2422dada9ac862d24af744c8ad0e6e",
"Created": "2025-01-24T09:54:58.202221241Z",
"Id": "4e7c3daeba15546e7640014b9ee46e389737ed36583e5cb2f8b75a07a82e8523",
"Created": "2025-01-24T13:54:02.258266254Z",
"Path": "/usr/bin/tini",
"Args": [
"--",
@@ -16,18 +16,18 @@
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 5547,
"ConmonPid": 5523,
"Pid": 6693,
"ConmonPid": 6688,
"ExitCode": 0,
"Error": "",
"StartedAt": "2025-01-24T09:54:59.401153678Z",
"StartedAt": "2025-01-24T13:54:02.738587091Z",
"FinishedAt": "0001-01-01T00:00:00Z",
"Health": {
"Status": "",
"FailingStreak": 0,
"Log": null
},
"CgroupPath": "/containers/libpod-7ae41768fb053a16b25ee3596a80bad0cf2422dada9ac862d24af744c8ad0e6e",
"CgroupPath": "/containers/libpod-4e7c3daeba15546e7640014b9ee46e389737ed36583e5cb2f8b75a07a82e8523",
"CheckpointedAt": "0001-01-01T00:00:00Z",
"RestoredAt": "0001-01-01T00:00:00Z"
},
@@ -36,14 +36,14 @@
"ImageName": "localhost/curios-nftables-oci-amd64-v24.11.0:latest",
"Rootfs": "",
"Pod": "",
"ResolvConfPath": "/run/containers/storage/overlay-containers/7ae41768fb053a16b25ee3596a80bad0cf2422dada9ac862d24af744c8ad0e6e/userdata/resolv.conf",
"HostnamePath": "/run/containers/storage/overlay-containers/7ae41768fb053a16b25ee3596a80bad0cf2422dada9ac862d24af744c8ad0e6e/userdata/hostname",
"HostsPath": "/run/containers/storage/overlay-containers/7ae41768fb053a16b25ee3596a80bad0cf2422dada9ac862d24af744c8ad0e6e/userdata/hosts",
"StaticDir": "/var/lib/containers/storage/overlay-containers/7ae41768fb053a16b25ee3596a80bad0cf2422dada9ac862d24af744c8ad0e6e/userdata",
"OCIConfigPath": "/var/lib/containers/storage/overlay-containers/7ae41768fb053a16b25ee3596a80bad0cf2422dada9ac862d24af744c8ad0e6e/userdata/config.json",
"ResolvConfPath": "/run/containers/storage/overlay-containers/4e7c3daeba15546e7640014b9ee46e389737ed36583e5cb2f8b75a07a82e8523/userdata/resolv.conf",
"HostnamePath": "/run/containers/storage/overlay-containers/4e7c3daeba15546e7640014b9ee46e389737ed36583e5cb2f8b75a07a82e8523/userdata/hostname",
"HostsPath": "/run/containers/storage/overlay-containers/4e7c3daeba15546e7640014b9ee46e389737ed36583e5cb2f8b75a07a82e8523/userdata/hosts",
"StaticDir": "/var/lib/containers/storage/overlay-containers/4e7c3daeba15546e7640014b9ee46e389737ed36583e5cb2f8b75a07a82e8523/userdata",
"OCIConfigPath": "/var/lib/containers/storage/overlay-containers/4e7c3daeba15546e7640014b9ee46e389737ed36583e5cb2f8b75a07a82e8523/userdata/config.json",
"OCIRuntime": "crun",
"ConmonPidFile": "/run/container:firewall.pid",
"PidFile": "/run/containers/storage/overlay-containers/7ae41768fb053a16b25ee3596a80bad0cf2422dada9ac862d24af744c8ad0e6e/userdata/pidfile",
"PidFile": "/run/containers/storage/overlay-containers/4e7c3daeba15546e7640014b9ee46e389737ed36583e5cb2f8b75a07a82e8523/userdata/pidfile",
"Name": "firewall",
"RestartCount": 0,
"Driver": "overlay",
@@ -141,9 +141,9 @@
"Name": "overlay",
"Data": {
"LowerDir": "/var/lib/containers/storage/overlay/5a47f694a11e7abd644d015c96ebe954f5d3099459c7c8dc847b2d8809895f0e/diff",
"MergedDir": "/var/lib/containers/storage/overlay/cbbe39176a42ed0c4a76bf2ac0fa677cf5cbb313bd126497885cdfe6d6256f15/merged",
"UpperDir": "/var/lib/containers/storage/overlay/cbbe39176a42ed0c4a76bf2ac0fa677cf5cbb313bd126497885cdfe6d6256f15/diff",
"WorkDir": "/var/lib/containers/storage/overlay/cbbe39176a42ed0c4a76bf2ac0fa677cf5cbb313bd126497885cdfe6d6256f15/work"
"MergedDir": "/var/lib/containers/storage/overlay/e875e4b43435a968254a293e67ba5ddce3d6a3a889cd8eefa8a5cbf9bf2b857d/merged",
"UpperDir": "/var/lib/containers/storage/overlay/e875e4b43435a968254a293e67ba5ddce3d6a3a889cd8eefa8a5cbf9bf2b857d/diff",
"WorkDir": "/var/lib/containers/storage/overlay/e875e4b43435a968254a293e67ba5ddce3d6a3a889cd8eefa8a5cbf9bf2b857d/work"
}
},
"Mounts": [
@@ -210,9 +210,9 @@
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"container=podman",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"TERM=xterm",
"container=podman",
"HOME=/root",
"HOSTNAME=R1"
],
@@ -10,7 +10,7 @@
"Exited": false,
"ExitedAt": -62135596800,
"ExitCode": 0,
"Id": "54f467f95bae15a0891acb1efbdf416232c49ea46bb60e796da187d320a746fc",
"Id": "78d28082c2e5d494c82aa181c95118ce498e25930ad9e288ba010257ca336378",
"Image": "localhost/curios-httpd-oci-amd64-v24.11.0:latest",
"ImageID": "d6930d60a73be9980f8e19b4b4f63586a6d3492178e20bea962e4e9b8c654033",
"IsInfra": false,
@@ -29,15 +29,15 @@
"veth2a",
"veth3a"
],
"Pid": 5582,
"Pid": 6667,
"Pod": "",
"PodName": "",
"Ports": null,
"Size": null,
"StartedAt": 1737712499,
"StartedAt": 1737726842,
"State": "running",
"Status": "Up 59 seconds",
"Created": 1737712497
"Status": "Up About a minute",
"Created": 1737726842
},
{
"AutoRemove": false,
@@ -52,7 +52,7 @@
"Exited": false,
"ExitedAt": -62135596800,
"ExitCode": 0,
"Id": "d3a542dc43f4d6ca7a9e2cff254126f337e41bb5f1e10f6613272d31ec8d5e79",
"Id": "3451cfceca4eee1091c1dfedece2faee99bc8a729e781799d9c0b4368a31d86d",
"Image": "localhost/curios-httpd-oci-amd64-v24.11.0:latest",
"ImageID": "d6930d60a73be9980f8e19b4b4f63586a6d3492178e20bea962e4e9b8c654033",
"IsInfra": false,
@@ -70,26 +70,26 @@
},
"Networks": [
"veth1a",
"veth0a"
"veth0a",
"veth1a"
],
"Pid": 5540,
"Pid": 6768,
"Pod": "",
"PodName": "",
"Ports": [
{
"host_ip": "",
"container_port": 91,
"host_port": 35121,
"host_port": 34515,
"range": 1,
"protocol": "tcp"
}
],
"Size": null,
"StartedAt": 1737712499,
"StartedAt": 1737726842,
"State": "running",
"Status": "Up 59 seconds",
"Created": 1737712497
"Status": "Up About a minute",
"Created": 1737726842
},
{
"AutoRemove": false,
@@ -101,7 +101,7 @@
"Exited": false,
"ExitedAt": -62135596800,
"ExitCode": 0,
"Id": "7ae41768fb053a16b25ee3596a80bad0cf2422dada9ac862d24af744c8ad0e6e",
"Id": "4e7c3daeba15546e7640014b9ee46e389737ed36583e5cb2f8b75a07a82e8523",
"Image": "localhost/curios-nftables-oci-amd64-v24.11.0:latest",
"ImageID": "7a3cc502436250357a6664100a600f306334b4d7203890b85b7ea9b8da6b5665",
"IsInfra": false,
@@ -119,14 +119,14 @@
},
"Networks": [],
"Pid": 5547,
"Pid": 6693,
"Pod": "",
"PodName": "",
"Ports": null,
"Size": null,
"StartedAt": 1737712499,
"StartedAt": 1737726842,
"State": "running",
"Status": "Up 59 seconds",
"Created": 1737712498
"Status": "Up About a minute",
"Created": 1737726842
}
]
@@ -1 +1 @@
{"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":41,"installedNexthopGroupId":41,"uptime":"00:00:14","nexthops":[{"flags":3,"fib":true,"ip":"10.1.1.100","afi":"ipv4","interfaceIndex":7,"interfaceName":"e6","active":true,"weight":1}]},{"prefix":"0.0.0.0/0","prefixLen":0,"protocol":"static","vrfId":0,"vrfName":"default","distance":254,"metric":0,"table":254,"internalStatus":0,"internalFlags":65,"internalNextHopNum":1,"internalNextHopActiveNum":1,"nexthopGroupId":30,"installedNexthopGroupId":30,"uptime":"00:00:53","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":13,"interfaceName":"br0","active":true,"weight":1}]}],"10.1.1.0/24":[{"prefix":"10.1.1.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":22,"uptime":"00:01:06","nexthops":[{"flags":1,"directlyConnected":true,"interfaceIndex":7,"interfaceName":"e6","active":true,"weight":1}]},{"prefix":"10.1.1.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":20,"installedNexthopGroupId":20,"uptime":"00:01:07","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":7,"interfaceName":"e6","active":true}]}],"10.1.1.1/32":[{"prefix":"10.1.1.1/32","prefixLen":32,"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:01:08","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":20,"interfaceName":"e4.8","active":true}]},{"prefix":"10.1.1.1/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":16,"installedNexthopGroupId":16,"uptime":"00:01:08","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":19,"interfaceName":"e3.8","active":true}]}],"10.1.2.0/24":[{"prefix":"10.1.2.0/24","prefixLen":24,"protocol":"ospf","vrfId":0,"vrfName":"default","selected":true,"destSelected":true,"distance":110,"metric":2,"installed":true,"table":254,"internalStatus":16,"internalFlags":8,"internalNextHopNum":2,"internalNextHopActiveNum":2,"nexthopGroupId":42,"installedNexthopGroupId":42,"uptime":"00:00:14","nexthops":[{"flags":3,"fib":true,"ip":"10.1.1.100","afi":"ipv4","interfaceIndex":7,"interfaceName":"e6","active":true,"weight":1},{"flags":11,"fib":true,"ip":"10.1.2.1","afi":"ipv4","interfaceIndex":19,"interfaceName":"e3.8","active":true,"onLink":true,"weight":1}]}],"10.1.3.0/24":[{"prefix":"10.1.3.0/24","prefixLen":24,"protocol":"ospf","vrfId":0,"vrfName":"default","selected":true,"destSelected":true,"distance":110,"metric":2,"installed":true,"table":254,"internalStatus":16,"internalFlags":8,"internalNextHopNum":2,"internalNextHopActiveNum":2,"nexthopGroupId":43,"installedNexthopGroupId":43,"uptime":"00:00:14","nexthops":[{"flags":3,"fib":true,"ip":"10.1.1.100","afi":"ipv4","interfaceIndex":7,"interfaceName":"e6","active":true,"weight":1},{"flags":11,"fib":true,"ip":"10.1.3.1","afi":"ipv4","interfaceIndex":20,"interfaceName":"e4.8","active":true,"onLink":true,"weight":1}]}],"169.254.0.0/16":[{"prefix":"169.254.0.0/16","prefixLen":16,"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":28,"installedNexthopGroupId":28,"uptime":"00:01:02","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":13,"interfaceName":"br0","active":true}]}]}
{"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":52,"installedNexthopGroupId":52,"uptime":"00:00:13","nexthops":[{"flags":3,"fib":true,"ip":"10.1.1.100","afi":"ipv4","interfaceIndex":7,"interfaceName":"e6","active":true,"weight":1}]},{"prefix":"0.0.0.0/0","prefixLen":0,"protocol":"static","vrfId":0,"vrfName":"default","distance":254,"metric":0,"table":254,"internalStatus":0,"internalFlags":65,"internalNextHopNum":1,"internalNextHopActiveNum":1,"nexthopGroupId":41,"installedNexthopGroupId":41,"uptime":"00:00:53","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":14,"interfaceName":"br0","active":true,"weight":1}]}],"10.1.1.0/24":[{"prefix":"10.1.1.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":"00:01:07","nexthops":[{"flags":1,"directlyConnected":true,"interfaceIndex":7,"interfaceName":"e6","active":true,"weight":1}]},{"prefix":"10.1.1.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":31,"installedNexthopGroupId":31,"uptime":"00:01:07","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":7,"interfaceName":"e6","active":true}]}],"10.1.1.1/32":[{"prefix":"10.1.1.1/32","prefixLen":32,"protocol":"connected","vrfId":0,"vrfName":"default","distance":0,"metric":0,"installed":true,"table":254,"internalStatus":16,"internalFlags":0,"internalNextHopNum":1,"internalNextHopActiveNum":1,"nexthopGroupId":28,"uptime":"00:01:08","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":21,"interfaceName":"e4.8","active":true}]},{"prefix":"10.1.1.1/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":29,"installedNexthopGroupId":29,"uptime":"00:01:08","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":20,"interfaceName":"e3.8","active":true}]}],"10.1.2.0/24":[{"prefix":"10.1.2.0/24","prefixLen":24,"protocol":"ospf","vrfId":0,"vrfName":"default","selected":true,"destSelected":true,"distance":110,"metric":2,"installed":true,"table":254,"internalStatus":16,"internalFlags":8,"internalNextHopNum":2,"internalNextHopActiveNum":2,"nexthopGroupId":53,"installedNexthopGroupId":53,"uptime":"00:00:13","nexthops":[{"flags":3,"fib":true,"ip":"10.1.1.100","afi":"ipv4","interfaceIndex":7,"interfaceName":"e6","active":true,"weight":1},{"flags":11,"fib":true,"ip":"10.1.2.1","afi":"ipv4","interfaceIndex":20,"interfaceName":"e3.8","active":true,"onLink":true,"weight":1}]}],"10.1.3.0/24":[{"prefix":"10.1.3.0/24","prefixLen":24,"protocol":"ospf","vrfId":0,"vrfName":"default","selected":true,"destSelected":true,"distance":110,"metric":2,"installed":true,"table":254,"internalStatus":16,"internalFlags":8,"internalNextHopNum":2,"internalNextHopActiveNum":2,"nexthopGroupId":54,"installedNexthopGroupId":54,"uptime":"00:00:13","nexthops":[{"flags":3,"fib":true,"ip":"10.1.1.100","afi":"ipv4","interfaceIndex":7,"interfaceName":"e6","active":true,"weight":1},{"flags":11,"fib":true,"ip":"10.1.3.1","afi":"ipv4","interfaceIndex":21,"interfaceName":"e4.8","active":true,"onLink":true,"weight":1}]}],"169.254.0.0/16":[{"prefix":"169.254.0.0/16","prefixLen":16,"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":39,"installedNexthopGroupId":39,"uptime":"00:01:02","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":14,"interfaceName":"br0","active":true}]}]}
@@ -1 +1 @@
{"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":26,"uptime":"00:01:06","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":24,"uptime":"00:01:06","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":13,"interfaceName":"br0","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":8,"uptime":"00:01:26","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":10,"uptime":"00:01:26","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":13,"uptime":"00:01:26","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":14,"installedNexthopGroupId":14,"uptime":"00:01:26","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":2,"interfaceName":"e1","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":37,"uptime":"00:01:06","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":35,"uptime":"00:01:07","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":14,"interfaceName":"br0","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":23,"uptime":"00:01:09","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":3,"interfaceName":"e2","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":8,"uptime":"00:01:59","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":10,"uptime":"00:01:59","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":6,"interfaceName":"e5","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":14,"installedNexthopGroupId":14,"uptime":"00:01:59","nexthops":[{"flags":3,"fib":true,"directlyConnected":true,"interfaceIndex":2,"interfaceName":"e1","active":true}]}]}
+1 -1
View File
@@ -1,2 +1,2 @@
1737712561
1737726908
@@ -39,13 +39,13 @@ e7 ethernet UP 00:a0:85:00:03:07
gre-v4 gre UP 
gre-v6 gre UP 
ipv4 192.168.50.2/16 (static)
gretap-v4 gretap UP ba:a0:f5:c1:68:83
gretap-v6 gretap UP 1a:1b:84:dd:ca:2c
veth0a veth UP be:40:fd:0e:8d:c6
veth0a.20 ethernet UP be:40:fd:0e:8d:c6
└ veth0a ethernet UP be:40:fd:0e:8d:c6
veth0b veth UP 86:e0:fb:54:94:e8
vxlan-v4 vxlan UP f6:56:cb:3e:55:0f
gretap-v4 gretap UP f6:d4:96:d8:9f:96
gretap-v6 gretap UP 7a:46:13:bd:fa:e6
veth0a veth UP 6e:d0:98:c4:e7:ef
veth0a.20 ethernet UP 6e:d0:98:c4:e7:ef
└ veth0a ethernet UP 6e:d0:98:c4:e7:ef
veth0b veth UP 36:da:80:06:7f:99
vxlan-v4 vxlan UP 8a:ea:59:32:df:70
ipv4 192.168.30.2/24 (static)
vxlan-v6 vxlan UP fe:aa:b4:8a:33:1b
vxlan-v6 vxlan UP 3e:30:c6:a1:71:64
ipv4 192.168.40.2/24 (static)
@@ -1,6 +1,6 @@
name : br-0
type : bridge
index : 73
index : 9
mtu : 1500
operational status : down
physical address : 00:a0:85:00:03:00
@@ -1,6 +1,6 @@
name : br-D
type : bridge
index : 79
index : 15
mtu : 1500
operational status : up
physical address : 00:a0:85:00:03:00
@@ -1,6 +1,6 @@
name : br-Q
type : bridge
index : 80
index : 16
mtu : 1500
operational status : up
physical address : 00:a0:85:00:03:00
@@ -1,6 +1,6 @@
name : br-Q.40
type : vlan
index : 81
index : 17
mtu : 1500
operational status : up
lower-layer-if : br-Q
@@ -1,6 +1,6 @@
name : br-X
type : bridge
index : 75
index : 11
mtu : 1500
operational status : up
physical address : 00:a0:85:00:03:00
@@ -1,6 +1,6 @@
name : gre-v4
type : gre
index : 83
index : 19
mtu : 1476
operational status : up
ipv4 addresses :
@@ -1,6 +1,6 @@
name : gre-v6
type : gre
index : 84
index : 20
mtu : 1448
operational status : up
ipv4 addresses : 192.168.50.2/16 (static)
@@ -1,9 +1,9 @@
name : gretap-v4
type : gretap
index : 85
index : 21
mtu : 1462
operational status : up
physical address : ba:a0:f5:c1:68:83
physical address : f6:d4:96:d8:9f:96
ipv4 addresses :
ipv6 addresses :
local address : 192.168.20.1
@@ -1,9 +1,9 @@
name : gretap-v6
type : gretap
index : 86
index : 22
mtu : 1434
operational status : up
physical address : 1a:1b:84:dd:ca:2c
physical address : 7a:46:13:bd:fa:e6
ipv4 addresses :
ipv6 addresses :
local address : 2001:db8::1
@@ -1,10 +1,10 @@
name : veth0a
type : veth
index : 77
index : 13
mtu : 1500
operational status : up
physical address : be:40:fd:0e:8d:c6
physical address : 6e:d0:98:c4:e7:ef
ipv4 addresses :
ipv6 addresses :
in-octets : 305
out-octets : 37942
in-octets : 299
out-octets : 17190
@@ -1,9 +1,9 @@
name : veth0a.20
type : vlan
index : 78
index : 14
mtu : 1500
operational status : up
lower-layer-if : veth0a
physical address : be:40:fd:0e:8d:c6
physical address : 6e:d0:98:c4:e7:ef
ipv4 addresses :
ipv6 addresses :
@@ -1,10 +1,10 @@
name : veth0b
type : veth
index : 76
index : 12
mtu : 1500
operational status : up
physical address : 86:e0:fb:54:94:e8
physical address : 36:da:80:06:7f:99
ipv4 addresses :
ipv6 addresses :
in-octets : 37942
out-octets : 305
in-octets : 17190
out-octets : 299
@@ -1,9 +1,9 @@
name : vxlan-v4
type : vxlan
index : 87
index : 23
mtu : 1500
operational status : up
physical address : f6:56:cb:3e:55:0f
physical address : 8a:ea:59:32:df:70
ipv4 addresses : 192.168.30.2/24 (static)
ipv6 addresses :
local address : 192.168.20.100
@@ -1,9 +1,9 @@
name : vxlan-v6
type : vxlan
index : 88
index : 24
mtu : 1500
operational status : up
physical address : fe:aa:b4:8a:33:1b
physical address : 3e:30:c6:a1:71:64
ipv4 addresses : 192.168.40.2/24 (static)
ipv6 addresses :
local address : 2001:db8::100
@@ -9,8 +9,8 @@
"oper-status": "up",
"phys-address": "00:00:00:00:00:00",
"statistics": {
"in-octets": "3016668",
"out-octets": "3016668"
"in-octets": "1738370",
"out-octets": "1738370"
},
"ietf-ip:ipv4": {
"address": [
@@ -40,8 +40,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:01",
"statistics": {
"in-octets": "2776431",
"out-octets": "5420321"
"in-octets": "320955",
"out-octets": "1984258"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -65,8 +65,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:02",
"statistics": {
"in-octets": "700",
"out-octets": "288796"
"in-octets": "70",
"out-octets": "39889"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -90,8 +90,7 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:03",
"statistics": {
"in-octets": "770",
"out-octets": "892021"
"out-octets": "45391"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -110,7 +109,11 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
}
},
{
@@ -122,7 +125,7 @@
"phys-address": "00:a0:85:00:03:04",
"statistics": {
"in-octets": "70",
"out-octets": "275470"
"out-octets": "39570"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -146,8 +149,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:05",
"statistics": {
"in-octets": "182086",
"out-octets": "275083"
"in-octets": "19910",
"out-octets": "39388"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -171,8 +174,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:06",
"statistics": {
"in-octets": "185476",
"out-octets": "275412"
"in-octets": "26909",
"out-octets": "41285"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -196,8 +199,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:07",
"statistics": {
"in-octets": "183112",
"out-octets": "274994"
"in-octets": "23322",
"out-octets": "39536"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -216,7 +219,7 @@
{
"type": "infix-if-type:bridge",
"name": "br-0",
"if-index": 73,
"if-index": 9,
"admin-status": "up",
"oper-status": "down",
"phys-address": "00:a0:85:00:03:00",
@@ -239,7 +242,7 @@
{
"type": "infix-if-type:vlan",
"name": "e2.30",
"if-index": 74,
"if-index": 10,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:02",
@@ -265,13 +268,17 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
}
},
{
"type": "infix-if-type:bridge",
"name": "br-X",
"if-index": 75,
"if-index": 11,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
@@ -294,13 +301,13 @@
{
"type": "infix-if-type:veth",
"name": "veth0b",
"if-index": 76,
"if-index": 12,
"admin-status": "up",
"oper-status": "up",
"phys-address": "86:e0:fb:54:94:e8",
"phys-address": "36:da:80:06:7f:99",
"statistics": {
"in-octets": "37942",
"out-octets": "305"
"in-octets": "17190",
"out-octets": "299"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -322,19 +329,23 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
}
},
{
"type": "infix-if-type:veth",
"name": "veth0a",
"if-index": 77,
"if-index": 13,
"admin-status": "up",
"oper-status": "up",
"phys-address": "be:40:fd:0e:8d:c6",
"phys-address": "6e:d0:98:c4:e7:ef",
"statistics": {
"in-octets": "305",
"out-octets": "37942"
"in-octets": "299",
"out-octets": "17190"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -349,12 +360,12 @@
{
"type": "infix-if-type:vlan",
"name": "veth0a.20",
"if-index": 78,
"if-index": 14,
"admin-status": "up",
"oper-status": "up",
"phys-address": "be:40:fd:0e:8d:c6",
"phys-address": "6e:d0:98:c4:e7:ef",
"statistics": {
"out-octets": "37682"
"out-octets": "16936"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -378,18 +389,22 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
}
},
{
"type": "infix-if-type:bridge",
"name": "br-D",
"if-index": 79,
"if-index": 15,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"statistics": {
"out-octets": "37682"
"out-octets": "16936"
},
"ietf-ip:ipv4": {
"mtu": 1500,
@@ -434,12 +449,12 @@
{
"type": "infix-if-type:bridge",
"name": "br-Q",
"if-index": 80,
"if-index": 16,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"statistics": {
"in-octets": "33728"
"in-octets": "13940"
},
"ietf-ip:ipv4": {
"mtu": 1500
@@ -508,7 +523,7 @@
{
"type": "infix-if-type:vlan",
"name": "br-Q.40",
"if-index": 81,
"if-index": 17,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
@@ -527,7 +542,7 @@
{
"type": "infix-if-type:vlan",
"name": "e3.10",
"if-index": 82,
"if-index": 18,
"admin-status": "up",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:03",
@@ -546,7 +561,7 @@
{
"type": "infix-if-type:gre",
"name": "gre-v4",
"if-index": 83,
"if-index": 19,
"admin-status": "up",
"oper-status": "up",
"ietf-ip:ipv4": {
@@ -563,7 +578,7 @@
{
"type": "infix-if-type:gre",
"name": "gre-v6",
"if-index": 84,
"if-index": 20,
"admin-status": "up",
"oper-status": "up",
"ietf-ip:ipv4": {
@@ -587,12 +602,12 @@
{
"type": "infix-if-type:gretap",
"name": "gretap-v4",
"if-index": 85,
"if-index": 21,
"admin-status": "up",
"oper-status": "up",
"phys-address": "ba:a0:f5:c1:68:83",
"phys-address": "f6:d4:96:d8:9f:96",
"statistics": {
"out-octets": "249"
"out-octets": "243"
},
"ietf-ip:ipv4": {
"mtu": 1462
@@ -608,12 +623,12 @@
{
"type": "infix-if-type:gretap",
"name": "gretap-v6",
"if-index": 86,
"if-index": 22,
"admin-status": "up",
"oper-status": "up",
"phys-address": "1a:1b:84:dd:ca:2c",
"phys-address": "7a:46:13:bd:fa:e6",
"statistics": {
"out-octets": "205"
"out-octets": "199"
},
"ietf-ip:ipv4": {
"mtu": 1434
@@ -629,10 +644,10 @@
{
"type": "infix-if-type:vxlan",
"name": "vxlan-v4",
"if-index": 87,
"if-index": 23,
"admin-status": "up",
"oper-status": "up",
"phys-address": "f6:56:cb:3e:55:0f",
"phys-address": "8a:ea:59:32:df:70",
"ietf-ip:ipv4": {
"mtu": 1500,
"address": [
@@ -655,12 +670,12 @@
{
"type": "infix-if-type:vxlan",
"name": "vxlan-v6",
"if-index": 88,
"if-index": 24,
"admin-status": "up",
"oper-status": "up",
"phys-address": "fe:aa:b4:8a:33:1b",
"phys-address": "3e:30:c6:a1:71:64",
"statistics": {
"out-octets": "18219"
"out-octets": "7690"
},
"ietf-ip:ipv4": {
"mtu": 1500,
+67 -52
View File
@@ -27,8 +27,8 @@
"oper-status": "up",
"phys-address": "00:00:00:00:00:00",
"statistics": {
"in-octets": "3016668",
"out-octets": "3016668"
"in-octets": "1738370",
"out-octets": "1738370"
},
"type": "infix-if-type:loopback"
},
@@ -52,8 +52,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:01",
"statistics": {
"in-octets": "2776431",
"out-octets": "5420321"
"in-octets": "320955",
"out-octets": "1984258"
},
"type": "infix-if-type:etherlike"
},
@@ -77,8 +77,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:02",
"statistics": {
"in-octets": "700",
"out-octets": "288796"
"in-octets": "70",
"out-octets": "39889"
},
"type": "infix-if-type:etherlike"
},
@@ -102,14 +102,17 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
},
"name": "e3",
"oper-status": "up",
"phys-address": "00:a0:85:00:03:03",
"statistics": {
"in-octets": "770",
"out-octets": "892021"
"out-octets": "45391"
},
"type": "infix-if-type:etherlike"
},
@@ -134,7 +137,7 @@
"phys-address": "00:a0:85:00:03:04",
"statistics": {
"in-octets": "70",
"out-octets": "275470"
"out-octets": "39570"
},
"type": "infix-if-type:etherlike"
},
@@ -158,8 +161,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:05",
"statistics": {
"in-octets": "182086",
"out-octets": "275083"
"in-octets": "19910",
"out-octets": "39388"
},
"type": "infix-if-type:etherlike"
},
@@ -183,8 +186,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:06",
"statistics": {
"in-octets": "185476",
"out-octets": "275412"
"in-octets": "26909",
"out-octets": "41285"
},
"type": "infix-if-type:etherlike"
},
@@ -208,8 +211,8 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:07",
"statistics": {
"in-octets": "183112",
"out-octets": "274994"
"in-octets": "23322",
"out-octets": "39536"
},
"type": "infix-if-type:etherlike"
},
@@ -221,7 +224,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 73,
"if-index": 9,
"infix-interfaces:bridge": {
"multicast": {
"querier": "off",
@@ -244,7 +247,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 74,
"if-index": 10,
"infix-interfaces:bridge-port": {
"bridge": "br-X",
"flood": {
@@ -256,7 +259,11 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
},
"infix-interfaces:vlan": {
"id": 30,
@@ -276,7 +283,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 75,
"if-index": 11,
"infix-interfaces:bridge": {
"multicast": {
"querier": "off",
@@ -299,7 +306,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 76,
"if-index": 12,
"infix-interfaces:bridge-port": {
"bridge": "br-Q",
"flood": {
@@ -311,17 +318,21 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
},
"infix-interfaces:veth": {
"peer": "veth0a"
},
"name": "veth0b",
"oper-status": "up",
"phys-address": "86:e0:fb:54:94:e8",
"phys-address": "36:da:80:06:7f:99",
"statistics": {
"in-octets": "37942",
"out-octets": "305"
"in-octets": "17190",
"out-octets": "299"
},
"type": "infix-if-type:veth"
},
@@ -333,16 +344,16 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 77,
"if-index": 13,
"infix-interfaces:veth": {
"peer": "veth0b"
},
"name": "veth0a",
"oper-status": "up",
"phys-address": "be:40:fd:0e:8d:c6",
"phys-address": "6e:d0:98:c4:e7:ef",
"statistics": {
"in-octets": "305",
"out-octets": "37942"
"in-octets": "299",
"out-octets": "17190"
},
"type": "infix-if-type:veth"
},
@@ -354,7 +365,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 78,
"if-index": 14,
"infix-interfaces:bridge-port": {
"bridge": "br-D",
"flood": {
@@ -366,7 +377,11 @@
"fast-leave": false,
"router": "auto"
},
"stp-state": "forwarding"
"stp": {
"cist": {
"state": "forwarding"
}
}
},
"infix-interfaces:vlan": {
"id": 20,
@@ -375,9 +390,9 @@
},
"name": "veth0a.20",
"oper-status": "up",
"phys-address": "be:40:fd:0e:8d:c6",
"phys-address": "6e:d0:98:c4:e7:ef",
"statistics": {
"out-octets": "37682"
"out-octets": "16936"
},
"type": "infix-if-type:vlan"
},
@@ -413,7 +428,7 @@
],
"mtu": 1500
},
"if-index": 79,
"if-index": 15,
"infix-interfaces:bridge": {
"multicast": {
"querier": "off",
@@ -427,7 +442,7 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"statistics": {
"out-octets": "37682"
"out-octets": "16936"
},
"type": "infix-if-type:bridge"
},
@@ -439,7 +454,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 80,
"if-index": 16,
"infix-interfaces:bridge": {
"vlans": {
"proto": "ieee802-dot1q-types:c-vlan",
@@ -501,7 +516,7 @@
"oper-status": "up",
"phys-address": "00:a0:85:00:03:00",
"statistics": {
"in-octets": "33728"
"in-octets": "13940"
},
"type": "infix-if-type:bridge"
},
@@ -513,7 +528,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 81,
"if-index": 17,
"infix-interfaces:vlan": {
"id": 40,
"lower-layer-if": "br-Q",
@@ -532,7 +547,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 82,
"if-index": 18,
"infix-interfaces:vlan": {
"id": 10,
"lower-layer-if": "e3",
@@ -551,7 +566,7 @@
"ietf-ip:ipv6": {
"mtu": 1476
},
"if-index": 83,
"if-index": 19,
"infix-interfaces:gre": {
"local": "192.168.20.1",
"remote": "192.168.20.2"
@@ -575,7 +590,7 @@
"ietf-ip:ipv6": {
"mtu": 1448
},
"if-index": 84,
"if-index": 20,
"infix-interfaces:gre": {
"local": "2001:db8::1",
"remote": "2001:db8::2"
@@ -592,16 +607,16 @@
"ietf-ip:ipv6": {
"mtu": 1462
},
"if-index": 85,
"if-index": 21,
"infix-interfaces:gre": {
"local": "192.168.20.1",
"remote": "192.168.20.2"
},
"name": "gretap-v4",
"oper-status": "up",
"phys-address": "ba:a0:f5:c1:68:83",
"phys-address": "f6:d4:96:d8:9f:96",
"statistics": {
"out-octets": "249"
"out-octets": "243"
},
"type": "infix-if-type:gretap"
},
@@ -613,16 +628,16 @@
"ietf-ip:ipv6": {
"mtu": 1434
},
"if-index": 86,
"if-index": 22,
"infix-interfaces:gre": {
"local": "2001:db8::1",
"remote": "2001:db8::2"
},
"name": "gretap-v6",
"oper-status": "up",
"phys-address": "1a:1b:84:dd:ca:2c",
"phys-address": "7a:46:13:bd:fa:e6",
"statistics": {
"out-octets": "205"
"out-octets": "199"
},
"type": "infix-if-type:gretap"
},
@@ -641,7 +656,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 87,
"if-index": 23,
"infix-interfaces:vxlan": {
"local": "192.168.20.100",
"remote": "192.168.20.200",
@@ -649,7 +664,7 @@
},
"name": "vxlan-v4",
"oper-status": "up",
"phys-address": "f6:56:cb:3e:55:0f",
"phys-address": "8a:ea:59:32:df:70",
"type": "infix-if-type:vxlan"
},
{
@@ -667,7 +682,7 @@
"ietf-ip:ipv6": {
"mtu": 1500
},
"if-index": 88,
"if-index": 24,
"infix-interfaces:vxlan": {
"local": "2001:db8::100",
"remote": "2001:db8::200",
@@ -675,9 +690,9 @@
},
"name": "vxlan-v6",
"oper-status": "up",
"phys-address": "fe:aa:b4:8a:33:1b",
"phys-address": "3e:30:c6:a1:71:64",
"statistics": {
"out-octets": "18219"
"out-octets": "7690"
},
"type": "infix-if-type:vxlan"
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long