eBGP sonic lab + Ansible config & validation

#Containerlab

root@digi-oss:/home/labadmin/mohan/sonic2# cat sonic-evpn.clab.yml
name: sonic-evpn
topology:
  nodes:
    spine:
      kind: sonic-vs
      image: docker-sonic-vs:latest
    leaf1:
      kind: sonic-vs
      image: docker-sonic-vs:latest
    leaf2:
      kind: sonic-vs
      image: docker-sonic-vs:latest
    host1:
      kind: linux
      image: alpine:latest
    host2:
      kind: linux
      image: alpine:latest
  links:
    - endpoints: ["leaf1:eth1","spine:eth1"]
    - endpoints: ["leaf2:eth1","spine:eth2"]
    - endpoints: ["leaf1:eth2","host1:eth1"]
    - endpoints: ["leaf2:eth2","host2:eth1"]




root@digi-oss:/home/labadmin/mohan/sonic2# containerlab destroy -t sonic-evpn.clab.yml
root@digi-oss:/home/labadmin/mohan/sonic2# containerlab destroy -t sonic-evpn.clab.yml --cleanup

root@digi-oss:/home/labadmin/mohan/sonic2# containerlab deploy -t sonic-evpn.clab.yml



#play-book

root@digi-oss:/home/labadmin/mohan/sonic2/sonic-ebgp-ansible# cat README.md
# SONiC eBGP Ansible Lab

Ansible automation to configure eBGP peering between spine and leafs
in a containerlab SONiC-VS topology.

## Topology

```
               spine (AS 65000)
       /   192.168.1.1    192.168.2.1   \
      /                                                 \
leaf1 (AS 65001)               leaf2 (AS 65002)
192.168.1.2                    192.168.2.2
    |                               |
  host1                           host2
```

## Project Structure


```
sonic-ebgp-ansible/
├── ansible.cfg
├── site.yml                          # Main playbook
├── inventory/
│   ├── hosts.yml                     # Node definitions + BGP vars
│   └── group_vars/
│       └── all.yml                   # Shared BGP timers, credentials
└── roles/
    ├── sonic_interfaces/
    │   └── tasks/main.yml            # IP address assignment
    ├── sonic_bgp/
    │   ├── tasks/main.yml            # FRR config push
    │   ├── handlers/main.yml         # FRR reload handler
    │   └── templates/frr.conf.j2    # Jinja2 BGP config template
    └── sonic_verify/
        └── tasks/main.yml            # BGP session verification
```

## Prerequisites

```bash
pip install ansible
ansible-galaxy collection install ansible.netcommon
# containerlab must be running:
sudo clab deploy -t sonic-evpn.clab.yml
```

## Usage

```bash
# Full deployment
ansible-playbook -i inventory/hosts.yml site.yml

# Step by step
ansible-playbook -i inventory/hosts.yml site.yml --tags interfaces
ansible-playbook -i inventory/hosts.yml site.yml --tags bgp
ansible-playbook -i inventory/hosts.yml site.yml --tags verify

# Dry run
ansible-playbook -i inventory/hosts.yml site.yml --check

# Single node
ansible-playbook -i inventory/hosts.yml site.yml --limit spine
```

## Manual Verification (inside containers)

```bash
# Check BGP summary on spine
docker exec clab-sonic-evpn-spine sudo vtysh -c "show bgp summary"

# Check routes on leaf1
docker exec clab-sonic-evpn-leaf1 sudo vtysh -c "show ip bgp"

# Ping across fabric
docker exec clab-sonic-evpn-host1 ping 192.168.2.2
```

## IP Plan

| Node   | Interface  | IP             | Peer IP        | BGP ASN |
|--------|-----------|----------------|----------------|---------|
| spine  | Ethernet0 | 192.168.1.1/30 | 192.168.1.2    | 65000   |
| spine  | Ethernet4 | 192.168.2.1/30 | 192.168.2.2    | 65000   |
| leaf1  | Ethernet0 | 192.168.1.2/30 | 192.168.1.1    | 65001   |
| leaf2  | Ethernet0 | 192.168.2.2/30 | 192.168.2.1    | 65002   |



## playbook-run output


root@digi-oss:/home/labadmin/mohan/sonic2/sonic-ebgp-ansible# ansible-playbook -i inventory/hosts.yml site.yml -v
Using /home/labadmin/mohan/sonic2/sonic-ebgp-ansible/ansible.cfg as config file

PLAY [Configure interfaces on all SONiC nodes] **********************************************************************************************************************************************

TASK [sonic_interfaces : Bring up underlying Linux interfaces (eth1, eth2) first] ***********************************************************************************************************
ok: [spine] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      for iface in eth1 eth2; do
        if ip link show "$iface" > /dev/null 2>&1; then
          ip link set "$iface" up
          echo "brought up $iface"
        else
          echo "skipping $iface — not present"
        fi
      done
    '
  delta: '0:00:00.057311'
  end: '2026-04-13 07:18:23.495379'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:23.438068'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    brought up eth1
    brought up eth2
  stdout_lines: <omitted>
ok: [leaf2] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf2 sh -c '
      for iface in eth1 eth2; do
        if ip link show "$iface" > /dev/null 2>&1; then
          ip link set "$iface" up
          echo "brought up $iface"
        else
          echo "skipping $iface — not present"
        fi
      done
    '
  delta: '0:00:00.058827'
  end: '2026-04-13 07:18:23.496909'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:23.438082'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    brought up eth1
    brought up eth2
  stdout_lines: <omitted>
ok: [leaf1] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf1 sh -c '
      for iface in eth1 eth2; do
        if ip link show "$iface" > /dev/null 2>&1; then
          ip link set "$iface" up
          echo "brought up $iface"
        else
          echo "skipping $iface — not present"
        fi
      done
    '
  delta: '0:00:00.058483'
  end: '2026-04-13 07:18:23.496551'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:23.438068'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    brought up eth1
    brought up eth2
  stdout_lines: <omitted>

TASK [sonic_interfaces : Show eth1/eth2 link state after bring-up] **************************************************************************************************************************
ok: [spine] =>
  eth_up.stdout_lines:
  - brought up eth1
  - brought up eth2
ok: [leaf1] =>
  eth_up.stdout_lines:
  - brought up eth1
  - brought up eth2
ok: [leaf2] =>
  eth_up.stdout_lines:
  - brought up eth1
  - brought up eth2

TASK [sonic_interfaces : Add IP via SONiC config DB (persists to config_db)] ****************************************************************************************************************
changed: [leaf2] => (item=Ethernet0 -> 192.168.2.2/30) => changed=true
  ansible_loop_var: item
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf2 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      config interface ip add Ethernet0 192.168.2.2/30
    '
  delta: '0:00:00.597763'
  end: '2026-04-13 07:18:24.340695'
  item:
    ip: 192.168.2.2
    name: Ethernet0
    peer: spine
    prefix: 30
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:23.742932'
  stderr: |-
    /usr/local/lib/python3.11/dist-packages/config/aaa.py:120: SyntaxWarning: "is" with a literal. Did you mean "=="?
      if len(auth_protocol) is 0:
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
changed: [spine] => (item=Ethernet0 -> 192.168.1.1/30) => changed=true
  ansible_loop_var: item
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      config interface ip add Ethernet0 192.168.1.1/30
    '
  delta: '0:00:00.604965'
  end: '2026-04-13 07:18:24.342002'
  item:
    ip: 192.168.1.1
    name: Ethernet0
    peer: leaf1
    prefix: 30
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:23.737037'
  stderr: |-
    /usr/local/lib/python3.11/dist-packages/config/aaa.py:120: SyntaxWarning: "is" with a literal. Did you mean "=="?
      if len(auth_protocol) is 0:
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
changed: [leaf1] => (item=Ethernet0 -> 192.168.1.2/30) => changed=true
  ansible_loop_var: item
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf1 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      config interface ip add Ethernet0 192.168.1.2/30
    '
  delta: '0:00:00.603453'
  end: '2026-04-13 07:18:24.342506'
  item:
    ip: 192.168.1.2
    name: Ethernet0
    peer: spine
    prefix: 30
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:23.739053'
  stderr: |-
    /usr/local/lib/python3.11/dist-packages/config/aaa.py:120: SyntaxWarning: "is" with a literal. Did you mean "=="?
      if len(auth_protocol) is 0:
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
changed: [spine] => (item=Ethernet4 -> 192.168.2.1/30) => changed=true
  ansible_loop_var: item
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      config interface ip add Ethernet4 192.168.2.1/30
    '
  delta: '0:00:00.282077'
  end: '2026-04-13 07:18:24.817755'
  item:
    ip: 192.168.2.1
    name: Ethernet4
    peer: leaf2
    prefix: 30
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:24.535678'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>

