Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

zebra: Add the support of the Source Addr param of the SRv6 Encapsulation #12261

Merged
merged 11 commits into from
Jan 2, 2024

Conversation

cscarpitta
Copy link
Contributor

In SRv6, the customer packet is encapsulated with an outer IPv6 header and optional SRH. The DA of the outer IPv6 header is set to the first SID from the SID List. The Source address of the IPv6 header is set to an IPv6 address configured by the operator (i.e. the source of the SRv6 tunnel). The configuration of the SRv6 encapsulation source address is missing in FRR.

In this PR, we extend Zebra to support the configuration of the SRv6 encapsulation source address. We added the required vtysh command, topotest, and documentation changes.

The SRv6 encapsulation source address can be configured in FRR using the CLI command shown below:

router(config)# segment-routing
router(config-sr)# srv6
router(config-srv6)# encapsulation
router(config-srv6-encap)# source-address fc00:0:1::1

Note for Linux:

The Linux dataplane implementation already supports the configuration of the SRv6 encapsulation source address. The following iproute2 command can be used to configure the source address. The iproute2 command uses a Generic Netlink message.

# ip sr tunsrc set  fc00:1::1

If the user didn’t set the SRv6 Encapsulation source address, the kernel uses the IPv6 address of the outgoing interface. However, this causes a degradation in the packet forwarding performance for the SRv6 Encapsulation behavior in the Kernel. The degradation has been studied in the SRv6 Performance benchmarking published in https://ieeexplore.ieee.org/document/9311210

Note for SONiC:

The SRv6 Encapsulation Source address is one of the parameters that must be configured in two of the SONiC AppDB tables (SRV6_MY_SID_TABLE, ROUTE_TABLE) in the case of SRv6.

The absence of the source address configuration in SONiC AppDB causes SONiC to crash.

Signed-off-by: Carmine Scarpitta [email protected]

@frrbot frrbot bot added documentation libfrr tests Topotests, make check, etc vtysh zebra labels Nov 4, 2022
@github-actions github-actions bot added the master label Nov 4, 2022
@cscarpitta cscarpitta changed the title zebra: Add the missing Source Addr param for SRv6 Encapulation zebra: Add the missing Source Addr param for SRv6 Encapsulation Nov 4, 2022
@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Nov 4, 2022

Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source / Pull Request: Successful

Building Stage: Failed

OpenBSD 7 amd64 build: Failed (click for details) OpenBSD 7 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI011BUILD/config.log/config.log.gz OpenBSD 7 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI011BUILD/config.status/config.status

Make failed for OpenBSD 7 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI011BUILD/ErrorLog/log_make.txt)

/home/ci/cibuild.8231/frr-source/doc/user/zebra.rst:792: WARNING: duplicate clicmd description of segment-routing, other instance in pathd
/home/ci/cibuild.8231/frr-source/doc/user/zebra.rst:805: WARNING: duplicate clicmd description of locator NAME, other instance in bgp
zebra/kernel_socket.c:1541:11: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror,-Wswitch]
1 error generated.
gmake[1]: *** [Makefile:10211: zebra/kernel_socket.o] Error 1
gmake[1]: Leaving directory '/home/ci/cibuild.8231/frr-source'
gmake[1]: Target 'all-am' not remade because of errors.
gmake: *** [Makefile:6220: all] Error 2
FreeBSD 11 amd64 build: Failed (click for details) FreeBSD 11 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI009BUILD/config.log/config.log.gz FreeBSD 11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI009BUILD/config.status/config.status

Make failed for FreeBSD 11 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI009BUILD/ErrorLog/log_make.txt)

/usr/home/ci/cibuild.8231/frr-source/doc/user/zebra.rst:805: WARNING: duplicate clicmd description of locator NAME, other instance in bgp
zebra/kernel_socket.c: In function 'kernel_update_multi':
zebra/kernel_socket.c:1541:3: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror=switch]
 1541 |   switch (dplane_ctx_get_op(ctx)) {
cc1: all warnings being treated as errors
gmake[1]: *** [Makefile:10211: zebra/kernel_socket.o] Error 1
gmake[1]: Target 'all-am' not remade because of errors.
gmake[1]: Leaving directory '/usr/home/ci/cibuild.8231/frr-source'
gmake: *** [Makefile:6220: all] Error 2
FreeBSD 12 amd64 build: Failed (click for details) FreeBSD 12 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/FBSD12AMD64/config.log/config.log.gz FreeBSD 12 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/FBSD12AMD64/config.status/config.status

Make failed for FreeBSD 12 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/FBSD12AMD64/ErrorLog/log_make.txt)

gmake[1]: Entering directory '/usr/home/ci/cibuild.8231/frr-source'
zebra/kernel_socket.c: In function 'kernel_update_multi':
zebra/kernel_socket.c:1541:3: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror=switch]
cc1: all warnings being treated as errors
gmake[1]: *** [Makefile:10208: zebra/kernel_socket.o] Error 1
gmake[1]: Leaving directory '/usr/home/ci/cibuild.8231/frr-source'
gmake[1]: Target 'all-am' not remade because of errors.
gmake: *** [Makefile:6217: all] Error 2
NetBSD 9 amd64 build: Failed (click for details) NetBSD 9 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI012BUILD/config.status/config.status

Make failed for NetBSD 9 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI012BUILD/ErrorLog/log_make.txt)

/usr/pkg/lib/python3.7/site-packages/sphinx/domains/std.py:638: FutureWarning: 
zebra/kernel_socket.c: In function 'kernel_update_multi':
zebra/kernel_socket.c:1541:3: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror=switch]
cc1: all warnings being treated as errors
gmake[1]: *** [Makefile:10212: zebra/kernel_socket.o] Error 1
ld: warning: libintl.so.1, needed by /usr/pkg/lib/libpython3.7.so, may conflict with libintl.so.8
doc/user/_build/texinfo/frr.texi:5: warning: unrecognized encoding name `UTF-8'.
gmake[1]: Target 'all-am' not remade because of errors.
gmake[1]: Leaving directory '/home/ci/cibuild.8231/frr-source'

NetBSD 9 amd64 build: Unknown Log <config.log.gz>
URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI012BUILD/config.log/config.log.gz

Debian 11 amd64 build: Failed (click for details) Debian 11 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/DEB11AMD64/config.log/config.log.gz

Make failed for Debian 11 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/DEB11AMD64/ErrorLog/log_make.txt)

In file included from ./lib/log.h:32,
zebra/zebra_dplane.c: In function dplane_sr_tunsrc_set:
./lib/zlog.h:120:20: error: format %pI6 expects argument of type struct in6_addr *, but argument 4 has type const struct in6_addr ** [-Werror=format=]
./lib/zlog.h:127:26: note: in expansion of macro _zlog_ecref
zebra/zebra_dplane.c:5072:3: note: in expansion of macro zlog_debug
 5072 |   zlog_debug("init dplane ctx %s: addr %pI6", dplane_op2str(op),
cc1: all warnings being treated as errors
make[1]: *** [Makefile:10212: zebra/zebra_dplane.o] Error 1
doc/user/_build/texinfo/frr.texi:26409: warning: could not find @image file `frr-figures/pathd_general.txt' nor alternate text

