cregit-Linux how code gets into the kernel

Release 4.12 include/linux/netfilter/nfnetlink.h

#ifndef _NFNETLINK_H

#define _NFNETLINK_H


#include <linux/netlink.h>
#include <linux/capability.h>
#include <net/netlink.h>
#include <uapi/linux/netfilter/nfnetlink.h>


struct nfnl_callback {
	
int (*call)(struct net *net, struct sock *nl, struct sk_buff *skb,
		    const struct nlmsghdr *nlh,
		    const struct nlattr * const cda[]);
	
int (*call_rcu)(struct net *net, struct sock *nl, struct sk_buff *skb,
			const struct nlmsghdr *nlh,
			const struct nlattr * const cda[]);
	
int (*call_batch)(struct net *net, struct sock *nl, struct sk_buff *skb,
			  const struct nlmsghdr *nlh,
			  const struct nlattr * const cda[]);
	
const struct nla_policy *policy;	/* netlink attribute policy */
	
const u_int16_t attr_count;		/* number of nlattr's */
};


struct nfnetlink_subsystem {
	
const char *name;
	
__u8 subsys_id;			/* nfnetlink subsystem ID */
	
__u8 cb_count;			/* number of callbacks */
	
const struct nfnl_callback *cb;	/* callback for individual types */
	
int (*commit)(struct net *net, struct sk_buff *skb);
	
int (*abort)(struct net *net, struct sk_buff *skb);
	
bool (*valid_genid)(struct net *net, u32 genid);
};

int nfnetlink_subsys_register(const struct nfnetlink_subsystem *n);
int nfnetlink_subsys_unregister(const struct nfnetlink_subsystem *n);

int nfnetlink_has_listeners(struct net *net, unsigned int group);
int nfnetlink_send(struct sk_buff *skb, struct net *net, u32 portid,
		   unsigned int group, int echo, gfp_t flags);
int nfnetlink_set_err(struct net *net, u32 portid, u32 group, int error);
int nfnetlink_unicast(struct sk_buff *skb, struct net *net, u32 portid,
		      int flags);


static inline u16 nfnl_msg_type(u8 subsys, u8 msg_type) { return subsys << 8 | msg_type; }

Contributors

PersonTokensPropCommitsCommitProp
Pablo Neira Ayuso20100.00%1100.00%
Total20100.00%1100.00%

void nfnl_lock(__u8 subsys_id); void nfnl_unlock(__u8 subsys_id); #ifdef CONFIG_PROVE_LOCKING bool lockdep_nfnl_is_held(__u8 subsys_id); #else
static inline bool lockdep_nfnl_is_held(__u8 subsys_id) { return true; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick McHardy1184.62%150.00%
Yaowei Bai215.38%150.00%
Total13100.00%2100.00%

#endif /* CONFIG_PROVE_LOCKING */ /* * nfnl_dereference - fetch RCU pointer when updates are prevented by subsys mutex * * @p: The pointer to read, prior to dereferencing * @ss: The nfnetlink subsystem ID * * Return the value of the specified RCU-protected pointer, but omit * both the smp_read_barrier_depends() and the ACCESS_ONCE(), because * caller holds the NFNL subsystem mutex. */ #define nfnl_dereference(p, ss) \ rcu_dereference_protected(p, lockdep_nfnl_is_held(ss)) #define MODULE_ALIAS_NFNL_SUBSYS(subsys) \ MODULE_ALIAS("nfnetlink-subsys-" __stringify(subsys)) #endif /* _NFNETLINK_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Pablo Neira Ayuso14436.09%1140.74%
Harald Welte13032.58%414.81%
Patrick McHardy6616.54%725.93%
Eric Dumazet328.02%27.41%
Alexey Dobriyan205.01%13.70%
David Howells41.00%13.70%
Yaowei Bai30.75%13.70%
Total399100.00%27100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.