TASK [sonic_interfaces : Bring up SONiC Ethernet interfaces at kernel level] ****************************************************************************************************************
changed: [spine] => (item=Ethernet0) => changed=true
  ansible_loop_var: item
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      ip link set Ethernet0 up
    '
  delta: '0:00:00.054424'
  end: '2026-04-13 07:18:25.090734'
  item:
    ip: 192.168.1.1
    name: Ethernet0
    peer: leaf1
    prefix: 30
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:25.036310'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
changed: [leaf2] => (item=Ethernet0) => changed=true
  ansible_loop_var: item
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf2 sh -c '
      ip link set Ethernet0 up
    '
  delta: '0:00:00.050540'
  end: '2026-04-13 07:18:25.092143'
  item:
    ip: 192.168.2.2
    name: Ethernet0
    peer: spine
    prefix: 30
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:25.041603'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
changed: [leaf1] => (item=Ethernet0) => changed=true
  ansible_loop_var: item
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf1 sh -c '
      ip link set Ethernet0 up
    '
  delta: '0:00:00.056928'
  end: '2026-04-13 07:18:25.094288'
  item:
    ip: 192.168.1.2
    name: Ethernet0
    peer: spine
    prefix: 30
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:25.037360'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
changed: [spine] => (item=Ethernet4) => changed=true
  ansible_loop_var: item
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      ip link set Ethernet4 up
    '
  delta: '0:00:00.055463'
  end: '2026-04-13 07:18:25.344618'
  item:
    ip: 192.168.2.1
    name: Ethernet4
    peer: leaf2
    prefix: 30
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:25.289155'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>

TASK [sonic_interfaces : Add IP directly on kernel interface (immediate effect)] ************************************************************************************************************
changed: [leaf2] => (item=Ethernet0 -> 192.168.2.2/30) => changed=true
  ansible_loop_var: item
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf2 sh -c '
      ip addr flush dev Ethernet0
      ip addr add 192.168.2.2/30 dev Ethernet0
    '
  delta: '0:00:00.050393'
  end: '2026-04-13 07:18:25.619152'
  item:
    ip: 192.168.2.2
    name: Ethernet0
    peer: spine
    prefix: 30
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:25.568759'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
changed: [spine] => (item=Ethernet0 -> 192.168.1.1/30) => changed=true
  ansible_loop_var: item
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      ip addr flush dev Ethernet0
      ip addr add 192.168.1.1/30 dev Ethernet0
    '
  delta: '0:00:00.055575'
  end: '2026-04-13 07:18:25.618963'
  item:
    ip: 192.168.1.1
    name: Ethernet0
    peer: leaf1
    prefix: 30
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:25.563388'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
changed: [leaf1] => (item=Ethernet0 -> 192.168.1.2/30) => changed=true
  ansible_loop_var: item
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf1 sh -c '
      ip addr flush dev Ethernet0
      ip addr add 192.168.1.2/30 dev Ethernet0
    '
  delta: '0:00:00.053656'
  end: '2026-04-13 07:18:25.619495'
  item:
    ip: 192.168.1.2
    name: Ethernet0
    peer: spine
    prefix: 30
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:25.565839'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
changed: [spine] => (item=Ethernet4 -> 192.168.2.1/30) => changed=true
  ansible_loop_var: item
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      ip addr flush dev Ethernet4
      ip addr add 192.168.2.1/30 dev Ethernet4
    '
  delta: '0:00:00.047765'
  end: '2026-04-13 07:18:25.861759'
  item:
    ip: 192.168.2.1
    name: Ethernet4
    peer: leaf2
    prefix: 30
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:25.813994'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>

TASK [sonic_interfaces : Verify all interface states] ***************************************************************************************************************************************
ok: [leaf1] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf1 sh -c '
      echo "=== ip link ===" && ip link show
      echo "=== ip addr ===" && ip addr show
    '
  delta: '0:00:00.043964'
  end: '2026-04-13 07:18:26.123881'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:26.079917'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    === ip link ===
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: eth0@if919: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    3: Ethernet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    4: Ethernet4: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    5: Ethernet24: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    6: Ethernet28: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    7: Ethernet36: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    8: Ethernet32: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    9: Ethernet40: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    10: Ethernet44: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    11: Ethernet8: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    12: Ethernet12: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    13: Ethernet20: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    14: Ethernet16: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    15: Ethernet52: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    16: Ethernet48: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    17: Ethernet56: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    18: Ethernet60: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    19: Ethernet68: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    20: Ethernet64: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    21: Ethernet72: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    22: Ethernet76: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    23: Ethernet104: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    24: Ethernet108: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    25: Ethernet116: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    26: Ethernet112: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    27: Ethernet124: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    28: Ethernet120: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    29: Ethernet84: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    30: Ethernet80: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    31: Ethernet88: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    32: Ethernet92: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    33: Ethernet100: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    34: Ethernet96: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    35: Bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc noqueue state UP mode DEFAULT group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    36: dummy: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master Bridge state UNKNOWN mode DEFAULT group default qlen 1000
        link/ether 2e:63:67:8c:1c:73 brd ff:ff:ff:ff:ff:ff
    922: eth2@if923: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP mode DEFAULT group default
        link/ether aa:c1:ab:1a:7e:f7 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    925: eth1@if924: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP mode DEFAULT group default
        link/ether aa:c1:ab:27:0c:93 brd ff:ff:ff:ff:ff:ff link-netnsid 2
    === ip addr ===
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0@if919: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet 172.20.20.4/24 brd 172.20.20.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 3fff:172:20:20::4/64 scope global nodad
           valid_lft forever preferred_lft forever
        inet6 fe80::acd8:7dff:fe29:9112/64 scope link
           valid_lft forever preferred_lft forever
    3: Ethernet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.2/30 scope global Ethernet0
           valid_lft forever preferred_lft forever
    4: Ethernet4: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    5: Ethernet24: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    6: Ethernet28: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    7: Ethernet36: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    8: Ethernet32: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    9: Ethernet40: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    10: Ethernet44: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    11: Ethernet8: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    12: Ethernet12: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    13: Ethernet20: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    14: Ethernet16: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    15: Ethernet52: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    16: Ethernet48: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    17: Ethernet56: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    18: Ethernet60: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    19: Ethernet68: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    20: Ethernet64: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    21: Ethernet72: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    22: Ethernet76: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    23: Ethernet104: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    24: Ethernet108: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    25: Ethernet116: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    26: Ethernet112: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    27: Ethernet124: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    28: Ethernet120: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    29: Ethernet84: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    30: Ethernet80: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    31: Ethernet88: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    32: Ethernet92: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    33: Ethernet100: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    34: Ethernet96: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
    35: Bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc noqueue state UP group default qlen 1000
        link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff
        inet6 fe80::acd8:7dff:fe29:9112/64 scope link
           valid_lft forever preferred_lft forever
    36: dummy: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master Bridge state UNKNOWN group default qlen 1000
        link/ether 2e:63:67:8c:1c:73 brd ff:ff:ff:ff:ff:ff
        inet6 fe80::2c63:67ff:fe8c:1c73/64 scope link
           valid_lft forever preferred_lft forever
    922: eth2@if923: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP group default
        link/ether aa:c1:ab:1a:7e:f7 brd ff:ff:ff:ff:ff:ff link-netnsid 1
        inet6 fe80::a8c1:abff:fe1a:7ef7/64 scope link
           valid_lft forever preferred_lft forever
    925: eth1@if924: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP group default
        link/ether aa:c1:ab:27:0c:93 brd ff:ff:ff:ff:ff:ff link-netnsid 2
        inet6 fe80::a8c1:abff:fe27:c93/64 scope link
           valid_lft forever preferred_lft forever
  stdout_lines: <omitted>
ok: [spine] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      echo "=== ip link ===" && ip link show
      echo "=== ip addr ===" && ip addr show
    '
  delta: '0:00:00.048220'
  end: '2026-04-13 07:18:26.124766'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:26.076546'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    === ip link ===
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: eth0@if918: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    3: Ethernet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    4: Ethernet4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    5: Ethernet24: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    6: Ethernet28: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    7: Ethernet36: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    8: Ethernet32: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    9: Ethernet40: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    10: Ethernet44: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    11: Ethernet8: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    12: Ethernet12: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    13: Ethernet20: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    14: Ethernet16: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    15: Ethernet52: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    16: Ethernet48: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    17: Ethernet56: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    18: Ethernet60: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    19: Ethernet68: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    20: Ethernet64: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    21: Ethernet72: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    22: Ethernet76: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    23: Ethernet104: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    24: Ethernet108: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    25: Ethernet116: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    26: Ethernet112: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    27: Ethernet124: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    28: Ethernet120: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    29: Ethernet84: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    30: Ethernet80: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    31: Ethernet88: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    32: Ethernet92: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    33: Ethernet100: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    34: Ethernet96: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    35: Bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc noqueue state UP mode DEFAULT group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    36: dummy: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master Bridge state UNKNOWN mode DEFAULT group default qlen 1000
        link/ether 96:3c:46:85:aa:e5 brd ff:ff:ff:ff:ff:ff
    924: eth1@if925: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP mode DEFAULT group default
        link/ether aa:c1:ab:6a:19:2e brd ff:ff:ff:ff:ff:ff link-netnsid 1
    929: eth2@if928: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP mode DEFAULT group default
        link/ether aa:c1:ab:38:91:c1 brd ff:ff:ff:ff:ff:ff link-netnsid 2
    === ip addr ===
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0@if918: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet 172.20.20.3/24 brd 172.20.20.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 3fff:172:20:20::3/64 scope global nodad
           valid_lft forever preferred_lft forever
        inet6 fe80::64c8:b2ff:fed0:8716/64 scope link
           valid_lft forever preferred_lft forever
    3: Ethernet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.1/30 scope global Ethernet0
           valid_lft forever preferred_lft forever
    4: Ethernet4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
        inet 192.168.2.1/30 scope global Ethernet4
           valid_lft forever preferred_lft forever
    5: Ethernet24: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    6: Ethernet28: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    7: Ethernet36: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    8: Ethernet32: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    9: Ethernet40: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    10: Ethernet44: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    11: Ethernet8: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    12: Ethernet12: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    13: Ethernet20: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    14: Ethernet16: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    15: Ethernet52: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    16: Ethernet48: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    17: Ethernet56: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    18: Ethernet60: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    19: Ethernet68: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    20: Ethernet64: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    21: Ethernet72: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    22: Ethernet76: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    23: Ethernet104: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    24: Ethernet108: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    25: Ethernet116: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    26: Ethernet112: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    27: Ethernet124: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    28: Ethernet120: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    29: Ethernet84: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    30: Ethernet80: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    31: Ethernet88: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    32: Ethernet92: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    33: Ethernet100: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    34: Ethernet96: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
    35: Bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc noqueue state UP group default qlen 1000
        link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff
        inet6 fe80::64c8:b2ff:fed0:8716/64 scope link
           valid_lft forever preferred_lft forever
    36: dummy: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master Bridge state UNKNOWN group default qlen 1000
        link/ether 96:3c:46:85:aa:e5 brd ff:ff:ff:ff:ff:ff
        inet6 fe80::943c:46ff:fe85:aae5/64 scope link
           valid_lft forever preferred_lft forever
    924: eth1@if925: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP group default
        link/ether aa:c1:ab:6a:19:2e brd ff:ff:ff:ff:ff:ff link-netnsid 1
        inet6 fe80::a8c1:abff:fe6a:192e/64 scope link
           valid_lft forever preferred_lft forever
    929: eth2@if928: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP group default
        link/ether aa:c1:ab:38:91:c1 brd ff:ff:ff:ff:ff:ff link-netnsid 2
        inet6 fe80::a8c1:abff:fe38:91c1/64 scope link
           valid_lft forever preferred_lft forever
  stdout_lines: <omitted>
