Page MenuHomeVyOS Platform

Upgrade radvd to official v2.20 release
Closed, ResolvedPublic

Description

radvd tagged the official v2.20 release on December 31st, 2024. Currently, VyOS is using radvd at a specific untagged commit (f2de4764559) from Dec 25, 2023 (v2.20_rc1 was released on Nov 17, 2023).

vyos-build\scripts\package-build\radvd\package.toml:

[[packages]]
name = "radvd"
commit_id = "f2de4764559"
scm_url = "https://github.com/radvd-project/radvd"

It'd be nice to upgrade to the official version v2.20

Details

Version
circinus
Is it a breaking change?
Perfectly compatible
Issue type
Internal change (not visible to end users)

Event Timeline

Hi @ryanzuwala, would you like to create a PR? Are there any bugs or features that need updating?

Hi @Viacheslav, nice to meet you!

I created the PR just now. No bugs that I'm aware of.

v2.20 does include a new auto_ignore_prefixes feature that I'd like to implement VyOS CLI syntax for next. Commit f2de4764559 has this feature merged in, but it'd be nice to use an official release of radvd instead of remaining on an untagged commit that's effectively in limbo between the old rc1 and now.

I'm still in the process of familiarizing myself with the codebase. As far as testing the upgrade, I think I'm missing a step. I changed the version number in package.toml and then ran build_vyos_image, but it appears to still be pulling the original v2.20_rc1 version during the ISO build. Of course, I'd like to properly smoke test this before this gets merged, but I can't figure out how to do it locally.

I've been looking over historical merged PRs and in the forum, but I can't figure out how to test package upgrades locally. I tried manually compiling inside scripts/package-build/radvd and copying the .deb file to the packages directory before build, but that seems to remove radvd altogether when the ISO is built.

c-po changed Is it a breaking change? from Unspecified (possibly destroys the router) to Perfectly compatible.

Hi @ryanzuwala ,

Currently, I'm running:

VyOS Version: 2025.05.05-0020-rolling

When I check the radvd version, it appears to be 2.20_rc1 rather than the expected stable 2.20 release.

For example, executing radvd -v returns:

radvd 2.20_rc1

vyos@vyos:~$ sudo radvd -v
Version: 2.20_rc1

Compiled in settings:
  default config file           "/etc/radvd.conf"
  default pidfile               "/var/run/radvd.pid"
  default logfile               "/var/log/radvd.log"
  default syslog facility       24
Please send bug reports or suggestions to Reuben Hawkins <reubenhwk@gmail.com>.

Hi @opswill, that is very strange. I'm not too familiar with the VyOS build process as far as dependencies go, but I'll look into it.

Well, I'm stumped. Just to be sure the radvd developers didn't forget to change the string in the v2.20 version output, I tried manually compiling radvd v2.20 on a test Debian VM:

sudo apt install -y git autoconf automake bison build-essential flex gettext libtool pkg-config libbsd-dev libbsd0

git clone -b v2.20 https://github.com/radvd-project/radvd.git
cd radvd/
./autogen.sh
./configure --without-check
make
sudo make install

And the expected output appears:

build@debian-test:~$ sudo /usr/local/sbin/radvd -v
Version: 2.20

Compiled in settings:
  default config file           "/etc/radvd.conf"
  default pidfile               "/var/run/radvd.pid"
  default logfile               "/var/log/radvd.log"
  default syslog facility       24
Please send bug reports or suggestions to Reuben Hawkins <reubenhwk@gmail.com>.

So it's clearly the build process not picking up the specified version in the package config files.

Looking at the current branch in both vyos-build and vyos-1x:

v2.20 is specified in vyos-build/scripts/package-build/radvd/package.toml:

[[packages]]
name = "radvd"
commit_id = "v2.20"
scm_url = "https://github.com/radvd-project/radvd"

#build_cmd = "cd ..; ./build.sh"
build_cmd = """
./autogen.sh
./configure
make

install --directory debian/lib/systemd/system debian/usr/sbin
install --mode 0644 radvd.service debian/lib/systemd/system
install --strip --mode 0755 radvd debian/usr/sbin

# Version' field value 'v0.14-20-g613277f': version number does not start with digit
# "cut" first character from version string
fpm --input-type dir --output-type deb --name radvd \
    --version $(git describe --always | cut -c2- | tr _ -) --deb-compression gz \
    --maintainer "VyOS Package Maintainers <maintainers@vyos.net>" \
    --description "RADVD router advertisement daemon" \
    --license "RADVD" -C debian --package ..
"""

And in vyos-1x/debian/control (lines 205-206):

...

# For "service router-advert"
  radvd (>= 2.20),

...

Is the original package being cached during the build process? Or is there an additional step I overlooked when upgrading the package version?

I did the same tests before updating this task, and it seemed like the code and build steps were fine.

I just submitted a PR, which automatically triggers the ISO build. After reviewing the build_iso logs (https://github.com/vyos/vyos-1x/actions/runs/14879126559/job/41782815584?pr=4498), I found the following logs:

Get:606 https://packages.vyos.net/repositories/current current/main amd64 radvd amd64 2.20-rc1-23-gf2de476 [49.9 kB]
......
Selecting previously unselected package radvd.
Preparing to unpack .../164-radvd_2.20-rc1-23-gf2de476_amd64.deb ...
Unpacking radvd (2.20-rc1-23-gf2de476) ...
......
Setting up radvd (2.20-rc1-23-gf2de476) ...
......
Del radvd 2.20-rc1-23-gf2de476 [49.9 kB]
......
 Removing radvd (2.20-rc1-23-gf2de476) ...

I'm not sure if the rolling image uses the same method to build ISOs, but from the PR's build ISO process, it seems that the VyOS ISO build doesn't build everything from vyos/vyos-build. Instead, it downloads and installs deb packages from packages.vyos.net?

Moreover, I did find the 2.20 package at https://packages.vyos.net/repositories/current/pool/main/r/radvd/, but it seems like this specific version wasn't selected.

I'm just sharing what I've found, hoping that VyOS maintainers can explain and provide more details.

c-po moved this task from Need Triage to Completed on the VyOS Rolling board.
c-po moved this task from Open to Finished on the VyOS 1.5 Circinus board.
c-po moved this task from Need Triage to Finished on the VyOS 1.4 Sagitta (1.4.0) board.