Support IP address protocol

Bug #2039280 reported by Paolo Pisati
18
This bug affects 3 people
Affects Status Importance Assigned to Milestone
iproute2 (Ubuntu)
Confirmed
Undecided
Unassigned
Mantic
Confirmed
Undecided
Unassigned

Bug Description

[Impact]

IPv4 and IPv6 addresses can be assigned a protocol value that indicates the
provenance of the IP address. The attribute is modeled after ip route
protocols, and essentially allows the administrator or userspace stack to
tag addresses in some way that makes sense to the actor in question.
Support for this feature was merged with commit 47f0bd503210 ("net: Add new
protocol attribute to IP addresses"), for kernel 5.18.

In this patch, add support for setting the protocol attribute at IP address
addition, replacement, and listing requests.

[Fix]

Apply the attached patch

[How to test]

$ cat << EOF > test.sh
#!/bin/sh

addr=192.0.2.1/28
addr2=${addr%/*}2/${addr#*/}
ifr=test-dummy123

sudo ip link add name "$ifr" type dummy
sudo ip link set "$ifr" up

sudo ip address add dev "$ifr" "$addr2" proto 0x99

sudo ip link del "$ifr"
EOF

$chmod +x test.sh
$test.sh
$ echo $?
0

if you get an error instead, like:
Error: either "local" is duplicate, or "proto" is a garbage.

your iproute2 is not patched.
Alternativerly, you could download Linux v6.5 source code and run:

$ cd linux
$ sudo ./tools/testing/selftests/net/rtnetlink.sh -t kci_test_address_proto

[Regression potential]

Two clean upstream cherry-picks, regression potential should be low.

Tags: patch
Paolo Pisati (p-pisati)
description: updated
description: updated
Revision history for this message
Paolo Pisati (p-pisati) wrote :
description: updated
description: updated
tags: added: patch
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in iproute2 (Ubuntu):
status: New → Confirmed
Revision history for this message
Lukas Märdian (slyon) wrote :

Thank you! I confirmed that the added distro-patches match the upstream patches. The feature looks useful, but it's not very common to backport new features as part of an SRU... So I'll leave that decision to the SRU team.

In either way, this should probably first be fixed in the current "devel" series, i.e. by merging iproute2 v6.4+ from Debian unstable. Once that is accomplished, we can consider this patch for SRU. Would you be interested in working on that merge?

Nitpick: When aiming for SRU, you should consider updating the SRU template in the bug description to the latest version (although, the one you used might also be accepted as-is) and also change the version number according to https://wiki.ubuntu.com/SecurityTeam/UpdatePreparation#Update_the_packaging, e.g.: 6.1.0-1ubuntu2.1

https://wiki.ubuntu.com/StableReleaseUpdates#SRU_Bug_Template

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

I agree that a merge from debian would be better, since we are quite behind:

iproute2 | 6.5.0-4 | testing

But we have been at 6.1.0 since at least lunar, so I don't know how long that would take. I think we can take these patches for noble.

I would ask that you also add this one, though, to update the manpage with the new option:

commit 1fbb61058d34e3eb9a34f5e930bbbb8d90c4a961
Author: Petr Machata <email address hidden>
Date: Mon Mar 27 18:12:06 2023 +0200

    man: man8: Add man page coverage for "ip address add ... proto"

    Signed-off-by: Petr Machata <email address hidden>
    Signed-off-by: David Ahern <email address hidden>

Also, you could perhaps add your test script as a quick DEP8 test, what do you think? Something like this?

--- a/debian/tests/control
+++ b/debian/tests/control
@@ -3,3 +3,7 @@
 Tests: testsuite.sh
 Restrictions: allow-stderr, isolation-machine, needs-root, rw-build-tree
 Depends: build-essential, locales-all, dpkg-dev, sudo:native, kmod, @builddeps@
+
+Tests: test-protocol-attribute
+Restrictions: isolation-machine, needs-root
+Depends: iproute2
diff --git a/debian/tests/test-protocol-attribute.sh b/debian/tests/test-protocol-attribute.sh
new file mode 100755
index 00000000..254b2906
--- /dev/null
+++ b/debian/tests/test-protocol-attribute.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -e
+
+addr=192.0.2.1/28
+ifr=test-dummy123
+
+ip link add name "$ifr" type dummy
+ip link set "$ifr" up
+
+ip address add dev "$ifr" "$addr" proto 0x99
+
+ip link del "$ifr"

Perhaps improve it with using a random address, and showing the "ip a" output and checking that "proto 0x99" was truly added.

Finally, it would also be good if the patches have a few more DEP3 headers. In particular, Origin, with a link to the upstream commit, and also a pointer to this bug here (Bug-Ubuntu: ...). The hash in the "From" bit in both patches didn't match the upstreams I could find (git://git.kernel.org/pub/scm/network/iproute2/iproute2.git or https://github.com/shemminger/iproute2.git), but I did find the commits using a log search. It would help if the Origin tag were there, then, with a direct link.

Regarding an SRU, I would have some concerns:

- what is the real user benefit for stable release users? Do we have bugs filed against iproute2 asking for this feature? How much demand is there for this? In which kind of deployment would this be most useful?

- I see that the "ip" output changes when this flag is present, with the new "proto <val>" string. What's the regression potential here for parsing this output in scripts? I believe the new "proto <val>" text is only present if there was a protocol assigned, and if not, the default value (0 I believe?) is not shown. But are there other regression potentials here? Perhaps in the json output, or when some extra flag is added to "ip" commands?

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.