Skip to content

frr-reload.py: removing all interface configuration fails for active interface #20355

@hedrok

Description

@hedrok

Description

When removing all configuration of interface, frr-reload.py runs command no interface eth0 that tries to delete an interface, which gives error.

Version

FRRouting 10.6-dev (r1) on Linux(6.6.117-vyos).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
configured with:
    '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--disable-option-checking' '--disable-silent-rules' '--libdir=${prefix}/lib/x86_64-linux-gnu' '--libexecdir=${prefix}/lib/x86_64-linux-gnu' '--disable-maintainer-mode' '--sbindir=/usr/lib/frr' '--with-vtysh-pager=/usr/bin/pager' '--libdir=/usr/lib/x86_64-linux-gnu/frr' '--with-moduledir=/usr/lib/x86_64-linux-gnu/frr/modules' '--disable-dependency-tracking' '--enable-rpki' '--enable-scripting' '--enable-pim6d' '--disable-grpc' '--disable-address-sanitizer' '--with-libpam' '--enable-doc' '--enable-doc-html' '--enable-snmp' '--enable-fpm' '--disable-protobuf' '--disable-zeromq' '--enable-ospfapi' '--enable-bgp-vnc' '--enable-multipath=256' '--enable-user=frr' '--enable-group=frr' '--enable-vty-group=frrvty' '--enable-configfile-mask=0640' '--enable-logfile-mask=0640' '--enable-pcre2posix' 'build_alias=x86_64-linux-gnu' 'PYTHON=python3'

How to reproduce

Add configuration for interface, reload configuration. Remove all configuration for interface, try to reload configuration.

Commands:

sudo ip link add dum771 type dummy

cat > frr-clean.conf << EOF
frr version 10.6-dev
frr defaults traditional
hostname r1
log syslog notifications
log timestamp precision 3
no log unique-id
service integrated-vtysh-config
!
EOF

cat > frr-with-interfaces.conf << EOF
frr version 10.6-dev
frr defaults traditional
hostname r1
log syslog notifications
log timestamp precision 3
no log unique-id
service integrated-vtysh-config
!
interface dum771
 ip address 10.77.0.1/24
exit
!
EOF

sudo /usr/lib/frr/frr-reload.py --reload frr-with-interfaces.conf

sudo /usr/lib/frr/frr-reload.py --test frr-clean.conf

# shows
# Lines To Delete
# ===============
# no interface dum771

sudo /usr/lib/frr/frr-reload.py --reload frr-clean.conf
# fails

Expected behavior

Reload runs successfully.

Actual behavior

Last command outputs:

Failed to execute no interface dum771
Failed to execute no interface
"no interface" we failed to remove this command
% Configuration failed.

commit failed session-id 15 on Unknown-FD-16 req-id 3 source-ds: candidate target-ds: running validate-only: 0: reason: 'Failed to create cfgdata: only inactive interfaces can be deleted'

Additional context

The behaviour was changed in PR #16723 to fix #15081

This PR deletes comment:

# We cannot do 'no interface' or 'no vrf' in FRR, and so deal with it

Checklist

  • I have searched the open issues for this bug.
  • I have not included sensitive information in this report.

Metadata

Metadata

Assignees

No one assigned

    Labels

    triageNeeds further investigation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions