cregit-Linux how code gets into the kernel

Release 4.11 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);

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
Harald Welte13034.30%415.38%
Pablo Neira Ayuso12432.72%1038.46%
Patrick McHardy6617.41%726.92%
Eric Dumazet328.44%27.69%
Alexey Dobriyan205.28%13.85%
David Howells41.06%13.85%
Yaowei Bai30.79%13.85%
Total379100.00%26100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.