cregit-Linux how code gets into the kernel

Release 4.12 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 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 Prabhu1862.07%150.00%
Nicolas 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 Prabhu3193.94%133.33%
Nicolas Dichtel13.03%133.33%
Jiri 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 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 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 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 Prabhu3884.44%150.00%
David 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(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 Xue11100.00%1100.00%
Total11100.00%1100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Nicolas Dichtel952.94%150.00%
Roopa Prabhu847.06%150.00%
Total17100.00%2100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Roopa Prabhu1090.91%150.00%
Nicolas Dichtel19.09%150.00%
Total11100.00%2100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Roopa Prabhu15100.00%1100.00%
Total15100.00%1100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Tom Herbert15100.00%1100.00%
Total15100.00%1100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Roopa 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 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 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 Prabhu21100.00%1100.00%
Total21100.00%1100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
David 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 Ahern19100.00%2100.00%
Total19100.00%2100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Roopa Prabhu2573.53%150.00%
Tom Herbert926.47%150.00%
Total34100.00%2100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Roopa Prabhu20100.00%1100.00%
Total20100.00%1100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Roopa Prabhu15100.00%1100.00%
Total15100.00%1100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Roopa 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 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 Prabhu2180.77%150.00%
Eric W. Biedermann519.23%150.00%
Total26100.00%2100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Tom Herbert16100.00%1100.00%
Total16100.00%1100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Roopa 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 Prabhu67869.68%318.75%
Tom Herbert15816.24%318.75%
David Ahern525.34%212.50%
Nicolas Dichtel222.26%16.25%
Eric W. Biedermann202.06%16.25%
Robert Shearman131.34%212.50%
Ying Xue111.13%16.25%
Jiri Benc90.92%16.25%
David Lebrun70.72%16.25%
Thomas Graf30.31%16.25%
Total973100.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.
Created with cregit.