ok: [leaf2] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf2 sh -c '
      echo "=== ip link ===" && ip link show
      echo "=== ip addr ===" && ip addr show
    '
  delta: '0:00:00.043520'
  end: '2026-04-13 07:18:26.125291'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:26.081771'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    === ip link ===
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: eth0@if921: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    3: Ethernet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    4: Ethernet4: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    5: Ethernet24: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    6: Ethernet28: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    7: Ethernet36: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    8: Ethernet32: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    9: Ethernet40: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    10: Ethernet44: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    11: Ethernet8: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    12: Ethernet12: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    13: Ethernet20: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    14: Ethernet16: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    15: Ethernet52: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    16: Ethernet48: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    17: Ethernet56: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    18: Ethernet60: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    19: Ethernet68: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    20: Ethernet64: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    21: Ethernet72: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    22: Ethernet76: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    23: Ethernet104: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    24: Ethernet108: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    25: Ethernet116: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    26: Ethernet112: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    27: Ethernet124: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    28: Ethernet120: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    29: Ethernet84: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    30: Ethernet80: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    31: Ethernet88: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    32: Ethernet92: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    33: Ethernet100: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    34: Ethernet96: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    35: Bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc noqueue state UP mode DEFAULT group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    36: dummy: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master Bridge state UNKNOWN mode DEFAULT group default qlen 1000
        link/ether 1e:ae:25:31:c2:ae brd ff:ff:ff:ff:ff:ff
    926: eth2@if927: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP mode DEFAULT group default
        link/ether aa:c1:ab:83:94:f1 brd ff:ff:ff:ff:ff:ff link-netnsid 2
    928: eth1@if929: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP mode DEFAULT group default
        link/ether aa:c1:ab:26:6e:8f brd ff:ff:ff:ff:ff:ff link-netnsid 1
    === ip addr ===
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0@if921: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet 172.20.20.6/24 brd 172.20.20.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 3fff:172:20:20::6/64 scope global nodad
           valid_lft forever preferred_lft forever
        inet6 fe80::d80f:89ff:fee7:73f7/64 scope link
           valid_lft forever preferred_lft forever
    3: Ethernet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
        inet 192.168.2.2/30 scope global Ethernet0
           valid_lft forever preferred_lft forever
    4: Ethernet4: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    5: Ethernet24: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    6: Ethernet28: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    7: Ethernet36: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    8: Ethernet32: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    9: Ethernet40: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    10: Ethernet44: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    11: Ethernet8: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    12: Ethernet12: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    13: Ethernet20: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    14: Ethernet16: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    15: Ethernet52: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    16: Ethernet48: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    17: Ethernet56: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    18: Ethernet60: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    19: Ethernet68: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    20: Ethernet64: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    21: Ethernet72: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    22: Ethernet76: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    23: Ethernet104: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    24: Ethernet108: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    25: Ethernet116: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    26: Ethernet112: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    27: Ethernet124: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    28: Ethernet120: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    29: Ethernet84: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    30: Ethernet80: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    31: Ethernet88: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    32: Ethernet92: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    33: Ethernet100: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    34: Ethernet96: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
    35: Bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc noqueue state UP group default qlen 1000
        link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff
        inet6 fe80::d80f:89ff:fee7:73f7/64 scope link
           valid_lft forever preferred_lft forever
    36: dummy: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master Bridge state UNKNOWN group default qlen 1000
        link/ether 1e:ae:25:31:c2:ae brd ff:ff:ff:ff:ff:ff
        inet6 fe80::1cae:25ff:fe31:c2ae/64 scope link
           valid_lft forever preferred_lft forever
    926: eth2@if927: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP group default
        link/ether aa:c1:ab:83:94:f1 brd ff:ff:ff:ff:ff:ff link-netnsid 2
        inet6 fe80::a8c1:abff:fe83:94f1/64 scope link
           valid_lft forever preferred_lft forever
    928: eth1@if929: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP group default
        link/ether aa:c1:ab:26:6e:8f brd ff:ff:ff:ff:ff:ff link-netnsid 1
        inet6 fe80::a8c1:abff:fe26:6e8f/64 scope link
           valid_lft forever preferred_lft forever
  stdout_lines: <omitted>

TASK [sonic_interfaces : Print interface state] *********************************************************************************************************************************************
ok: [spine] =>
  iface_output.stdout_lines:
  - === ip link ===
  - '1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000'
  - '    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00'
  - '2: eth0@if918: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default '
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff link-netnsid 0'
  - '3: Ethernet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '4: Ethernet4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '5: Ethernet24: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '6: Ethernet28: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '7: Ethernet36: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '8: Ethernet32: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '9: Ethernet40: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '10: Ethernet44: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '11: Ethernet8: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '12: Ethernet12: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '13: Ethernet20: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '14: Ethernet16: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '15: Ethernet52: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '16: Ethernet48: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '17: Ethernet56: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '18: Ethernet60: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '19: Ethernet68: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '20: Ethernet64: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '21: Ethernet72: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '22: Ethernet76: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '23: Ethernet104: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '24: Ethernet108: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '25: Ethernet116: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '26: Ethernet112: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '27: Ethernet124: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '28: Ethernet120: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '29: Ethernet84: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '30: Ethernet80: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '31: Ethernet88: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '32: Ethernet92: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '33: Ethernet100: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '34: Ethernet96: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '35: Bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc noqueue state UP mode DEFAULT group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '36: dummy: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master Bridge state UNKNOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 96:3c:46:85:aa:e5 brd ff:ff:ff:ff:ff:ff'
  - '924: eth1@if925: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP mode DEFAULT group default '
  - '    link/ether aa:c1:ab:6a:19:2e brd ff:ff:ff:ff:ff:ff link-netnsid 1'
  - '929: eth2@if928: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP mode DEFAULT group default '
  - '    link/ether aa:c1:ab:38:91:c1 brd ff:ff:ff:ff:ff:ff link-netnsid 2'
  - === ip addr ===
  - '1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000'
  - '    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00'
  - '    inet 127.0.0.1/8 scope host lo'
  - '       valid_lft forever preferred_lft forever'
  - '    inet6 ::1/128 scope host '
  - '       valid_lft forever preferred_lft forever'
  - '2: eth0@if918: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default '
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff link-netnsid 0'
  - '    inet 172.20.20.3/24 brd 172.20.20.255 scope global eth0'
  - '       valid_lft forever preferred_lft forever'
  - '    inet6 3fff:172:20:20::3/64 scope global nodad '
  - '       valid_lft forever preferred_lft forever'
  - '    inet6 fe80::64c8:b2ff:fed0:8716/64 scope link '
  - '       valid_lft forever preferred_lft forever'
  - '3: Ethernet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '    inet 192.168.1.1/30 scope global Ethernet0'
  - '       valid_lft forever preferred_lft forever'
  - '4: Ethernet4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '    inet 192.168.2.1/30 scope global Ethernet4'
  - '       valid_lft forever preferred_lft forever'
  - '5: Ethernet24: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '6: Ethernet28: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '7: Ethernet36: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '8: Ethernet32: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '9: Ethernet40: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '10: Ethernet44: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '11: Ethernet8: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '12: Ethernet12: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '13: Ethernet20: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '14: Ethernet16: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '15: Ethernet52: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '16: Ethernet48: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '17: Ethernet56: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '18: Ethernet60: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '19: Ethernet68: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '20: Ethernet64: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '21: Ethernet72: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '22: Ethernet76: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '23: Ethernet104: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '24: Ethernet108: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '25: Ethernet116: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '26: Ethernet112: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '27: Ethernet124: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '28: Ethernet120: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '29: Ethernet84: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '30: Ethernet80: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '31: Ethernet88: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '32: Ethernet92: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '33: Ethernet100: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '34: Ethernet96: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '35: Bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc noqueue state UP group default qlen 1000'
  - '    link/ether 66:c8:b2:d0:87:16 brd ff:ff:ff:ff:ff:ff'
  - '    inet6 fe80::64c8:b2ff:fed0:8716/64 scope link '
  - '       valid_lft forever preferred_lft forever'
  - '36: dummy: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master Bridge state UNKNOWN group default qlen 1000'
  - '    link/ether 96:3c:46:85:aa:e5 brd ff:ff:ff:ff:ff:ff'
  - '    inet6 fe80::943c:46ff:fe85:aae5/64 scope link '
  - '       valid_lft forever preferred_lft forever'
  - '924: eth1@if925: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP group default '
  - '    link/ether aa:c1:ab:6a:19:2e brd ff:ff:ff:ff:ff:ff link-netnsid 1'
  - '    inet6 fe80::a8c1:abff:fe6a:192e/64 scope link '
  - '       valid_lft forever preferred_lft forever'
  - '929: eth2@if928: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP group default '
  - '    link/ether aa:c1:ab:38:91:c1 brd ff:ff:ff:ff:ff:ff link-netnsid 2'
  - '    inet6 fe80::a8c1:abff:fe38:91c1/64 scope link '
  - '       valid_lft forever preferred_lft forever'