Debian 11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/DEB11AMD64/config.status/config.status

Successful on other platforms/tests
  • Redhat 8 amd64 build
  • Debian 10 amd64 build
  • CentOS 7 amd64 build
  • Ubuntu 16.04 arm7 build
  • Ubuntu 22.04 amd64 build
  • Debian 9 amd64 build
  • Ubuntu 18.04 amd64 build
  • Ubuntu 16.04 arm8 build
  • Ubuntu 16.04 amd64 build
  • Redhat 9 amd64 build
  • Ubuntu 20.04 amd64 build
  • Ubuntu 18.04 ppc64le build
  • Ubuntu 18.04 i386 build
  • Ubuntu 18.04 arm7 build
  • Fedora 29 amd64 build
  • Ubuntu 16.04 i386 build
  • Ubuntu 18.04 arm8 build

Warnings Generated during build:

Checkout code: Successful with additional warnings
OpenBSD 7 amd64 build: Failed (click for details) OpenBSD 7 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI011BUILD/config.log/config.log.gz OpenBSD 7 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI011BUILD/config.status/config.status

Make failed for OpenBSD 7 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI011BUILD/ErrorLog/log_make.txt)

/home/ci/cibuild.8231/frr-source/doc/user/zebra.rst:792: WARNING: duplicate clicmd description of segment-routing, other instance in pathd
/home/ci/cibuild.8231/frr-source/doc/user/zebra.rst:805: WARNING: duplicate clicmd description of locator NAME, other instance in bgp
zebra/kernel_socket.c:1541:11: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror,-Wswitch]
1 error generated.
gmake[1]: *** [Makefile:10211: zebra/kernel_socket.o] Error 1
gmake[1]: Leaving directory '/home/ci/cibuild.8231/frr-source'
gmake[1]: Target 'all-am' not remade because of errors.
gmake: *** [Makefile:6220: all] Error 2
FreeBSD 11 amd64 build: Failed (click for details) FreeBSD 11 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI009BUILD/config.log/config.log.gz FreeBSD 11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI009BUILD/config.status/config.status

Make failed for FreeBSD 11 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI009BUILD/ErrorLog/log_make.txt)

/usr/home/ci/cibuild.8231/frr-source/doc/user/zebra.rst:805: WARNING: duplicate clicmd description of locator NAME, other instance in bgp
zebra/kernel_socket.c: In function 'kernel_update_multi':
zebra/kernel_socket.c:1541:3: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror=switch]
 1541 |   switch (dplane_ctx_get_op(ctx)) {
cc1: all warnings being treated as errors
gmake[1]: *** [Makefile:10211: zebra/kernel_socket.o] Error 1
gmake[1]: Target 'all-am' not remade because of errors.
gmake[1]: Leaving directory '/usr/home/ci/cibuild.8231/frr-source'
gmake: *** [Makefile:6220: all] Error 2
FreeBSD 12 amd64 build: Failed (click for details) FreeBSD 12 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/FBSD12AMD64/config.log/config.log.gz FreeBSD 12 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/FBSD12AMD64/config.status/config.status

Make failed for FreeBSD 12 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/FBSD12AMD64/ErrorLog/log_make.txt)

gmake[1]: Entering directory '/usr/home/ci/cibuild.8231/frr-source'
zebra/kernel_socket.c: In function 'kernel_update_multi':
zebra/kernel_socket.c:1541:3: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror=switch]
cc1: all warnings being treated as errors
gmake[1]: *** [Makefile:10208: zebra/kernel_socket.o] Error 1
gmake[1]: Leaving directory '/usr/home/ci/cibuild.8231/frr-source'
gmake[1]: Target 'all-am' not remade because of errors.
gmake: *** [Makefile:6217: all] Error 2
NetBSD 9 amd64 build: Failed (click for details) NetBSD 9 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI012BUILD/config.status/config.status

Make failed for NetBSD 9 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI012BUILD/ErrorLog/log_make.txt)

/usr/pkg/lib/python3.7/site-packages/sphinx/domains/std.py:638: FutureWarning: 
zebra/kernel_socket.c: In function 'kernel_update_multi':
zebra/kernel_socket.c:1541:3: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror=switch]
cc1: all warnings being treated as errors
gmake[1]: *** [Makefile:10212: zebra/kernel_socket.o] Error 1
ld: warning: libintl.so.1, needed by /usr/pkg/lib/libpython3.7.so, may conflict with libintl.so.8
doc/user/_build/texinfo/frr.texi:5: warning: unrecognized encoding name `UTF-8'.
gmake[1]: Target 'all-am' not remade because of errors.
gmake[1]: Leaving directory '/home/ci/cibuild.8231/frr-source'

NetBSD 9 amd64 build: Unknown Log <config.log.gz>
URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/CI012BUILD/config.log/config.log.gz

Debian 11 amd64 build: Failed (click for details) Debian 11 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/DEB11AMD64/config.log/config.log.gz

Make failed for Debian 11 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/DEB11AMD64/ErrorLog/log_make.txt)

In file included from ./lib/log.h:32,
zebra/zebra_dplane.c: In function dplane_sr_tunsrc_set:
./lib/zlog.h:120:20: error: format %pI6 expects argument of type struct in6_addr *, but argument 4 has type const struct in6_addr ** [-Werror=format=]
./lib/zlog.h:127:26: note: in expansion of macro _zlog_ecref
zebra/zebra_dplane.c:5072:3: note: in expansion of macro zlog_debug
 5072 |   zlog_debug("init dplane ctx %s: addr %pI6", dplane_op2str(op),
cc1: all warnings being treated as errors
make[1]: *** [Makefile:10212: zebra/zebra_dplane.o] Error 1
doc/user/_build/texinfo/frr.texi:26409: warning: could not find @image file `frr-figures/pathd_general.txt' nor alternate text

Debian 11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8231/artifact/DEB11AMD64/config.status/config.status

<stdin>:264: trailing whitespace.
    
