Skip to content

more cli extensions#1356

Merged
Fredi-raspall merged 7 commits intomainfrom
pr/fredi/more_cli_extensions
Mar 19, 2026
Merged

more cli extensions#1356
Fredi-raspall merged 7 commits intomainfrom
pr/fredi/more_cli_extensions

Conversation

@Fredi-raspall
Copy link
Contributor

@Fredi-raspall Fredi-raspall commented Mar 18, 2026

  • Add show tech cli command so that the whole state can be dumped
    • this is mainly for CI so that we can do dataplane-cli -c "show tech" > artifact.txt
    • cc @pau-hedgehog
  • improve / unify outputs of cli

Sample

dataplane(✔)# show tech
time: 2026-03-18T 16:43:30
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Configuration summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  GenId created                   applied                   error 
      1 2026/03/18 16:42:42       2026/03/18 16:42:43       none 

 ━━━━━━━━━━ Gateway groups ━━━━━━━━━━
 gw-group-1:
   name             prio  address                                 
   GW1              10    7.0.0.100                               
   GW2              0     7.0.0.101                               
 gw-group-2:
   name             prio  address                                 
   GW1              5     7.0.0.100                               
   GW2              20    7.0.0.101                               

  ━━━━━━━ Community mappings ━━━━━━━
     rank community       
        3 65000:803       
        5 65000:805       
        2 65000:802       
        4 65000:804       
        7 65000:807       
        0 65000:800       
        9 65000:809       
        8 65000:808       
        6 65000:806       
        1 65000:801       


 
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Tracing configuration per target ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                     NAME │ TARGET                                           │ CUSTOM │    LEVEL │ TAGS
                   egress │ dataplane::packet_processor::egress              │        │     warn │ pipeline,egress,all
                  ingress │ dataplane::packet_processor::ingress             │        │     warn │ pipeline,ingress,all
               ip-forward │ dataplane::packet_processor::ipforward           │        │     warn │ pipeline,ip-forward,all
              vxlan-encap │ vxlan-encap                                      │    yes │      off │ vxlan,vxlan-encap,all
              vxlan-decap │ vxlan-decap                                      │    yes │    debug │ vxlan,vxlan-decap,all
                dataplane │ dataplane                                        │        │    debug │ dataplane,all
                     kube │ kube                                             │    yes │     warn │ third-party,kube,all
                    hyper │ hyper                                            │    yes │     warn │ third-party,hyper,all
                    tower │ tower                                            │    yes │     warn │ third-party,tower,all
                Pyroscope │ Pyroscope                                        │    yes │     info │ third-party,Pyroscope,all
             stats-server │ dataplane::statistics                            │        │     info │ stats-server,all
            kernel-driver │ dataplane::drivers::kernel                       │        │     info │ driver,kernel-driver,all
                     mgmt │ dataplane_mgmt                                   │        │    debug │ management,mgmt,all
                 dp-stats │ dataplane_stats                                  │        │     warn │ dp-stats,all
            stateless-nat │ dataplane_nat::stateless                         │        │     warn │ nat,pipeline,stateless-nat,all
             stateful-nat │ dataplane_nat::stateful                          │        │    debug │ nat,pipeline,stateful-nat,all
              icmp-errors │ dataplane_nat::icmp_handler::nf                  │        │    debug │ nat,pipeline,icmp-errors,all
          port-forwarding │ dataplane_nat::portfw                            │        │    debug │ nat,pipeline,port-forwarding,all
              flow-filter │ dataplane_flow_filter                            │        │    debug │ pipeline,flow-filter,all
        flow-filter-setup │ dataplane_flow_filter::setup                     │        │     info │ flow-filter-setup,all
       flow-filter-tables │ dataplane_flow_filter::tables                    │        │     info │ flow-filter-tables,all
            flow-table-pq │ dataplane_flow_entry::flow_table::thread_local_pq │        │      off │ flow-expiration,pipeline,flow-table-pq,all
              flow-lookup │ dataplane_flow_entry::flow_table::nf_lookup      │        │     warn │ pipeline,flow-lookup,all
          flow-expiration │ dataplane_flow_entry::flow_table::nf_expirations │        │      off │ pipeline,flow-expiration,all
               flow-table │ dataplane_flow_entry::flow_table                 │        │      off │ pipeline,flow-table,all
                      fib │ dataplane_routing::fib                           │        │     warn │ pipeline,fib,all
                      bmp │ dataplane_routing::bmp                           │        │     info │ bmp,all
                      cpi │ dataplane_routing::router::cpi                   │        │    debug │ routing-full,cpi,all
                next-hops │ dataplane_routing::rib::nexthop                  │        │     warn │ routing-full,next-hops,all
                  routing │ dataplane_routing                                │        │    debug │ routing-full,routing,all
                    frrmi │ dataplane_routing::frr::frrmi                    │        │    debug │ routing-full,frrmi,all
                      cli │ dataplane_routing::cli::handler                  │        │      off │ cli,all
                     mgmt │ dataplane_config                                 │        │    debug │ management,mgmt,all
               k8s-client │ dataplane_k8s_intf::client                       │        │      off │ management,k8s-client,all
                 pkt-dump │ pkt-dump                                         │    yes │      off │ pipeline,pkt-dump,all
                 tracectl │ dataplane_tracectl::control                      │        │     info │ tracectl,all
                      all │ all                                              │    yes │    debug │ all
                          │ (default)                                        │        │     info │ --

 
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Tracing tags ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                     NAME │ TARGET                                           │ CUSTOM │    LEVEL │ TAGS
 pipeline:
                   egress │ dataplane::packet_processor::egress              │        │     warn │ pipeline,egress,all
                  ingress │ dataplane::packet_processor::ingress             │        │     warn │ pipeline,ingress,all
               ip-forward │ dataplane::packet_processor::ipforward           │        │     warn │ pipeline,ip-forward,all
            stateless-nat │ dataplane_nat::stateless                         │        │     warn │ nat,pipeline,stateless-nat,all
             stateful-nat │ dataplane_nat::stateful                          │        │    debug │ nat,pipeline,stateful-nat,all
              icmp-errors │ dataplane_nat::icmp_handler::nf                  │        │    debug │ nat,pipeline,icmp-errors,all
          port-forwarding │ dataplane_nat::portfw                            │        │    debug │ nat,pipeline,port-forwarding,all
              flow-filter │ dataplane_flow_filter                            │        │    debug │ pipeline,flow-filter,all
            flow-table-pq │ dataplane_flow_entry::flow_table::thread_local_pq │        │      off │ flow-expiration,pipeline,flow-table-pq,all
              flow-lookup │ dataplane_flow_entry::flow_table::nf_lookup      │        │     warn │ pipeline,flow-lookup,all
          flow-expiration │ dataplane_flow_entry::flow_table::nf_expirations │        │      off │ pipeline,flow-expiration,all
               flow-table │ dataplane_flow_entry::flow_table                 │        │      off │ pipeline,flow-table,all
                      fib │ dataplane_routing::fib                           │        │     warn │ pipeline,fib,all
                 pkt-dump │ pkt-dump                                         │    yes │      off │ pipeline,pkt-dump,all
 vxlan:
              vxlan-encap │ vxlan-encap                                      │    yes │      off │ vxlan,vxlan-encap,all
              vxlan-decap │ vxlan-decap                                      │    yes │    debug │ vxlan,vxlan-decap,all
 third-party:
                     kube │ kube                                             │    yes │     warn │ third-party,kube,all
                    hyper │ hyper                                            │    yes │     warn │ third-party,hyper,all
                    tower │ tower                                            │    yes │     warn │ third-party,tower,all
                Pyroscope │ Pyroscope                                        │    yes │     info │ third-party,Pyroscope,all
 management:
                     mgmt │ dataplane_mgmt                                   │        │    debug │ management,mgmt,all
                     mgmt │ dataplane_config                                 │        │    debug │ management,mgmt,all
               k8s-client │ dataplane_k8s_intf::client                       │        │      off │ management,k8s-client,all
 mgmt:
                     mgmt │ dataplane_mgmt                                   │        │    debug │ management,mgmt,all
                     mgmt │ dataplane_config                                 │        │    debug │ management,mgmt,all
 nat:
            stateless-nat │ dataplane_nat::stateless                         │        │     warn │ nat,pipeline,stateless-nat,all
             stateful-nat │ dataplane_nat::stateful                          │        │    debug │ nat,pipeline,stateful-nat,all
              icmp-errors │ dataplane_nat::icmp_handler::nf                  │        │    debug │ nat,pipeline,icmp-errors,all
          port-forwarding │ dataplane_nat::portfw                            │        │    debug │ nat,pipeline,port-forwarding,all
 flow-expiration:
            flow-table-pq │ dataplane_flow_entry::flow_table::thread_local_pq │        │      off │ flow-expiration,pipeline,flow-table-pq,all
          flow-expiration │ dataplane_flow_entry::flow_table::nf_expirations │        │      off │ pipeline,flow-expiration,all
 routing-full:
                      cpi │ dataplane_routing::router::cpi                   │        │    debug │ routing-full,cpi,all
                next-hops │ dataplane_routing::rib::nexthop                  │        │     warn │ routing-full,next-hops,all
                  routing │ dataplane_routing                                │        │    debug │ routing-full,routing,all
                    frrmi │ dataplane_routing::frr::frrmi                    │        │    debug │ routing-full,frrmi,all

 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ VPCs (3) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 VPC                Id     VNI      peers     remote             peering name      
 VPC-1              AAAAA  3000     2         VPC-2              vpc-1--vpc-2      
                                              VPC-3              vpc-1--vpc-3      
 VPC-2              BBBBB  4000     2         VPC-1              vpc-1--vpc-2      
                                              VPC-3              vpc-2--vpc-3      
 VPC-3              CCCCC  2000     2         VPC-1              vpc-1--vpc-3      
                                              VPC-2              vpc-2--vpc-3      

 ━━━━━━━━━━━━━━━━━━━━━━━━━━━ Peerings of VPC:VPC-1 Id:AAAAA vni :3000 (2) ━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ■ vpc-1--vpc-2:
   gwgroup: gw-group-1
     local:
        prefixes: 192.168.50.0/24:[all]
        prefixes: 192.168.60.0/24:[all]

     remote VPC is VPC-2 (id:BBBBB):
        prefixes: 192.168.90.0/24:[22-22]
              as: 20.10.90.0/24:[2222-2222] proto: Tcp NAT:port-forwarding, idle timeout: 660
        prefixes: 192.168.90.0/24:[53-53]
              as: 20.10.90.0/24:[2053-2053] proto: Udp NAT:port-forwarding, idle timeout: 660
        prefixes: 192.168.80.0/24:[all]

  ■ vpc-1--vpc-3:
   gwgroup: gw-group-2
     local:
        prefixes: 192.168.50.0/24:[all]

     remote VPC is VPC-3 (id:CCCCC):
        prefixes: 192.168.100.0/24:[all]
        prefixes: 192.168.128.0/27:[all]

 ━━━━━━━━━━━━━━━━━━━━━━━━━━━ Peerings of VPC:VPC-2 Id:BBBBB vni :4000 (2) ━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ■ vpc-1--vpc-2:
   gwgroup: gw-group-1
     local:
        prefixes: 192.168.90.0/24:[22-22]
              as: 20.10.90.0/24:[2222-2222] proto: Tcp NAT:port-forwarding, idle timeout: 660
        prefixes: 192.168.90.0/24:[53-53]
              as: 20.10.90.0/24:[2053-2053] proto: Udp NAT:port-forwarding, idle timeout: 660
        prefixes: 192.168.80.0/24:[all]

     remote VPC is VPC-1 (id:AAAAA):
        prefixes: 192.168.50.0/24:[all]
        prefixes: 192.168.60.0/24:[all]

  ■ vpc-2--vpc-3:
   gwgroup: gw-group-2
     local:
        prefixes: 192.168.90.0/24:[all]
              as: 20.30.90.30/32:[all] proto: Any NAT:masquerade, idle timeout: 300

     remote VPC is VPC-3 (id:CCCCC):
        prefixes: 192.168.128.0/27:[all]

 ━━━━━━━━━━━━━━━━━━━━━━━━━━━ Peerings of VPC:VPC-3 Id:CCCCC vni :2000 (2) ━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ■ vpc-1--vpc-3:
   gwgroup: gw-group-2
     local:
        prefixes: 192.168.100.0/24:[all]
        prefixes: 192.168.128.0/27:[all]

     remote VPC is VPC-1 (id:AAAAA):
        prefixes: 192.168.50.0/24:[all]

  ■ vpc-2--vpc-3:
   gwgroup: gw-group-2
     local:
        prefixes: 192.168.128.0/27:[all]

     remote VPC is VPC-2 (id:BBBBB):
        prefixes: 192.168.90.0/24:[all]
              as: 20.30.90.30/32:[all] proto: Any NAT:masquerade, idle timeout: 300


 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ROUTER_EVENTS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 generated: 7 stored: 7 capacity: 1000

 0    2026-03-18T 16:42:37: Started!
 1    2026-03-18T 16:42:38: Connected to frr-agent
 2    2026-03-18T 16:42:43: Router config request received for generation 1
 3    2026-03-18T 16:42:43: Router config request for generation 1 SUCCEEDED
 4    2026-03-18T 16:42:44: Requested FRR configuration for generation 1
 5    2026-03-18T 16:42:44: FRR configuration for generation 1 SUCCEEDED
 6    2026-03-18T 16:42:45: CPI status changed to Connected


  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Control-plane interface ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 STATUS: Connected
 last connect: 2026-03-18T 16:42:45 (45 s ago) pid: 63 peer: /var/run/frr/hh/plugin.sock
 last msg rx : 2026-03-18T 16:43:27 (3 s ago)
 decode failures: 0
 ctl/keepalives : 9

 op               Ok           Ignored      Failure      Invalid      Unsupp      
 connect          1            0            0            0            0           
 Add route        31           0            0            0            0           
 Upd route        0            0            0            0            0           
 Del route        0            0            0            0            0           
 Add ifAddr       4            0            0            0            0           
 Del ifAddr       0            0            0            0            0           
 Add rmac         6            0            0            0            0           
 Del rmac         0            0            0            0            0           


 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FRR Management interface ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 status: connected
 remote: /var/run/frr/frr-agent.sock
 Last connection : 2026-03-18T 16:42:38 (52 s ago)
 Last disconnect : never
 Last cfg applied: 1 2026-03-18T 16:42:44 (46 s ago)
 Last cfg failure: none 
 Configs applied : 1
 Configs failed  : 0


 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Last FRR config applied ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 genid: 1
 