ok: [leaf1] =>
  iface_output.stdout_lines:
  - === ip link ===
  - '1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000'
  - '    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00'
  - '2: eth0@if919: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default '
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff link-netnsid 0'
  - '3: Ethernet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '4: Ethernet4: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '5: Ethernet24: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '6: Ethernet28: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '7: Ethernet36: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '8: Ethernet32: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '9: Ethernet40: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '10: Ethernet44: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '11: Ethernet8: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '12: Ethernet12: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '13: Ethernet20: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '14: Ethernet16: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '15: Ethernet52: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '16: Ethernet48: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '17: Ethernet56: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '18: Ethernet60: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '19: Ethernet68: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '20: Ethernet64: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '21: Ethernet72: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '22: Ethernet76: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '23: Ethernet104: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '24: Ethernet108: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '25: Ethernet116: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '26: Ethernet112: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '27: Ethernet124: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '28: Ethernet120: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '29: Ethernet84: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '30: Ethernet80: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '31: Ethernet88: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '32: Ethernet92: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '33: Ethernet100: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '34: Ethernet96: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '35: Bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc noqueue state UP mode DEFAULT group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '36: dummy: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master Bridge state UNKNOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 2e:63:67:8c:1c:73 brd ff:ff:ff:ff:ff:ff'
  - '922: eth2@if923: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP mode DEFAULT group default '
  - '    link/ether aa:c1:ab:1a:7e:f7 brd ff:ff:ff:ff:ff:ff link-netnsid 1'
  - '925: eth1@if924: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP mode DEFAULT group default '
  - '    link/ether aa:c1:ab:27:0c:93 brd ff:ff:ff:ff:ff:ff link-netnsid 2'
  - === ip addr ===
  - '1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000'
  - '    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00'
  - '    inet 127.0.0.1/8 scope host lo'
  - '       valid_lft forever preferred_lft forever'
  - '    inet6 ::1/128 scope host '
  - '       valid_lft forever preferred_lft forever'
  - '2: eth0@if919: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default '
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff link-netnsid 0'
  - '    inet 172.20.20.4/24 brd 172.20.20.255 scope global eth0'
  - '       valid_lft forever preferred_lft forever'
  - '    inet6 3fff:172:20:20::4/64 scope global nodad '
  - '       valid_lft forever preferred_lft forever'
  - '    inet6 fe80::acd8:7dff:fe29:9112/64 scope link '
  - '       valid_lft forever preferred_lft forever'
  - '3: Ethernet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '    inet 192.168.1.2/30 scope global Ethernet0'
  - '       valid_lft forever preferred_lft forever'
  - '4: Ethernet4: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '5: Ethernet24: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '6: Ethernet28: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '7: Ethernet36: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '8: Ethernet32: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '9: Ethernet40: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '10: Ethernet44: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '11: Ethernet8: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '12: Ethernet12: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '13: Ethernet20: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '14: Ethernet16: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '15: Ethernet52: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '16: Ethernet48: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '17: Ethernet56: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '18: Ethernet60: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '19: Ethernet68: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '20: Ethernet64: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '21: Ethernet72: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '22: Ethernet76: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '23: Ethernet104: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '24: Ethernet108: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '25: Ethernet116: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '26: Ethernet112: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '27: Ethernet124: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '28: Ethernet120: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '29: Ethernet84: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '30: Ethernet80: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '31: Ethernet88: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '32: Ethernet92: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '33: Ethernet100: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '34: Ethernet96: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '35: Bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc noqueue state UP group default qlen 1000'
  - '    link/ether ae:d8:7d:29:91:12 brd ff:ff:ff:ff:ff:ff'
  - '    inet6 fe80::acd8:7dff:fe29:9112/64 scope link '
  - '       valid_lft forever preferred_lft forever'
  - '36: dummy: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master Bridge state UNKNOWN group default qlen 1000'
  - '    link/ether 2e:63:67:8c:1c:73 brd ff:ff:ff:ff:ff:ff'
  - '    inet6 fe80::2c63:67ff:fe8c:1c73/64 scope link '
  - '       valid_lft forever preferred_lft forever'
  - '922: eth2@if923: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP group default '
  - '    link/ether aa:c1:ab:1a:7e:f7 brd ff:ff:ff:ff:ff:ff link-netnsid 1'
  - '    inet6 fe80::a8c1:abff:fe1a:7ef7/64 scope link '
  - '       valid_lft forever preferred_lft forever'
  - '925: eth1@if924: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP group default '
  - '    link/ether aa:c1:ab:27:0c:93 brd ff:ff:ff:ff:ff:ff link-netnsid 2'
  - '    inet6 fe80::a8c1:abff:fe27:c93/64 scope link '
  - '       valid_lft forever preferred_lft forever'
ok: [leaf2] =>
  iface_output.stdout_lines:
  - === ip link ===
  - '1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000'
  - '    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00'
  - '2: eth0@if921: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default '
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff link-netnsid 0'
  - '3: Ethernet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '4: Ethernet4: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '5: Ethernet24: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '6: Ethernet28: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '7: Ethernet36: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '8: Ethernet32: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '9: Ethernet40: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '10: Ethernet44: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '11: Ethernet8: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '12: Ethernet12: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '13: Ethernet20: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '14: Ethernet16: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '15: Ethernet52: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '16: Ethernet48: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '17: Ethernet56: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '18: Ethernet60: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '19: Ethernet68: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '20: Ethernet64: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '21: Ethernet72: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '22: Ethernet76: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '23: Ethernet104: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '24: Ethernet108: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '25: Ethernet116: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '26: Ethernet112: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '27: Ethernet124: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '28: Ethernet120: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '29: Ethernet84: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '30: Ethernet80: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '31: Ethernet88: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '32: Ethernet92: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '33: Ethernet100: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '34: Ethernet96: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '35: Bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc noqueue state UP mode DEFAULT group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '36: dummy: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master Bridge state UNKNOWN mode DEFAULT group default qlen 1000'
  - '    link/ether 1e:ae:25:31:c2:ae brd ff:ff:ff:ff:ff:ff'
  - '926: eth2@if927: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP mode DEFAULT group default '
  - '    link/ether aa:c1:ab:83:94:f1 brd ff:ff:ff:ff:ff:ff link-netnsid 2'
  - '928: eth1@if929: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP mode DEFAULT group default '
  - '    link/ether aa:c1:ab:26:6e:8f brd ff:ff:ff:ff:ff:ff link-netnsid 1'
  - === ip addr ===
  - '1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000'
  - '    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00'
  - '    inet 127.0.0.1/8 scope host lo'
  - '       valid_lft forever preferred_lft forever'
  - '    inet6 ::1/128 scope host '
  - '       valid_lft forever preferred_lft forever'
  - '2: eth0@if921: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default '
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff link-netnsid 0'
  - '    inet 172.20.20.6/24 brd 172.20.20.255 scope global eth0'
  - '       valid_lft forever preferred_lft forever'
  - '    inet6 3fff:172:20:20::6/64 scope global nodad '
  - '       valid_lft forever preferred_lft forever'
  - '    inet6 fe80::d80f:89ff:fee7:73f7/64 scope link '
  - '       valid_lft forever preferred_lft forever'
  - '3: Ethernet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc mq state UNKNOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '    inet 192.168.2.2/30 scope global Ethernet0'
  - '       valid_lft forever preferred_lft forever'
  - '4: Ethernet4: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '5: Ethernet24: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '6: Ethernet28: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '7: Ethernet36: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '8: Ethernet32: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '9: Ethernet40: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '10: Ethernet44: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '11: Ethernet8: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '12: Ethernet12: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '13: Ethernet20: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '14: Ethernet16: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '15: Ethernet52: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '16: Ethernet48: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '17: Ethernet56: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '18: Ethernet60: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '19: Ethernet68: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '20: Ethernet64: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '21: Ethernet72: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '22: Ethernet76: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '23: Ethernet104: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '24: Ethernet108: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '25: Ethernet116: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '26: Ethernet112: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '27: Ethernet124: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '28: Ethernet120: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '29: Ethernet84: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '30: Ethernet80: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '31: Ethernet88: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '32: Ethernet92: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '33: Ethernet100: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '34: Ethernet96: <BROADCAST,MULTICAST> mtu 9100 qdisc noop state DOWN group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '35: Bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9100 qdisc noqueue state UP group default qlen 1000'
  - '    link/ether da:0f:89:e7:73:f7 brd ff:ff:ff:ff:ff:ff'
  - '    inet6 fe80::d80f:89ff:fee7:73f7/64 scope link '
  - '       valid_lft forever preferred_lft forever'
  - '36: dummy: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master Bridge state UNKNOWN group default qlen 1000'
  - '    link/ether 1e:ae:25:31:c2:ae brd ff:ff:ff:ff:ff:ff'
  - '    inet6 fe80::1cae:25ff:fe31:c2ae/64 scope link '
  - '       valid_lft forever preferred_lft forever'
  - '926: eth2@if927: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP group default '
  - '    link/ether aa:c1:ab:83:94:f1 brd ff:ff:ff:ff:ff:ff link-netnsid 2'
  - '    inet6 fe80::a8c1:abff:fe83:94f1/64 scope link '
  - '       valid_lft forever preferred_lft forever'
  - '928: eth1@if929: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9122 qdisc noqueue state UP group default '
  - '    link/ether aa:c1:ab:26:6e:8f brd ff:ff:ff:ff:ff:ff link-netnsid 1'
  - '    inet6 fe80::a8c1:abff:fe26:6e8f/64 scope link '
  - '       valid_lft forever preferred_lft forever'