<stdin>:293: trailing whitespace.
    
<stdin>:322: trailing whitespace.
    
warning: 3 lines add whitespace errors.
Report for zebra_srv6_vty.c | 8 issues
===============================================
< WARNING: line over 80 characters
< #118: FILE: /tmp/f1-2078791/zebra_srv6_vty.c:118:
< WARNING: line over 80 characters
< #125: FILE: /tmp/f1-2078791/zebra_srv6_vty.c:125:
< WARNING: line over 80 characters
< #126: FILE: /tmp/f1-2078791/zebra_srv6_vty.c:126:
< WARNING: line over 80 characters
< #177: FILE: /tmp/f1-2078791/zebra_srv6_vty.c:177:

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Nov 4, 2022

Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source / Pull Request: Successful

Building Stage: Failed

OpenBSD 7 amd64 build: Failed (click for details) OpenBSD 7 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI011BUILD/config.log/config.log.gz OpenBSD 7 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI011BUILD/config.status/config.status

Make failed for OpenBSD 7 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI011BUILD/ErrorLog/log_make.txt)

/home/ci/cibuild.8232/frr-source/doc/user/zebra.rst:792: WARNING: duplicate clicmd description of segment-routing, other instance in pathd
/home/ci/cibuild.8232/frr-source/doc/user/zebra.rst:805: WARNING: duplicate clicmd description of locator NAME, other instance in bgp
zebra/kernel_socket.c:1541:11: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror,-Wswitch]
1 error generated.
gmake[1]: *** [Makefile:10211: zebra/kernel_socket.o] Error 1
gmake[1]: Leaving directory '/home/ci/cibuild.8232/frr-source'
gmake[1]: Target 'all-am' not remade because of errors.
gmake: *** [Makefile:6220: all] Error 2
FreeBSD 11 amd64 build: Failed (click for details) FreeBSD 11 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI009BUILD/config.log/config.log.gz FreeBSD 11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI009BUILD/config.status/config.status

Make failed for FreeBSD 11 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI009BUILD/ErrorLog/log_make.txt)

/usr/home/ci/cibuild.8232/frr-source/doc/user/zebra.rst:805: WARNING: duplicate clicmd description of locator NAME, other instance in bgp
zebra/kernel_socket.c: In function 'kernel_update_multi':
zebra/kernel_socket.c:1541:3: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror=switch]
 1541 |   switch (dplane_ctx_get_op(ctx)) {
cc1: all warnings being treated as errors
gmake[1]: *** [Makefile:10211: zebra/kernel_socket.o] Error 1
gmake[1]: Leaving directory '/usr/home/ci/cibuild.8232/frr-source'
gmake[1]: Target 'all-am' not remade because of errors.
gmake: *** [Makefile:6220: all] Error 2
NetBSD 9 amd64 build: Failed (click for details) NetBSD 9 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI012BUILD/config.status/config.status

Make failed for NetBSD 9 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI012BUILD/ErrorLog/log_make.txt)

gmake[1]: Entering directory '/home/ci/cibuild.8232/frr-source'
zebra/kernel_socket.c: In function 'kernel_update_multi':
zebra/kernel_socket.c:1541:3: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror=switch]
cc1: all warnings being treated as errors
gmake[1]: *** [Makefile:10212: zebra/kernel_socket.o] Error 1
ld: warning: libintl.so.1, needed by /usr/pkg/lib/libpython3.7.so, may conflict with libintl.so.8
doc/user/_build/texinfo/frr.texi:5: warning: unrecognized encoding name `UTF-8'.
doc/user/_build/texinfo/frr.texi:17734: warning: @image file `frr-figures/fig-normal-processing.txt' (for text) unreadable: No such file or directory.
doc/user/_build/texinfo/frr.texi:17744: warning: @image file `frr-figures/fig_topologies_full.txt' (for text) unreadable: No such file or directory.

NetBSD 9 amd64 build: Unknown Log <config.log.gz>
URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI012BUILD/config.log/config.log.gz

FreeBSD 12 amd64 build: Failed (click for details) FreeBSD 12 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/FBSD12AMD64/config.log/config.log.gz FreeBSD 12 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/FBSD12AMD64/config.status/config.status

Make failed for FreeBSD 12 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/FBSD12AMD64/ErrorLog/log_make.txt)

gmake[1]: Entering directory '/usr/home/ci/cibuild.8232/frr-source'
zebra/kernel_socket.c: In function 'kernel_update_multi':
zebra/kernel_socket.c:1541:3: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror=switch]
cc1: all warnings being treated as errors
gmake[1]: *** [Makefile:10208: zebra/kernel_socket.o] Error 1
gmake[1]: Target 'all-am' not remade because of errors.
gmake[1]: Leaving directory '/usr/home/ci/cibuild.8232/frr-source'
gmake: *** [Makefile:6217: all] Error 2
Debian 11 amd64 build: Failed (click for details) Debian 11 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/DEB11AMD64/config.log/config.log.gz

Make failed for Debian 11 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/DEB11AMD64/ErrorLog/log_make.txt)

In file included from ./lib/log.h:32,
zebra/zebra_dplane.c: In function dplane_sr_tunsrc_set:
./lib/zlog.h:120:20: error: format %pI6 expects argument of type struct in6_addr *, but argument 4 has type const struct in6_addr ** [-Werror=format=]
./lib/zlog.h:127:26: note: in expansion of macro _zlog_ecref
zebra/zebra_dplane.c:5072:3: note: in expansion of macro zlog_debug
 5072 |   zlog_debug("init dplane ctx %s: addr %pI6", dplane_op2str(op),
cc1: all warnings being treated as errors
make[1]: *** [Makefile:10212: zebra/zebra_dplane.o] Error 1
doc/user/_build/texinfo/frr.texi:26409: warning: could not find @image file `frr-figures/pathd_general.txt' nor alternate text

Debian 11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/DEB11AMD64/config.status/config.status

Successful on other platforms/tests
  • Redhat 8 amd64 build
  • Debian 10 amd64 build
  • Ubuntu 16.04 arm7 build
  • CentOS 7 amd64 build
  • Ubuntu 18.04 i386 build
  • Ubuntu 18.04 amd64 build
  • Ubuntu 22.04 amd64 build
  • Debian 9 amd64 build
  • Ubuntu 16.04 arm8 build
  • Redhat 9 amd64 build
  • Ubuntu 20.04 amd64 build
  • Ubuntu 16.04 amd64 build
  • Ubuntu 18.04 ppc64le build
  • Ubuntu 16.04 i386 build
  • Fedora 29 amd64 build
  • Ubuntu 18.04 arm7 build
  • Ubuntu 18.04 arm8 build

