cregit-Linux how code gets into the kernel

Release 4.7 include/net/netfilter/nf_conntrack_ecache.h

/*
 * connection tracking event cache.
 */

#ifndef _NF_CONNTRACK_ECACHE_H

#define _NF_CONNTRACK_ECACHE_H
#include <net/netfilter/nf_conntrack.h>

#include <net/net_namespace.h>
#include <net/netfilter/nf_conntrack_expect.h>
#include <linux/netfilter/nf_conntrack_common.h>
#include <linux/netfilter/nf_conntrack_tuple_common.h>
#include <net/netfilter/nf_conntrack_extend.h>


struct nf_conntrack_ecache {
	
unsigned long cache;	/* bitops want long */
	
unsigned long missed;	/* missed events */
	
u16 ctmask;		/* bitmask of ct events to be delivered */
	
u16 expmask;		/* bitmask of expect events to be delivered */
	
u32 portid;		/* netlink portid of destroyer */
};


static inline struct nf_conntrack_ecache * nf_ct_ecache_find(const struct nf_conn *ct) { #ifdef CONFIG_NF_CONNTRACK_EVENTS return nf_ct_ext_find(ct, NF_CT_EXT_ECACHE); #else return NULL; #endif }

Contributors

PersonTokensPropCommitsCommitProp
pablo neira ayusopablo neira ayuso1957.58%133.33%
changli gaochangli gao1030.30%133.33%
martin josefssonmartin josefsson412.12%133.33%
Total33100.00%3100.00%


static inline struct nf_conntrack_ecache * nf_ct_ecache_ext_add(struct nf_conn *ct, u16 ctmask, u16 expmask, gfp_t gfp) { #ifdef CONFIG_NF_CONNTRACK_EVENTS struct net *net = nf_ct_net(ct); struct nf_conntrack_ecache *e; if (!ctmask && !expmask && net->ct.sysctl_events) { ctmask = ~0; expmask = ~0; } if (!ctmask && !expmask) return NULL; e = nf_ct_ext_add(ct, NF_CT_EXT_ECACHE, gfp); if (e) { e->ctmask = ctmask; e->expmask = expmask; } return e; #else return NULL; #endif }

Contributors

PersonTokensPropCommitsCommitProp
patrick mchardypatrick mchardy5950.43%125.00%
pablo neira ayusopablo neira ayuso4639.32%125.00%
changli gaochangli gao108.55%125.00%
martin josefssonmartin josefsson21.71%125.00%
Total117100.00%4100.00%

; #ifdef CONFIG_NF_CONNTRACK_EVENTS /* This structure is passed to event handler */ struct nf_ct_event { struct nf_conn *ct; u32 portid; int report; }; struct nf_ct_event_notifier { int (*fcn)(unsigned int events, struct nf_ct_event *item); }; int nf_conntrack_register_notifier(struct net *net, struct nf_ct_event_notifier *nb); void nf_conntrack_unregister_notifier(struct net *net, struct nf_ct_event_notifier *nb); void nf_ct_deliver_cached_events(struct nf_conn *ct); int nf_conntrack_eventmask_report(unsigned int eventmask, struct nf_conn *ct, u32 portid, int report);
static inline void nf_conntrack_event_cache(enum ip_conntrack_events event, struct nf_conn *ct) { struct net *net = nf_ct_net(ct); struct nf_conntrack_ecache *e; if (!rcu_access_pointer(net->ct.nf_conntrack_event_cb)) return; e = nf_ct_ecache_find(ct); if (e == NULL) return; set_bit(event, &e->cache); }

Contributors

PersonTokensPropCommitsCommitProp
pablo neira ayusopablo neira ayuso3754.41%350.00%
martin josefssonmartin josefsson2841.18%116.67%
alexey dobriyanalexey dobriyan34.41%233.33%
Total68100.00%6100.00%


static inline int nf_conntrack_event_report(enum ip_conntrack_events event, struct nf_conn *ct, u32 portid, int report) { const struct net *net = nf_ct_net(ct); if (!rcu_access_pointer(net->ct.nf_conntrack_event_cb)) return 0; return nf_conntrack_eventmask_report(1 << event, ct, portid, report); }

Contributors

PersonTokensPropCommitsCommitProp
pablo neira ayusopablo neira ayuso4064.52%562.50%
florian westphalflorian westphal1016.13%112.50%
martin josefssonmartin josefsson1016.13%112.50%
eric w. biedermaneric w. biederman23.23%112.50%
Total62100.00%8100.00%


static inline int nf_conntrack_event(enum ip_conntrack_events event, struct nf_conn *ct) { const struct net *net = nf_ct_net(ct); if (!rcu_access_pointer(net->ct.nf_conntrack_event_cb)) return 0; return nf_conntrack_eventmask_report(1 << event, ct, 0, 0); }

Contributors

PersonTokensPropCommitsCommitProp
pablo neira ayusopablo neira ayuso2748.21%360.00%
florian westphalflorian westphal2646.43%120.00%
martin josefssonmartin josefsson35.36%120.00%
Total56100.00%5100.00%

struct nf_exp_event { struct nf_conntrack_expect *exp; u32 portid; int report; }; struct nf_exp_event_notifier { int (*fcn)(unsigned int events, struct nf_exp_event *item); }; int nf_ct_expect_register_notifier(struct net *net, struct nf_exp_event_notifier *nb); void nf_ct_expect_unregister_notifier(struct net *net, struct nf_exp_event_notifier *nb); void nf_ct_expect_event_report(enum ip_conntrack_expect_events event, struct nf_conntrack_expect *exp, u32 portid, int report); int nf_conntrack_ecache_pernet_init(struct net *net); void nf_conntrack_ecache_pernet_fini(struct net *net); int nf_conntrack_ecache_init(void); void nf_conntrack_ecache_fini(void);
static inline void nf_conntrack_ecache_delayed_work(struct net *net) { if (!delayed_work_pending(&net->ct.ecache_dwork)) { schedule_delayed_work(&net->ct.ecache_dwork, HZ); net->ct.ecache_dwork_pending = true; } }

Contributors

PersonTokensPropCommitsCommitProp
florian westphalflorian westphal47100.00%1100.00%
Total47100.00%1100.00%


static inline void nf_conntrack_ecache_work(struct net *net) { if (net->ct.ecache_dwork_pending) { net->ct.ecache_dwork_pending = false; mod_delayed_work(system_wq, &net->ct.ecache_dwork, 0); } }

Contributors

PersonTokensPropCommitsCommitProp
florian westphalflorian westphal44100.00%1100.00%
Total44100.00%1100.00%

#else /* CONFIG_NF_CONNTRACK_EVENTS */
static inline void nf_conntrack_event_cache(enum ip_conntrack_events event, struct nf_conn *ct) {}

Contributors

PersonTokensPropCommitsCommitProp
martin josefssonmartin josefsson1386.67%150.00%
linus torvaldslinus torvalds213.33%150.00%
Total15100.00%2100.00%


static inline int nf_conntrack_eventmask_report(unsigned int eventmask, struct nf_conn *ct, u32 portid, int report) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
pablo neira ayusopablo neira ayuso2496.00%266.67%
eric w. biedermaneric w. biederman14.00%133.33%
Total25100.00%3100.00%


static inline int nf_conntrack_event(enum ip_conntrack_events event, struct nf_conn *ct) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
martin josefssonmartin josefsson1368.42%150.00%
pablo neira ayusopablo neira ayuso631.58%150.00%
Total19100.00%2100.00%


static inline int nf_conntrack_event_report(enum ip_conntrack_events event, struct nf_conn *ct, u32 portid, int report) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
pablo neira ayusopablo neira ayuso2496.00%266.67%
eric w. biedermaneric w. biederman14.00%133.33%
Total25100.00%3100.00%


static inline void nf_ct_deliver_cached_events(const struct nf_conn *ct) {}

Contributors

PersonTokensPropCommitsCommitProp
martin josefssonmartin josefsson12100.00%1100.00%
Total12100.00%1100.00%


static inline void nf_ct_expect_event_report(enum ip_conntrack_expect_events e, struct nf_conntrack_expect *exp, u32 portid, int report) {}

Contributors

PersonTokensPropCommitsCommitProp
pablo neira ayusopablo neira ayuso2095.24%150.00%
eric w. biedermaneric w. biederman14.76%150.00%
Total21100.00%2100.00%


static inline int nf_conntrack_ecache_pernet_init(struct net *net) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
alexey dobriyanalexey dobriyan1386.67%133.33%
gao fenggao feng16.67%133.33%
guo-fu tsengguo-fu tseng16.67%133.33%
Total15100.00%3100.00%


static inline void nf_conntrack_ecache_pernet_fini(struct net *net) { }

Contributors

PersonTokensPropCommitsCommitProp
alexey dobriyanalexey dobriyan1090.91%150.00%
gao fenggao feng19.09%150.00%
Total11100.00%2100.00%


static inline int nf_conntrack_ecache_init(void) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
gao fenggao feng12100.00%1100.00%
Total12100.00%1100.00%


static inline void nf_conntrack_ecache_fini(void) { }

Contributors

PersonTokensPropCommitsCommitProp
gao fenggao feng8100.00%1100.00%
Total8100.00%1100.00%


static inline void nf_conntrack_ecache_delayed_work(struct net *net) { }

Contributors

PersonTokensPropCommitsCommitProp
florian westphalflorian westphal11100.00%1100.00%
Total11100.00%1100.00%


static inline void nf_conntrack_ecache_work(struct net *net) { }

Contributors

PersonTokensPropCommitsCommitProp
florian westphalflorian westphal11100.00%1100.00%
Total11100.00%1100.00%

#endif /* CONFIG_NF_CONNTRACK_EVENTS */ #endif /*_NF_CONNTRACK_ECACHE_H*/

Overall Contributors

PersonTokensPropCommitsCommitProp
pablo neira ayusopablo neira ayuso37542.37%630.00%
florian westphalflorian westphal16919.10%315.00%
martin josefssonmartin josefsson14416.27%15.00%
patrick mchardypatrick mchardy849.49%315.00%
alexey dobriyanalexey dobriyan444.97%210.00%
gao fenggao feng364.07%15.00%
changli gaochangli gao202.26%15.00%
eric w. biedermaneric w. biederman101.13%15.00%
linus torvaldslinus torvalds20.23%15.00%
guo-fu tsengguo-fu tseng10.11%15.00%
Total885100.00%20100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}