cregit-Linux how code gets into the kernel

Release 4.12 include/net/netfilter/nf_conntrack_expect.h

/*
 * connection tracking expectations.
 */

#ifndef _NF_CONNTRACK_EXPECT_H

#define _NF_CONNTRACK_EXPECT_H

#include <linux/refcount.h>

#include <net/netfilter/nf_conntrack.h>
#include <net/netfilter/nf_conntrack_zones.h>

extern unsigned int nf_ct_expect_hsize;
extern unsigned int nf_ct_expect_max;
extern struct hlist_head *nf_ct_expect_hash;


struct nf_conntrack_expect {
	/* Conntrack expectation list member */
	
struct hlist_node lnode;

	/* Hash member */
	
struct hlist_node hnode;

	/* We expect this tuple, with the following mask */
	
struct nf_conntrack_tuple tuple;
	
struct nf_conntrack_tuple_mask mask;

	/* Function to call after setup and insertion */
	
void (*expectfn)(struct nf_conn *new,
			 struct nf_conntrack_expect *this);

	/* Helper to assign to new connection */
	
struct nf_conntrack_helper *helper;

	/* The conntrack of the master connection */
	
struct nf_conn *master;

	/* Timer function; deletes the expectation. */
	
struct timer_list timeout;

	/* Usage count. */
	
refcount_t use;

	/* Flags */
	
unsigned int flags;

	/* Expectation class */
	
unsigned int class;

#ifdef CONFIG_NF_NAT_NEEDED
	
union nf_inet_addr saved_addr;
	/* This is the original per-proto part, used to map the
         * expected connection the way the recipient expects. */
	
union nf_conntrack_man_proto saved_proto;
	/* Direction relative to the master connection. */
	
enum ip_conntrack_dir dir;
#endif

	
struct rcu_head rcu;
};


static inline struct net *nf_ct_exp_net(struct nf_conntrack_expect *exp) { return nf_ct_net(exp->master); }

Contributors

PersonTokensPropCommitsCommitProp
Alexey Dobriyan22100.00%2100.00%
Total22100.00%2100.00%

#define NF_CT_EXP_POLICY_NAME_LEN 16 struct nf_conntrack_expect_policy { unsigned int max_expected; unsigned int timeout; char name[NF_CT_EXP_POLICY_NAME_LEN]; }; #define NF_CT_EXPECT_CLASS_DEFAULT 0 #define NF_CT_EXPECT_MAX_CNT 255 int nf_conntrack_expect_pernet_init(struct net *net); void nf_conntrack_expect_pernet_fini(struct net *net); int nf_conntrack_expect_init(void); void nf_conntrack_expect_fini(void); struct nf_conntrack_expect * __nf_ct_expect_find(struct net *net, const struct nf_conntrack_zone *zone, const struct nf_conntrack_tuple *tuple); struct nf_conntrack_expect * nf_ct_expect_find_get(struct net *net, const struct nf_conntrack_zone *zone, const struct nf_conntrack_tuple *tuple); struct nf_conntrack_expect * nf_ct_find_expectation(struct net *net, const struct nf_conntrack_zone *zone, const struct nf_conntrack_tuple *tuple); void nf_ct_unlink_expect_report(struct nf_conntrack_expect *exp, u32 portid, int report);
static inline void nf_ct_unlink_expect(struct nf_conntrack_expect *exp) { nf_ct_unlink_expect_report(exp, 0, 0); }

Contributors

PersonTokensPropCommitsCommitProp
Pablo Neira Ayuso21100.00%1100.00%
Total21100.00%1100.00%

void nf_ct_remove_expectations(struct nf_conn *ct); void nf_ct_unexpect_related(struct nf_conntrack_expect *exp); bool nf_ct_remove_expect(struct nf_conntrack_expect *exp); /* Allocate space for an expectation: this is mandatory before calling nf_ct_expect_related. You will have to call put afterwards. */ struct nf_conntrack_expect *nf_ct_expect_alloc(struct nf_conn *me); void nf_ct_expect_init(struct nf_conntrack_expect *, unsigned int, u_int8_t, const union nf_inet_addr *, const union nf_inet_addr *, u_int8_t, const __be16 *, const __be16 *); void nf_ct_expect_put(struct nf_conntrack_expect *exp); int nf_ct_expect_related_report(struct nf_conntrack_expect *expect, u32 portid, int report);
static inline int nf_ct_expect_related(struct nf_conntrack_expect *expect) { return nf_ct_expect_related_report(expect, 0, 0); }

Contributors

PersonTokensPropCommitsCommitProp
Pablo Neira Ayuso22100.00%2100.00%
Total22100.00%2100.00%

#endif /*_NF_CONNTRACK_EXPECT_H*/

Overall Contributors

PersonTokensPropCommitsCommitProp
Martin Josefsson16237.07%13.12%
Patrick McHardy11225.63%1650.00%
Pablo Neira Ayuso6214.19%412.50%
Alexey Dobriyan4510.30%26.25%
Gao Feng276.18%39.38%
Daniel Borkmann153.43%13.12%
Florian Westphal61.37%13.12%
Elena Reshetova40.92%13.12%
Jan Engelhardt30.69%26.25%
Jozsef Kadlecsik10.23%13.12%
Total437100.00%32100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.