! config for gen 1
log stdout
frr defaults datacenter
hostname GW1
service integrated-vtysh-config
!
ip prefix-list ADV-TO-VPC-1-FOR-VPC-2 description "Prefixes advertised to VPC-1 for VPC-2"
ip prefix-list ADV-TO-VPC-1-FOR-VPC-2 seq 1 permit 20.10.90.0/24
ip prefix-list ADV-TO-VPC-1-FOR-VPC-2 seq 2 permit 20.10.90.0/24
ip prefix-list ADV-TO-VPC-1-FOR-VPC-2 seq 3 permit 192.168.80.0/24
ip prefix-list ADV-TO-VPC-1-FOR-VPC-3 description "Prefixes advertised to VPC-1 for VPC-3"
ip prefix-list ADV-TO-VPC-1-FOR-VPC-3 seq 1 permit 192.168.100.0/24
ip prefix-list ADV-TO-VPC-1-FOR-VPC-3 seq 2 permit 192.168.128.0/27
ip prefix-list ADV-TO-VPC-2-FOR-VPC-1 description "Prefixes advertised to VPC-2 for VPC-1"
ip prefix-list ADV-TO-VPC-2-FOR-VPC-1 seq 1 permit 192.168.50.0/24
ip prefix-list ADV-TO-VPC-2-FOR-VPC-1 seq 2 permit 192.168.60.0/24
ip prefix-list ADV-TO-VPC-2-FOR-VPC-3 description "Prefixes advertised to VPC-2 for VPC-3"
ip prefix-list ADV-TO-VPC-2-FOR-VPC-3 seq 1 permit 192.168.128.0/27
ip prefix-list ADV-TO-VPC-3-FOR-VPC-1 description "Prefixes advertised to VPC-3 for VPC-1"
ip prefix-list ADV-TO-VPC-3-FOR-VPC-1 seq 1 permit 192.168.50.0/24
ip prefix-list ADV-TO-VPC-3-FOR-VPC-2 description "Prefixes advertised to VPC-3 for VPC-2"
ip prefix-list ADV-TO-VPC-3-FOR-VPC-2 seq 1 permit 20.30.90.30/32
!
vrf CCCCC-vrf
 vni 2000
