netkit: Allow for configuring needed_{head,tail}room
authorDaniel Borkmann <daniel@iogearbox.net>
Fri, 20 Dec 2024 23:46:56 +0000 (00:46 +0100)
committerDaniel Borkmann <daniel@iogearbox.net>
Mon, 6 Jan 2025 08:48:49 +0000 (09:48 +0100)
commitb9ed315d3c4c0c294a4348edb6874d489bac47fa
treeeb338a0b1d352e88010fc894d863dfb27b8308b2
parentdad704ebe38642cd405e15b9c51263356391355c
netkit: Allow for configuring needed_{head,tail}room

Allow the user to configure needed_{head,tail}room for both netkit
devices. The idea is similar to 163e529200af ("veth: implement
ndo_set_rx_headroom") with the difference that the two parameters
can be specified upon device creation. By default the current behavior
stays as is which is needed_{head,tail}room is 0.

In case of Cilium, for example, the netkit devices are not enslaved
into a bridge or openvswitch device (rather, BPF-based redirection
is used out of tcx), and as such these parameters are not propagated
into the Pod's netns via peer device.

Given Cilium can run in vxlan/geneve tunneling mode (needed_headroom)
and/or be used in combination with WireGuard (needed_{head,tail}room),
allow the Cilium CNI plugin to specify these two upon netkit device
creation.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://lore.kernel.org/bpf/20241220234658.490686-1-daniel@iogearbox.net
drivers/net/netkit.c
include/uapi/linux/if_link.h
tools/include/uapi/linux/if_link.h