OpenCloudOS-Kernel/arch/mips
Martynas Pumputis e8b9eab992 net: retrieve netns cookie via getsocketopt
It's getting more common to run nested container environments for
testing cloud software. One of such examples is Kind [1] which runs a
Kubernetes cluster in Docker containers on a single host. Each container
acts as a Kubernetes node, and thus can run any Pod (aka container)
inside the former. This approach simplifies testing a lot, as it
eliminates complicated VM setups.

Unfortunately, such a setup breaks some functionality when cgroupv2 BPF
programs are used for load-balancing. The load-balancer BPF program
needs to detect whether a request originates from the host netns or a
container netns in order to allow some access, e.g. to a service via a
loopback IP address. Typically, the programs detect this by comparing
netns cookies with the one of the init ns via a call to
bpf_get_netns_cookie(NULL). However, in nested environments the latter
cannot be used given the Kubernetes node's netns is outside the init ns.
To fix this, we need to pass the Kubernetes node netns cookie to the
program in a different way: by extending getsockopt() with a
SO_NETNS_COOKIE option, the orchestrator which runs in the Kubernetes
node netns can retrieve the cookie and pass it to the program instead.

Thus, this is following up on Eric's commit 3d368ab87c ("net:
initialize net->net_cookie at netns setup") to allow retrieval via
SO_NETNS_COOKIE.  This is also in line in how we retrieve socket cookie
via SO_COOKIE.

  [1] https://kind.sigs.k8s.io/

Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
Signed-off-by: Martynas Pumputis <m@lambda.lt>
Cc: Eric Dumazet <edumazet@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-06-24 11:13:05 -07:00
..
alchemy MIPS: alchemy: xxs1500: add gpio-au1000.h header file 2021-05-25 15:16:23 +02:00
ar7 MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
ath25 MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
ath79 MIPS: of: Introduce helper function to get DTB 2021-02-04 13:34:51 +01:00
bcm47xx MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
bcm63xx MIPS: BCM63XX: Use BUG_ON instead of condition followed by BUG. 2021-04-26 10:23:52 +02:00
bmips MIPS: bmips: include <linux/dma-direct.h> for phys_to_dma 2021-03-06 08:43:40 +01:00
boot MIPS: Loongson64: DTS: Add GMAC support for LS7A PCH 2021-06-18 11:48:34 -07:00
cavium-octeon MIPS: octeon: Add __raw_copy_[from|to|in]_user symbols 2021-04-09 11:43:52 +02:00
cobalt MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
configs - removed get_fs/set_fs 2021-04-29 11:28:08 -07:00
crypto - removed get_fs/set_fs 2021-04-29 11:28:08 -07:00
dec
fw MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
generic MIPS: generic: Update node names to avoid unit addresses 2021-04-12 16:48:35 +02:00
include net: retrieve netns cookie via getsocketopt 2021-06-24 11:13:05 -07:00
ingenic
jazz MIPS: jazz: always allow little-endian builds 2021-01-22 13:53:21 +01:00
kernel quota: Disable quotactl_path syscall 2021-05-17 14:39:56 +02:00
kvm ARM: 2021-05-01 10:14:08 -07:00
lantiq MIPS: of: Introduce helper function to get DTB 2021-02-04 13:34:51 +01:00
lib MIPS: Fix kernel hang under FUNCTION_GRAPH_TRACER and PREEMPT_TRACER 2021-05-25 15:33:17 +02:00
loongson2ef - added support for Nintendo N64 2021-02-21 13:18:26 -08:00
loongson32 MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
loongson64 mm: move mem_init_print_info() into mm_init() 2021-04-30 11:20:42 -07:00
math-emu
mm Revert "MIPS: make userspace mapping young by default" 2021-06-05 08:58:11 -07:00
mti-malta MIPS: Remove KVM_GUEST support 2021-03-10 15:18:40 +01:00
n64 mips: Add N64 machine type 2021-01-22 11:40:00 +01:00
net bpf: Rename BPF_XADD and prepare to encode other atomics in .imm 2021-01-14 18:34:29 -08:00
netlogic mips: netlogic: Use irq_domain_simple_ops for XLP PIC 2021-04-07 13:25:52 +01:00
pci MIPS: pci-legacy: revert "use generic pci_enable_resources" 2021-04-21 13:44:05 +02:00
pic32 MIPS: of: Introduce helper function to get DTB 2021-02-04 13:34:51 +01:00
pistachio driver core: lift dma_default_coherent into common code 2021-02-13 09:51:45 +01:00
power
ralink MIPS: ralink: export rt_sysc_membase for rt2880_wdt.c 2021-05-25 15:22:04 +02:00
rb532 net: korina: Add support for device tree 2021-04-19 15:58:14 -07:00
sgi-ip22
sgi-ip27 mm: move mem_init_print_info() into mm_init() 2021-04-30 11:20:42 -07:00
sgi-ip30
sgi-ip32 arch: mips: update references to current linux-mips list 2021-02-23 13:24:38 +01:00
sibyte MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
sni
tools
txx9 MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
vdso MIPS: Makefile: Replace -pg with CC_FLAGS_FTRACE 2021-04-21 13:44:35 +02:00
vr41xx MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
Kbuild
Kbuild.platforms mips: Add N64 machine type 2021-01-22 11:40:00 +01:00
Kconfig mm: generalize SYS_SUPPORTS_HUGETLBFS (rename as ARCH_SUPPORTS_HUGETLBFS) 2021-05-05 11:27:25 -07:00
Kconfig.debug arch: mips: fix unmet dependency for DEBUG_INFO 2021-03-29 11:17:23 +02:00
Makefile arch: use cross_compiling to check whether it is a cross build or not 2021-05-06 01:49:13 +09:00
Makefile.postlink