exit-vrf
!
vrf AAAAA-vrf
 vni 3000
exit-vrf
!
vrf BBBBB-vrf
 vni 4000
exit-vrf
!
interface eth0
 ip address 10.0.0.14/30
exit
!
interface eth1
 ip address 172.16.0.1/24
exit
!
interface eth2
 ip address 10.0.1.14/30
exit
!
interface lo
 ip address 7.0.0.100/32
exit
!
interface vtep
exit
!
router bgp 65100
 bgp router-id 7.0.0.100
 no bgp network import-check
 no bgp ebgp-requires-policy
 no bgp default ipv4-unicast
 bgp bestpath as-path multipath-relax
 neighbor 10.0.0.13 remote-as 65002
 neighbor 10.0.0.13 update-source 10.0.0.14
 neighbor 10.0.0.13 send-community both
 neighbor 10.0.1.13 remote-as 65006
 neighbor 10.0.1.13 update-source 10.0.1.14
 neighbor 10.0.1.13 send-community both
!
address-family ipv4 unicast
 neighbor 10.0.0.13 activate
 neighbor 10.0.1.13 activate
 network 7.0.0.100/32
exit-address-family
!
address-family l2vpn evpn
 neighbor 10.0.0.13 activate
 neighbor 10.0.0.13 route-map EVPN-ROUTE-MAP-NO-ADV-COMM in
 neighbor 10.0.1.13 activate
 neighbor 10.0.1.13 route-map EVPN-ROUTE-MAP-NO-ADV-COMM in
 advertise-all-vni
 advertise-default-gw
 advertise-svi-ip
 advertise ipv4 unicast