Warnings Generated during build:

Checkout code: Successful with additional warnings
OpenBSD 7 amd64 build: Failed (click for details) OpenBSD 7 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI011BUILD/config.log/config.log.gz OpenBSD 7 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI011BUILD/config.status/config.status

Make failed for OpenBSD 7 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI011BUILD/ErrorLog/log_make.txt)

/home/ci/cibuild.8232/frr-source/doc/user/zebra.rst:792: WARNING: duplicate clicmd description of segment-routing, other instance in pathd
/home/ci/cibuild.8232/frr-source/doc/user/zebra.rst:805: WARNING: duplicate clicmd description of locator NAME, other instance in bgp
zebra/kernel_socket.c:1541:11: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror,-Wswitch]
1 error generated.
gmake[1]: *** [Makefile:10211: zebra/kernel_socket.o] Error 1
gmake[1]: Leaving directory '/home/ci/cibuild.8232/frr-source'
gmake[1]: Target 'all-am' not remade because of errors.
gmake: *** [Makefile:6220: all] Error 2
FreeBSD 11 amd64 build: Failed (click for details) FreeBSD 11 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI009BUILD/config.log/config.log.gz FreeBSD 11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI009BUILD/config.status/config.status

Make failed for FreeBSD 11 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI009BUILD/ErrorLog/log_make.txt)

/usr/home/ci/cibuild.8232/frr-source/doc/user/zebra.rst:805: WARNING: duplicate clicmd description of locator NAME, other instance in bgp
zebra/kernel_socket.c: In function 'kernel_update_multi':
zebra/kernel_socket.c:1541:3: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror=switch]
 1541 |   switch (dplane_ctx_get_op(ctx)) {
cc1: all warnings being treated as errors
gmake[1]: *** [Makefile:10211: zebra/kernel_socket.o] Error 1
gmake[1]: Leaving directory '/usr/home/ci/cibuild.8232/frr-source'
gmake[1]: Target 'all-am' not remade because of errors.
gmake: *** [Makefile:6220: all] Error 2
NetBSD 9 amd64 build: Failed (click for details) NetBSD 9 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI012BUILD/config.status/config.status

Make failed for NetBSD 9 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI012BUILD/ErrorLog/log_make.txt)

gmake[1]: Entering directory '/home/ci/cibuild.8232/frr-source'
zebra/kernel_socket.c: In function 'kernel_update_multi':
zebra/kernel_socket.c:1541:3: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror=switch]
cc1: all warnings being treated as errors
gmake[1]: *** [Makefile:10212: zebra/kernel_socket.o] Error 1
ld: warning: libintl.so.1, needed by /usr/pkg/lib/libpython3.7.so, may conflict with libintl.so.8
doc/user/_build/texinfo/frr.texi:5: warning: unrecognized encoding name `UTF-8'.
doc/user/_build/texinfo/frr.texi:17734: warning: @image file `frr-figures/fig-normal-processing.txt' (for text) unreadable: No such file or directory.
doc/user/_build/texinfo/frr.texi:17744: warning: @image file `frr-figures/fig_topologies_full.txt' (for text) unreadable: No such file or directory.

NetBSD 9 amd64 build: Unknown Log <config.log.gz>
URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/CI012BUILD/config.log/config.log.gz

FreeBSD 12 amd64 build: Failed (click for details) FreeBSD 12 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/FBSD12AMD64/config.log/config.log.gz FreeBSD 12 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/FBSD12AMD64/config.status/config.status

Make failed for FreeBSD 12 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/FBSD12AMD64/ErrorLog/log_make.txt)

gmake[1]: Entering directory '/usr/home/ci/cibuild.8232/frr-source'
zebra/kernel_socket.c: In function 'kernel_update_multi':
zebra/kernel_socket.c:1541:3: error: enumeration value 'DPLANE_OP_SR_TUNSRC_SET' not handled in switch [-Werror=switch]
cc1: all warnings being treated as errors
gmake[1]: *** [Makefile:10208: zebra/kernel_socket.o] Error 1
gmake[1]: Target 'all-am' not remade because of errors.
gmake[1]: Leaving directory '/usr/home/ci/cibuild.8232/frr-source'
gmake: *** [Makefile:6217: all] Error 2
Debian 11 amd64 build: Failed (click for details) Debian 11 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/DEB11AMD64/config.log/config.log.gz

Make failed for Debian 11 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/DEB11AMD64/ErrorLog/log_make.txt)

In file included from ./lib/log.h:32,
zebra/zebra_dplane.c: In function dplane_sr_tunsrc_set:
./lib/zlog.h:120:20: error: format %pI6 expects argument of type struct in6_addr *, but argument 4 has type const struct in6_addr ** [-Werror=format=]
./lib/zlog.h:127:26: note: in expansion of macro _zlog_ecref
zebra/zebra_dplane.c:5072:3: note: in expansion of macro zlog_debug
 5072 |   zlog_debug("init dplane ctx %s: addr %pI6", dplane_op2str(op),
cc1: all warnings being treated as errors
make[1]: *** [Makefile:10212: zebra/zebra_dplane.o] Error 1
doc/user/_build/texinfo/frr.texi:26409: warning: could not find @image file `frr-figures/pathd_general.txt' nor alternate text

Debian 11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8232/artifact/DEB11AMD64/config.status/config.status

<stdin>:264: trailing whitespace.
    
<stdin>:293: trailing whitespace.
    
<stdin>:322: trailing whitespace.
    
warning: 3 lines add whitespace errors.
Report for zebra_srv6_vty.c | 4 issues
===============================================
< WARNING: line over 80 characters
< #177: FILE: /tmp/f1-2129825/zebra_srv6_vty.c:177:
< WARNING: line over 80 characters
< #178: FILE: /tmp/f1-2129825/zebra_srv6_vty.c:178:

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Nov 4, 2022

Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8234/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source / Pull Request: Successful

Building Stage: Failed

Debian 11 amd64 build: Failed (click for details) Debian 11 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8234/artifact/DEB11AMD64/config.log/config.log.gz

Make failed for Debian 11 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8234/artifact/DEB11AMD64/ErrorLog/log_make.txt)

