cregit-Linux how code gets into the kernel

Release 4.11 net/netlink/af_netlink.h

Directory: net/netlink
#ifndef _AF_NETLINK_H

#define _AF_NETLINK_H

#include <linux/rhashtable.h>
#include <linux/atomic.h>
#include <linux/workqueue.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_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;
	
struct work_struct	work;
};


static inline struct netlink_sock *nlk_sk(struct sock *sk) { return container_of(sk, struct netlink_sock, sk); }

Contributors

PersonTokensPropCommitsCommitProp
Andrey Vagin25100.00%1100.00%
Total25100.00%1100.00%

struct netlink_table { struct rhashtable hash; struct hlist_head mc_list; struct listeners __rcu *listeners; unsigned int flags; unsigned int groups; struct mutex *cb_mutex; struct module *module; int (*bind)(struct net *net, int group); void (*unbind)(struct net *net, int group); bool (*compare)(struct net *net, struct sock *sock); int registered; }; extern struct netlink_table *nl_table; extern rwlock_t nl_table_lock; #endif

Overall Contributors

PersonTokensPropCommitsCommitProp
Andrey Vagin18767.51%19.09%
Johannes Berg238.30%218.18%
Richard Guy Briggs227.94%19.09%
Gao Feng176.14%19.09%
Thomas Graf124.33%218.18%
Herbert Xu103.61%218.18%
Pravin B Shelar31.08%19.09%
Eric Dumazet31.08%19.09%
Total277100.00%11100.00%
Directory: net/netlink
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.