exit-address-family
!
exit
!
router bgp 65100 vrf CCCCC-vrf
 bgp router-id 7.0.0.100
 no bgp network import-check
 no bgp ebgp-requires-policy
 no bgp default ipv4-unicast
 bgp always-compare-med
 bgp bestpath as-path multipath-relax
!
address-family ipv4 unicast
 network 192.168.50.0/24
 network 20.30.90.30/32
exit-address-family
!
address-family l2vpn evpn
 advertise ipv4 unicast route-map ADV-TO-VPC-3
exit-address-family
!
exit
!
router bgp 65100 vrf AAAAA-vrf
 bgp router-id 7.0.0.100
 no bgp network import-check
 no bgp ebgp-requires-policy
 no bgp default ipv4-unicast
 bgp always-compare-med
 bgp bestpath as-path multipath-relax
!
address-family ipv4 unicast
 network 20.10.90.0/24
 network 20.10.90.0/24
 network 192.168.80.0/24
 network 192.168.100.0/24
 network 192.168.128.0/27
exit-address-family
!
address-family l2vpn evpn
 advertise ipv4 unicast route-map ADV-TO-VPC-1
exit-address-family
!
exit
!
router bgp 65100 vrf BBBBB-vrf
 bgp router-id 7.0.0.100
 no bgp network import-check
 no bgp ebgp-requires-policy
 no bgp default ipv4-unicast
 bgp always-compare-med
 bgp bestpath as-path multipath-relax
!
address-family ipv4 unicast
 network 192.168.50.0/24
 network 192.168.60.0/24
 network 192.168.128.0/27
exit-address-family
!
address-family l2vpn evpn
 advertise ipv4 unicast route-map ADV-TO-VPC-2
exit-address-family
!
exit
!
route-map ADV-TO-VPC-1 permit 1
 match ip address prefix-list ADV-TO-VPC-1-FOR-VPC-2
 set community 65000:800 additive
exit
!
route-map ADV-TO-VPC-1 permit 2
 match ip address prefix-list ADV-TO-VPC-1-FOR-VPC-3
 set community 65000:801 additive
exit
!
route-map ADV-TO-VPC-2 permit 1
 match ip address prefix-list ADV-TO-VPC-2-FOR-VPC-1
 set community 65000:800 additive
exit
!
route-map ADV-TO-VPC-2 permit 2
 match ip address prefix-list ADV-TO-VPC-2-FOR-VPC-3
 set community 65000:801 additive
exit
!
route-map ADV-TO-VPC-3 permit 1
 match ip address prefix-list ADV-TO-VPC-3-FOR-VPC-1
 set community 65000:801 additive
exit
!
route-map ADV-TO-VPC-3 permit 2
 match ip address prefix-list ADV-TO-VPC-3-FOR-VPC-2
 set community 65000:801 additive