In file included from ./lib/log.h:32,
zebra/zebra_dplane.c: In function dplane_sr_tunsrc_set:
./lib/zlog.h:120:20: error: format %pI6 expects argument of type struct in6_addr *, but argument 4 has type const struct in6_addr ** [-Werror=format=]
./lib/zlog.h:127:26: note: in expansion of macro _zlog_ecref
zebra/zebra_dplane.c:5072:3: note: in expansion of macro zlog_debug
 5072 |   zlog_debug("init dplane ctx %s: addr %pI6", dplane_op2str(op),
cc1: all warnings being treated as errors
make[1]: *** [Makefile:10212: zebra/zebra_dplane.o] Error 1
doc/user/_build/texinfo/frr.texi:26409: warning: could not find @image file `frr-figures/pathd_general.txt' nor alternate text

Debian 11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8234/artifact/DEB11AMD64/config.status/config.status

Successful on other platforms/tests
  • Redhat 9 amd64 build
  • Debian 10 amd64 build
  • Ubuntu 16.04 arm7 build
  • FreeBSD 11 amd64 build
  • Ubuntu 16.04 i386 build
  • Ubuntu 16.04 arm8 build
  • Ubuntu 18.04 amd64 build
  • Ubuntu 18.04 i386 build
  • Ubuntu 20.04 amd64 build
  • NetBSD 9 amd64 build
  • OpenBSD 7 amd64 build
  • Ubuntu 16.04 amd64 build
  • CentOS 7 amd64 build
  • Debian 9 amd64 build
  • Redhat 8 amd64 build
  • Ubuntu 18.04 ppc64le build
  • Ubuntu 22.04 amd64 build
  • FreeBSD 12 amd64 build
  • Fedora 29 amd64 build
  • Ubuntu 18.04 arm7 build
  • Ubuntu 18.04 arm8 build

Warnings Generated during build:

Checkout code: Successful with additional warnings
Debian 11 amd64 build: Failed (click for details) Debian 11 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8234/artifact/DEB11AMD64/config.log/config.log.gz

Make failed for Debian 11 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8234/artifact/DEB11AMD64/ErrorLog/log_make.txt)

In file included from ./lib/log.h:32,
zebra/zebra_dplane.c: In function dplane_sr_tunsrc_set:
./lib/zlog.h:120:20: error: format %pI6 expects argument of type struct in6_addr *, but argument 4 has type const struct in6_addr ** [-Werror=format=]
./lib/zlog.h:127:26: note: in expansion of macro _zlog_ecref
zebra/zebra_dplane.c:5072:3: note: in expansion of macro zlog_debug
 5072 |   zlog_debug("init dplane ctx %s: addr %pI6", dplane_op2str(op),
cc1: all warnings being treated as errors
make[1]: *** [Makefile:10212: zebra/zebra_dplane.o] Error 1
doc/user/_build/texinfo/frr.texi:26409: warning: could not find @image file `frr-figures/pathd_general.txt' nor alternate text

Debian 11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8234/artifact/DEB11AMD64/config.status/config.status

<stdin>:264: trailing whitespace.
    
<stdin>:293: trailing whitespace.
    
<stdin>:322: trailing whitespace.
    
warning: 3 lines add whitespace errors.
Report for zebra_srv6_vty.c | 4 issues
===============================================
< WARNING: line over 80 characters
< #177: FILE: /tmp/f1-2394715/zebra_srv6_vty.c:177:
< WARNING: line over 80 characters
< #178: FILE: /tmp/f1-2394715/zebra_srv6_vty.c:178:

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Nov 4, 2022

Continuous Integration Result: SUCCESSFUL

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8235/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Warnings Generated during build:

Checkout code: Successful with additional warnings
<stdin>:264: trailing whitespace.
    
<stdin>:293: trailing whitespace.
    
<stdin>:322: trailing whitespace.
    
warning: 3 lines add whitespace errors.
Report for zebra_srv6_vty.c | 4 issues
===============================================
< WARNING: line over 80 characters
< #177: FILE: /tmp/f1-2672453/zebra_srv6_vty.c:177:
< WARNING: line over 80 characters
< #178: FILE: /tmp/f1-2672453/zebra_srv6_vty.c:178:

Copy link
Member

@ton31337 ton31337 left a comment

Choose a reason for hiding this comment

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

Some nits.

doc/user/zebra.rst Outdated Show resolved Hide resolved
zebra/ge_netlink.c Outdated Show resolved Hide resolved
zebra/ge_netlink.c Outdated Show resolved Hide resolved
zebra/ge_netlink.c Outdated Show resolved Hide resolved
zebra/kernel_netlink.c Outdated Show resolved Hide resolved
zebra/zebra_srv6.c Show resolved Hide resolved
zebra/zebra_srv6_vty.c Outdated Show resolved Hide resolved
zebra/zebra_srv6_vty.c Outdated Show resolved Hide resolved
zebra/zebra_srv6_vty.c Outdated Show resolved Hide resolved
zebra/zebra_srv6_vty.c Outdated Show resolved Hide resolved
@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Nov 7, 2022

Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source / Pull Request: Successful

Building Stage: Failed

FreeBSD 11 amd64 build: Failed (click for details) FreeBSD 11 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI009BUILD/config.log/config.log.gz FreeBSD 11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI009BUILD/config.status/config.status

Make failed for FreeBSD 11 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI009BUILD/ErrorLog/log_make.txt)

gmake[1]: Entering directory '/usr/home/ci/cibuild.8254/frr-source'
In file included from ./zebra/zebra_dplane.h:34,
./zebra/ge_netlink.h:24:10: fatal error: linux/genetlink.h: No such file or directory
compilation terminated.
gmake[1]: *** [Makefile:10228: zebra/zebra_fpm.lo] Error 1
/usr/home/ci/cibuild.8254/frr-source/doc/user/isisd.rst:43: WARNING: duplicate clicmd description of net XX.XXXX. ... .XXX.XX, other instance in fabricd
/usr/home/ci/cibuild.8254/frr-source/doc/user/isisd.rst:53: WARNING: duplicate clicmd description of domain-password [clear | md5] <password>, other instance in fabricd
/usr/home/ci/cibuild.8254/frr-source/doc/user/isisd.rst:58: WARNING: duplicate clicmd description of attached-bit [receive ignore | send], other instance in fabricd
/usr/home/ci/cibuild.8254/frr-source/doc/user/isisd.rst:67: WARNING: duplicate clicmd description of log-adjacency-changes, other instance in fabricd
NetBSD 9 amd64 build: Failed (click for details) NetBSD 9 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI012BUILD/config.status/config.status

Make failed for NetBSD 9 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI012BUILD/ErrorLog/log_make.txt)

gmake[1]: Entering directory '/home/ci/cibuild.8254/frr-source'
In file included from ./zebra/zebra_dplane.h:34:0,
./zebra/ge_netlink.h:24:10: fatal error: linux/genetlink.h: No such file or directory
 #include <linux/genetlink.h>
