Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.19-rc2 42 lines 1.2 kB view raw
1/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ 2#ifndef __MPTCP_BPF_H__ 3#define __MPTCP_BPF_H__ 4 5#include "bpf_experimental.h" 6 7/* list helpers from include/linux/list.h */ 8static inline int list_is_head(const struct list_head *list, 9 const struct list_head *head) 10{ 11 return list == head; 12} 13 14#define list_entry(ptr, type, member) \ 15 container_of(ptr, type, member) 16 17#define list_first_entry(ptr, type, member) \ 18 list_entry((ptr)->next, type, member) 19 20#define list_next_entry(pos, member) \ 21 list_entry((pos)->member.next, typeof(*(pos)), member) 22 23#define list_entry_is_head(pos, head, member) \ 24 list_is_head(&pos->member, (head)) 25 26/* small difference: 'can_loop' has been added in the conditions */ 27#define list_for_each_entry(pos, head, member) \ 28 for (pos = list_first_entry(head, typeof(*pos), member); \ 29 !list_entry_is_head(pos, head, member) && can_loop; \ 30 pos = list_next_entry(pos, member)) 31 32/* mptcp helpers from protocol.h */ 33#define mptcp_for_each_subflow(__msk, __subflow) \ 34 list_for_each_entry(__subflow, &((__msk)->conn_list), node) 35 36static __always_inline struct sock * 37mptcp_subflow_tcp_sock(const struct mptcp_subflow_context *subflow) 38{ 39 return subflow->tcp_sock; 40} 41 42#endif