PLAY [Configure eBGP (FRR) on all SONiC nodes] **********************************************************************************************************************************************

TASK [sonic_bgp : Render FRR BGP config from template] **************************************************************************************************************************************
ok: [leaf2] => changed=false
  checksum: 8544b452831e95de0a4f51dd38a1306bb4888c83
  dest: /tmp/frr_bgp_leaf2.conf
  gid: 0
  group: root
  mode: '0644'
  owner: root
  path: /tmp/frr_bgp_leaf2.conf
  size: 1010
  state: file
  uid: 0
ok: [spine] => changed=false
  checksum: a5f7f5e5b761a3d2a457037cc80c5aa04e0809e5
  dest: /tmp/frr_bgp_spine.conf
  gid: 0
  group: root
  mode: '0644'
  owner: root
  path: /tmp/frr_bgp_spine.conf
  size: 1290
  state: file
  uid: 0
ok: [leaf1] => changed=false
  checksum: 3448c2fe376825aa0b4246ea95a6a2f50edd16d1
  dest: /tmp/frr_bgp_leaf1.conf
  gid: 0
  group: root
  mode: '0644'
  owner: root
  path: /tmp/frr_bgp_leaf1.conf
  size: 1010
  state: file
  uid: 0

TASK [sonic_bgp : Ensure /etc/frr exists inside container] **********************************************************************************************************************************
ok: [leaf1] => changed=false
  cmd: docker exec -u root clab-sonic-evpn-leaf1 mkdir -p /etc/frr
  delta: '0:00:00.047683'
  end: '2026-04-13 07:18:27.070774'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:27.023091'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
ok: [leaf2] => changed=false
  cmd: docker exec -u root clab-sonic-evpn-leaf2 mkdir -p /etc/frr
  delta: '0:00:00.037221'
  end: '2026-04-13 07:18:27.070227'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:27.033006'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
ok: [spine] => changed=false
  cmd: docker exec -u root clab-sonic-evpn-spine mkdir -p /etc/frr
  delta: '0:00:00.048801'
  end: '2026-04-13 07:18:27.070235'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:27.021434'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>

TASK [sonic_bgp : Copy rendered config into container via docker cp] ************************************************************************************************************************
changed: [leaf1] => changed=true
  cmd: |-
    docker cp /tmp/frr_bgp_leaf1.conf clab-sonic-evpn-leaf1:/tmp/frr.conf
  delta: '0:00:00.018168'
  end: '2026-04-13 07:18:27.307674'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:27.289506'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
changed: [spine] => changed=true
  cmd: |-
    docker cp /tmp/frr_bgp_spine.conf clab-sonic-evpn-spine:/tmp/frr.conf
  delta: '0:00:00.019293'
  end: '2026-04-13 07:18:27.307239'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:27.287946'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
changed: [leaf2] => changed=true
  cmd: |-
    docker cp /tmp/frr_bgp_leaf2.conf clab-sonic-evpn-leaf2:/tmp/frr.conf
  delta: '0:00:00.017728'
  end: '2026-04-13 07:18:27.310921'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:27.293193'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>

TASK [sonic_bgp : Move config to /etc/frr/frr.conf with correct ownership] ******************************************************************************************************************
changed: [spine] => changed=true
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      cp /tmp/frr.conf /etc/frr/frr.conf
      chown frr:frr /etc/frr/frr.conf
      chmod 640 /etc/frr/frr.conf
    '
  delta: '0:00:00.054127'
  end: '2026-04-13 07:18:27.579617'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:27.525490'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
changed: [leaf2] => changed=true
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf2 sh -c '
      cp /tmp/frr.conf /etc/frr/frr.conf
      chown frr:frr /etc/frr/frr.conf
      chmod 640 /etc/frr/frr.conf
    '
  delta: '0:00:00.048134'
  end: '2026-04-13 07:18:27.579252'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:27.531118'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>
changed: [leaf1] => changed=true
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf1 sh -c '
      cp /tmp/frr.conf /etc/frr/frr.conf
      chown frr:frr /etc/frr/frr.conf
      chmod 640 /etc/frr/frr.conf
    '
  delta: '0:00:00.052560'
  end: '2026-04-13 07:18:27.580170'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:27.527610'
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>

TASK [sonic_bgp : Enable bgpd in FRR daemons file] ******************************************************************************************************************************************
changed: [spine] => changed=true
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      sed -i "s/^bgpd=no/bgpd=yes/" /etc/frr/daemons
      cat /etc/frr/daemons | grep bgpd
    '
  delta: '0:00:00.055733'
  end: '2026-04-13 07:18:27.851478'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:27.795745'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    bgpd=yes
    bgpd_options="   -A 127.0.0.1"
    # bgpd_wrap="/usr/bin/daemonize /usr/bin/mywrapper"
  stdout_lines: <omitted>
changed: [leaf1] => changed=true
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf1 sh -c '
      sed -i "s/^bgpd=no/bgpd=yes/" /etc/frr/daemons
      cat /etc/frr/daemons | grep bgpd
    '
  delta: '0:00:00.053785'
  end: '2026-04-13 07:18:27.851891'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:27.798106'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    bgpd=yes
    bgpd_options="   -A 127.0.0.1"
    # bgpd_wrap="/usr/bin/daemonize /usr/bin/mywrapper"
  stdout_lines: <omitted>
changed: [leaf2] => changed=true
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf2 sh -c '
      sed -i "s/^bgpd=no/bgpd=yes/" /etc/frr/daemons
      cat /etc/frr/daemons | grep bgpd
    '
  delta: '0:00:00.050539'
  end: '2026-04-13 07:18:27.851899'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:27.801360'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    bgpd=yes
    bgpd_options="   -A 127.0.0.1"
    # bgpd_wrap="/usr/bin/daemonize /usr/bin/mywrapper"
  stdout_lines: <omitted>

TASK [sonic_bgp : Show daemons file bgpd line] **********************************************************************************************************************************************
ok: [spine] =>
  daemons_check.stdout_lines:
  - bgpd=yes
  - bgpd_options="   -A 127.0.0.1"
  - '# bgpd_wrap="/usr/bin/daemonize /usr/bin/mywrapper"'
ok: [leaf1] =>
  daemons_check.stdout_lines:
  - bgpd=yes
  - bgpd_options="   -A 127.0.0.1"
  - '# bgpd_wrap="/usr/bin/daemonize /usr/bin/mywrapper"'
ok: [leaf2] =>
  daemons_check.stdout_lines:
  - bgpd=yes
  - bgpd_options="   -A 127.0.0.1"
  - '# bgpd_wrap="/usr/bin/daemonize /usr/bin/mywrapper"'

TASK [sonic_bgp : Detect FRR process manager] ***********************************************************************************************************************************************
ok: [spine] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      if   command -v systemctl    >/dev/null 2>&1; then echo "systemd"
      elif command -v supervisorctl >/dev/null 2>&1; then echo "supervisor"
      else echo "unknown"
      fi
    '
  delta: '0:00:00.055936'
  end: '2026-04-13 07:18:28.148220'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:28.092284'
  stderr: ''
  stderr_lines: <omitted>
  stdout: supervisor
  stdout_lines: <omitted>