compilation terminated.
gmake[1]: *** [Makefile:10229: zebra/zebra_fpm.lo] Error 1
/home/ci/cibuild.8254/frr-source/doc/user/pbr.rst:31: WARNING: duplicate label nexthop-groups, other instance in /home/ci/cibuild.8254/frr-source/doc/user/nexthop_groups.rst
In file included from ./zebra/zebra_dplane.h:34:0,
./zebra/ge_netlink.h:24:10: fatal error: linux/genetlink.h: No such file or directory

NetBSD 9 amd64 build: Unknown Log <config.log.gz>
URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI012BUILD/config.log/config.log.gz

OpenBSD 7 amd64 build: Failed (click for details) OpenBSD 7 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI011BUILD/config.log/config.log.gz OpenBSD 7 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI011BUILD/config.status/config.status

Make failed for OpenBSD 7 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI011BUILD/ErrorLog/log_make.txt)

In file included from zebra/zebra_vxlan.h:38:
In file included from ./zebra/zebra_dplane.h:34:
./zebra/ge_netlink.h:24:10: fatal error: 'linux/genetlink.h' file not found
#include <linux/genetlink.h>
1 error generated.
gmake[1]: *** [Makefile:10228: zebra/zebra_fpm.lo] Error 1
In file included from zebra/if_ioctl.c:39:
In file included from ./zebra/rt.h:32:
In file included from ./zebra/zebra_dplane.h:34:
FreeBSD 12 amd64 build: Failed (click for details) FreeBSD 12 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/FBSD12AMD64/config.log/config.log.gz FreeBSD 12 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/FBSD12AMD64/config.status/config.status

Make failed for FreeBSD 12 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/FBSD12AMD64/ErrorLog/log_make.txt)

gmake[1]: Entering directory '/usr/home/ci/cibuild.8254/frr-source'
In file included from ./zebra/zebra_dplane.h:34:0,
./zebra/ge_netlink.h:24:10: fatal error: linux/genetlink.h: No such file or directory
 #include <linux/genetlink.h>
compilation terminated.
gmake[1]: *** [Makefile:10225: zebra/zebra_fpm.lo] Error 1
/usr/home/ci/cibuild.8254/frr-source/doc/user/pbr.rst:49: WARNING: duplicate label nexthop-groups, other instance in /usr/home/ci/cibuild.8254/frr-source/doc/user/nexthop_groups.rst
In file included from ./zebra/zebra_dplane.h:34:0,
./zebra/ge_netlink.h:24:10: fatal error: linux/genetlink.h: No such file or directory
Successful on other platforms/tests
  • Ubuntu 20.04 amd64 build
  • Ubuntu 22.04 amd64 build
  • Ubuntu 18.04 arm8 build
  • Debian 9 amd64 build
  • Ubuntu 18.04 ppc64le build
  • Fedora 29 amd64 build
  • Debian 10 amd64 build
  • Ubuntu 16.04 arm7 build
  • Ubuntu 18.04 arm7 build
  • CentOS 7 amd64 build
  • Ubuntu 16.04 i386 build
  • Ubuntu 16.04 arm8 build
  • Redhat 9 amd64 build
  • Ubuntu 18.04 amd64 build
  • Debian 11 amd64 build
  • Ubuntu 16.04 amd64 build
  • Redhat 8 amd64 build
  • Ubuntu 18.04 i386 build

Warnings Generated during build:

Checkout code: Successful with additional warnings
FreeBSD 11 amd64 build: Failed (click for details) FreeBSD 11 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI009BUILD/config.log/config.log.gz FreeBSD 11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI009BUILD/config.status/config.status

Make failed for FreeBSD 11 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI009BUILD/ErrorLog/log_make.txt)

gmake[1]: Entering directory '/usr/home/ci/cibuild.8254/frr-source'
In file included from ./zebra/zebra_dplane.h:34,
./zebra/ge_netlink.h:24:10: fatal error: linux/genetlink.h: No such file or directory
compilation terminated.
gmake[1]: *** [Makefile:10228: zebra/zebra_fpm.lo] Error 1
/usr/home/ci/cibuild.8254/frr-source/doc/user/isisd.rst:43: WARNING: duplicate clicmd description of net XX.XXXX. ... .XXX.XX, other instance in fabricd
/usr/home/ci/cibuild.8254/frr-source/doc/user/isisd.rst:53: WARNING: duplicate clicmd description of domain-password [clear | md5] <password>, other instance in fabricd
/usr/home/ci/cibuild.8254/frr-source/doc/user/isisd.rst:58: WARNING: duplicate clicmd description of attached-bit [receive ignore | send], other instance in fabricd
/usr/home/ci/cibuild.8254/frr-source/doc/user/isisd.rst:67: WARNING: duplicate clicmd description of log-adjacency-changes, other instance in fabricd
NetBSD 9 amd64 build: Failed (click for details) NetBSD 9 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI012BUILD/config.status/config.status

Make failed for NetBSD 9 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI012BUILD/ErrorLog/log_make.txt)

gmake[1]: Entering directory '/home/ci/cibuild.8254/frr-source'
In file included from ./zebra/zebra_dplane.h:34:0,
./zebra/ge_netlink.h:24:10: fatal error: linux/genetlink.h: No such file or directory
 #include <linux/genetlink.h>
compilation terminated.
gmake[1]: *** [Makefile:10229: zebra/zebra_fpm.lo] Error 1
/home/ci/cibuild.8254/frr-source/doc/user/pbr.rst:31: WARNING: duplicate label nexthop-groups, other instance in /home/ci/cibuild.8254/frr-source/doc/user/nexthop_groups.rst
In file included from ./zebra/zebra_dplane.h:34:0,
./zebra/ge_netlink.h:24:10: fatal error: linux/genetlink.h: No such file or directory

NetBSD 9 amd64 build: Unknown Log <config.log.gz>
URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI012BUILD/config.log/config.log.gz

OpenBSD 7 amd64 build: Failed (click for details) OpenBSD 7 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI011BUILD/config.log/config.log.gz OpenBSD 7 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI011BUILD/config.status/config.status

Make failed for OpenBSD 7 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/CI011BUILD/ErrorLog/log_make.txt)

