From 621f9fd4146a47a3f59bcf96fad05d907b9fbcbb Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Tue, 11 Nov 2025 15:04:15 +0100 Subject: [PATCH] inlet/flow: enforce compatibility with Linux 4.19 The two last fields of `sk_reuseport_md` were added in Linux 5.14. We don't use them, so it shouldn't matter. I remove them from `vmlinux.h` to ensure compatibility. Also, adding `__attribute__((preserve_access_index))` should make the program more portable (BPF CO-RE). --- inlet/flow/input/udp/reuseport_bpfeb.o | Bin 7776 -> 7504 bytes inlet/flow/input/udp/reuseport_bpfel.o | Bin 7776 -> 7504 bytes inlet/flow/input/udp/vmlinux.h | 16 +--------------- 3 files changed, 1 insertion(+), 15 deletions(-) diff --git a/inlet/flow/input/udp/reuseport_bpfeb.o b/inlet/flow/input/udp/reuseport_bpfeb.o index ac1463cf22241d2e5089c3482babcc2071d678cb..32b017027ef30c3067aa38b037e665eacf6bf4e7 100644 GIT binary patch delta 1060 zcmYk4Ur5tY6vxlK+th73r`z10-!^~hhErlWQD-J@M3IBY9x|ka{7VUj9IN-H90@Ox*F>^5?@Bp{ zd@UqB|D^`GCrU(eU*^4x36W6c#*jFsT8xd-A5jCwvolnM_;9sRSlj_}2L*YIaBPdy zI{9HNd8w8SG2@eWjinTX?+i?;p)i}8sH18a%Yf(}nQ|j{bsz=Cz!bOwZiD;aF?a@6 zX@=+}j5Y8YWWhV|5qtx`v2z)~UZN4~2koE}U~$n42EZt|1g?Xd;0|~KmcZ)a(V?-y z34M5caN?YPd30)eY;r=69f-!FalI%KYl_Ai)N;8?Etghi8jFHL4HnO-FU1vRCy@cj zkryS;g{c_liKu0BpVBRz-FzxIB;bR)z(#4_=Yvfa?uY{1nYkk>LVAlWZ*y%iUnbR8 zix%Jta@m1AQpnJuIpeqrS?j_l@f~U{wXkQ2I&uqe zf)2+#;00Op1`iARCsEo2JDb?GzkbxD3Q09koQ%YBvT6eEWdpa}gIVwa-Wxa9pRz62I zsS;nCv}aY)mngg!j;7{)akHn8l2lo!bY6*9szi&6UX|3kq@z#GY6&x663w)rvRa#T zJYDoBghwU)NZ3)c7|MRBbqvn*VxUXfbd?NrsXv-o%?0ApwxZVIb(JgzbF+f_UpQl_ AasU7T delta 1294 zcmZvbO-NKx6vxlKZ)Th~lV6R_y!onebka&ds}TEnrEP^=TE}~A zt*H{keGv&~RjCuZJA?#2ksyL!=7~mU9R5b9dx`09M5aa1Lf)_sYJ1csTtSx!fFEi|ETg4Rrc&65Cdh6|wMD>Y&;k0u02l#d z;0m|_?t**ZK6nJ4f;sRGdB~ff^`77#ZGV#v{5CAqfmOmDR3SzxCpL+ z2jB^K&g1s5tX3>~Z0xwq!?Ze_wky^&IOwad_ZZZ)aU z4yPybZV9`NqUyL=-&+DDfP@K1wZhQP@T8uIp#uxU!W$`Q9%GZ1qPqGtk00ya-Lp{t z9_L$+si?Q06nw;pR4UbULL1a7Q=6&+%YmfZ3oJbXfmpeZt6jlxIV?3tAX~B#71@YR zKH@5m_28Pxp~ZCr{mw3)hcY*qRhqK#%k6%c`ABqu<< zV8XH`+BuHt&`j3eh9k3R&g2gi-5vdWU`!kSe*IPN`(-Uxqv_KHA8cjgh)17E18Q9Y zx%LD%dsIn?4lQTw*EWXKce}kSdeMFNyFHJ{W`reF$B& zI6=GULLwr{Kp8>|3KRlCDz74{i|iuwBD%gN#<-3Nx9h^PrZ3nsx7xD4)q2jDSy1{OhS z48v=%3|7ErunvBJKfs2aV;}(zfG*GrvS1L5fpg#@xC(B9yWk0!1B<+Fh#1=2TH9NA z-r?bSYi%)69Tt4Xc$>c)?Iw2>kz%~~*Z5o*j6_z~eRD*`bov|0Y5`?BZ~~Px17$x!hiW*#TT^-p+H!>`UaqUZ<+*`lR%jD+ ze_6jlJ%oFmsL+kj*NA#{Hc$-_BxWiaEYP!M{R?$NVfSj)0S>C~ndJ}mOU`!}T5gRG zbwpPmc5M{$`BTLa#}|z!+ym_!Xi}zrfE8?2XuHbcx|Atr1JUB9`@NJl50|{JWx-j@ z`Hl*aub@wT28KJE@?}lWf{FZERCNP*CF+X?rOxQV$}C7Oh&ewbfc}74d_3 z@KE$(c?yCbRQ#&dgKZ89ih>{rqE);oiimiSTtrYQ=)wOqE9T&X-@NyK@6FEa?Ci^x zA6K8Qms`UV4Xv^#K#tVv2vJxQZ2?EhFjg9?3?j20d21F?WTEiK=D3>7!x2YH)#@T` zfksS-I!PvrskQ)7Yzay8pR^!Ls??Q#C6@@%&MvK1Y~p!ZgREN48???`#aBTjn%wn4 zH%7w>OC^aa%2d$oUW9zJ+o+t$HxrT9LLn3ncOgz{!eb`LtQHi}-XI}1)sS@?L6lNt z?jXn!jlwyBvIJ-WJHcKs1ct#Ga2ebHli)764<3Oh zK&|}&6u?j5!OBTc2j+vNU%eBP9qg#Z&<~D)Q-HyFa1A^FkHIrO>rBW@nqT^Y z`6=fj5u)t_J39yWcJ#E9T;|n>9N0NHmcLkbOE`5RZ8^8= z9sVe`)`TZ2i-Y5QS#QZX-3T9p7$`AmL8!Nbl@%RM7>A|$Ux3nnc0_@?n2zICXhkC1RR=aBd0yFcnu=WX3Iq``aQ5U#q2r9>*pKV4`ajLxawVBR>U*zMqkqP58AzS@g`%XtdX(D&or_zQglWJF z)|Y4>^ln=#R}N0(-v*|njE8tU^iUr1=X=8~LagHnGo!!7wv=`AH!~y0{M-=9>P`0l zb(Qx;GWxW?*fPKqP@nDEYyK9=h`XGQHp-p~?u}+WU+i0_yLd9XOx~;DLNqJBb2`>2 ur_mD2$~Qh9hZ_rWA(rK-kdqf!tK`!l_gYywGKteEC>yzUQ89KePE diff --git a/inlet/flow/input/udp/vmlinux.h b/inlet/flow/input/udp/vmlinux.h index 7e29e6d9..3c9ba2b5 100644 --- a/inlet/flow/input/udp/vmlinux.h +++ b/inlet/flow/input/udp/vmlinux.h @@ -49,21 +49,7 @@ struct sk_reuseport_md { __u32 ip_protocol; /* IP protocol. e.g. IPPROTO_TCP, IPPROTO_UDP */ __u32 bind_inany; /* Is sock bound to an INANY address? */ __u32 hash; /* A hash of the packet 4 tuples */ - /* When reuse->migrating_sk is NULL, it is selecting a sk for the - * new incoming connection request (e.g. selecting a listen sk for - * the received SYN in the TCP case). reuse->sk is one of the sk - * in the reuseport group. The bpf prog can use reuse->sk to learn - * the local listening ip/port without looking into the skb. - * - * When reuse->migrating_sk is not NULL, reuse->sk is closed and - * reuse->migrating_sk is the socket that needs to be migrated - * to another listening socket. migrating_sk could be a fullsock - * sk that is fully established or a reqsk that is in-the-middle - * of 3-way handshake. - */ - __bpf_md_ptr(struct bpf_sock *, sk); - __bpf_md_ptr(struct bpf_sock *, migrating_sk); -}; +} __attribute__((preserve_access_index)); /* * bpf_map_lookup_elem