Skip to content

Commit fd11005

Browse files
committed
network: xfrm: refuse zero interface ID
Since kernel 5.17-rc1, 5.16.3, and 5.15.17 (more specifically, torvalds/linux@8dce439) the kernel refuses to create an xfrm interface with zero ID.
1 parent 04660b1 commit fd11005

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

man/systemd.netdev.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1994,7 +1994,7 @@
19941994
<term><varname>InterfaceId=</varname></term>
19951995
<listitem>
19961996
<para>Sets the ID/key of the xfrm interface which needs to be associated with a SA/policy.
1997-
Can be decimal or hexadecimal, valid range is 0-0xffffffff, defaults to 0.</para>
1997+
Can be decimal or hexadecimal, valid range is 1-0xffffffff. This is mandatory.</para>
19981998
</listitem>
19991999
</varlistentry>
20002000
<varlistentry>

src/network/netdev/xfrm.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ static int xfrm_fill_message_create(NetDev *netdev, Link *link, sd_netlink_messa
1414

1515
x = XFRM(netdev);
1616

17+
assert(x);
1718
assert(link || x->independent);
1819

1920
r = sd_netlink_message_append_u32(message, IFLA_XFRM_LINK, link ? link->ifindex : LOOPBACK_IFINDEX);
@@ -27,10 +28,28 @@ static int xfrm_fill_message_create(NetDev *netdev, Link *link, sd_netlink_messa
2728
return 0;
2829
}
2930

31+
static int xfrm_verify(NetDev *netdev, const char *filename) {
32+
Xfrm *x;
33+
34+
assert(netdev);
35+
assert(filename);
36+
37+
x = XFRM(netdev);
38+
39+
assert(x);
40+
41+
if (x->if_id == 0)
42+
return log_netdev_warning_errno(netdev, SYNTHETIC_ERRNO(EINVAL),
43+
"%s: Xfrm interface ID cannot be zero.", filename);
44+
45+
return 0;
46+
}
47+
3048
const NetDevVTable xfrm_vtable = {
3149
.object_size = sizeof(Xfrm),
3250
.sections = NETDEV_COMMON_SECTIONS "Xfrm\0",
3351
.fill_message_create = xfrm_fill_message_create,
52+
.config_verify = xfrm_verify,
3453
.create_type = NETDEV_CREATE_STACKED,
3554
.iftype = ARPHRD_NONE,
3655
};

0 commit comments

Comments
 (0)