In file included from zebra/zebra_vxlan.h:38:
In file included from ./zebra/zebra_dplane.h:34:
./zebra/ge_netlink.h:24:10: fatal error: 'linux/genetlink.h' file not found
#include <linux/genetlink.h>
1 error generated.
gmake[1]: *** [Makefile:10228: zebra/zebra_fpm.lo] Error 1
In file included from zebra/if_ioctl.c:39:
In file included from ./zebra/rt.h:32:
In file included from ./zebra/zebra_dplane.h:34:
FreeBSD 12 amd64 build: Failed (click for details) FreeBSD 12 amd64 build: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/FBSD12AMD64/config.log/config.log.gz FreeBSD 12 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/FBSD12AMD64/config.status/config.status

Make failed for FreeBSD 12 amd64 build:
(see full Make log at https://ci1.netdef.org/browse/FRR-PULLREQ2-8254/artifact/FBSD12AMD64/ErrorLog/log_make.txt)

gmake[1]: Entering directory '/usr/home/ci/cibuild.8254/frr-source'
In file included from ./zebra/zebra_dplane.h:34:0,
./zebra/ge_netlink.h:24:10: fatal error: linux/genetlink.h: No such file or directory
 #include <linux/genetlink.h>
compilation terminated.
gmake[1]: *** [Makefile:10225: zebra/zebra_fpm.lo] Error 1
/usr/home/ci/cibuild.8254/frr-source/doc/user/pbr.rst:49: WARNING: duplicate label nexthop-groups, other instance in /usr/home/ci/cibuild.8254/frr-source/doc/user/nexthop_groups.rst
In file included from ./zebra/zebra_dplane.h:34:0,
./zebra/ge_netlink.h:24:10: fatal error: linux/genetlink.h: No such file or directory
Report for zebra_srv6_vty.c | 4 issues
===============================================
< WARNING: line over 80 characters
< #176: FILE: /tmp/f1-1829993/zebra_srv6_vty.c:176:
< WARNING: line over 80 characters
< #177: FILE: /tmp/f1-1829993/zebra_srv6_vty.c:177:

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Nov 8, 2022

Continuous Integration Result: SUCCESSFUL

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8255/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Warnings Generated during build:

Checkout code: Successful with additional warnings
Report for zebra_srv6_vty.c | 4 issues
===============================================
< WARNING: line over 80 characters
< #176: FILE: /tmp/f1-2008746/zebra_srv6_vty.c:176:
< WARNING: line over 80 characters
< #177: FILE: /tmp/f1-2008746/zebra_srv6_vty.c:177:

@cscarpitta
Copy link
Contributor Author

@ton31337 Thank you for the review, Donatas.
I addressed all your comments, rebased and force-pushed.

@github-actions
Copy link

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Nov 14, 2022

Continuous Integration Result: SUCCESSFUL

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-8350/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Warnings Generated during build:

Checkout code: Successful with additional warnings
Report for zebra_srv6_vty.c | 4 issues
===============================================
< WARNING: line over 80 characters
< #176: FILE: /tmp/f1-2706458/zebra_srv6_vty.c:176:
< WARNING: line over 80 characters
< #177: FILE: /tmp/f1-2706458/zebra_srv6_vty.c:177:

@cscarpitta
Copy link
Contributor Author

Rebased to resolve merge conflicts.

@@ -386,6 +386,27 @@ static int netlink_socket(struct nlsock *nl, unsigned long groups,
return ret;
}

/* Make socket for Linux generic netlink interface. */
static int ge_netlink_socket(struct nlsock *nl, ns_id_t ns_id)
Copy link
Member

Choose a reason for hiding this comment

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

why are we not abstracting and using netlink_socket and why are we not using bind? I'm not a fan of cut-n-paste coding. If we need this then let's properly abstract it

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@donaldsharp Many thanks for your review!

I made the requested change.

  1. I abstracted netlink_socket(). Now netlink_socket() takes an additional argument nl_family that specifies the Netlink family of the socket to create. This allows the developer to create any kind of Netlink socket (not only NETLINK_ROUTE sockets).
  2. I added a new function rt_netlink_socket() that can be used to create a NETLINK_ROUTE socket. It calls netlink_socket() with nl_family=NETLINK_ROUTE.
  3. I added a new function ge_netlink_socket() that can be used to create a NETLINK_GENERIC socket. It calls netlink_socket() with nl_family=NETLINK_GENERIC.

Here is the diff: https://github.com/FRRouting/frr/compare/43430662781371e161d3084d452b5484900aef23..178b584374ae5691a8ce6252faf26550080760b8

@cscarpitta
Copy link
Contributor Author

@donaldsharp Many thanks for the review. All comments have been addressed.

@@ -1958,6 +1959,9 @@ void kernel_init(struct zebra_ns *zns)
&zns->t_netlink);

rt_netlink_init();

if (zns->ge_netlink_cmd.sock >= 0)
Copy link
Member

Choose a reason for hiding this comment

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

I'd move this if to inside the call to ge_netlink_init(). kernel_init() shouldn't care about the status. It just knows it needs to ask the question.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Moved to ge_netlink_init().

@donaldsharp
Copy link
Member

donaldsharp commented Dec 6, 2023

a) There is no handler for when another process changes the value in the kernel. My assumption is that this can be listened for?

sharpd@eva:~/iproute2/ip$ sudo ip sr tunsrc show
[sudo] password for sharpd: 
tunsrc addr fc00:0:1::1
sharpd@eva:~/iproute2/ip$ sudo vtysh -c "show segment-routing srv6 manager"
Parameters:
  Encapsulation:
    Source Address:
      Configured: ::

b) There is no distinction for what happens when a kernel value is different than the configured value.

sharpd@eva:/work/home/sharpd/frr1/zebra$ sudo ip sr tunsrc show
tunsrc addr fc00:4::3
sharpd@eva:/work/home/sharpd/frr1/zebra$ sudo vtysh -c "show segment-routing srv6 manager"
Parameters:
  Encapsulation:
    Source Address:
      Configured: fc00:4::3
sharpd@eva:/work/home/sharpd/frr1/zebra$ sudo ip sr tunsrc set fc00:0:2::44
sharpd@eva:/work/home/sharpd/frr1/zebra$ sudo ip sr tunsrc show
tunsrc addr fc00:0:2::44
sharpd@eva:/work/home/sharpd/frr1/zebra$ sudo vtysh -c "show segment-routing srv6 manager"
Parameters:
  Encapsulation:
    Source Address:
      Configured: fc00:4::3

My assumption is that FRR, if it has a configed value should go, hey man not cool and reinstall the right value. Or at the very least some waving zlog_err messages need to be sent to the operator.

