cregit-Linux how code gets into the kernel

Release 4.7 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)


struct lwtunnel_state {
	
__u16		type;
	
__u16		flags;
	
atomic_t	refcnt;
	
int		(*orig_output)(struct net *net, struct sock *sk, struct sk_buff *skb);
	
int		(*orig_input)(struct sk_buff *);
	
int             len;
	
__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);
	
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);
};

#ifdef CONFIG_LWTUNNEL

static inline void lwtstate_free(struct lwtunnel_state *lws) { kfree(lws); }

Contributors

PersonTokensPropCommitsCommitProp
jiri bencjiri benc17100.00%1100.00%
Total17100.00%1100.00%


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%

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_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); #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 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_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%

#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 prabhu54571.24%222.22%
tom herberttom herbert14118.43%222.22%
nicolas dichtelnicolas dichtel222.88%111.11%
eric w. biedermaneric w. biederman202.61%111.11%
jiri bencjiri benc182.35%111.11%
ying xueying xue111.44%111.11%
robert shearmanrobert shearman81.05%111.11%
Total765100.00%9100.00%
Directory: include/net
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}