Linux anchor 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64
Apache/2.4.18 (Ubuntu)
Server IP : 10.10.100.4 & Your IP : 216.73.217.150
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
src /
linux-headers-4.4.0-119 /
include /
net /
Delete
Unzip
Name
Size
Permission
Date
Action
9p
[ DIR ]
drwxr-xr-x
2018-04-05 07:11
bluetooth
[ DIR ]
drwxr-xr-x
2018-04-05 07:11
caif
[ DIR ]
drwxr-xr-x
2018-04-05 07:11
irda
[ DIR ]
drwxr-xr-x
2018-04-05 07:11
iucv
[ DIR ]
drwxr-xr-x
2018-04-05 07:11
netfilter
[ DIR ]
drwxr-xr-x
2018-04-05 07:11
netns
[ DIR ]
drwxr-xr-x
2018-04-05 07:11
nfc
[ DIR ]
drwxr-xr-x
2018-04-05 07:11
phonet
[ DIR ]
drwxr-xr-x
2018-04-05 07:11
sctp
[ DIR ]
drwxr-xr-x
2018-04-05 07:11
tc_act
[ DIR ]
drwxr-xr-x
2018-04-05 07:11
6lowpan.h
7.53
KB
-rw-r--r--
2016-01-11 00:01
Space.h
1.12
KB
-rw-r--r--
2016-01-11 00:01
act_api.h
4.21
KB
-rw-r--r--
2016-01-11 00:01
addrconf.h
11.45
KB
-rw-r--r--
2018-04-02 18:07
af_ieee802154.h
1.55
KB
-rw-r--r--
2016-01-11 00:01
af_rxrpc.h
1.82
KB
-rw-r--r--
2016-01-11 00:01
af_unix.h
2.12
KB
-rw-r--r--
2018-04-02 18:07
af_vsock.h
6.17
KB
-rw-r--r--
2016-01-11 00:01
ah.h
343
B
-rw-r--r--
2016-01-11 00:01
arp.h
1.83
KB
-rw-r--r--
2018-04-02 18:07
atmclip.h
1.44
KB
-rw-r--r--
2016-01-11 00:01
ax25.h
14.53
KB
-rw-r--r--
2016-01-11 00:01
ax88796.h
998
B
-rw-r--r--
2016-01-11 00:01
bond_3ad.h
9.73
KB
-rw-r--r--
2016-01-11 00:01
bond_alb.h
6.6
KB
-rw-r--r--
2016-01-11 00:01
bond_options.h
3.82
KB
-rw-r--r--
2016-01-11 00:01
bonding.h
18.41
KB
-rw-r--r--
2018-04-02 18:07
busy_poll.h
3.97
KB
-rw-r--r--
2016-01-11 00:01
cfg80211-wext.h
1.95
KB
-rw-r--r--
2016-01-11 00:01
cfg80211.h
187.7
KB
-rw-r--r--
2018-04-02 18:07
cfg802154.h
10.59
KB
-rw-r--r--
2016-01-11 00:01
checksum.h
4.53
KB
-rw-r--r--
2016-01-11 00:01
cipso_ipv4.h
8.17
KB
-rw-r--r--
2018-04-02 18:07
cls_cgroup.h
2.03
KB
-rw-r--r--
2016-01-11 00:01
codel.h
11.37
KB
-rw-r--r--
2018-04-02 18:07
compat.h
2
KB
-rw-r--r--
2016-01-11 00:01
datalink.h
580
B
-rw-r--r--
2016-01-11 00:01
dcbevent.h
1.26
KB
-rw-r--r--
2016-01-11 00:01
dcbnl.h
4.2
KB
-rw-r--r--
2016-01-11 00:01
dn.h
7
KB
-rw-r--r--
2016-01-11 00:01
dn_dev.h
5.32
KB
-rw-r--r--
2016-01-11 00:01
dn_fib.h
3.91
KB
-rw-r--r--
2016-01-11 00:01
dn_neigh.h
929
B
-rw-r--r--
2016-01-11 00:01
dn_nsp.h
5.87
KB
-rw-r--r--
2016-01-11 00:01
dn_route.h
4.36
KB
-rw-r--r--
2016-01-11 00:01
dsa.h
8.93
KB
-rw-r--r--
2016-01-11 00:01
dsfield.h
1.07
KB
-rw-r--r--
2016-01-11 00:01
dst.h
13.42
KB
-rw-r--r--
2018-04-02 18:07
dst_metadata.h
3.61
KB
-rw-r--r--
2018-04-02 18:07
dst_ops.h
2.03
KB
-rw-r--r--
2018-04-02 18:07
esp.h
225
B
-rw-r--r--
2016-01-11 00:01
ethoc.h
538
B
-rw-r--r--
2016-01-11 00:01
fib_rules.h
2.99
KB
-rw-r--r--
2016-01-11 00:01
firewire.h
597
B
-rw-r--r--
2016-01-11 00:01
flow.h
6.78
KB
-rw-r--r--
2016-01-11 00:01
flow_dissector.h
4.84
KB
-rw-r--r--
2016-01-11 00:01
flowcache.h
561
B
-rw-r--r--
2016-01-11 00:01
fou.h
499
B
-rw-r--r--
2016-01-11 00:01
garp.h
2.58
KB
-rw-r--r--
2016-01-11 00:01
gen_stats.h
2.13
KB
-rw-r--r--
2016-01-11 00:01
genetlink.h
13.31
KB
-rw-r--r--
2018-04-02 18:07
geneve.h
1.82
KB
-rw-r--r--
2018-04-02 18:07
gre.h
661
B
-rw-r--r--
2016-01-11 00:01
gro_cells.h
1.94
KB
-rw-r--r--
2016-01-11 00:01
gue.h
3.19
KB
-rw-r--r--
2016-01-11 00:01
icmp.h
1.53
KB
-rw-r--r--
2016-01-11 00:01
ieee80211_radiotap.h
12.22
KB
-rw-r--r--
2016-01-11 00:01
ieee802154_netdev.h
9.13
KB
-rw-r--r--
2016-01-11 00:01
if_inet6.h
6.07
KB
-rw-r--r--
2016-01-11 00:01
inet6_connection_sock.h
1.1
KB
-rw-r--r--
2016-01-11 00:01
inet6_hashtables.h
3.25
KB
-rw-r--r--
2016-01-11 00:01
inet_common.h
1.6
KB
-rw-r--r--
2016-01-11 00:01
inet_connection_sock.h
10.41
KB
-rw-r--r--
2018-04-02 18:07
inet_ecn.h
6.02
KB
-rw-r--r--
2018-04-02 18:07
inet_frag.h
4.36
KB
-rw-r--r--
2018-04-02 18:07
inet_hashtables.h
12.02
KB
-rw-r--r--
2016-01-11 00:01
inet_sock.h
7.87
KB
-rw-r--r--
2018-04-02 18:07
inet_timewait_sock.h
4.11
KB
-rw-r--r--
2016-01-11 00:01
inetpeer.h
3.44
KB
-rw-r--r--
2016-01-11 00:01
ip.h
17.13
KB
-rw-r--r--
2018-04-02 18:07
ip6_checksum.h
2.91
KB
-rw-r--r--
2016-01-11 00:01
ip6_fib.h
7.21
KB
-rw-r--r--
2018-04-02 18:07
ip6_route.h
6.17
KB
-rw-r--r--
2018-04-02 18:07
ip6_tunnel.h
3.28
KB
-rw-r--r--
2018-04-02 18:07
ip_fib.h
9.36
KB
-rw-r--r--
2018-04-02 18:07
ip_tunnels.h
10.69
KB
-rw-r--r--
2018-04-02 18:07
ip_vs.h
46.13
KB
-rw-r--r--
2018-04-02 18:07
ipcomp.h
620
B
-rw-r--r--
2016-01-11 00:01
ipconfig.h
772
B
-rw-r--r--
2016-01-11 00:01
ipv6.h
28.59
KB
-rw-r--r--
2018-04-02 18:07
ipx.h
4.32
KB
-rw-r--r--
2016-01-11 00:01
iw_handler.h
22.21
KB
-rw-r--r--
2018-04-02 18:07
l3mdev.h
5.18
KB
-rw-r--r--
2018-04-02 18:07
lapb.h
4.69
KB
-rw-r--r--
2016-01-11 00:01
lib80211.h
3.88
KB
-rw-r--r--
2016-01-11 00:01
llc.h
4.25
KB
-rw-r--r--
2016-01-11 00:01
llc_c_ac.h
9.34
KB
-rw-r--r--
2016-01-11 00:01
llc_c_ev.h
10.68
KB
-rw-r--r--
2016-01-11 00:01
llc_c_st.h
1.72
KB
-rw-r--r--
2016-01-11 00:01
llc_conn.h
4
KB
-rw-r--r--
2016-01-11 00:01
llc_if.h
2.16
KB
-rw-r--r--
2016-01-11 00:01
llc_pdu.h
14.08
KB
-rw-r--r--
2016-01-11 00:01
llc_s_ac.h
1.55
KB
-rw-r--r--
2016-01-11 00:01
llc_s_ev.h
2.2
KB
-rw-r--r--
2016-01-11 00:01
llc_s_st.h
947
B
-rw-r--r--
2016-01-11 00:01
llc_sap.h
1.08
KB
-rw-r--r--
2016-01-11 00:01
lwtunnel.h
4.07
KB
-rw-r--r--
2016-01-11 00:01
mac80211.h
212.7
KB
-rw-r--r--
2018-04-02 18:07
mac802154.h
12.1
KB
-rw-r--r--
2016-01-11 00:01
mip6.h
1.58
KB
-rw-r--r--
2016-01-11 00:01
mld.h
2.76
KB
-rw-r--r--
2016-01-11 00:01
mpls.h
1.14
KB
-rw-r--r--
2016-01-11 00:01
mpls_iptunnel.h
815
B
-rw-r--r--
2016-01-11 00:01
mrp.h
2.99
KB
-rw-r--r--
2016-01-11 00:01
ndisc.h
5.75
KB
-rw-r--r--
2018-04-02 18:07
neighbour.h
14.16
KB
-rw-r--r--
2016-01-11 00:01
net_namespace.h
9.2
KB
-rw-r--r--
2018-04-02 18:07
net_ratelimit.h
181
B
-rw-r--r--
2016-01-11 00:01
netevent.h
739
B
-rw-r--r--
2016-01-11 00:01
netlabel.h
17.25
KB
-rw-r--r--
2016-01-11 00:01
netlink.h
36.13
KB
-rw-r--r--
2016-01-11 00:01
netprio_cgroup.h
1.08
KB
-rw-r--r--
2016-01-11 00:01
netrom.h
7.61
KB
-rw-r--r--
2016-01-11 00:01
nexthop.h
821
B
-rw-r--r--
2016-01-11 00:01
nl802154.h
11.89
KB
-rw-r--r--
2016-01-11 00:01
p8022.h
408
B
-rw-r--r--
2016-01-11 00:01
ping.h
3.52
KB
-rw-r--r--
2016-01-11 00:01
pkt_cls.h
9.61
KB
-rw-r--r--
2018-04-02 18:07
pkt_sched.h
3.77
KB
-rw-r--r--
2016-01-11 00:01
protocol.h
4.09
KB
-rw-r--r--
2016-01-11 00:01
psnap.h
312
B
-rw-r--r--
2016-01-11 00:01
raw.h
1.84
KB
-rw-r--r--
2016-01-11 00:01
rawv6.h
543
B
-rw-r--r--
2016-01-11 00:01
red.h
10.03
KB
-rw-r--r--
2016-01-11 00:01
regulatory.h
10.12
KB
-rw-r--r--
2016-01-11 00:01
request_sock.h
6.38
KB
-rw-r--r--
2016-01-11 00:01
rose.h
7.59
KB
-rw-r--r--
2016-01-11 00:01
route.h
9.35
KB
-rw-r--r--
2016-01-11 00:01
rtnetlink.h
5.37
KB
-rw-r--r--
2016-01-11 00:01
sch_generic.h
20.05
KB
-rw-r--r--
2018-04-02 18:07
scm.h
3.44
KB
-rw-r--r--
2018-04-02 18:07
secure_seq.h
677
B
-rw-r--r--
2016-01-11 00:01
slhc_vj.h
6.63
KB
-rw-r--r--
2016-01-11 00:01
snmp.h
5.75
KB
-rw-r--r--
2016-01-11 00:01
sock.h
64.74
KB
-rw-r--r--
2018-04-02 18:07
stp.h
344
B
-rw-r--r--
2016-01-11 00:01
switchdev.h
8.81
KB
-rw-r--r--
2018-04-02 18:07
tcp.h
54.1
KB
-rw-r--r--
2018-04-02 18:07
tcp_memcontrol.h
254
B
-rw-r--r--
2016-01-11 00:01
tcp_states.h
1.26
KB
-rw-r--r--
2016-01-11 00:01
timewait_sock.h
1.11
KB
-rw-r--r--
2016-01-11 00:01
transp_v6.h
1.83
KB
-rw-r--r--
2016-01-11 00:01
tso.h
446
B
-rw-r--r--
2016-01-11 00:01
udp.h
9.77
KB
-rw-r--r--
2016-01-11 00:01
udp_tunnel.h
3.24
KB
-rw-r--r--
2016-01-11 00:01
udplite.h
3.75
KB
-rw-r--r--
2016-01-11 00:01
vsock_addr.h
1.05
KB
-rw-r--r--
2016-01-11 00:01
vxlan.h
6.99
KB
-rw-r--r--
2018-04-02 18:07
wext.h
1.47
KB
-rw-r--r--
2016-01-11 00:01
wimax.h
19.97
KB
-rw-r--r--
2016-01-11 00:01
x25.h
9.35
KB
-rw-r--r--
2016-01-11 00:01
x25device.h
348
B
-rw-r--r--
2016-01-11 00:01
xfrm.h
49.3
KB
-rw-r--r--
2018-04-02 18:07
Save
Rename
#ifndef __NET_IP_TUNNELS_H #define __NET_IP_TUNNELS_H 1 #include <linux/if_tunnel.h> #include <linux/netdevice.h> #include <linux/skbuff.h> #include <linux/socket.h> #include <linux/types.h> #include <linux/u64_stats_sync.h> #include <net/dsfield.h> #include <net/gro_cells.h> #include <net/inet_ecn.h> #include <net/netns/generic.h> #include <net/rtnetlink.h> #include <net/lwtunnel.h> #if IS_ENABLED(CONFIG_IPV6) #include <net/ipv6.h> #include <net/ip6_fib.h> #include <net/ip6_route.h> #endif /* Keep error state on tunnel for 30 sec */ #define IPTUNNEL_ERR_TIMEO (30*HZ) /* Used to memset ip_tunnel padding. */ #define IP_TUNNEL_KEY_SIZE offsetofend(struct ip_tunnel_key, tp_dst) /* Used to memset ipv4 address padding. */ #define IP_TUNNEL_KEY_IPV4_PAD offsetofend(struct ip_tunnel_key, u.ipv4.dst) #define IP_TUNNEL_KEY_IPV4_PAD_LEN \ (FIELD_SIZEOF(struct ip_tunnel_key, u) - \ FIELD_SIZEOF(struct ip_tunnel_key, u.ipv4)) struct ip_tunnel_key { __be64 tun_id; union { struct { __be32 src; __be32 dst; } ipv4; struct { struct in6_addr src; struct in6_addr dst; } ipv6; } u; __be16 tun_flags; u8 tos; /* TOS for IPv4, TC for IPv6 */ u8 ttl; /* TTL for IPv4, HL for IPv6 */ __be16 tp_src; __be16 tp_dst; }; /* Flags for ip_tunnel_info mode. */ #define IP_TUNNEL_INFO_TX 0x01 /* represents tx tunnel parameters */ #define IP_TUNNEL_INFO_IPV6 0x02 /* key contains IPv6 addresses */ struct ip_tunnel_info { struct ip_tunnel_key key; u8 options_len; u8 mode; }; /* 6rd prefix/relay information */ #ifdef CONFIG_IPV6_SIT_6RD struct ip_tunnel_6rd_parm { struct in6_addr prefix; __be32 relay_prefix; u16 prefixlen; u16 relay_prefixlen; }; #endif struct ip_tunnel_encap { u16 type; u16 flags; __be16 sport; __be16 dport; }; struct ip_tunnel_prl_entry { struct ip_tunnel_prl_entry __rcu *next; __be32 addr; u16 flags; struct rcu_head rcu_head; }; struct ip_tunnel_dst { struct dst_entry __rcu *dst; __be32 saddr; }; struct metadata_dst; /* A fan overlay /8 (250.0.0.0/8, for example) maps to exactly one /16 * underlay (10.88.0.0/16, for example). Multiple local addresses within * the /16 may be used, but a particular overlay may not span * multiple underlay subnets. * * We store one underlay, indexed by the overlay's high order octet. */ #define FAN_OVERLAY_CNT 256 struct ip_fan_map { __be32 underlay; __be32 overlay; u16 underlay_prefix; u16 overlay_prefix; u32 overlay_mask; struct list_head list; struct rcu_head rcu; }; struct ip_tunnel_fan { struct list_head fan_maps; }; struct ip_tunnel { struct ip_tunnel __rcu *next; struct hlist_node hash_node; struct net_device *dev; struct net *net; /* netns for packet i/o */ int err_count; /* Number of arrived ICMP errors */ unsigned long err_time; /* Time when the last ICMP error * arrived */ /* These four fields used only by GRE */ u32 i_seqno; /* The last seen seqno */ u32 o_seqno; /* The last output seqno */ int tun_hlen; /* Precalculated header length */ int mlink; struct ip_tunnel_dst __percpu *dst_cache; struct ip_tunnel_parm parms; int encap_hlen; /* Encap header length (FOU,GUE) */ struct ip_tunnel_encap encap; int hlen; /* tun_hlen + encap_hlen */ /* for SIT */ #ifdef CONFIG_IPV6_SIT_6RD struct ip_tunnel_6rd_parm ip6rd; #endif struct ip_tunnel_prl_entry __rcu *prl; /* potential router list */ unsigned int prl_count; /* # of entries in PRL */ struct ip_tunnel_fan fan; int ip_tnl_net_id; struct gro_cells gro_cells; bool collect_md; }; #define TUNNEL_CSUM __cpu_to_be16(0x01) #define TUNNEL_ROUTING __cpu_to_be16(0x02) #define TUNNEL_KEY __cpu_to_be16(0x04) #define TUNNEL_SEQ __cpu_to_be16(0x08) #define TUNNEL_STRICT __cpu_to_be16(0x10) #define TUNNEL_REC __cpu_to_be16(0x20) #define TUNNEL_VERSION __cpu_to_be16(0x40) #define TUNNEL_NO_KEY __cpu_to_be16(0x80) #define TUNNEL_DONT_FRAGMENT __cpu_to_be16(0x0100) #define TUNNEL_OAM __cpu_to_be16(0x0200) #define TUNNEL_CRIT_OPT __cpu_to_be16(0x0400) #define TUNNEL_GENEVE_OPT __cpu_to_be16(0x0800) #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000) #define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT) static inline int fan_has_map(const struct ip_tunnel_fan *fan) { return !list_empty(&fan->fan_maps); } struct tnl_ptk_info { __be16 flags; __be16 proto; __be32 key; __be32 seq; }; #define PACKET_RCVD 0 #define PACKET_REJECT 1 #define IP_TNL_HASH_BITS 7 #define IP_TNL_HASH_SIZE (1 << IP_TNL_HASH_BITS) struct ip_tunnel_net { struct net_device *fb_tunnel_dev; struct hlist_head tunnels[IP_TNL_HASH_SIZE]; struct ip_tunnel __rcu *collect_md_tun; }; struct ip_tunnel_encap_ops { size_t (*encap_hlen)(struct ip_tunnel_encap *e); int (*build_header)(struct sk_buff *skb, struct ip_tunnel_encap *e, u8 *protocol, struct flowi4 *fl4); }; #define MAX_IPTUN_ENCAP_OPS 8 extern const struct ip_tunnel_encap_ops __rcu * iptun_encaps[MAX_IPTUN_ENCAP_OPS]; int ip_tunnel_encap_add_ops(const struct ip_tunnel_encap_ops *op, unsigned int num); int ip_tunnel_encap_del_ops(const struct ip_tunnel_encap_ops *op, unsigned int num); static inline void ip_tunnel_key_init(struct ip_tunnel_key *key, __be32 saddr, __be32 daddr, u8 tos, u8 ttl, __be16 tp_src, __be16 tp_dst, __be64 tun_id, __be16 tun_flags) { key->tun_id = tun_id; key->u.ipv4.src = saddr; key->u.ipv4.dst = daddr; memset((unsigned char *)key + IP_TUNNEL_KEY_IPV4_PAD, 0, IP_TUNNEL_KEY_IPV4_PAD_LEN); key->tos = tos; key->ttl = ttl; key->tun_flags = tun_flags; /* For the tunnel types on the top of IPsec, the tp_src and tp_dst of * the upper tunnel are used. * E.g: GRE over IPSEC, the tp_src and tp_port are zero. */ key->tp_src = tp_src; key->tp_dst = tp_dst; /* Clear struct padding. */ if (sizeof(*key) != IP_TUNNEL_KEY_SIZE) memset((unsigned char *)key + IP_TUNNEL_KEY_SIZE, 0, sizeof(*key) - IP_TUNNEL_KEY_SIZE); } static inline unsigned short ip_tunnel_info_af(const struct ip_tunnel_info *tun_info) { return tun_info->mode & IP_TUNNEL_INFO_IPV6 ? AF_INET6 : AF_INET; } #ifdef CONFIG_INET int ip_tunnel_init(struct net_device *dev); void ip_tunnel_uninit(struct net_device *dev); void ip_tunnel_dellink(struct net_device *dev, struct list_head *head); struct net *ip_tunnel_get_link_net(const struct net_device *dev); int ip_tunnel_get_iflink(const struct net_device *dev); int ip_tunnel_init_net(struct net *net, int ip_tnl_net_id, struct rtnl_link_ops *ops, char *devname); void ip_tunnel_delete_net(struct ip_tunnel_net *itn, struct rtnl_link_ops *ops); void ip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev, const struct iphdr *tnl_params, const u8 protocol); int ip_tunnel_ioctl(struct net_device *dev, struct ip_tunnel_parm *p, int cmd); int ip_tunnel_encap(struct sk_buff *skb, struct ip_tunnel *t, u8 *protocol, struct flowi4 *fl4); int __ip_tunnel_change_mtu(struct net_device *dev, int new_mtu, bool strict); int ip_tunnel_change_mtu(struct net_device *dev, int new_mtu); struct rtnl_link_stats64 *ip_tunnel_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *tot); struct ip_tunnel *ip_tunnel_lookup(struct ip_tunnel_net *itn, int link, __be16 flags, __be32 remote, __be32 local, __be32 key); int ip_tunnel_rcv(struct ip_tunnel *tunnel, struct sk_buff *skb, const struct tnl_ptk_info *tpi, struct metadata_dst *tun_dst, bool log_ecn_error); int ip_tunnel_changelink(struct net_device *dev, struct nlattr *tb[], struct ip_tunnel_parm *p); int ip_tunnel_newlink(struct net_device *dev, struct nlattr *tb[], struct ip_tunnel_parm *p); void ip_tunnel_setup(struct net_device *dev, int net_id); void ip_tunnel_dst_reset_all(struct ip_tunnel *t); int ip_tunnel_encap_setup(struct ip_tunnel *t, struct ip_tunnel_encap *ipencap); /* Extract dsfield from inner protocol */ static inline u8 ip_tunnel_get_dsfield(const struct iphdr *iph, const struct sk_buff *skb) { if (skb->protocol == htons(ETH_P_IP)) return iph->tos; else if (skb->protocol == htons(ETH_P_IPV6)) return ipv6_get_dsfield((const struct ipv6hdr *)iph); else return 0; } /* Propogate ECN bits out */ static inline u8 ip_tunnel_ecn_encap(u8 tos, const struct iphdr *iph, const struct sk_buff *skb) { u8 inner = ip_tunnel_get_dsfield(iph, skb); return INET_ECN_encapsulate(tos, inner); } int iptunnel_pull_header(struct sk_buff *skb, int hdr_len, __be16 inner_proto); int iptunnel_xmit(struct sock *sk, struct rtable *rt, struct sk_buff *skb, __be32 src, __be32 dst, u8 proto, u8 tos, u8 ttl, __be16 df, bool xnet); struct metadata_dst *iptunnel_metadata_reply(struct metadata_dst *md, gfp_t flags); struct sk_buff *iptunnel_handle_offloads(struct sk_buff *skb, bool gre_csum, int gso_type_mask); static inline int iptunnel_pull_offloads(struct sk_buff *skb) { if (skb_is_gso(skb)) { int err; err = skb_unclone(skb, GFP_ATOMIC); if (unlikely(err)) return err; skb_shinfo(skb)->gso_type &= ~(NETIF_F_GSO_ENCAP_ALL >> NETIF_F_GSO_SHIFT); } skb->encapsulation = 0; return 0; } static inline void iptunnel_xmit_stats(int err, struct net_device_stats *err_stats, struct pcpu_sw_netstats __percpu *stats) { if (err > 0) { struct pcpu_sw_netstats *tstats = get_cpu_ptr(stats); u64_stats_update_begin(&tstats->syncp); tstats->tx_bytes += err; tstats->tx_packets++; u64_stats_update_end(&tstats->syncp); put_cpu_ptr(tstats); } else if (err < 0) { err_stats->tx_errors++; err_stats->tx_aborted_errors++; } else { err_stats->tx_dropped++; } } static inline void *ip_tunnel_info_opts(struct ip_tunnel_info *info) { return info + 1; } static inline void ip_tunnel_info_opts_get(void *to, const struct ip_tunnel_info *info) { memcpy(to, info + 1, info->options_len); } static inline void ip_tunnel_info_opts_set(struct ip_tunnel_info *info, const void *from, int len) { memcpy(ip_tunnel_info_opts(info), from, len); info->options_len = len; } static inline struct ip_tunnel_info *lwt_tun_info(struct lwtunnel_state *lwtstate) { return (struct ip_tunnel_info *)lwtstate->data; } extern struct static_key ip_tunnel_metadata_cnt; /* Returns > 0 if metadata should be collected */ static inline int ip_tunnel_collect_metadata(void) { return static_key_false(&ip_tunnel_metadata_cnt); } void __init ip_tunnel_core_init(void); void ip_tunnel_need_metadata(void); void ip_tunnel_unneed_metadata(void); #else /* CONFIG_INET */ static inline struct ip_tunnel_info *lwt_tun_info(struct lwtunnel_state *lwtstate) { return NULL; } static inline void ip_tunnel_need_metadata(void) { } static inline void ip_tunnel_unneed_metadata(void) { } #endif /* CONFIG_INET */ #endif /* __NET_IP_TUNNELS_H */