@cscarpitta cscarpitta changed the title zebra: Add the missing Source Addr param for SRv6 Encapsulation zebra: Add the support of the Source Addr param of the SRv6 Encapsulation Dec 7, 2023
@cscarpitta cscarpitta force-pushed the srv6-encap-src-addr branch 3 times, most recently from 251c7a5 to fa9bdc9 Compare December 11, 2023 22:42
@cscarpitta
Copy link
Contributor Author

@donaldsharp

I updated the PR to do the following:

  • On startup, we retrieve the actual encap source address from the kernel and save this address in zebra config
  • When user changes the encap source address in zebra config -> we push the new address to the kernel

As we discussed, actually we cannot listen for changes of the encap source address in the kernel, because the kernel does not send us any notification when the value changes.

I added a comment in the code to mention that this is currently not supported:

At the time of writing this code, the kernel does not send us any asynchronous
notifications when someone changes the 'sr tunsrc' under us. As a result, we
are currently unable to detect when the source address changes and update the
SRv6 encapsulation source address configured in zebra.

In the future, when the kernel supports async notifications, the implementation
can be improved by listening on the Generic Netlink socket and adding a handler
to process/parse incoming 'sr tunsrc' change messages and update the SRv6 zebra
configuration with the new encap source address.

I will submit another PR to extend this functionality and handle kernel notifications for source address changes, as soon as this is supported by the kernel.

@cscarpitta
Copy link
Contributor Author

Thanks for the review. All comments have been addressed.

Copy link
Member

@riw777 riw777 left a comment

Choose a reason for hiding this comment

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

looks good ... will wait a few days to see if anyone else wants to review

Copy link

This pull request has conflicts, please resolve those before we can evaluate the pull request.

cscarpitta and others added 11 commits December 14, 2023 14:56
The `netlink_socket()` function is used in many places to create and
initialize Netlink sockets. Currently, it can only create
`NETLINK_ROUTE` Netlink sockets.

This commit generalizes the behavior of the `netlink_socket()` function,
enabling it to generate Netlink sockets of any type. Specifically, it
extends the `netlink_socket()` function with a new argument `nl_family`,
which allows developers to specify the Netlink family of the socket to
be created.

Signed-off-by: Carmine Scarpitta <[email protected]>
zebra already supports several Netlink sockets which allow it to
communicate with the kernel. Each Netlink socket has a specific purpose:
we have a socket for incoming events from the kernel, a socket for
programming the dataplane, a socket for the kernel messages, a socket
used as the command channel. All the currently supported sockets are
based on the `NETLINK_ROUTE` protocol.

This commit adds a new Netlink socket that allows zebra to send
commands to the kernel using the `Generic Netlink` protocol.

Signed-off-by: Carmine Scarpitta <[email protected]>
Generic Netlink is an extension of Netlink meant for kernel-user space
communications. It supports the dynamic allocation of communication
channels. Kernel and user space applications register their services
with a Generic Netlink controller. The Generic Netlink controller is
responsible for assigning a unique channel number with each service.
Clients who want to use a service query the controller to see if
the service exists and to determine the correct channel number. The
channel number is used to access the requested service.

This commit adds the base functionality to get the channel number
assigned to a specific service. More precisely, this commit adds a
function `genl_resolve_family()` that takes the service name (called
family in the Generic Netlink terminology) as an input parameter and
queries the Generic Netlink controller to get the channel number
assigned with the requested service.

Signed-off-by: Carmine Scarpitta <[email protected]>
Add a bunch of set functions and associated data structure in
zebra_dplane to allow the configuration of the source address for SRv6
encap in the data plane.

Signed-off-by: Carmine Scarpitta <[email protected]>
- Add a new node `SRV6_ENCAP_NODE` to the CLI graph. This node allows
users to configure encapsulation parameters for SRv6, including the
source address of the outer encapsulating IPv6 header.

- Install a new CLI command `source-address` under the
`SRV6_ENCAP_NODE` node. This command is used to configure the source
address of the outer encapsulating IPv6 header.

- Install a new CLI command `no source-address` under the
`SRV6_ENCAP_NODE` node. This command is used to unset the
source address of the outer encapsulating IPv6 header and restore the
default source address.

Examples:

```
router# segment-routing
router(sr)# srv6
router(srv6)# encapsulation
router(srv6-encap)# source-address fc00:0:1::1
```

```
router# segment-routing
router(sr)# srv6
router(srv6)# encapsulation
router(srv6-encap)# no source-address
```

Signed-off-by: Carmine Scarpitta <[email protected]>
Add a new CLI command `show segment-routing srv6 manager [json]` to
verify the overall SRv6 state. The current output displays only the
configured source address of outer encapsulating IPv6 header. The output
can be extended in the future to show more information, including
summary SRv6 information and supported capabilities.

Example:

```
r1# show segment-routing srv6 manager
Parameters:
  Encapsulation:
    Source Address:
      Configured: fc00:0:1::1

r1# show segment-routing srv6 manager json
{
  "parameters":{
    "encapsulation":{
      "sourceAddress":{
        "configured":"fc00:0:1::1"
      }
    }
  }
}
```

Signed-off-by: Carmine Scarpitta <[email protected]>
When writing the SRv6 config from zebra, we must also include the source
address of outer encapsulating IPv6 header.

Signed-off-by: Carmine Scarpitta <[email protected]>
Add a new topotest `srv6_encap_src_addr` which verifies that the
`source-address` command works properly.

Signed-off-by: Carmine Scarpitta <[email protected]>
Add documentation for the new SRv6 encapsulation source address feature.

Signed-off-by: Carmine Scarpitta <[email protected]>
The `show segment-routing srv6 manager` CLI command allows users to
print the SRv6 information. Currently, the SRv6 information includes
only the SRv6 encapsulation source address.

In this commit, we add the documentation for the
`show segment-routing srv6` command.

Signed-off-by: Carmine Scarpitta <[email protected]>
When zebra is started, someone may have configured an SRv6 encap source
address different from the default address ( :: ) in the kernel.

On startup, zebra should not assume that the actual SRv6 encap source
address is the default address ( :: ), but should retrieve the actual
source address from the kernel and put it in zebra configuration. In
other words, on startup we expect the actual SRv6 encap source
address and the configured one to be the same.

This commit makes the necessary changes to support the above.

Signed-off-by: Carmine Scarpitta <[email protected]>
@cscarpitta
Copy link
Contributor Author

ci:rerun unrelated failures, rerunning

@cscarpitta
Copy link
Contributor Author

looks good ... will wait a few days to see if anyone else wants to review

@riw777 Many thanks for the review. I rebased on top of latest master to solve conflicts.

@riw777 riw777 merged commit 54c2d32 into FRRouting:master Jan 2, 2024
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants