From e2fed7c9dedf40451873461d56dc37ef74186547 Mon Sep 17 00:00:00 2001 From: Richard Alpe Date: Tue, 1 Oct 2024 13:20:39 +0200 Subject: [PATCH 1/3] yanger: redesign ip interface data collection Run ip link and ip addr once and handle the interface selection in Yanger. This should be faster on systems with many ports and it simplifies the CLI test files. Signed-off-by: Richard Alpe --- src/statd/python/yanger/yanger.py | 68 ++- .../system-output/ip-addr-show-dev-br0.json | 101 --- .../system-output/ip-addr-show-dev-br1.json | 100 --- .../system-output/ip-addr-show-dev-e0.json | 91 --- .../system-output/ip-addr-show-dev-e1.json | 91 --- .../system-output/ip-addr-show-dev-e2.json | 100 --- .../system-output/ip-addr-show-dev-e3.json | 53 -- .../system-output/ip-addr-show-dev-e4.json | 53 -- test/case/cli/system-output/ip-addr-show.json | 577 ++++++++++++++++++ .../system-output/ip-link-show-dev-br0.json | 101 --- .../system-output/ip-link-show-dev-br1.json | 101 --- .../system-output/ip-link-show-dev-e0.json | 91 --- .../system-output/ip-link-show-dev-e1.json | 91 --- .../system-output/ip-link-show-dev-e2.json | 91 --- .../system-output/ip-link-show-dev-e3.json | 53 -- .../system-output/ip-link-show-dev-e4.json | 53 -- test/case/cli/system-output/ip-link-show.json | 569 +++++++++++++++++ 17 files changed, 1184 insertions(+), 1200 deletions(-) delete mode 100644 test/case/cli/system-output/ip-addr-show-dev-br0.json delete mode 100644 test/case/cli/system-output/ip-addr-show-dev-br1.json delete mode 100644 test/case/cli/system-output/ip-addr-show-dev-e0.json delete mode 100644 test/case/cli/system-output/ip-addr-show-dev-e1.json delete mode 100644 test/case/cli/system-output/ip-addr-show-dev-e2.json delete mode 100644 test/case/cli/system-output/ip-addr-show-dev-e3.json delete mode 100644 test/case/cli/system-output/ip-addr-show-dev-e4.json create mode 100644 test/case/cli/system-output/ip-addr-show.json delete mode 100644 test/case/cli/system-output/ip-link-show-dev-br0.json delete mode 100644 test/case/cli/system-output/ip-link-show-dev-br1.json delete mode 100644 test/case/cli/system-output/ip-link-show-dev-e0.json delete mode 100644 test/case/cli/system-output/ip-link-show-dev-e1.json delete mode 100644 test/case/cli/system-output/ip-link-show-dev-e2.json delete mode 100644 test/case/cli/system-output/ip-link-show-dev-e3.json delete mode 100644 test/case/cli/system-output/ip-link-show-dev-e4.json create mode 100644 test/case/cli/system-output/ip-link-show.json diff --git a/src/statd/python/yanger/yanger.py b/src/statd/python/yanger/yanger.py index b2a3c332..cc7d1217 100755 --- a/src/statd/python/yanger/yanger.py +++ b/src/statd/python/yanger/yanger.py @@ -588,16 +588,22 @@ def get_brport_multicast(ifname): return multicast -def add_ip_link(ifname, iface_out): +# We always get all interfaces for two reasons. +# 1) To increase speed on large iron with many ports. +# 2) To simplify testing (single dummy file ip-link-show.json). +def get_ip_link(): """Fetch interface link information from kernel""" - data = run_json_cmd(['ip', '-s', '-d', '-j', 'link', 'show', 'dev', ifname], - f"ip-link-show-dev-{ifname}.json") - if len(data) != 1: - logger.error("expected ip link output to be array with length 1") - sys.exit(1) + return run_json_cmd(['ip', '-s', '-d', '-j', 'link', 'show'], + f"ip-link-show.json") - iface_in = data[0] +def get_ip_addr(): + """Fetch interface address information from kernel""" + return run_json_cmd(['ip', '-j', 'addr', 'show'], + f"ip-addr-show.json") + + +def add_ip_link(ifname, iface_in, iface_out): if 'ifname' in iface_in: iface_out['name'] = iface_in['ifname'] @@ -648,17 +654,7 @@ def add_ip_link(ifname, iface_out): insert(iface_out, "statistics", "in-octets", str(val)) -def add_ip_addr(ifname, iface_out): - """Fetch interface address information from kernel""" - - data = run_json_cmd(['ip', '-j', 'addr', 'show', 'dev', ifname], - f"ip-addr-show-dev-{ifname}.json") - if len(data) != 1: - logger.error("expected ip addr output to be array with length 1") - sys.exit(1) - - iface_in = data[0] - +def add_ip_addr(ifname, iface_in, iface_out): if 'mtu' in iface_in and ifname != "lo": insert(iface_out, "ietf-ip:ipv4", "mtu", iface_in['mtu']) @@ -877,11 +873,11 @@ def add_vlans_to_bridge(brname, iface_out, mc_status): insert(iface_out, "infix-interfaces:bridge", "vlans", "vlan", vlans) -def get_iface_data(ifname): +def get_iface_data(ifname, ip_link_data, ip_addr_data): iface_out = {} - add_ip_link(ifname, iface_out) - add_ip_addr(ifname, iface_out) + add_ip_link(ifname, ip_link_data, iface_out) + add_ip_addr(ifname, ip_addr_data, iface_out) if 'type' in iface_out and iface_out['type'] == "infix-if-type:ethernet": add_ethtool_groups(ifname, iface_out) @@ -898,6 +894,26 @@ def get_iface_data(ifname): return iface_out +def _add_interface(ifname, ip_link_data, ip_addr_data, yang_ifaces): + # We expect both ip addr and link data to exist. + if not ip_link_data or not ip_addr_data: + return + + yang_ifaces.append(get_iface_data(ifname, ip_link_data, ip_addr_data)) + +def add_interface(ifname, yang_ifaces): + ip_link_data = get_ip_link() + ip_addr_data = get_ip_addr() + + if ifname: + ip_link_data = next((d for d in ip_link_data if d.get('ifname') == ifname), None) + ip_addr_data = next((d for d in ip_addr_data if d.get('ifname') == ifname), None) + _add_interface(ifname, ip_link_data, ip_addr_data, yang_ifaces) + else: + for link in ip_link_data: + addr = next((d for d in ip_addr_data if d.get('ifname') == link["ifname"]), None) + _add_interface(link["ifname"], link, addr, yang_ifaces) + def main(): global TESTPATH global logger @@ -932,15 +948,7 @@ def main(): "interface": [] } } - - if args.param: - iface_data = get_iface_data(args.param) - yang_data['ietf-interfaces:interfaces']['interface'].append(iface_data) - else: - ifnames = os.listdir('/sys/class/net/') - for ifname in ifnames: - iface_data = get_iface_data(ifname) - yang_data['ietf-interfaces:interfaces']['interface'].append(iface_data) + add_interface(args.param, yang_data['ietf-interfaces:interfaces']['interface']) elif args.model == 'ietf-routing': yang_data = { diff --git a/test/case/cli/system-output/ip-addr-show-dev-br0.json b/test/case/cli/system-output/ip-addr-show-dev-br0.json deleted file mode 100644 index 665b50f3..00000000 --- a/test/case/cli/system-output/ip-addr-show-dev-br0.json +++ /dev/null @@ -1,101 +0,0 @@ -[ - { - "ifindex": 7, - "ifname": "br0", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "noqueue", - "operstate": "UP", - "linkmode": "DEFAULT", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:00", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 0, - "allmulti": 0, - "min_mtu": 68, - "max_mtu": 65535, - "linkinfo": { - "info_kind": "bridge", - "info_data": { - "forward_delay": 1500, - "hello_time": 200, - "max_age": 2000, - "ageing_time": 30000, - "stp_state": 0, - "priority": 32768, - "vlan_filtering": 1, - "vlan_protocol": "802.1Q", - "bridge_id": "8000.2:0:0:0:0:0", - "root_id": "8000.2:0:0:0:0:0", - "root_port": 0, - "root_path_cost": 0, - "topology_change": 0, - "topology_change_detected": 0, - "hello_timer": 0, - "tcn_timer": 0, - "topology_change_timer": 0, - "gc_timer": 63.88, - "vlan_default_pvid": 0, - "vlan_stats_enabled": 0, - "vlan_stats_per_port": 0, - "group_fwd_mask": "0", - "group_addr": "01:80:c2:00:00:00", - "mcast_snooping": 0, - "no_linklocal_learn": 0, - "mcast_vlan_snooping": 0, - "mcast_router": 1, - "mcast_query_use_ifaddr": 0, - "mcast_querier": 0, - "mcast_hash_elasticity": 16, - "mcast_hash_max": 4096, - "mcast_last_member_cnt": 2, - "mcast_startup_query_cnt": 2, - "mcast_last_member_intvl": 100, - "mcast_membership_intvl": 26000, - "mcast_querier_intvl": 25500, - "mcast_query_intvl": 12500, - "mcast_query_response_intvl": 1000, - "mcast_startup_query_intvl": 3124, - "mcast_stats_enabled": 0, - "mcast_igmp_version": 2, - "mcast_mld_version": 1, - "nf_call_iptables": 0, - "nf_call_ip6tables": 0, - "nf_call_arptables": 0 - } - }, - "inet6_addr_gen_mode": "none", - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "stats64": { - "rx": { - "bytes": 3158, - "packets": 42, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 37 - }, - "tx": { - "bytes": 0, - "packets": 0, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-addr-show-dev-br1.json b/test/case/cli/system-output/ip-addr-show-dev-br1.json deleted file mode 100644 index 4091eb31..00000000 --- a/test/case/cli/system-output/ip-addr-show-dev-br1.json +++ /dev/null @@ -1,100 +0,0 @@ -[ - { - "ifindex": 8, - "ifname": "br1", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "noqueue", - "operstate": "UP", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:02", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 0, - "allmulti": 0, - "min_mtu": 68, - "max_mtu": 65535, - "linkinfo": { - "info_kind": "bridge", - "info_data": { - "forward_delay": 1500, - "hello_time": 200, - "max_age": 2000, - "ageing_time": 30000, - "stp_state": 0, - "priority": 32768, - "vlan_filtering": 1, - "vlan_protocol": "802.1Q", - "bridge_id": "8000.2:0:0:0:0:2", - "root_id": "8000.2:0:0:0:0:2", - "root_port": 0, - "root_path_cost": 0, - "topology_change": 0, - "topology_change_detected": 0, - "hello_timer": 0.00, - "tcn_timer": 0.00, - "topology_change_timer": 0.00, - "gc_timer": 0.00, - "vlan_default_pvid": 0, - "vlan_stats_enabled": 0, - "vlan_stats_per_port": 0, - "group_fwd_mask": "0", - "group_addr": "01:80:c2:00:00:00", - "mcast_snooping": 0, - "no_linklocal_learn": 0, - "mcast_vlan_snooping": 0, - "mcast_router": 1, - "mcast_query_use_ifaddr": 0, - "mcast_querier": 0, - "mcast_hash_elasticity": 16, - "mcast_hash_max": 4096, - "mcast_last_member_cnt": 2, - "mcast_startup_query_cnt": 2, - "mcast_last_member_intvl": 100, - "mcast_membership_intvl": 26000, - "mcast_querier_intvl": 25500, - "mcast_query_intvl": 12500, - "mcast_query_response_intvl": 1000, - "mcast_startup_query_intvl": 3124, - "mcast_stats_enabled": 0, - "mcast_igmp_version": 2, - "mcast_mld_version": 1, - "nf_call_iptables": 0, - "nf_call_ip6tables": 0, - "nf_call_arptables": 0 - } - }, - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "addr_info": [], - "stats64": { - "rx": { - "bytes": 0, - "packets": 0, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 0 - }, - "tx": { - "bytes": 0, - "packets": 0, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-addr-show-dev-e0.json b/test/case/cli/system-output/ip-addr-show-dev-e0.json deleted file mode 100644 index ce4bda9c..00000000 --- a/test/case/cli/system-output/ip-addr-show-dev-e0.json +++ /dev/null @@ -1,91 +0,0 @@ -[ - { - "ifindex": 2, - "ifname": "e0", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "pfifo_fast", - "master": "br0", - "operstate": "UP", - "linkmode": "DEFAULT", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:00", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 1, - "allmulti": 1, - "min_mtu": 68, - "max_mtu": 65535, - "linkinfo": { - "info_slave_kind": "bridge", - "info_slave_data": { - "state": "forwarding", - "priority": 32, - "cost": 100, - "hairpin": false, - "guard": false, - "root_block": false, - "fastleave": false, - "learning": true, - "flood": true, - "id": "0x8001", - "no": "0x1", - "designated_port": 32769, - "designated_cost": 0, - "bridge_id": "8000.2:0:0:0:0:0", - "root_id": "8000.2:0:0:0:0:0", - "hold_timer": 0, - "message_age_timer": 0, - "forward_delay_timer": 0, - "topology_change_ack": 0, - "config_pending": 0, - "proxy_arp": false, - "proxy_arp_wifi": false, - "multicast_router": 1, - "mcast_flood": true, - "bcast_flood": true, - "mcast_to_unicast": false, - "neigh_suppress": false, - "group_fwd_mask": "0", - "group_fwd_mask_str": "0x0", - "vlan_tunnel": false, - "isolated": false, - "locked": false - } - }, - "inet6_addr_gen_mode": "eui64", - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "parentbus": "virtio", - "parentdev": "virtio2", - "stats64": { - "rx": { - "bytes": 6795, - "packets": 62, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 0 - }, - "tx": { - "bytes": 22830, - "packets": 114, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-addr-show-dev-e1.json b/test/case/cli/system-output/ip-addr-show-dev-e1.json deleted file mode 100644 index a5bc3ab5..00000000 --- a/test/case/cli/system-output/ip-addr-show-dev-e1.json +++ /dev/null @@ -1,91 +0,0 @@ -[ - { - "ifindex": 3, - "ifname": "e1", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "pfifo_fast", - "master": "br0", - "operstate": "UP", - "linkmode": "DEFAULT", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:01", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 1, - "allmulti": 1, - "min_mtu": 68, - "max_mtu": 65535, - "linkinfo": { - "info_slave_kind": "bridge", - "info_slave_data": { - "state": "forwarding", - "priority": 32, - "cost": 100, - "hairpin": false, - "guard": false, - "root_block": false, - "fastleave": false, - "learning": true, - "flood": true, - "id": "0x8002", - "no": "0x2", - "designated_port": 32770, - "designated_cost": 0, - "bridge_id": "8000.2:0:0:0:0:0", - "root_id": "8000.2:0:0:0:0:0", - "hold_timer": 0, - "message_age_timer": 0, - "forward_delay_timer": 0, - "topology_change_ack": 0, - "config_pending": 0, - "proxy_arp": false, - "proxy_arp_wifi": false, - "multicast_router": 1, - "mcast_flood": true, - "bcast_flood": true, - "mcast_to_unicast": false, - "neigh_suppress": false, - "group_fwd_mask": "0", - "group_fwd_mask_str": "0x0", - "vlan_tunnel": false, - "isolated": false, - "locked": false - } - }, - "inet6_addr_gen_mode": "eui64", - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "parentbus": "virtio", - "parentdev": "virtio3", - "stats64": { - "rx": { - "bytes": 1397, - "packets": 11, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 0 - }, - "tx": { - "bytes": 23781, - "packets": 126, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-addr-show-dev-e2.json b/test/case/cli/system-output/ip-addr-show-dev-e2.json deleted file mode 100644 index e5ecc225..00000000 --- a/test/case/cli/system-output/ip-addr-show-dev-e2.json +++ /dev/null @@ -1,100 +0,0 @@ -[ - { - "ifindex": 4, - "ifname": "e2", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "pfifo_fast", - "master": "br1", - "operstate": "UP", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:02", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 0, - "allmulti": 1, - "min_mtu": 68, - "max_mtu": 65535, - "linkinfo": { - "info_slave_kind": "bridge", - "info_slave_data": { - "state": "forwarding", - "priority": 32, - "cost": 100, - "hairpin": false, - "guard": false, - "root_block": false, - "fastleave": false, - "learning": true, - "flood": true, - "id": "0x8001", - "no": "0x1", - "designated_port": 32769, - "designated_cost": 0, - "bridge_id": "8000.2:0:0:0:0:2", - "root_id": "8000.2:0:0:0:0:2", - "hold_timer": 0.00, - "message_age_timer": 0.00, - "forward_delay_timer": 0.00, - "topology_change_ack": 0, - "config_pending": 0, - "proxy_arp": false, - "proxy_arp_wifi": false, - "multicast_router": 1, - "mcast_flood": true, - "bcast_flood": true, - "mcast_to_unicast": false, - "neigh_suppress": false, - "group_fwd_mask": "0", - "group_fwd_mask_str": "0x0", - "vlan_tunnel": false, - "isolated": false, - "locked": false - } - }, - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "parentbus": "virtio", - "parentdev": "virtio4", - "addr_info": [ - { - "family": "inet6", - "local": "fe80::ff:fe00:2", - "prefixlen": 64, - "scope": "link", - "protocol": "kernel_ll", - "valid_life_time": 4294967295, - "preferred_life_time": 4294967295 - } - ], - "stats64": { - "rx": { - "bytes": 0, - "packets": 0, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 0 - }, - "tx": { - "bytes": 19676, - "packets": 83, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-addr-show-dev-e3.json b/test/case/cli/system-output/ip-addr-show-dev-e3.json deleted file mode 100644 index 4c09aeb0..00000000 --- a/test/case/cli/system-output/ip-addr-show-dev-e3.json +++ /dev/null @@ -1,53 +0,0 @@ -[ - { - "ifindex": 5, - "ifname": "e3", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "pfifo_fast", - "operstate": "UP", - "linkmode": "DEFAULT", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:03", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 0, - "allmulti": 0, - "min_mtu": 68, - "max_mtu": 65535, - "inet6_addr_gen_mode": "eui64", - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "parentbus": "virtio", - "parentdev": "virtio5", - "stats64": { - "rx": { - "bytes": 1327, - "packets": 10, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 0 - }, - "tx": { - "bytes": 13837, - "packets": 67, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-addr-show-dev-e4.json b/test/case/cli/system-output/ip-addr-show-dev-e4.json deleted file mode 100644 index d47ff78c..00000000 --- a/test/case/cli/system-output/ip-addr-show-dev-e4.json +++ /dev/null @@ -1,53 +0,0 @@ -[ - { - "ifindex": 6, - "ifname": "e4", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "pfifo_fast", - "operstate": "DOWN", - "linkmode": "DEFAULT", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:04", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 0, - "allmulti": 0, - "min_mtu": 68, - "max_mtu": 65535, - "inet6_addr_gen_mode": "eui64", - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "parentbus": "virtio", - "parentdev": "virtio6", - "stats64": { - "rx": { - "bytes": 1327, - "packets": 10, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 0 - }, - "tx": { - "bytes": 18046, - "packets": 91, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-addr-show.json b/test/case/cli/system-output/ip-addr-show.json new file mode 100644 index 00000000..5ff305f0 --- /dev/null +++ b/test/case/cli/system-output/ip-addr-show.json @@ -0,0 +1,577 @@ +[ + { + "ifindex": 7, + "ifname": "br0", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "noqueue", + "operstate": "UP", + "linkmode": "DEFAULT", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:00", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 0, + "allmulti": 0, + "min_mtu": 68, + "max_mtu": 65535, + "linkinfo": { + "info_kind": "bridge", + "info_data": { + "forward_delay": 1500, + "hello_time": 200, + "max_age": 2000, + "ageing_time": 30000, + "stp_state": 0, + "priority": 32768, + "vlan_filtering": 1, + "vlan_protocol": "802.1Q", + "bridge_id": "8000.2:0:0:0:0:0", + "root_id": "8000.2:0:0:0:0:0", + "root_port": 0, + "root_path_cost": 0, + "topology_change": 0, + "topology_change_detected": 0, + "hello_timer": 0, + "tcn_timer": 0, + "topology_change_timer": 0, + "gc_timer": 63.88, + "vlan_default_pvid": 0, + "vlan_stats_enabled": 0, + "vlan_stats_per_port": 0, + "group_fwd_mask": "0", + "group_addr": "01:80:c2:00:00:00", + "mcast_snooping": 0, + "no_linklocal_learn": 0, + "mcast_vlan_snooping": 0, + "mcast_router": 1, + "mcast_query_use_ifaddr": 0, + "mcast_querier": 0, + "mcast_hash_elasticity": 16, + "mcast_hash_max": 4096, + "mcast_last_member_cnt": 2, + "mcast_startup_query_cnt": 2, + "mcast_last_member_intvl": 100, + "mcast_membership_intvl": 26000, + "mcast_querier_intvl": 25500, + "mcast_query_intvl": 12500, + "mcast_query_response_intvl": 1000, + "mcast_startup_query_intvl": 3124, + "mcast_stats_enabled": 0, + "mcast_igmp_version": 2, + "mcast_mld_version": 1, + "nf_call_iptables": 0, + "nf_call_ip6tables": 0, + "nf_call_arptables": 0 + } + }, + "inet6_addr_gen_mode": "none", + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "stats64": { + "rx": { + "bytes": 3158, + "packets": 42, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 37 + }, + "tx": { + "bytes": 0, + "packets": 0, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, + { + "ifindex": 8, + "ifname": "br1", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "noqueue", + "operstate": "UP", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:02", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 0, + "allmulti": 0, + "min_mtu": 68, + "max_mtu": 65535, + "linkinfo": { + "info_kind": "bridge", + "info_data": { + "forward_delay": 1500, + "hello_time": 200, + "max_age": 2000, + "ageing_time": 30000, + "stp_state": 0, + "priority": 32768, + "vlan_filtering": 1, + "vlan_protocol": "802.1Q", + "bridge_id": "8000.2:0:0:0:0:2", + "root_id": "8000.2:0:0:0:0:2", + "root_port": 0, + "root_path_cost": 0, + "topology_change": 0, + "topology_change_detected": 0, + "hello_timer": 0.00, + "tcn_timer": 0.00, + "topology_change_timer": 0.00, + "gc_timer": 0.00, + "vlan_default_pvid": 0, + "vlan_stats_enabled": 0, + "vlan_stats_per_port": 0, + "group_fwd_mask": "0", + "group_addr": "01:80:c2:00:00:00", + "mcast_snooping": 0, + "no_linklocal_learn": 0, + "mcast_vlan_snooping": 0, + "mcast_router": 1, + "mcast_query_use_ifaddr": 0, + "mcast_querier": 0, + "mcast_hash_elasticity": 16, + "mcast_hash_max": 4096, + "mcast_last_member_cnt": 2, + "mcast_startup_query_cnt": 2, + "mcast_last_member_intvl": 100, + "mcast_membership_intvl": 26000, + "mcast_querier_intvl": 25500, + "mcast_query_intvl": 12500, + "mcast_query_response_intvl": 1000, + "mcast_startup_query_intvl": 3124, + "mcast_stats_enabled": 0, + "mcast_igmp_version": 2, + "mcast_mld_version": 1, + "nf_call_iptables": 0, + "nf_call_ip6tables": 0, + "nf_call_arptables": 0 + } + }, + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "addr_info": [], + "stats64": { + "rx": { + "bytes": 0, + "packets": 0, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 0, + "packets": 0, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, + { + "ifindex": 2, + "ifname": "e0", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "pfifo_fast", + "master": "br0", + "operstate": "UP", + "linkmode": "DEFAULT", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:00", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 1, + "allmulti": 1, + "min_mtu": 68, + "max_mtu": 65535, + "linkinfo": { + "info_slave_kind": "bridge", + "info_slave_data": { + "state": "forwarding", + "priority": 32, + "cost": 100, + "hairpin": false, + "guard": false, + "root_block": false, + "fastleave": false, + "learning": true, + "flood": true, + "id": "0x8001", + "no": "0x1", + "designated_port": 32769, + "designated_cost": 0, + "bridge_id": "8000.2:0:0:0:0:0", + "root_id": "8000.2:0:0:0:0:0", + "hold_timer": 0, + "message_age_timer": 0, + "forward_delay_timer": 0, + "topology_change_ack": 0, + "config_pending": 0, + "proxy_arp": false, + "proxy_arp_wifi": false, + "multicast_router": 1, + "mcast_flood": true, + "bcast_flood": true, + "mcast_to_unicast": false, + "neigh_suppress": false, + "group_fwd_mask": "0", + "group_fwd_mask_str": "0x0", + "vlan_tunnel": false, + "isolated": false, + "locked": false + } + }, + "inet6_addr_gen_mode": "eui64", + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "parentbus": "virtio", + "parentdev": "virtio2", + "stats64": { + "rx": { + "bytes": 6795, + "packets": 62, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 22830, + "packets": 114, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, + { + "ifindex": 3, + "ifname": "e1", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "pfifo_fast", + "master": "br0", + "operstate": "UP", + "linkmode": "DEFAULT", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:01", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 1, + "allmulti": 1, + "min_mtu": 68, + "max_mtu": 65535, + "linkinfo": { + "info_slave_kind": "bridge", + "info_slave_data": { + "state": "forwarding", + "priority": 32, + "cost": 100, + "hairpin": false, + "guard": false, + "root_block": false, + "fastleave": false, + "learning": true, + "flood": true, + "id": "0x8002", + "no": "0x2", + "designated_port": 32770, + "designated_cost": 0, + "bridge_id": "8000.2:0:0:0:0:0", + "root_id": "8000.2:0:0:0:0:0", + "hold_timer": 0, + "message_age_timer": 0, + "forward_delay_timer": 0, + "topology_change_ack": 0, + "config_pending": 0, + "proxy_arp": false, + "proxy_arp_wifi": false, + "multicast_router": 1, + "mcast_flood": true, + "bcast_flood": true, + "mcast_to_unicast": false, + "neigh_suppress": false, + "group_fwd_mask": "0", + "group_fwd_mask_str": "0x0", + "vlan_tunnel": false, + "isolated": false, + "locked": false + } + }, + "inet6_addr_gen_mode": "eui64", + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "parentbus": "virtio", + "parentdev": "virtio3", + "stats64": { + "rx": { + "bytes": 1397, + "packets": 11, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 23781, + "packets": 126, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, + { + "ifindex": 4, + "ifname": "e2", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "pfifo_fast", + "master": "br1", + "operstate": "UP", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:02", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 0, + "allmulti": 1, + "min_mtu": 68, + "max_mtu": 65535, + "linkinfo": { + "info_slave_kind": "bridge", + "info_slave_data": { + "state": "forwarding", + "priority": 32, + "cost": 100, + "hairpin": false, + "guard": false, + "root_block": false, + "fastleave": false, + "learning": true, + "flood": true, + "id": "0x8001", + "no": "0x1", + "designated_port": 32769, + "designated_cost": 0, + "bridge_id": "8000.2:0:0:0:0:2", + "root_id": "8000.2:0:0:0:0:2", + "hold_timer": 0.00, + "message_age_timer": 0.00, + "forward_delay_timer": 0.00, + "topology_change_ack": 0, + "config_pending": 0, + "proxy_arp": false, + "proxy_arp_wifi": false, + "multicast_router": 1, + "mcast_flood": true, + "bcast_flood": true, + "mcast_to_unicast": false, + "neigh_suppress": false, + "group_fwd_mask": "0", + "group_fwd_mask_str": "0x0", + "vlan_tunnel": false, + "isolated": false, + "locked": false + } + }, + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "parentbus": "virtio", + "parentdev": "virtio4", + "addr_info": [ + { + "family": "inet6", + "local": "fe80::ff:fe00:2", + "prefixlen": 64, + "scope": "link", + "protocol": "kernel_ll", + "valid_life_time": 4294967295, + "preferred_life_time": 4294967295 + } + ], + "stats64": { + "rx": { + "bytes": 0, + "packets": 0, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 19676, + "packets": 83, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, + { + "ifindex": 5, + "ifname": "e3", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "pfifo_fast", + "operstate": "UP", + "linkmode": "DEFAULT", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:03", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 0, + "allmulti": 0, + "min_mtu": 68, + "max_mtu": 65535, + "inet6_addr_gen_mode": "eui64", + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "parentbus": "virtio", + "parentdev": "virtio5", + "stats64": { + "rx": { + "bytes": 1327, + "packets": 10, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 13837, + "packets": 67, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, + { + "ifindex": 6, + "ifname": "e4", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "pfifo_fast", + "operstate": "DOWN", + "linkmode": "DEFAULT", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:04", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 0, + "allmulti": 0, + "min_mtu": 68, + "max_mtu": 65535, + "inet6_addr_gen_mode": "eui64", + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "parentbus": "virtio", + "parentdev": "virtio6", + "stats64": { + "rx": { + "bytes": 1327, + "packets": 10, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 18046, + "packets": 91, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + } +] diff --git a/test/case/cli/system-output/ip-link-show-dev-br0.json b/test/case/cli/system-output/ip-link-show-dev-br0.json deleted file mode 100644 index 1b04d324..00000000 --- a/test/case/cli/system-output/ip-link-show-dev-br0.json +++ /dev/null @@ -1,101 +0,0 @@ -[ - { - "ifindex": 7, - "ifname": "br0", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "noqueue", - "operstate": "UP", - "linkmode": "DEFAULT", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:00", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 0, - "allmulti": 0, - "min_mtu": 68, - "max_mtu": 65535, - "linkinfo": { - "info_kind": "bridge", - "info_data": { - "forward_delay": 1500, - "hello_time": 200, - "max_age": 2000, - "ageing_time": 30000, - "stp_state": 0, - "priority": 32768, - "vlan_filtering": 1, - "vlan_protocol": "802.1Q", - "bridge_id": "8000.2:0:0:0:0:0", - "root_id": "8000.2:0:0:0:0:0", - "root_port": 0, - "root_path_cost": 0, - "topology_change": 0, - "topology_change_detected": 0, - "hello_timer": 0, - "tcn_timer": 0, - "topology_change_timer": 0, - "gc_timer": 27.38, - "vlan_default_pvid": 0, - "vlan_stats_enabled": 0, - "vlan_stats_per_port": 0, - "group_fwd_mask": "0", - "group_addr": "01:80:c2:00:00:00", - "mcast_snooping": 0, - "no_linklocal_learn": 0, - "mcast_vlan_snooping": 0, - "mcast_router": 1, - "mcast_query_use_ifaddr": 0, - "mcast_querier": 0, - "mcast_hash_elasticity": 16, - "mcast_hash_max": 4096, - "mcast_last_member_cnt": 2, - "mcast_startup_query_cnt": 2, - "mcast_last_member_intvl": 100, - "mcast_membership_intvl": 26000, - "mcast_querier_intvl": 25500, - "mcast_query_intvl": 12500, - "mcast_query_response_intvl": 1000, - "mcast_startup_query_intvl": 3124, - "mcast_stats_enabled": 0, - "mcast_igmp_version": 2, - "mcast_mld_version": 1, - "nf_call_iptables": 0, - "nf_call_ip6tables": 0, - "nf_call_arptables": 0 - } - }, - "inet6_addr_gen_mode": "none", - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "stats64": { - "rx": { - "bytes": 3158, - "packets": 42, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 37 - }, - "tx": { - "bytes": 0, - "packets": 0, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-link-show-dev-br1.json b/test/case/cli/system-output/ip-link-show-dev-br1.json deleted file mode 100644 index 227ed022..00000000 --- a/test/case/cli/system-output/ip-link-show-dev-br1.json +++ /dev/null @@ -1,101 +0,0 @@ -[ - { - "ifindex": 8, - "ifname": "br1", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "noqueue", - "operstate": "UP", - "linkmode": "DEFAULT", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:02", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 0, - "allmulti": 0, - "min_mtu": 68, - "max_mtu": 65535, - "linkinfo": { - "info_kind": "bridge", - "info_data": { - "forward_delay": 1500, - "hello_time": 200, - "max_age": 2000, - "ageing_time": 30000, - "stp_state": 0, - "priority": 32768, - "vlan_filtering": 1, - "vlan_protocol": "802.1Q", - "bridge_id": "8000.2:0:0:0:0:2", - "root_id": "8000.2:0:0:0:0:2", - "root_port": 0, - "root_path_cost": 0, - "topology_change": 0, - "topology_change_detected": 0, - "hello_timer": 0.00, - "tcn_timer": 0.00, - "topology_change_timer": 0.00, - "gc_timer": 53.73, - "vlan_default_pvid": 0, - "vlan_stats_enabled": 0, - "vlan_stats_per_port": 0, - "group_fwd_mask": "0", - "group_addr": "01:80:c2:00:00:00", - "mcast_snooping": 0, - "no_linklocal_learn": 0, - "mcast_vlan_snooping": 0, - "mcast_router": 1, - "mcast_query_use_ifaddr": 0, - "mcast_querier": 0, - "mcast_hash_elasticity": 16, - "mcast_hash_max": 4096, - "mcast_last_member_cnt": 2, - "mcast_startup_query_cnt": 2, - "mcast_last_member_intvl": 100, - "mcast_membership_intvl": 26000, - "mcast_querier_intvl": 25500, - "mcast_query_intvl": 12500, - "mcast_query_response_intvl": 1000, - "mcast_startup_query_intvl": 3124, - "mcast_stats_enabled": 0, - "mcast_igmp_version": 2, - "mcast_mld_version": 1, - "nf_call_iptables": 0, - "nf_call_ip6tables": 0, - "nf_call_arptables": 0 - } - }, - "inet6_addr_gen_mode": "none", - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "stats64": { - "rx": { - "bytes": 0, - "packets": 0, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 0 - }, - "tx": { - "bytes": 0, - "packets": 0, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-link-show-dev-e0.json b/test/case/cli/system-output/ip-link-show-dev-e0.json deleted file mode 100644 index 49b39b6f..00000000 --- a/test/case/cli/system-output/ip-link-show-dev-e0.json +++ /dev/null @@ -1,91 +0,0 @@ -[ - { - "ifindex": 2, - "ifname": "e0", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "pfifo_fast", - "master": "br0", - "operstate": "UP", - "linkmode": "DEFAULT", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:00", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 1, - "allmulti": 1, - "min_mtu": 68, - "max_mtu": 65535, - "linkinfo": { - "info_slave_kind": "bridge", - "info_slave_data": { - "state": "forwarding", - "priority": 32, - "cost": 100, - "hairpin": false, - "guard": false, - "root_block": false, - "fastleave": false, - "learning": true, - "flood": true, - "id": "0x8001", - "no": "0x1", - "designated_port": 32769, - "designated_cost": 0, - "bridge_id": "8000.2:0:0:0:0:0", - "root_id": "8000.2:0:0:0:0:0", - "hold_timer": 0, - "message_age_timer": 0, - "forward_delay_timer": 0, - "topology_change_ack": 0, - "config_pending": 0, - "proxy_arp": false, - "proxy_arp_wifi": false, - "multicast_router": 1, - "mcast_flood": true, - "bcast_flood": true, - "mcast_to_unicast": false, - "neigh_suppress": false, - "group_fwd_mask": "0", - "group_fwd_mask_str": "0x0", - "vlan_tunnel": false, - "isolated": false, - "locked": false - } - }, - "inet6_addr_gen_mode": "eui64", - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "parentbus": "e1000", - "parentdev": "e1000-foobar", - "stats64": { - "rx": { - "bytes": 6537, - "packets": 59, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 0 - }, - "tx": { - "bytes": 20891, - "packets": 106, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-link-show-dev-e1.json b/test/case/cli/system-output/ip-link-show-dev-e1.json deleted file mode 100644 index 55930658..00000000 --- a/test/case/cli/system-output/ip-link-show-dev-e1.json +++ /dev/null @@ -1,91 +0,0 @@ -[ - { - "ifindex": 3, - "ifname": "e1", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "pfifo_fast", - "master": "br0", - "operstate": "UP", - "linkmode": "DEFAULT", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:01", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 1, - "allmulti": 1, - "min_mtu": 68, - "max_mtu": 65535, - "linkinfo": { - "info_slave_kind": "bridge", - "info_slave_data": { - "state": "forwarding", - "priority": 32, - "cost": 100, - "hairpin": false, - "guard": false, - "root_block": false, - "fastleave": false, - "learning": true, - "flood": true, - "id": "0x8002", - "no": "0x2", - "designated_port": 32770, - "designated_cost": 0, - "bridge_id": "8000.2:0:0:0:0:0", - "root_id": "8000.2:0:0:0:0:0", - "hold_timer": 0, - "message_age_timer": 0, - "forward_delay_timer": 0, - "topology_change_ack": 0, - "config_pending": 0, - "proxy_arp": false, - "proxy_arp_wifi": false, - "multicast_router": 1, - "mcast_flood": true, - "bcast_flood": true, - "mcast_to_unicast": false, - "neigh_suppress": false, - "group_fwd_mask": "0", - "group_fwd_mask_str": "0x0", - "vlan_tunnel": false, - "isolated": false, - "locked": false - } - }, - "inet6_addr_gen_mode": "eui64", - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "parentbus": "e1000", - "parentdev": "e1000-foobar", - "stats64": { - "rx": { - "bytes": 1397, - "packets": 11, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 0 - }, - "tx": { - "bytes": 24849, - "packets": 130, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-link-show-dev-e2.json b/test/case/cli/system-output/ip-link-show-dev-e2.json deleted file mode 100644 index 2baa6af9..00000000 --- a/test/case/cli/system-output/ip-link-show-dev-e2.json +++ /dev/null @@ -1,91 +0,0 @@ -[ - { - "ifindex": 4, - "ifname": "e2", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "pfifo_fast", - "master": "br1", - "operstate": "UP", - "linkmode": "DEFAULT", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:02", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 0, - "allmulti": 1, - "min_mtu": 68, - "max_mtu": 65535, - "linkinfo": { - "info_slave_kind": "bridge", - "info_slave_data": { - "state": "forwarding", - "priority": 32, - "cost": 100, - "hairpin": false, - "guard": false, - "root_block": false, - "fastleave": false, - "learning": true, - "flood": true, - "id": "0x8001", - "no": "0x1", - "designated_port": 32769, - "designated_cost": 0, - "bridge_id": "8000.2:0:0:0:0:2", - "root_id": "8000.2:0:0:0:0:2", - "hold_timer": 0.00, - "message_age_timer": 0.00, - "forward_delay_timer": 0.00, - "topology_change_ack": 0, - "config_pending": 0, - "proxy_arp": false, - "proxy_arp_wifi": false, - "multicast_router": 1, - "mcast_flood": true, - "bcast_flood": true, - "mcast_to_unicast": false, - "neigh_suppress": false, - "group_fwd_mask": "0", - "group_fwd_mask_str": "0x0", - "vlan_tunnel": false, - "isolated": false, - "locked": false - } - }, - "inet6_addr_gen_mode": "eui64", - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "parentbus": "virtio", - "parentdev": "virtio4", - "stats64": { - "rx": { - "bytes": 0, - "packets": 0, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 0 - }, - "tx": { - "bytes": 19114, - "packets": 81, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-link-show-dev-e3.json b/test/case/cli/system-output/ip-link-show-dev-e3.json deleted file mode 100644 index 4df9b2d7..00000000 --- a/test/case/cli/system-output/ip-link-show-dev-e3.json +++ /dev/null @@ -1,53 +0,0 @@ -[ - { - "ifindex": 5, - "ifname": "e3", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "pfifo_fast", - "operstate": "UP", - "linkmode": "DEFAULT", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:03", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 0, - "allmulti": 0, - "min_mtu": 68, - "max_mtu": 65535, - "inet6_addr_gen_mode": "eui64", - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "parentbus": "virtio", - "parentdev": "virtio5", - "stats64": { - "rx": { - "bytes": 1327, - "packets": 10, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 0 - }, - "tx": { - "bytes": 15057, - "packets": 72, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-link-show-dev-e4.json b/test/case/cli/system-output/ip-link-show-dev-e4.json deleted file mode 100644 index ae9b1d26..00000000 --- a/test/case/cli/system-output/ip-link-show-dev-e4.json +++ /dev/null @@ -1,53 +0,0 @@ -[ - { - "ifindex": 6, - "ifname": "e4", - "flags": [ - "BROADCAST", - "MULTICAST", - "UP", - "LOWER_UP" - ], - "mtu": 1500, - "qdisc": "pfifo_fast", - "operstate": "DOWN", - "linkmode": "DEFAULT", - "group": "default", - "txqlen": 1000, - "link_type": "ether", - "address": "02:00:00:00:00:04", - "broadcast": "ff:ff:ff:ff:ff:ff", - "promiscuity": 0, - "allmulti": 0, - "min_mtu": 68, - "max_mtu": 65535, - "inet6_addr_gen_mode": "eui64", - "num_tx_queues": 1, - "num_rx_queues": 1, - "gso_max_size": 65536, - "gso_max_segs": 65535, - "tso_max_size": 65536, - "tso_max_segs": 65535, - "gro_max_size": 65536, - "parentbus": "virtio", - "parentdev": "virtio6", - "stats64": { - "rx": { - "bytes": 1327, - "packets": 10, - "errors": 0, - "dropped": 0, - "over_errors": 0, - "multicast": 0 - }, - "tx": { - "bytes": 19022, - "packets": 95, - "errors": 0, - "dropped": 0, - "carrier_errors": 0, - "collisions": 0 - } - } - } -] diff --git a/test/case/cli/system-output/ip-link-show.json b/test/case/cli/system-output/ip-link-show.json new file mode 100644 index 00000000..7222f724 --- /dev/null +++ b/test/case/cli/system-output/ip-link-show.json @@ -0,0 +1,569 @@ +[ + { + "ifindex": 7, + "ifname": "br0", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "noqueue", + "operstate": "UP", + "linkmode": "DEFAULT", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:00", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 0, + "allmulti": 0, + "min_mtu": 68, + "max_mtu": 65535, + "linkinfo": { + "info_kind": "bridge", + "info_data": { + "forward_delay": 1500, + "hello_time": 200, + "max_age": 2000, + "ageing_time": 30000, + "stp_state": 0, + "priority": 32768, + "vlan_filtering": 1, + "vlan_protocol": "802.1Q", + "bridge_id": "8000.2:0:0:0:0:0", + "root_id": "8000.2:0:0:0:0:0", + "root_port": 0, + "root_path_cost": 0, + "topology_change": 0, + "topology_change_detected": 0, + "hello_timer": 0, + "tcn_timer": 0, + "topology_change_timer": 0, + "gc_timer": 27.38, + "vlan_default_pvid": 0, + "vlan_stats_enabled": 0, + "vlan_stats_per_port": 0, + "group_fwd_mask": "0", + "group_addr": "01:80:c2:00:00:00", + "mcast_snooping": 0, + "no_linklocal_learn": 0, + "mcast_vlan_snooping": 0, + "mcast_router": 1, + "mcast_query_use_ifaddr": 0, + "mcast_querier": 0, + "mcast_hash_elasticity": 16, + "mcast_hash_max": 4096, + "mcast_last_member_cnt": 2, + "mcast_startup_query_cnt": 2, + "mcast_last_member_intvl": 100, + "mcast_membership_intvl": 26000, + "mcast_querier_intvl": 25500, + "mcast_query_intvl": 12500, + "mcast_query_response_intvl": 1000, + "mcast_startup_query_intvl": 3124, + "mcast_stats_enabled": 0, + "mcast_igmp_version": 2, + "mcast_mld_version": 1, + "nf_call_iptables": 0, + "nf_call_ip6tables": 0, + "nf_call_arptables": 0 + } + }, + "inet6_addr_gen_mode": "none", + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "stats64": { + "rx": { + "bytes": 3158, + "packets": 42, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 37 + }, + "tx": { + "bytes": 0, + "packets": 0, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, + { + "ifindex": 8, + "ifname": "br1", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "noqueue", + "operstate": "UP", + "linkmode": "DEFAULT", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:02", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 0, + "allmulti": 0, + "min_mtu": 68, + "max_mtu": 65535, + "linkinfo": { + "info_kind": "bridge", + "info_data": { + "forward_delay": 1500, + "hello_time": 200, + "max_age": 2000, + "ageing_time": 30000, + "stp_state": 0, + "priority": 32768, + "vlan_filtering": 1, + "vlan_protocol": "802.1Q", + "bridge_id": "8000.2:0:0:0:0:2", + "root_id": "8000.2:0:0:0:0:2", + "root_port": 0, + "root_path_cost": 0, + "topology_change": 0, + "topology_change_detected": 0, + "hello_timer": 0.00, + "tcn_timer": 0.00, + "topology_change_timer": 0.00, + "gc_timer": 53.73, + "vlan_default_pvid": 0, + "vlan_stats_enabled": 0, + "vlan_stats_per_port": 0, + "group_fwd_mask": "0", + "group_addr": "01:80:c2:00:00:00", + "mcast_snooping": 0, + "no_linklocal_learn": 0, + "mcast_vlan_snooping": 0, + "mcast_router": 1, + "mcast_query_use_ifaddr": 0, + "mcast_querier": 0, + "mcast_hash_elasticity": 16, + "mcast_hash_max": 4096, + "mcast_last_member_cnt": 2, + "mcast_startup_query_cnt": 2, + "mcast_last_member_intvl": 100, + "mcast_membership_intvl": 26000, + "mcast_querier_intvl": 25500, + "mcast_query_intvl": 12500, + "mcast_query_response_intvl": 1000, + "mcast_startup_query_intvl": 3124, + "mcast_stats_enabled": 0, + "mcast_igmp_version": 2, + "mcast_mld_version": 1, + "nf_call_iptables": 0, + "nf_call_ip6tables": 0, + "nf_call_arptables": 0 + } + }, + "inet6_addr_gen_mode": "none", + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "stats64": { + "rx": { + "bytes": 0, + "packets": 0, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 0, + "packets": 0, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, + { + "ifindex": 2, + "ifname": "e0", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "pfifo_fast", + "master": "br0", + "operstate": "UP", + "linkmode": "DEFAULT", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:00", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 1, + "allmulti": 1, + "min_mtu": 68, + "max_mtu": 65535, + "linkinfo": { + "info_slave_kind": "bridge", + "info_slave_data": { + "state": "forwarding", + "priority": 32, + "cost": 100, + "hairpin": false, + "guard": false, + "root_block": false, + "fastleave": false, + "learning": true, + "flood": true, + "id": "0x8001", + "no": "0x1", + "designated_port": 32769, + "designated_cost": 0, + "bridge_id": "8000.2:0:0:0:0:0", + "root_id": "8000.2:0:0:0:0:0", + "hold_timer": 0, + "message_age_timer": 0, + "forward_delay_timer": 0, + "topology_change_ack": 0, + "config_pending": 0, + "proxy_arp": false, + "proxy_arp_wifi": false, + "multicast_router": 1, + "mcast_flood": true, + "bcast_flood": true, + "mcast_to_unicast": false, + "neigh_suppress": false, + "group_fwd_mask": "0", + "group_fwd_mask_str": "0x0", + "vlan_tunnel": false, + "isolated": false, + "locked": false + } + }, + "inet6_addr_gen_mode": "eui64", + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "parentbus": "e1000", + "parentdev": "e1000-foobar", + "stats64": { + "rx": { + "bytes": 6537, + "packets": 59, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 20891, + "packets": 106, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, + { + "ifindex": 3, + "ifname": "e1", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "pfifo_fast", + "master": "br0", + "operstate": "UP", + "linkmode": "DEFAULT", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:01", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 1, + "allmulti": 1, + "min_mtu": 68, + "max_mtu": 65535, + "linkinfo": { + "info_slave_kind": "bridge", + "info_slave_data": { + "state": "forwarding", + "priority": 32, + "cost": 100, + "hairpin": false, + "guard": false, + "root_block": false, + "fastleave": false, + "learning": true, + "flood": true, + "id": "0x8002", + "no": "0x2", + "designated_port": 32770, + "designated_cost": 0, + "bridge_id": "8000.2:0:0:0:0:0", + "root_id": "8000.2:0:0:0:0:0", + "hold_timer": 0, + "message_age_timer": 0, + "forward_delay_timer": 0, + "topology_change_ack": 0, + "config_pending": 0, + "proxy_arp": false, + "proxy_arp_wifi": false, + "multicast_router": 1, + "mcast_flood": true, + "bcast_flood": true, + "mcast_to_unicast": false, + "neigh_suppress": false, + "group_fwd_mask": "0", + "group_fwd_mask_str": "0x0", + "vlan_tunnel": false, + "isolated": false, + "locked": false + } + }, + "inet6_addr_gen_mode": "eui64", + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "parentbus": "e1000", + "parentdev": "e1000-foobar", + "stats64": { + "rx": { + "bytes": 1397, + "packets": 11, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 24849, + "packets": 130, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, + { + "ifindex": 4, + "ifname": "e2", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "pfifo_fast", + "master": "br1", + "operstate": "UP", + "linkmode": "DEFAULT", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:02", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 0, + "allmulti": 1, + "min_mtu": 68, + "max_mtu": 65535, + "linkinfo": { + "info_slave_kind": "bridge", + "info_slave_data": { + "state": "forwarding", + "priority": 32, + "cost": 100, + "hairpin": false, + "guard": false, + "root_block": false, + "fastleave": false, + "learning": true, + "flood": true, + "id": "0x8001", + "no": "0x1", + "designated_port": 32769, + "designated_cost": 0, + "bridge_id": "8000.2:0:0:0:0:2", + "root_id": "8000.2:0:0:0:0:2", + "hold_timer": 0.00, + "message_age_timer": 0.00, + "forward_delay_timer": 0.00, + "topology_change_ack": 0, + "config_pending": 0, + "proxy_arp": false, + "proxy_arp_wifi": false, + "multicast_router": 1, + "mcast_flood": true, + "bcast_flood": true, + "mcast_to_unicast": false, + "neigh_suppress": false, + "group_fwd_mask": "0", + "group_fwd_mask_str": "0x0", + "vlan_tunnel": false, + "isolated": false, + "locked": false + } + }, + "inet6_addr_gen_mode": "eui64", + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "parentbus": "virtio", + "parentdev": "virtio4", + "stats64": { + "rx": { + "bytes": 0, + "packets": 0, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 19114, + "packets": 81, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, + { + "ifindex": 5, + "ifname": "e3", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "pfifo_fast", + "operstate": "UP", + "linkmode": "DEFAULT", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:03", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 0, + "allmulti": 0, + "min_mtu": 68, + "max_mtu": 65535, + "inet6_addr_gen_mode": "eui64", + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "parentbus": "virtio", + "parentdev": "virtio5", + "stats64": { + "rx": { + "bytes": 1327, + "packets": 10, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 15057, + "packets": 72, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, + { + "ifindex": 6, + "ifname": "e4", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1500, + "qdisc": "pfifo_fast", + "operstate": "DOWN", + "linkmode": "DEFAULT", + "group": "default", + "txqlen": 1000, + "link_type": "ether", + "address": "02:00:00:00:00:04", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 0, + "allmulti": 0, + "min_mtu": 68, + "max_mtu": 65535, + "inet6_addr_gen_mode": "eui64", + "num_tx_queues": 1, + "num_rx_queues": 1, + "gso_max_size": 65536, + "gso_max_segs": 65535, + "tso_max_size": 65536, + "tso_max_segs": 65535, + "gro_max_size": 65536, + "parentbus": "virtio", + "parentdev": "virtio6", + "stats64": { + "rx": { + "bytes": 1327, + "packets": 10, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 19022, + "packets": 95, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + } +] From 240a2927254ef337655d533b536817122b3bfff9 Mon Sep 17 00:00:00 2001 From: Richard Alpe Date: Tue, 1 Oct 2024 13:58:10 +0200 Subject: [PATCH 2/3] test: remove explicit iface list from sysrepo emulator Yanger now has the ability to loop all interfaces (based on ip link), this means we can run once for all interfaces. Signed-off-by: Richard Alpe --- test/case/cli/sysrepo-emulator.sh | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/test/case/cli/sysrepo-emulator.sh b/test/case/cli/sysrepo-emulator.sh index 2693f628..df9cd2eb 100755 --- a/test/case/cli/sysrepo-emulator.sh +++ b/test/case/cli/sysrepo-emulator.sh @@ -5,13 +5,10 @@ ROOT_PATH="$SCRIPT_PATH/../../../" YANGER_TOOL="$ROOT_PATH/src/statd/python/yanger/yanger.py" -INTERFACES="br0 br1 e0 e1 e2 e3 e4" - -INTERFACE_OUTPUT_FILE="$(mktemp)" INTERFACES_OUTPUT_FILE="$(mktemp)" ROUTES_OUTPUT_FILE="$(mktemp)" cleanup() { - rm -f "$INTERFACE_OUTPUT_FILE" + rm -f "$INTERFACES_OUTPUT_FILE" rm -f "$ROUTES_OUTPUT_FILE" } trap cleanup EXIT @@ -21,22 +18,10 @@ if [ ! -e "$YANGER_TOOL" ]; then exit 1 fi - -for iface in $INTERFACES; do - if ! "$YANGER_TOOL" "ietf-interfaces" \ - -t "$SCRIPT_PATH/system-output/" \ - -p "$iface" >> "$INTERFACE_OUTPUT_FILE"; then - echo "Error, running yanger for interface $iface" >&2 - exit 1 - fi -done - -if ! jq -s 'reduce .[] as $item - ({}; .["ietf-interfaces:interfaces"].interface += - $item["ietf-interfaces:interfaces"].interface)' \ - "$INTERFACE_OUTPUT_FILE" >> $INTERFACES_OUTPUT_FILE; then - echo "Error, merging yanger output data" >&2 - exit 1 +if ! "$YANGER_TOOL" "ietf-interfaces" \ + -t "$SCRIPT_PATH/system-output/" >> "$INTERFACES_OUTPUT_FILE"; then + echo "Error, running yanger for interface $iface" >&2 + exit 1 fi $YANGER_TOOL "ietf-routing" -t "$SCRIPT_PATH/system-output/" > "$ROUTES_OUTPUT_FILE" From 707e7d1a297977382e7e1d77dd66272e179a3bf5 Mon Sep 17 00:00:00 2001 From: Richard Alpe Date: Tue, 1 Oct 2024 14:17:32 +0200 Subject: [PATCH 3/3] yanger: skip internal interfaces In "14128047e18d statd: remove nl code and improve speed" the handling of all interfaces where moved from statd to Yanger. This means statd no longer tracks interfaces using Netlink, but instead relies on Yanger to recognise and list all interfaces in the system. In the midst of this change the ignoring of "internal" interfaces where lost. In this commit we reintroduce this logic in Yanger and add a test case that ensures internal interfaces isn't listed. Fixes: 14128047e18d statd: remove nl code and improve speed Signed-off-by: Richard Alpe --- src/statd/python/yanger/yanger.py | 4 ++ test/case/cli/system-output/ethtool-dsa0.txt | 32 +++++++++++ .../system-output/ethtool-groups-dsa0.json | 7 +++ test/case/cli/system-output/ip-addr-show.json | 52 ++++++++++++++++++ test/case/cli/system-output/ip-link-show.json | 53 +++++++++++++++++++ 5 files changed, 148 insertions(+) create mode 100644 test/case/cli/system-output/ethtool-dsa0.txt create mode 100644 test/case/cli/system-output/ethtool-groups-dsa0.json diff --git a/src/statd/python/yanger/yanger.py b/src/statd/python/yanger/yanger.py index cc7d1217..5b67d1cf 100755 --- a/src/statd/python/yanger/yanger.py +++ b/src/statd/python/yanger/yanger.py @@ -899,6 +899,10 @@ def _add_interface(ifname, ip_link_data, ip_addr_data, yang_ifaces): if not ip_link_data or not ip_addr_data: return + # Skip internal interfaces. + if 'group' in ip_link_data and ip_link_data['group'] == "internal": + return + yang_ifaces.append(get_iface_data(ifname, ip_link_data, ip_addr_data)) def add_interface(ifname, yang_ifaces): diff --git a/test/case/cli/system-output/ethtool-dsa0.txt b/test/case/cli/system-output/ethtool-dsa0.txt new file mode 100644 index 00000000..6fb392ba --- /dev/null +++ b/test/case/cli/system-output/ethtool-dsa0.txt @@ -0,0 +1,32 @@ +Settings for dsa0: + Supported ports: [ MII ] + Supported link modes: 10000baseT/Full + 10000baseKX4/Full + 10000baseKR/Full + 10000baseCR/Full + 10000baseSR/Full + 10000baseLR/Full + 10000baseLRM/Full + 10000baseER/Full + Supported pause frame use: Symmetric Receive-only + Supports auto-negotiation: Yes + Supported FEC modes: Not reported + Advertised link modes: 10000baseT/Full + 10000baseKX4/Full + 10000baseKR/Full + 10000baseCR/Full + 10000baseSR/Full + 10000baseLR/Full + 10000baseLRM/Full + 10000baseER/Full + Advertised pause frame use: Symmetric Receive-only + Advertised auto-negotiation: Yes + Advertised FEC modes: Not reported + Speed: 10000Mb/s + Duplex: Full + Auto-negotiation: on + Port: MII + PHYAD: 0 + Transceiver: internal +netlink error: Operation not permitted + Link detected: yes diff --git a/test/case/cli/system-output/ethtool-groups-dsa0.json b/test/case/cli/system-output/ethtool-groups-dsa0.json new file mode 100644 index 00000000..55cd2636 --- /dev/null +++ b/test/case/cli/system-output/ethtool-groups-dsa0.json @@ -0,0 +1,7 @@ +[ { + "ifname": "dsa0", + "eth-phy": {}, + "eth-mac": {}, + "eth-ctrl": {}, + "rmon": {} +} ] diff --git a/test/case/cli/system-output/ip-addr-show.json b/test/case/cli/system-output/ip-addr-show.json index 5ff305f0..04ad3de7 100644 --- a/test/case/cli/system-output/ip-addr-show.json +++ b/test/case/cli/system-output/ip-addr-show.json @@ -1,4 +1,56 @@ [ + { + "ifindex": 2, + "ifname": "dsa0", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1504, + "qdisc": "mq", + "operstate": "UP", + "group": "internal", + "txqlen": 2048, + "link_type": "ether", + "address": "02:00:de:ad:02:20", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 0, + "allmulti": 0, + "min_mtu": 68, + "max_mtu": 9888, + "num_tx_queues": 8, + "num_rx_queues": 4, + "gso_max_size": 65536, + "gso_max_segs": 300, + "tso_max_size": 65536, + "tso_max_segs": 300, + "gro_max_size": 65536, + "gso_ipv4_max_size": 65536, + "gro_ipv4_max_size": 65536, + "parentbus": "platform", + "parentdev": "f2000000.ethernet", + "addr_info": [], + "stats64": { + "rx": { + "bytes": 1756811, + "packets": 6777, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 1849127, + "packets": 7157, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, { "ifindex": 7, "ifname": "br0", diff --git a/test/case/cli/system-output/ip-link-show.json b/test/case/cli/system-output/ip-link-show.json index 7222f724..3d7b2dee 100644 --- a/test/case/cli/system-output/ip-link-show.json +++ b/test/case/cli/system-output/ip-link-show.json @@ -1,4 +1,57 @@ [ + { + "ifindex": 2, + "ifname": "dsa0", + "flags": [ + "BROADCAST", + "MULTICAST", + "UP", + "LOWER_UP" + ], + "mtu": 1504, + "qdisc": "mq", + "operstate": "UP", + "linkmode": "DEFAULT", + "group": "internal", + "txqlen": 2048, + "link_type": "ether", + "address": "02:00:de:ad:02:20", + "broadcast": "ff:ff:ff:ff:ff:ff", + "promiscuity": 0, + "allmulti": 0, + "min_mtu": 68, + "max_mtu": 9888, + "inet6_addr_gen_mode": "eui64", + "num_tx_queues": 8, + "num_rx_queues": 4, + "gso_max_size": 65536, + "gso_max_segs": 300, + "tso_max_size": 65536, + "tso_max_segs": 300, + "gro_max_size": 65536, + "gso_ipv4_max_size": 65536, + "gro_ipv4_max_size": 65536, + "parentbus": "platform", + "parentdev": "f2000000.ethernet", + "stats64": { + "rx": { + "bytes": 1751876, + "packets": 6757, + "errors": 0, + "dropped": 0, + "over_errors": 0, + "multicast": 0 + }, + "tx": { + "bytes": 1843945, + "packets": 7136, + "errors": 0, + "dropped": 0, + "carrier_errors": 0, + "collisions": 0 + } + } + }, { "ifindex": 7, "ifname": "br0",