exit
!
route-map EVPN-ROUTE-MAP-NO-ADV-COMM permit 1
 set community no-advertise additive
exit
!

etc. etc. etc. etc..

The flow table now looks as:

dataplane(✔)# show flow-table entries
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Flow Table (4 entries) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
from: VNI(2000),192.168.128.7 -> 20.30.90.30 icmp id:31232:
      dst-vpcd:VNI(4000)
      nat-state:(unchanged, 192.168.90.100:5)[300s]
      status: Active, expires in 285s, related: yes, genid: 1

from: VNI(3000),192.168.50.200:52458 -> 20.10.90.100:2222 tcp:
      dst-vpcd:VNI(4000)
      port-forwarding:
        dnat to ip:192.168.90.100 port:22
        status: established
        rule:  VNI(3000) tcp: 20.10.90.0/24:2222 -> 192.168.90.0/24:22 at VNI(4000) timers:[init:10s estab:660s]
      status: Active, expires in 653s, related: yes, genid: 1

from: VNI(4000),192.168.90.100:22 -> 192.168.50.200:52458 tcp:
      dst-vpcd:VNI(3000)
      port-forwarding:
        snat from ip:20.10.90.100 port:2222
        status: established
        rule:  VNI(3000) tcp: 20.10.90.0/24:2222 -> 192.168.90.0/24:22 at VNI(4000) timers:[init:10s estab:660s]
      status: Active, expires in 653s, related: yes, genid: 1

from: VNI(4000),192.168.90.100 -> 192.168.128.7 icmp id:5:
      dst-vpcd:VNI(2000)
      nat-state:(20.30.90.30:31232, unchanged)[300s]
      status: Active, expires in 285s, related: yes, genid: 1

Signed-off-by: Fredi Raspall <fredi@githedgehog.com>
Signed-off-by: Fredi Raspall <fredi@githedgehog.com>
Signed-off-by: Fredi Raspall <fredi@githedgehog.com>
Copy link
Member

@qmonnet qmonnet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure about show tech as a command name, I don't really understand what tech refers to in this context. Something like show state or show context would seem more appropriate to me.

Other than that, I've got two comments below, but mostly everything seems in order, thanks!

@Fredi-raspall
Copy link
Contributor Author

I'm not sure about show tech as a command name, I don't really understand what tech refers to in this context. Something like show state or show context would seem more appropriate to me.

Comes from show tech-support. I believe Cisco was the first to use this terminology, but other vendors of networking equipment have similar commands (Arista, Hp...)

@Fredi-raspall Fredi-raspall force-pushed the pr/fredi/more_cli_extensions branch from 27289d2 to f010e01 Compare March 19, 2026 08:53
We handle it by iterating over all handlers, pretending that they
were individually invoked, and merging all of the results into
one response.

Signed-off-by: Fredi Raspall <fredi@githedgehog.com>
Signed-off-by: Fredi Raspall <fredi@githedgehog.com>
Signed-off-by: Fredi Raspall <fredi@githedgehog.com>
- Simplify the impl of Display for FlowKey so that no strings
are created for intermediate data.
- Move impl Display of FlowInfo together with impl Display for
  FlowKey and rename file.
- Adjust the layout of the flow table to improve readability
- Use upper case for protocol acronyms

Signed-off-by: Fredi Raspall <fredi@githedgehog.com>
@Fredi-raspall Fredi-raspall force-pushed the pr/fredi/more_cli_extensions branch from f010e01 to 97596d1 Compare March 19, 2026 08:59
@Fredi-raspall Fredi-raspall enabled auto-merge March 19, 2026 09:11
@Fredi-raspall Fredi-raspall added this pull request to the merge queue Mar 19, 2026
@qmonnet
Copy link
Member

qmonnet commented Mar 19, 2026

I'm not sure about show tech as a command name [...]

Comes from show tech-support. I believe Cisco was the first to use this terminology, but other vendors of networking equipment have similar commands (Arista, Hp...)

I didn't know that, thanks for the explanation. Sounds good then! 👍

Merged via the queue into main with commit 75153b9 Mar 19, 2026
21 checks passed
@Fredi-raspall Fredi-raspall deleted the pr/fredi/more_cli_extensions branch March 19, 2026 09:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants