#ifndef _AF_NETLINK_H #define _AF_NETLINK_H #include <linux/rhashtable.h> #include <linux/atomic.h> #include <net/sock.h> #define NLGRPSZ(x) (ALIGN(x, sizeof(unsigned long) * 8) / 8) #define NLGRPLONGS(x) (NLGRPSZ(x)/sizeof(unsigned long)) struct netlink_ring { void **pg_vec; unsigned int head; unsigned int frames_per_block; unsigned int frame_size; unsigned int frame_max; unsigned int pg_vec_order; unsigned int pg_vec_pages; unsigned int pg_vec_len; atomic_t pending; }; struct netlink_sock { /* struct sock has to be the first member of netlink_sock */ struct sock sk; u32 portid; u32 dst_portid; u32 dst_group; u32 flags; u32 subscriptions; u32 ngroups; unsigned long *groups; unsigned long state; size_t max_recvmsg_len; wait_queue_head_t wait; bool bound; bool cb_running; struct netlink_callback cb; struct mutex *cb_mutex; struct mutex cb_def_mutex; void (*netlink_rcv)(struct sk_buff *skb); int (*netlink_bind)(struct net *net, int group); void (*netlink_unbind)(struct net *net, int group); struct module *module; struct rhash_head node; struct rcu_head rcu; };
static inline struct netlink_sock *nlk_sk(struct sock *sk) { return container_of(sk, struct netlink_sock, sk); }Contributors
Person | Tokens | Prop | Commits | CommitProp | |
andrey vagin | andrey vagin | 25 | 100.00% | 1 | 100.00% |
Total | 25 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
andrey vagin | andrey vagin | 187 | 60.13% | 1 | 9.09% |
patrick mchardy | patrick mchardy | 41 | 13.18% | 1 | 9.09% |
johannes berg | johannes berg | 23 | 7.40% | 2 | 18.18% |
richard guy briggs | richard guy briggs | 22 | 7.07% | 1 | 9.09% |
gao feng | gao feng | 17 | 5.47% | 1 | 9.09% |
thomas graf | thomas graf | 12 | 3.86% | 2 | 18.18% |
eric dumazet | eric dumazet | 3 | 0.96% | 1 | 9.09% |
pravin b shelar | pravin b shelar | 3 | 0.96% | 1 | 9.09% |
herbert xu | herbert xu | 3 | 0.96% | 1 | 9.09% |
Total | 311 | 100.00% | 11 | 100.00% |