ok: [leaf2] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf2 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      if   command -v systemctl    >/dev/null 2>&1; then echo "systemd"
      elif command -v supervisorctl >/dev/null 2>&1; then echo "supervisor"
      else echo "unknown"
      fi
    '
  delta: '0:00:00.050947'
  end: '2026-04-13 07:18:28.147815'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:28.096868'
  stderr: ''
  stderr_lines: <omitted>
  stdout: supervisor
  stdout_lines: <omitted>
ok: [leaf1] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf1 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      if   command -v systemctl    >/dev/null 2>&1; then echo "systemd"
      elif command -v supervisorctl >/dev/null 2>&1; then echo "supervisor"
      else echo "unknown"
      fi
    '
  delta: '0:00:00.056013'
  end: '2026-04-13 07:18:28.148299'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:28.092286'
  stderr: ''
  stderr_lines: <omitted>
  stdout: supervisor
  stdout_lines: <omitted>

TASK [sonic_bgp : Show detected FRR manager] ************************************************************************************************************************************************
ok: [spine] =>
  msg: 'spine -> FRR managed by: supervisor'
ok: [leaf1] =>
  msg: 'leaf1 -> FRR managed by: supervisor'
ok: [leaf2] =>
  msg: 'leaf2 -> FRR managed by: supervisor'

TASK [sonic_bgp : Restart FRR via systemd] **************************************************************************************************************************************************
skipping: [spine] => changed=false
  false_condition: '''systemd'' in frr_manager.stdout'
  skip_reason: Conditional result was False
skipping: [leaf1] => changed=false
  false_condition: '''systemd'' in frr_manager.stdout'
  skip_reason: Conditional result was False
