cregit-Linux how code gets into the kernel

Release 4.10 include/net/lwtunnel.h

Directory: include/net
#ifndef __NET_LWTUNNEL_H

#define __NET_LWTUNNEL_H 1

#include <linux/lwtunnel.h>
#include <linux/netdevice.h>
#include <linux/skbuff.h>
#include <linux/types.h>
#include <net/route.h>


#define LWTUNNEL_HASH_BITS   7

#define LWTUNNEL_HASH_SIZE   (1 << LWTUNNEL_HASH_BITS)

/* lw tunnel state flags */

#define LWTUNNEL_STATE_OUTPUT_REDIRECT	BIT(0)

#define LWTUNNEL_STATE_INPUT_REDIRECT	BIT(1)

#define LWTUNNEL_STATE_XMIT_REDIRECT	BIT(2)

enum {
	
LWTUNNEL_XMIT_DONE,
	
LWTUNNEL_XMIT_CONTINUE,
};



struct lwtunnel_state {
	
__u16		type;
	
__u16		flags;
	
__u16		headroom;
	
atomic_t	refcnt;
	
int		(*orig_output)(struct net *net, struct sock *sk, struct sk_buff *skb);
	
int		(*orig_input)(struct sk_buff *);
	
struct		rcu_head rcu;
	
__u8            data[0];
};


struct lwtunnel_encap_ops {
	
int (*build_state)(struct net_device *dev, struct nlattr *encap,
			   unsigned int family, const void *cfg,
			   struct lwtunnel_state **ts);
	
void (*destroy_state)(struct lwtunnel_state *lws);
	
int (*output)(struct net *net, struct sock *sk, struct sk_buff *skb);
	
int (*input)(struct sk_buff *skb);
	
int (*fill_encap)(struct sk_buff *skb,
			  struct lwtunnel_state *lwtstate);
	
int (*get_encap_size)(struct lwtunnel_state *lwtstate);
	
int (*cmp_encap)(struct lwtunnel_state *a, struct lwtunnel_state *b);
	
int (*xmit)(struct sk_buff *skb);

	
struct module *owner;
};

#ifdef CONFIG_LWTUNNEL
void lwtstate_free(struct lwtunnel_state *lws);


