@@ -120,6 +120,7 @@ int __cgroup_bpf_run_filter_sk(struct sock *sk,
120120
121121int __cgroup_bpf_run_filter_sock_addr (struct sock * sk ,
122122 struct sockaddr * uaddr ,
123+ int * uaddrlen ,
123124 enum cgroup_bpf_attach_type atype ,
124125 void * t_ctx ,
125126 u32 * flags );
@@ -230,22 +231,22 @@ static inline bool cgroup_bpf_sock_enabled(struct sock *sk,
230231#define BPF_CGROUP_RUN_PROG_INET6_POST_BIND (sk ) \
231232 BPF_CGROUP_RUN_SK_PROG(sk, CGROUP_INET6_POST_BIND)
232233
233- #define BPF_CGROUP_RUN_SA_PROG (sk , uaddr , atype ) \
234+ #define BPF_CGROUP_RUN_SA_PROG (sk , uaddr , uaddrlen , atype ) \
234235({ \
235236 int __ret = 0; \
236237 if (cgroup_bpf_enabled(atype)) \
237- __ret = __cgroup_bpf_run_filter_sock_addr(sk, uaddr, atype, \
238- NULL, NULL); \
238+ __ret = __cgroup_bpf_run_filter_sock_addr(sk, uaddr, uaddrlen, \
239+ atype, NULL, NULL); \
239240 __ret; \
240241})
241242
242- #define BPF_CGROUP_RUN_SA_PROG_LOCK (sk , uaddr , atype , t_ctx ) \
243+ #define BPF_CGROUP_RUN_SA_PROG_LOCK (sk , uaddr , uaddrlen , atype , t_ctx ) \
243244({ \
244245 int __ret = 0; \
245246 if (cgroup_bpf_enabled(atype)) { \
246247 lock_sock(sk); \
247- __ret = __cgroup_bpf_run_filter_sock_addr(sk, uaddr, atype, \
248- t_ctx, NULL); \
248+ __ret = __cgroup_bpf_run_filter_sock_addr(sk, uaddr, uaddrlen, \
249+ atype, t_ctx, NULL); \
249250 release_sock(sk); \
250251 } \
251252 __ret; \
@@ -256,14 +257,14 @@ static inline bool cgroup_bpf_sock_enabled(struct sock *sk,
256257 * (at bit position 0) is to indicate CAP_NET_BIND_SERVICE capability check
257258 * should be bypassed (BPF_RET_BIND_NO_CAP_NET_BIND_SERVICE).
258259 */
259- #define BPF_CGROUP_RUN_PROG_INET_BIND_LOCK (sk , uaddr , atype , bind_flags ) \
260+ #define BPF_CGROUP_RUN_PROG_INET_BIND_LOCK (sk , uaddr , uaddrlen , atype , bind_flags ) \
260261({ \
261262 u32 __flags = 0; \
262263 int __ret = 0; \
263264 if (cgroup_bpf_enabled(atype)) { \
264265 lock_sock(sk); \
265- __ret = __cgroup_bpf_run_filter_sock_addr(sk, uaddr, atype, \
266- NULL, &__flags); \
266+ __ret = __cgroup_bpf_run_filter_sock_addr(sk, uaddr, uaddrlen, \
267+ atype, NULL, &__flags); \
267268 release_sock(sk); \
268269 if (__flags & BPF_RET_BIND_NO_CAP_NET_BIND_SERVICE) \
269270 *bind_flags |= BIND_NO_CAP_NET_BIND_SERVICE; \
@@ -276,29 +277,29 @@ static inline bool cgroup_bpf_sock_enabled(struct sock *sk,
276277 cgroup_bpf_enabled(CGROUP_INET6_CONNECT)) && \
277278 (sk)->sk_prot->pre_connect)
278279
279- #define BPF_CGROUP_RUN_PROG_INET4_CONNECT (sk , uaddr ) \
280- BPF_CGROUP_RUN_SA_PROG(sk, uaddr, CGROUP_INET4_CONNECT)
280+ #define BPF_CGROUP_RUN_PROG_INET4_CONNECT (sk , uaddr , uaddrlen ) \
281+ BPF_CGROUP_RUN_SA_PROG(sk, uaddr, uaddrlen, CGROUP_INET4_CONNECT)
281282
282- #define BPF_CGROUP_RUN_PROG_INET6_CONNECT (sk , uaddr ) \
283- BPF_CGROUP_RUN_SA_PROG(sk, uaddr, CGROUP_INET6_CONNECT)
283+ #define BPF_CGROUP_RUN_PROG_INET6_CONNECT (sk , uaddr , uaddrlen ) \
284+ BPF_CGROUP_RUN_SA_PROG(sk, uaddr, uaddrlen, CGROUP_INET6_CONNECT)
284285
285- #define BPF_CGROUP_RUN_PROG_INET4_CONNECT_LOCK (sk , uaddr ) \
286- BPF_CGROUP_RUN_SA_PROG_LOCK(sk, uaddr, CGROUP_INET4_CONNECT, NULL)
286+ #define BPF_CGROUP_RUN_PROG_INET4_CONNECT_LOCK (sk , uaddr , uaddrlen ) \
287+ BPF_CGROUP_RUN_SA_PROG_LOCK(sk, uaddr, uaddrlen, CGROUP_INET4_CONNECT, NULL)
287288
288- #define BPF_CGROUP_RUN_PROG_INET6_CONNECT_LOCK (sk , uaddr ) \
289- BPF_CGROUP_RUN_SA_PROG_LOCK(sk, uaddr, CGROUP_INET6_CONNECT, NULL)
289+ #define BPF_CGROUP_RUN_PROG_INET6_CONNECT_LOCK (sk , uaddr , uaddrlen ) \
290+ BPF_CGROUP_RUN_SA_PROG_LOCK(sk, uaddr, uaddrlen, CGROUP_INET6_CONNECT, NULL)
290291
291- #define BPF_CGROUP_RUN_PROG_UDP4_SENDMSG_LOCK (sk , uaddr , t_ctx ) \
292- BPF_CGROUP_RUN_SA_PROG_LOCK(sk, uaddr, CGROUP_UDP4_SENDMSG, t_ctx)
292+ #define BPF_CGROUP_RUN_PROG_UDP4_SENDMSG_LOCK (sk , uaddr , uaddrlen , t_ctx ) \
293+ BPF_CGROUP_RUN_SA_PROG_LOCK(sk, uaddr, uaddrlen, CGROUP_UDP4_SENDMSG, t_ctx)
293294
294- #define BPF_CGROUP_RUN_PROG_UDP6_SENDMSG_LOCK (sk , uaddr , t_ctx ) \
295- BPF_CGROUP_RUN_SA_PROG_LOCK(sk, uaddr, CGROUP_UDP6_SENDMSG, t_ctx)
295+ #define BPF_CGROUP_RUN_PROG_UDP6_SENDMSG_LOCK (sk , uaddr , uaddrlen , t_ctx ) \
296+ BPF_CGROUP_RUN_SA_PROG_LOCK(sk, uaddr, uaddrlen, CGROUP_UDP6_SENDMSG, t_ctx)
296297
297- #define BPF_CGROUP_RUN_PROG_UDP4_RECVMSG_LOCK (sk , uaddr ) \
298- BPF_CGROUP_RUN_SA_PROG_LOCK(sk, uaddr, CGROUP_UDP4_RECVMSG, NULL)
298+ #define BPF_CGROUP_RUN_PROG_UDP4_RECVMSG_LOCK (sk , uaddr , uaddrlen ) \
299+ BPF_CGROUP_RUN_SA_PROG_LOCK(sk, uaddr, uaddrlen, CGROUP_UDP4_RECVMSG, NULL)
299300
300- #define BPF_CGROUP_RUN_PROG_UDP6_RECVMSG_LOCK (sk , uaddr ) \
301- BPF_CGROUP_RUN_SA_PROG_LOCK(sk, uaddr, CGROUP_UDP6_RECVMSG, NULL)
301+ #define BPF_CGROUP_RUN_PROG_UDP6_RECVMSG_LOCK (sk , uaddr , uaddrlen ) \
302+ BPF_CGROUP_RUN_SA_PROG_LOCK(sk, uaddr, uaddrlen, CGROUP_UDP6_RECVMSG, NULL)
302303
303304/* The SOCK_OPS"_SK" macro should be used when sock_ops->sk is not a
304305 * fullsock and its parent fullsock cannot be traced by
@@ -477,24 +478,24 @@ static inline int bpf_percpu_cgroup_storage_update(struct bpf_map *map,
477478}
478479
479480#define cgroup_bpf_enabled (atype ) (0)
480- #define BPF_CGROUP_RUN_SA_PROG_LOCK (sk , uaddr , atype , t_ctx ) ({ 0; })
481- #define BPF_CGROUP_RUN_SA_PROG (sk , uaddr , atype ) ({ 0; })
481+ #define BPF_CGROUP_RUN_SA_PROG_LOCK (sk , uaddr , uaddrlen , atype , t_ctx ) ({ 0; })
482+ #define BPF_CGROUP_RUN_SA_PROG (sk , uaddr , uaddrlen , atype ) ({ 0; })
482483#define BPF_CGROUP_PRE_CONNECT_ENABLED (sk ) (0)
483484#define BPF_CGROUP_RUN_PROG_INET_INGRESS (sk ,skb ) ({ 0; })
484485#define BPF_CGROUP_RUN_PROG_INET_EGRESS (sk ,skb ) ({ 0; })
485486#define BPF_CGROUP_RUN_PROG_INET_SOCK (sk ) ({ 0; })
486487#define BPF_CGROUP_RUN_PROG_INET_SOCK_RELEASE (sk ) ({ 0; })
487- #define BPF_CGROUP_RUN_PROG_INET_BIND_LOCK (sk , uaddr , atype , flags ) ({ 0; })
488+ #define BPF_CGROUP_RUN_PROG_INET_BIND_LOCK (sk , uaddr , uaddrlen , atype , flags ) ({ 0; })
488489#define BPF_CGROUP_RUN_PROG_INET4_POST_BIND (sk ) ({ 0; })
489490#define BPF_CGROUP_RUN_PROG_INET6_POST_BIND (sk ) ({ 0; })
490- #define BPF_CGROUP_RUN_PROG_INET4_CONNECT (sk , uaddr ) ({ 0; })
491- #define BPF_CGROUP_RUN_PROG_INET4_CONNECT_LOCK (sk , uaddr ) ({ 0; })
492- #define BPF_CGROUP_RUN_PROG_INET6_CONNECT (sk , uaddr ) ({ 0; })
493- #define BPF_CGROUP_RUN_PROG_INET6_CONNECT_LOCK (sk , uaddr ) ({ 0; })
494- #define BPF_CGROUP_RUN_PROG_UDP4_SENDMSG_LOCK (sk , uaddr , t_ctx ) ({ 0; })
495- #define BPF_CGROUP_RUN_PROG_UDP6_SENDMSG_LOCK (sk , uaddr , t_ctx ) ({ 0; })
496- #define BPF_CGROUP_RUN_PROG_UDP4_RECVMSG_LOCK (sk , uaddr ) ({ 0; })
497- #define BPF_CGROUP_RUN_PROG_UDP6_RECVMSG_LOCK (sk , uaddr ) ({ 0; })
491+ #define BPF_CGROUP_RUN_PROG_INET4_CONNECT (sk , uaddr , uaddrlen ) ({ 0; })
492+ #define BPF_CGROUP_RUN_PROG_INET4_CONNECT_LOCK (sk , uaddr , uaddrlen ) ({ 0; })
493+ #define BPF_CGROUP_RUN_PROG_INET6_CONNECT (sk , uaddr , uaddrlen ) ({ 0; })
494+ #define BPF_CGROUP_RUN_PROG_INET6_CONNECT_LOCK (sk , uaddr , uaddrlen ) ({ 0; })
495+ #define BPF_CGROUP_RUN_PROG_UDP4_SENDMSG_LOCK (sk , uaddr , uaddrlen , t_ctx ) ({ 0; })
496+ #define BPF_CGROUP_RUN_PROG_UDP6_SENDMSG_LOCK (sk , uaddr , uaddrlen , t_ctx ) ({ 0; })
497+ #define BPF_CGROUP_RUN_PROG_UDP4_RECVMSG_LOCK (sk , uaddr , uaddrlen ) ({ 0; })
498+ #define BPF_CGROUP_RUN_PROG_UDP6_RECVMSG_LOCK (sk , uaddr , uaddrlen ) ({ 0; })
498499#define BPF_CGROUP_RUN_PROG_SOCK_OPS (sock_ops ) ({ 0; })
499500#define BPF_CGROUP_RUN_PROG_DEVICE_CGROUP (atype , major , minor , access ) ({ 0; })
500501#define BPF_CGROUP_RUN_PROG_SYSCTL (head ,table ,write ,buf ,count ,pos ) ({ 0; })
0 commit comments