# T9518: test the fix on a running router This tests the change from the draft PR https://github.com/vyos/vyos-1x/pull/5595 (commit `fe0a3e5d2`) without building an image. It edits system files, use a lab router and not a production one. The edits stay until you revert them or upgrade the image. The change: `protocols mpls interface ` also enables MPLS in VPP for that interface (VPP gets the default MPLS table first), and the `vpp` commit applies it again after a VPP restart. ## Tested on - Lab image `2026.10.16-0024-rolling` (vyos-1x `999.0-15129-g61f35e0f4`, VPP `v25.10.0-60~vyos20261019233412.17c9bba8f`, FRR 10.7.1, kernel 6.18.55-vyos). - Two routers on one L2 segment: the VPP router with `eth0` as VPP interface, a second router without VPP. LDP over `eth0` with `explicit-null`, loopbacks and static routes as in the task. - The patch is built against vyos-1x `rolling` at commit `089c76705` (2026-10-23) and applies cleanly to the files of the image above. - Not tested: other VPP versions, bonding or VLAN interfaces as MPLS interface, VRFs. ## 1. Apply Run as a user with sudo (`vyos`), on the router with the VPP interface: ``` # backup of the four files sudo tar czf ~/t9518-orig.tgz -C / \ usr/lib/python3/dist-packages/vyos/vpp/control_vpp.py \ usr/libexec/vyos/conf_mode/protocols_mpls.py \ usr/libexec/vyos/conf_mode/vpp.py \ usr/share/vyos/config-mode-dependencies/vyos-vpp.json # the three Python files (copy T9518-vpp-mpls-enable.patch to the router first) cd / && sudo patch -p1 --dry-run < ~/T9518-vpp-mpls-enable.patch ``` The dry run must list three `patching file` lines and no `FAILED`. If it fails, the image is too different: send the output of `show version` and do not continue. ``` cd / && sudo patch -p1 < ~/T9518-vpp-mpls-enable.patch # the dependency entry: run `vpp` again when MPLS interfaces exist sudo sed -i -E '0,/("pppoe_server": \["service_pppoe-server"\])(,?)/s//\1,\n "mpls": ["protocols_mpls"]\2/' \ /usr/share/vyos/config-mode-dependencies/vyos-vpp.json python3 -c "import json;print(json.load(open('/usr/share/vyos/config-mode-dependencies/vyos-vpp.json'))['vpp']['mpls'])" # expected output: ['protocols_mpls'] sudo systemctl restart vyos-configd ``` ## 2. Test As the normal user, in configure mode. Use the VPP interface of your setup (`eth1` in the task): ``` delete protocols mpls interface eth1 commit set protocols mpls interface eth1 commit ``` Check: ``` vppctl show mpls interface vppctl show interface feat eth1 | grep -a1 mpls-input show mpls ldp neighbor ping 10.255.0.2 source-address 10.255.0.1 count 5 ``` Expected: `show mpls interface` lists `eth1` and its tap (`tap4096`), both `MPLS enabled`. `mpls-input` at `eth1` is no longer `mpls-not-enabled`. The ping works without the two manual `vppctl set interface mpls ... enable` commands. Then check that it survives a VPP restart (the commit restarts VPP) and that removal works: ``` set vpp settings poll-sleep-usec 20 commit vppctl show mpls interface delete protocols mpls interface eth1 commit vppctl show mpls interface ``` Expected: after the first commit both interfaces are listed again, after the second the output is empty. Set `poll-sleep-usec` back to your value afterwards. ## 3. Please report - `show version` - the output of the commands above (`vppctl show mpls interface` before and after, the ping result) - if a commit fails: `sudo journalctl -u vyos-configd --since '-5min' --no-pager | tail -40` Please do not post core files, they can contain customer data. ## 4. Revert ``` cd / && sudo tar xzf ~/t9518-orig.tgz sudo systemctl restart vyos-configd ``` An image upgrade also replaces the files.