skipping: [leaf2] => changed=false
  false_condition: '''systemd'' in frr_manager.stdout'
  skip_reason: Conditional result was False

TASK [sonic_bgp : Restart FRR via supervisorctl] ********************************************************************************************************************************************
changed: [spine] => changed=true
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      supervisorctl restart bgpd 2>/dev/null ||
      supervisorctl restart frr  2>/dev/null ||
      supervisorctl restart all
    '
  delta: '0:00:01.261441'
  end: '2026-04-13 07:18:29.667730'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:28.406289'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    bgpd: ERROR (not running)
    bgpd: started
  stdout_lines: <omitted>
changed: [leaf1] => changed=true
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf1 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      supervisorctl restart bgpd 2>/dev/null ||
      supervisorctl restart frr  2>/dev/null ||
      supervisorctl restart all
    '
  delta: '0:00:02.023901'
  end: '2026-04-13 07:18:30.431735'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:28.407834'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    bgpd: ERROR (not running)
    bgpd: started
  stdout_lines: <omitted>
changed: [leaf2] => changed=true
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf2 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      supervisorctl restart bgpd 2>/dev/null ||
      supervisorctl restart frr  2>/dev/null ||
      supervisorctl restart all
    '
  delta: '0:00:02.062301'
  end: '2026-04-13 07:18:30.474376'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:28.412075'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    bgpd: ERROR (not running)
    bgpd: started
  stdout_lines: <omitted>

TASK [sonic_bgp : Load FRR config directly via vtysh (works regardless of manager)] *********************************************************************************************************
changed: [leaf1] => changed=true
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf1 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      vtysh -f /etc/frr/frr.conf
    '
  delta: '0:00:00.071254'
  end: '2026-04-13 07:18:30.762469'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:30.691215'
  stderr: |-
    [585|zebra] done
    [584|mgmtd] done
    [601|staticd] done
    [591|bgpd] done
  stderr_lines: <omitted>
  stdout: |-
    [584|mgmtd] sending configuration
    [585|zebra] sending configuration
    [591|bgpd] sending configuration
    [601|staticd] sending configuration
    Waiting for children to finish applying config...
  stdout_lines: <omitted>
changed: [leaf2] => changed=true
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf2 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      vtysh -f /etc/frr/frr.conf
    '
  delta: '0:00:00.068804'
  end: '2026-04-13 07:18:30.763239'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:30.694435'
  stderr: |-
    [585|zebra] done
    [591|bgpd] done
    [584|mgmtd] done
    [601|staticd] done
  stderr_lines: <omitted>
  stdout: |-
    [584|mgmtd] sending configuration
    [585|zebra] sending configuration
    [591|bgpd] sending configuration
    [601|staticd] sending configuration
    Waiting for children to finish applying config...
  stdout_lines: <omitted>
changed: [spine] => changed=true
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      vtysh -f /etc/frr/frr.conf
    '
  delta: '0:00:00.076364'
  end: '2026-04-13 07:18:30.764322'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:30.687958'
  stderr: |-
    [614|zebra] done
    [613|mgmtd] done
    [620|bgpd] done
    [630|staticd] done
  stderr_lines: <omitted>
  stdout: |-
    [613|mgmtd] sending configuration
    [614|zebra] sending configuration
    [620|bgpd] sending configuration
    [630|staticd] sending configuration
    Waiting for children to finish applying config...
  stdout_lines: <omitted>

TASK [sonic_bgp : Wait for FRR to apply config] *********************************************************************************************************************************************
Pausing for 6 seconds
(ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort)
ok: [spine] => changed=false
  delta: 6
  echo: true
  rc: 0
  start: '2026-04-13 07:18:30.802044'
  stderr: ''
  stdout: Paused for 6.0 seconds
  stop: '2026-04-13 07:18:36.803936'
  user_input: ''

PLAY [Verify eBGP sessions are up] **********************************************************************************************************************************************************

TASK [sonic_verify : Get BGP summary from vtysh] ********************************************************************************************************************************************
ok: [leaf1] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf1 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      vtysh -c "show bgp summary"
    '
  delta: '0:00:00.063380'
  end: '2026-04-13 07:18:37.079207'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:37.015827'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |2-

    IPv4 Unicast Summary:
    BGP router identifier 10.0.0.2, local AS number 65001 VRF default vrf-id 0
    BGP table version 6
    RIB entries 11, using 1408 bytes of memory
    Peers 1, using 24 KiB of memory
    Peer groups 1, using 64 bytes of memory

    Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
    192.168.1.1     4      65000        10         9        6    0    0 00:00:05            5        6 spine

    Total number of neighbors 1
  stdout_lines: <omitted>
ok: [spine] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      vtysh -c "show bgp summary"
    '
  delta: '0:00:00.064336'
  end: '2026-04-13 07:18:37.078879'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:37.014543'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |2-

    IPv4 Unicast Summary:
    BGP router identifier 10.0.0.1, local AS number 65000 VRF default vrf-id 0
    BGP table version 6
    RIB entries 11, using 1408 bytes of memory
    Peers 2, using 47 KiB of memory
    Peer groups 1, using 64 bytes of memory

    Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
    192.168.1.2     4      65001         9        10        6    0    0 00:00:05            3        6 leaf1
    192.168.2.2     4      65002         9        10        6    0    0 00:00:05            3        6 leaf2

    Total number of neighbors 2
  stdout_lines: <omitted>
ok: [leaf2] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf2 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      vtysh -c "show bgp summary"
    '
  delta: '0:00:00.058494'
  end: '2026-04-13 07:18:37.078872'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:37.020378'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |2-

    IPv4 Unicast Summary:
    BGP router identifier 10.0.0.3, local AS number 65002 VRF default vrf-id 0
    BGP table version 6
    RIB entries 11, using 1408 bytes of memory
    Peers 1, using 24 KiB of memory
    Peer groups 1, using 64 bytes of memory

    Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
    192.168.2.1     4      65000        10         9        6    0    0 00:00:05            5        6 spine

    Total number of neighbors 1
  stdout_lines: <omitted>

TASK [sonic_verify : Print full BGP summary (raw)] ******************************************************************************************************************************************
ok: [spine] =>
  bgp_summary.stdout_lines:
  - ''
  - 'IPv4 Unicast Summary:'
  - BGP router identifier 10.0.0.1, local AS number 65000 VRF default vrf-id 0
  - BGP table version 6
  - RIB entries 11, using 1408 bytes of memory
  - Peers 2, using 47 KiB of memory
  - Peer groups 1, using 64 bytes of memory
  - ''
  - Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
  - 192.168.1.2     4      65001         9        10        6    0    0 00:00:05            3        6 leaf1
  - 192.168.2.2     4      65002         9        10        6    0    0 00:00:05            3        6 leaf2
  - ''
  - Total number of neighbors 2
ok: [leaf1] =>
  bgp_summary.stdout_lines:
  - ''
  - 'IPv4 Unicast Summary:'
  - BGP router identifier 10.0.0.2, local AS number 65001 VRF default vrf-id 0
  - BGP table version 6
  - RIB entries 11, using 1408 bytes of memory
  - Peers 1, using 24 KiB of memory
  - Peer groups 1, using 64 bytes of memory
  - ''
  - Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
  - 192.168.1.1     4      65000        10         9        6    0    0 00:00:05            5        6 spine
  - ''
  - Total number of neighbors 1
ok: [leaf2] =>
  bgp_summary.stdout_lines:
  - ''
  - 'IPv4 Unicast Summary:'
  - BGP router identifier 10.0.0.3, local AS number 65002 VRF default vrf-id 0
  - BGP table version 6
  - RIB entries 11, using 1408 bytes of memory
  - Peers 1, using 24 KiB of memory
  - Peer groups 1, using 64 bytes of memory
  - ''
  - Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
  - 192.168.2.1     4      65000        10         9        6    0    0 00:00:05            5        6 spine
  - ''
  - Total number of neighbors 1

TASK [sonic_verify : Show BGP IPv4 route table] *********************************************************************************************************************************************
ok: [leaf2] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf2 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      vtysh -c "show ip bgp"
    '
  delta: '0:00:00.057825'
  end: '2026-04-13 07:18:37.382896'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:37.325071'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    BGP table version is 6, local router ID is 10.0.0.3, vrf id 0
    Default local pref 100, local AS 65002
    Status codes:  s suppressed, d damped, h history, u unsorted, * valid, > best, = multipath,
                   i internal, r RIB-failure, S Stale, R Removed
    Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
    Origin codes:  i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found

         Network          Next Hop            Metric LocPrf Weight Path
     *>  10.0.0.1/32      192.168.2.1              0             0 65000 ?
     *>  10.0.0.2/32      192.168.2.1                            0 65000 65001 ?
     *>  10.0.0.3/32      0.0.0.0                  0         32768 ?
     *>  172.20.20.0/24   0.0.0.0                  0         32768 ?
     *                    192.168.2.1              0             0 65000 ?
     *>  192.168.1.0/30   192.168.2.1              0             0 65000 ?
     *>  192.168.2.0/30   0.0.0.0                  0         32768 ?
     *                    192.168.2.1              0             0 65000 ?

    Displayed 6 routes and 8 total paths
  stdout_lines: <omitted>
ok: [spine] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      vtysh -c "show ip bgp"
    '
  delta: '0:00:00.064606'
  end: '2026-04-13 07:18:37.382809'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:37.318203'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    BGP table version is 6, local router ID is 10.0.0.1, vrf id 0
    Default local pref 100, local AS 65000
    Status codes:  s suppressed, d damped, h history, u unsorted, * valid, > best, = multipath,
                   i internal, r RIB-failure, S Stale, R Removed
    Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
    Origin codes:  i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found

         Network          Next Hop            Metric LocPrf Weight Path
     *>  10.0.0.1/32      0.0.0.0                  0         32768 ?
     *>  10.0.0.2/32      192.168.1.2              0             0 65001 ?
     *>  10.0.0.3/32      192.168.2.2              0             0 65002 ?
     *>  172.20.20.0/24   0.0.0.0                  0         32768 ?
     *                    192.168.1.2              0             0 65001 ?
     *                    192.168.2.2              0             0 65002 ?
     *>  192.168.1.0/30   0.0.0.0                  0         32768 ?
     *                    192.168.1.2              0             0 65001 ?
     *>  192.168.2.0/30   0.0.0.0                  0         32768 ?
     *                    192.168.2.2              0             0 65002 ?

    Displayed 6 routes and 10 total paths
  stdout_lines: <omitted>
ok: [leaf1] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf1 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      vtysh -c "show ip bgp"
    '
  delta: '0:00:00.061308'
  end: '2026-04-13 07:18:37.382576'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:37.321268'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    BGP table version is 6, local router ID is 10.0.0.2, vrf id 0
    Default local pref 100, local AS 65001
    Status codes:  s suppressed, d damped, h history, u unsorted, * valid, > best, = multipath,
                   i internal, r RIB-failure, S Stale, R Removed
    Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
    Origin codes:  i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found

         Network          Next Hop            Metric LocPrf Weight Path
     *>  10.0.0.1/32      192.168.1.1              0             0 65000 ?
     *>  10.0.0.2/32      0.0.0.0                  0         32768 ?
     *>  10.0.0.3/32      192.168.1.1                            0 65000 65002 ?
     *>  172.20.20.0/24   0.0.0.0                  0         32768 ?
     *                    192.168.1.1              0             0 65000 ?
     *>  192.168.1.0/30   0.0.0.0                  0         32768 ?
     *                    192.168.1.1              0             0 65000 ?
     *>  192.168.2.0/30   192.168.1.1              0             0 65000 ?

    Displayed 6 routes and 8 total paths
  stdout_lines: <omitted>

TASK [sonic_verify : Print BGP routes] ******************************************************************************************************************************************************
ok: [spine] =>
  bgp_routes.stdout_lines:
  - BGP table version is 6, local router ID is 10.0.0.1, vrf id 0
  - Default local pref 100, local AS 65000
  - 'Status codes:  s suppressed, d damped, h history, u unsorted, * valid, > best, = multipath,'
  - '               i internal, r RIB-failure, S Stale, R Removed'
  - 'Nexthop codes: @NNN nexthop''s vrf id, < announce-nh-self'
  - 'Origin codes:  i - IGP, e - EGP, ? - incomplete'
  - 'RPKI validation codes: V valid, I invalid, N Not found'
  - ''
  - '     Network          Next Hop            Metric LocPrf Weight Path'
  - ' *>  10.0.0.1/32      0.0.0.0                  0         32768 ?'
  - ' *>  10.0.0.2/32      192.168.1.2              0             0 65001 ?'
  - ' *>  10.0.0.3/32      192.168.2.2              0             0 65002 ?'
  - ' *>  172.20.20.0/24   0.0.0.0                  0         32768 ?'
  - ' *                    192.168.1.2              0             0 65001 ?'
  - ' *                    192.168.2.2              0             0 65002 ?'
  - ' *>  192.168.1.0/30   0.0.0.0                  0         32768 ?'
  - ' *                    192.168.1.2              0             0 65001 ?'
  - ' *>  192.168.2.0/30   0.0.0.0                  0         32768 ?'
  - ' *                    192.168.2.2              0             0 65002 ?'
  - ''
  - Displayed 6 routes and 10 total paths
ok: [leaf1] =>
  bgp_routes.stdout_lines:
  - BGP table version is 6, local router ID is 10.0.0.2, vrf id 0
  - Default local pref 100, local AS 65001
  - 'Status codes:  s suppressed, d damped, h history, u unsorted, * valid, > best, = multipath,'
  - '               i internal, r RIB-failure, S Stale, R Removed'
  - 'Nexthop codes: @NNN nexthop''s vrf id, < announce-nh-self'
  - 'Origin codes:  i - IGP, e - EGP, ? - incomplete'
  - 'RPKI validation codes: V valid, I invalid, N Not found'
  - ''
  - '     Network          Next Hop            Metric LocPrf Weight Path'
  - ' *>  10.0.0.1/32      192.168.1.1              0             0 65000 ?'
  - ' *>  10.0.0.2/32      0.0.0.0                  0         32768 ?'
  - ' *>  10.0.0.3/32      192.168.1.1                            0 65000 65002 ?'
  - ' *>  172.20.20.0/24   0.0.0.0                  0         32768 ?'
  - ' *                    192.168.1.1              0             0 65000 ?'
  - ' *>  192.168.1.0/30   0.0.0.0                  0         32768 ?'
  - ' *                    192.168.1.1              0             0 65000 ?'
  - ' *>  192.168.2.0/30   192.168.1.1              0             0 65000 ?'
  - ''
  - Displayed 6 routes and 8 total paths
ok: [leaf2] =>
  bgp_routes.stdout_lines:
  - BGP table version is 6, local router ID is 10.0.0.3, vrf id 0
  - Default local pref 100, local AS 65002
  - 'Status codes:  s suppressed, d damped, h history, u unsorted, * valid, > best, = multipath,'
  - '               i internal, r RIB-failure, S Stale, R Removed'
  - 'Nexthop codes: @NNN nexthop''s vrf id, < announce-nh-self'
  - 'Origin codes:  i - IGP, e - EGP, ? - incomplete'
  - 'RPKI validation codes: V valid, I invalid, N Not found'
  - ''
  - '     Network          Next Hop            Metric LocPrf Weight Path'
  - ' *>  10.0.0.1/32      192.168.2.1              0             0 65000 ?'
  - ' *>  10.0.0.2/32      192.168.2.1                            0 65000 65001 ?'
  - ' *>  10.0.0.3/32      0.0.0.0                  0         32768 ?'
  - ' *>  172.20.20.0/24   0.0.0.0                  0         32768 ?'
  - ' *                    192.168.2.1              0             0 65000 ?'
  - ' *>  192.168.1.0/30   192.168.2.1              0             0 65000 ?'
  - ' *>  192.168.2.0/30   0.0.0.0                  0         32768 ?'
  - ' *                    192.168.2.1              0             0 65000 ?'
  - ''
  - Displayed 6 routes and 8 total paths

TASK [sonic_verify : Show IP route table (kernel)] ******************************************************************************************************************************************
ok: [leaf1] => changed=false
  cmd: docker exec -u root clab-sonic-evpn-leaf1 ip route show
  delta: '0:00:00.045546'
  end: '2026-04-13 07:18:37.670439'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:37.624893'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    default via 172.20.20.1 dev eth0
    10.0.0.1 via 192.168.1.1 dev Ethernet0 proto bgp metric 20
    10.0.0.3 via 192.168.1.1 dev Ethernet0 proto bgp metric 20
    172.20.20.0/24 dev eth0 proto kernel scope link src 172.20.20.4
    192.168.1.0/30 dev Ethernet0 proto kernel scope link src 192.168.1.2
    192.168.2.0/30 via 192.168.1.1 dev Ethernet0 proto bgp metric 20
  stdout_lines: <omitted>
ok: [leaf2] => changed=false
  cmd: docker exec -u root clab-sonic-evpn-leaf2 ip route show
  delta: '0:00:00.042560'
  end: '2026-04-13 07:18:37.670684'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:37.628124'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    default via 172.20.20.1 dev eth0
    10.0.0.1 via 192.168.2.1 dev Ethernet0 proto bgp metric 20
    10.0.0.2 via 192.168.2.1 dev Ethernet0 proto bgp metric 20
    172.20.20.0/24 dev eth0 proto kernel scope link src 172.20.20.6
    192.168.1.0/30 via 192.168.2.1 dev Ethernet0 proto bgp metric 20
    192.168.2.0/30 dev Ethernet0 proto kernel scope link src 192.168.2.2
  stdout_lines: <omitted>
ok: [spine] => changed=false
  cmd: docker exec -u root clab-sonic-evpn-spine ip route show
  delta: '0:00:00.047417'
  end: '2026-04-13 07:18:37.670461'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:37.623044'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    default via 172.20.20.1 dev eth0
    10.0.0.2 via 192.168.1.2 dev Ethernet0 proto bgp metric 20
    10.0.0.3 via 192.168.2.2 dev Ethernet4 proto bgp metric 20
    172.20.20.0/24 dev eth0 proto kernel scope link src 172.20.20.3
    192.168.1.0/30 dev Ethernet0 proto kernel scope link src 192.168.1.1
    192.168.2.0/30 dev Ethernet4 proto kernel scope link src 192.168.2.1
  stdout_lines: <omitted>

TASK [sonic_verify : Print kernel routes] ***************************************************************************************************************************************************
ok: [spine] =>
  kernel_routes.stdout_lines:
  - 'default via 172.20.20.1 dev eth0 '
  - '10.0.0.2 via 192.168.1.2 dev Ethernet0 proto bgp metric 20 '
  - '10.0.0.3 via 192.168.2.2 dev Ethernet4 proto bgp metric 20 '
  - '172.20.20.0/24 dev eth0 proto kernel scope link src 172.20.20.3 '
  - '192.168.1.0/30 dev Ethernet0 proto kernel scope link src 192.168.1.1 '
  - '192.168.2.0/30 dev Ethernet4 proto kernel scope link src 192.168.2.1 '
ok: [leaf1] =>
  kernel_routes.stdout_lines:
  - 'default via 172.20.20.1 dev eth0 '
  - '10.0.0.1 via 192.168.1.1 dev Ethernet0 proto bgp metric 20 '
  - '10.0.0.3 via 192.168.1.1 dev Ethernet0 proto bgp metric 20 '
  - '172.20.20.0/24 dev eth0 proto kernel scope link src 172.20.20.4 '
  - '192.168.1.0/30 dev Ethernet0 proto kernel scope link src 192.168.1.2 '
  - '192.168.2.0/30 via 192.168.1.1 dev Ethernet0 proto bgp metric 20 '
ok: [leaf2] =>
  kernel_routes.stdout_lines:
  - 'default via 172.20.20.1 dev eth0 '
  - '10.0.0.1 via 192.168.2.1 dev Ethernet0 proto bgp metric 20 '
  - '10.0.0.2 via 192.168.2.1 dev Ethernet0 proto bgp metric 20 '
  - '172.20.20.0/24 dev eth0 proto kernel scope link src 172.20.20.6 '
  - '192.168.1.0/30 via 192.168.2.1 dev Ethernet0 proto bgp metric 20 '
  - '192.168.2.0/30 dev Ethernet0 proto kernel scope link src 192.168.2.2 '

TASK [sonic_verify : Check BGP routes exist in kernel (proto bgp)] **************************************************************************************************************************
ok: [leaf2] => changed=false
  cmd: docker exec -u root clab-sonic-evpn-leaf2 ip route show proto bgp
  delta: '0:00:00.052664'
  end: '2026-04-13 07:18:37.967407'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:37.914743'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    10.0.0.1 via 192.168.2.1 dev Ethernet0 metric 20
    10.0.0.2 via 192.168.2.1 dev Ethernet0 metric 20
    192.168.1.0/30 via 192.168.2.1 dev Ethernet0 metric 20
  stdout_lines: <omitted>
ok: [spine] => changed=false
  cmd: docker exec -u root clab-sonic-evpn-spine ip route show proto bgp
  delta: '0:00:00.057841'
  end: '2026-04-13 07:18:37.967008'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:37.909167'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    10.0.0.2 via 192.168.1.2 dev Ethernet0 metric 20
    10.0.0.3 via 192.168.2.2 dev Ethernet4 metric 20
  stdout_lines: <omitted>
ok: [leaf1] => changed=false
  cmd: docker exec -u root clab-sonic-evpn-leaf1 ip route show proto bgp
  delta: '0:00:00.056056'
  end: '2026-04-13 07:18:37.967205'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:37.911149'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    10.0.0.1 via 192.168.1.1 dev Ethernet0 metric 20
    10.0.0.3 via 192.168.1.1 dev Ethernet0 metric 20
    192.168.2.0/30 via 192.168.1.1 dev Ethernet0 metric 20
  stdout_lines: <omitted>

TASK [sonic_verify : Assert BGP routes are installed in kernel] *****************************************************************************************************************************
ok: [spine] => changed=false
  msg: ✅ BGP routes present in kernel on spine
ok: [leaf1] => changed=false
  msg: ✅ BGP routes present in kernel on leaf1
ok: [leaf2] => changed=false
  msg: ✅ BGP routes present in kernel on leaf2

TASK [sonic_verify : Show BGP neighbor state] ***********************************************************************************************************************************************
ok: [leaf1] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf1 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      vtysh -c "show bgp neighbors" | grep -E "BGP state|remote AS|Description"
    '
  delta: '0:00:00.058630'
  end: '2026-04-13 07:18:38.290049'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:38.231419'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    BGP neighbor is 192.168.1.1, remote AS 65000, local AS 65001, external link
     Description: spine
      BGP state = Established, up for 00:00:06
  stdout_lines: <omitted>
ok: [leaf2] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-leaf2 sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      vtysh -c "show bgp neighbors" | grep -E "BGP state|remote AS|Description"
    '
  delta: '0:00:00.059322'
  end: '2026-04-13 07:18:38.290538'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:38.231216'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    BGP neighbor is 192.168.2.1, remote AS 65000, local AS 65002, external link
     Description: spine
      BGP state = Established, up for 00:00:06
  stdout_lines: <omitted>
ok: [spine] => changed=false
  cmd: |-
    docker exec -u root clab-sonic-evpn-spine sh -c '
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      vtysh -c "show bgp neighbors" | grep -E "BGP state|remote AS|Description"
    '
  delta: '0:00:00.064233'
  end: '2026-04-13 07:18:38.290445'
  msg: ''
  rc: 0
  start: '2026-04-13 07:18:38.226212'
  stderr: ''
  stderr_lines: <omitted>
  stdout: |-
    BGP neighbor is 192.168.1.2, remote AS 65001, local AS 65000, external link
     Description: leaf1
      BGP state = Established, up for 00:00:06
    BGP neighbor is 192.168.2.2, remote AS 65002, local AS 65000, external link
     Description: leaf2
      BGP state = Established, up for 00:00:06
  stdout_lines: <omitted>

TASK [sonic_verify : Print BGP neighbor states] *********************************************************************************************************************************************
ok: [spine] =>
  bgp_neighbor_state.stdout_lines:
  - BGP neighbor is 192.168.1.2, remote AS 65001, local AS 65000, external link
  - ' Description: leaf1'
  - '  BGP state = Established, up for 00:00:06'
  - BGP neighbor is 192.168.2.2, remote AS 65002, local AS 65000, external link
  - ' Description: leaf2'
  - '  BGP state = Established, up for 00:00:06'
ok: [leaf1] =>
  bgp_neighbor_state.stdout_lines:
  - BGP neighbor is 192.168.1.1, remote AS 65000, local AS 65001, external link
  - ' Description: spine'
  - '  BGP state = Established, up for 00:00:06'
ok: [leaf2] =>
  bgp_neighbor_state.stdout_lines:
  - BGP neighbor is 192.168.2.1, remote AS 65000, local AS 65002, external link
  - ' Description: spine'
  - '  BGP state = Established, up for 00:00:06'

PLAY RECAP **********************************************************************************************************************************************************************************
leaf1                      : ok=27   changed=8    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0
leaf2                      : ok=27   changed=8    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0
spine                      : ok=28   changed=8    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0



Ansible PLAY RECAP Breakdown

These are the task execution counters for each host at the end of a playbook run.


ok

Tasks that ran successfully — either the system was already in the desired state or the task completed without errors. It includes both tasks that made changes and those that didn't need to.


changed

Tasks that actually modified something on the remote host — like installing a package, editing a config file, restarting a service, etc. This is a subset of ok. A lower changed count on re-runs is a good sign (idempotency working correctly).


skipped

Tasks that were intentionally not run — usually because a when: condition evaluated to false. For example:

yaml
- name: Install on Debian only
  apt: ...
  when: ansible_os_family == "Debian"

If the host is not Debian, that task gets skipped.


Other counters (yours show 0, but good to know)

CounterMeaning
unreachableHost couldn't be SSH'd into
failedTask ran but returned an error
rescuedFailed tasks caught by a rescue: block
ignoredFailed tasks with ignore_errors: yes

Comments