#ifndef _INET_ECN_H_
#define _INET_ECN_H_
#include <linux/ip.h>
#include <linux/skbuff.h>
#include <linux/if_vlan.h>
#include <net/inet_sock.h>
#include <net/dsfield.h>
#include <net/checksum.h>
enum { … };
extern int sysctl_tunnel_ecn_log;
static inline int INET_ECN_is_ce(__u8 dsfield)
{ … }
static inline int INET_ECN_is_not_ect(__u8 dsfield)
{ … }
static inline int INET_ECN_is_capable(__u8 dsfield)
{ … }
static inline __u8 INET_ECN_encapsulate(__u8 outer, __u8 inner)
{ … }
static inline void INET_ECN_xmit(struct sock *sk)
{ … }
static inline void INET_ECN_dontxmit(struct sock *sk)
{ … }
#define IP6_ECN_flow_init(label) …
#define IP6_ECN_flow_xmit(sk, label) …
static inline int IP_ECN_set_ce(struct iphdr *iph)
{ … }
static inline int IP_ECN_set_ect1(struct iphdr *iph)
{ … }
static inline void IP_ECN_clear(struct iphdr *iph)
{ … }
static inline void ipv4_copy_dscp(unsigned int dscp, struct iphdr *inner)
{ … }
struct ipv6hdr;
static inline int IP6_ECN_set_ce(struct sk_buff *skb, struct ipv6hdr *iph)
{ … }
static inline int IP6_ECN_set_ect1(struct sk_buff *skb, struct ipv6hdr *iph)
{ … }
static inline void ipv6_copy_dscp(unsigned int dscp, struct ipv6hdr *inner)
{ … }
static inline int INET_ECN_set_ce(struct sk_buff *skb)
{ … }
static inline int skb_get_dsfield(struct sk_buff *skb)
{ … }
static inline int INET_ECN_set_ect1(struct sk_buff *skb)
{ … }
static inline int __INET_ECN_decapsulate(__u8 outer, __u8 inner, bool *set_ce)
{ … }
static inline int INET_ECN_decapsulate(struct sk_buff *skb,
__u8 outer, __u8 inner)
{ … }
static inline int IP_ECN_decapsulate(const struct iphdr *oiph,
struct sk_buff *skb)
{ … }
static inline int IP6_ECN_decapsulate(const struct ipv6hdr *oipv6h,
struct sk_buff *skb)
{ … }
#endif