static inline struct lwtunnel_state * lwtstate_get(struct lwtunnel_state *lws) { if (lws) atomic_inc(&lws->refcnt); return lws; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu1862.07%150.00%
nicolas dichtelnicolas dichtel1137.93%150.00%
Total29100.00%2100.00%


static inline void lwtstate_put(struct lwtunnel_state *lws) { if (!lws) return; if (atomic_dec_and_test(&lws->refcnt)) lwtstate_free(lws); }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu3193.94%133.33%
nicolas dichtelnicolas dichtel13.03%133.33%
jiri bencjiri benc13.03%133.33%
Total33100.00%3100.00%


static inline bool lwtunnel_output_redirect(struct lwtunnel_state *lwtstate) { if (lwtstate && (lwtstate->flags & LWTUNNEL_STATE_OUTPUT_REDIRECT)) return true; return false; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu30100.00%1100.00%
Total30100.00%1100.00%


static inline bool lwtunnel_input_redirect(struct lwtunnel_state *lwtstate) { if (lwtstate && (lwtstate->flags & LWTUNNEL_STATE_INPUT_REDIRECT)) return true; return false; }

Contributors

PersonTokensPropCommitsCommitProp
tom herberttom herbert30100.00%1100.00%
Total30100.00%1100.00%


static inline bool lwtunnel_xmit_redirect(struct lwtunnel_state *lwtstate) { if (lwtstate && (lwtstate->flags & LWTUNNEL_STATE_XMIT_REDIRECT)) return true; return false; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu30100.00%1100.00%
Total30100.00%1100.00%


static inline unsigned int lwtunnel_headroom(struct lwtunnel_state *lwtstate, unsigned int mtu) { if ((lwtunnel_xmit_redirect(lwtstate) || lwtunnel_output_redirect(lwtstate)) && lwtstate->headroom < mtu) return lwtstate->headroom; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu3884.44%150.00%
david lebrundavid lebrun715.56%150.00%
Total45100.00%2100.00%

int lwtunnel_encap_add_ops(const struct lwtunnel_encap_ops *op, unsigned int num); int lwtunnel_encap_del_ops(const struct lwtunnel_encap_ops *op, unsigned int num); int lwtunnel_valid_encap_type(u16 encap_type); int lwtunnel_valid_encap_type_attr(struct nlattr *attr, int len); int lwtunnel_build_state(struct net_device *dev, u16 encap_type, struct nlattr *encap, unsigned int family, const void *cfg, struct lwtunnel_state **lws); int lwtunnel_fill_encap(struct sk_buff *skb, struct lwtunnel_state *lwtstate); int lwtunnel_get_encap_size(struct lwtunnel_state *lwtstate); struct lwtunnel_state *lwtunnel_state_alloc(int hdr_len); int lwtunnel_cmp_encap(struct lwtunnel_state *a, struct lwtunnel_state *b); int lwtunnel_output(struct net *net, struct sock *sk, struct sk_buff *skb); int lwtunnel_input(struct sk_buff *skb); int lwtunnel_xmit(struct sk_buff *skb); #else
static inline void lwtstate_free(struct lwtunnel_state *lws) { }

Contributors

PersonTokensPropCommitsCommitProp
ying xueying xue11100.00%1100.00%
Total11100.00%1100.00%


static inline struct lwtunnel_state * lwtstate_get(struct lwtunnel_state *lws) { return lws; }

Contributors

PersonTokensPropCommitsCommitProp
nicolas dichtelnicolas dichtel952.94%150.00%
roopa prabhuroopa prabhu847.06%150.00%
Total17100.00%2100.00%


static inline void lwtstate_put(struct lwtunnel_state *lws) { }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu1090.91%150.00%
nicolas dichtelnicolas dichtel19.09%150.00%
Total11100.00%2100.00%


static inline bool lwtunnel_output_redirect(struct lwtunnel_state *lwtstate) { return false; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu15100.00%1100.00%
Total15100.00%1100.00%


static inline bool lwtunnel_input_redirect(struct lwtunnel_state *lwtstate) { return false; }

Contributors

PersonTokensPropCommitsCommitProp
tom herberttom herbert15100.00%1100.00%
Total15100.00%1100.00%


static inline bool lwtunnel_xmit_redirect(struct lwtunnel_state *lwtstate) { return false; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu15100.00%1100.00%
Total15100.00%1100.00%


static inline unsigned int lwtunnel_headroom(struct lwtunnel_state *lwtstate, unsigned int mtu) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu20100.00%1100.00%
Total20100.00%1100.00%


static inline int lwtunnel_encap_add_ops(const struct lwtunnel_encap_ops *op, unsigned int num) { return -EOPNOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu21100.00%1100.00%
Total21100.00%1100.00%


static inline int lwtunnel_encap_del_ops(const struct lwtunnel_encap_ops *op, unsigned int num) { return -EOPNOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu21100.00%1100.00%
Total21100.00%1100.00%


static inline int lwtunnel_valid_encap_type(u16 encap_type) { return -EOPNOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern14100.00%1100.00%
Total14100.00%1100.00%


static inline int lwtunnel_valid_encap_type_attr(struct nlattr *attr, int len) { /* return 0 since we are not walking attr looking for * RTA_ENCAP_TYPE attribute on nexthops. */ return 0; }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern19100.00%2100.00%
Total19100.00%2100.00%


static inline int lwtunnel_build_state(struct net_device *dev, u16 encap_type, struct nlattr *encap, unsigned int family, const void *cfg, struct lwtunnel_state **lws) { return -EOPNOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu3076.92%150.00%
tom herberttom herbert923.08%150.00%
Total39100.00%2100.00%


static inline int lwtunnel_fill_encap(struct sk_buff *skb, struct lwtunnel_state *lwtstate) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu20100.00%1100.00%
Total20100.00%1100.00%


static inline int lwtunnel_get_encap_size(struct lwtunnel_state *lwtstate) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu15100.00%1100.00%
Total15100.00%1100.00%


static inline struct lwtunnel_state *lwtunnel_state_alloc(int hdr_len) { return NULL; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu15100.00%1100.00%
Total15100.00%1100.00%


static inline int lwtunnel_cmp_encap(struct lwtunnel_state *a, struct lwtunnel_state *b) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu20100.00%1100.00%
Total20100.00%1100.00%


static inline int lwtunnel_output(struct net *net, struct sock *sk, struct sk_buff *skb) { return -EOPNOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu2180.77%150.00%
eric w. biedermaneric w. biederman519.23%150.00%
Total26100.00%2100.00%


static inline int lwtunnel_input(struct sk_buff *skb) { return -EOPNOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
tom herberttom herbert16100.00%1100.00%
Total16100.00%1100.00%


static inline int lwtunnel_xmit(struct sk_buff *skb) { return -EOPNOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu16100.00%1100.00%
Total16100.00%1100.00%

#endif /* CONFIG_LWTUNNEL */ #define MODULE_ALIAS_RTNL_LWT(encap_type) MODULE_ALIAS("rtnl-lwt-" __stringify(encap_type)) #endif /* __NET_LWTUNNEL_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
roopa prabhuroopa prabhu69370.14%318.75%
tom herberttom herbert15815.99%318.75%
david aherndavid ahern525.26%212.50%
nicolas dichtelnicolas dichtel222.23%16.25%
eric w. biedermaneric w. biederman202.02%16.25%
robert shearmanrobert shearman131.32%212.50%
ying xueying xue111.11%16.25%
jiri bencjiri benc90.91%16.25%
david lebrundavid lebrun70.71%16.25%
thomas grafthomas graf30.30%16.25%
Total988100.00%16100.00%
Directory: include/net
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.