Linux localhost 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
Apache/2.4.41 (Ubuntu)
: 23.92.16.63 | : 104.23.253.83
Cant Read [ /etc/named.conf ]
8.1.5
www-data
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
src /
linux-headers-5.4.0-198 /
include /
net /
[ HOME SHELL ]
Name
Size
Permission
Action
9p
[ DIR ]
drwxr-xr-x
bluetooth
[ DIR ]
drwxr-xr-x
caif
[ DIR ]
drwxr-xr-x
iucv
[ DIR ]
drwxr-xr-x
netfilter
[ DIR ]
drwxr-xr-x
netns
[ DIR ]
drwxr-xr-x
nfc
[ DIR ]
drwxr-xr-x
phonet
[ DIR ]
drwxr-xr-x
sctp
[ DIR ]
drwxr-xr-x
tc_act
[ DIR ]
drwxr-xr-x
6lowpan.h
10.03
KB
-rw-r--r--
Space.h
1.07
KB
-rw-r--r--
act_api.h
6.98
KB
-rw-r--r--
addrconf.h
14.1
KB
-rw-r--r--
af_ieee802154.h
1.19
KB
-rw-r--r--
af_rxrpc.h
2.65
KB
-rw-r--r--
af_unix.h
2.59
KB
-rw-r--r--
af_vsock.h
6.8
KB
-rw-r--r--
ah.h
382
B
-rw-r--r--
arp.h
2.09
KB
-rw-r--r--
atmclip.h
1.48
KB
-rw-r--r--
ax25.h
15.08
KB
-rw-r--r--
ax88796.h
1.31
KB
-rw-r--r--
bond_3ad.h
9.44
KB
-rw-r--r--
bond_alb.h
5.92
KB
-rw-r--r--
bond_options.h
3.74
KB
-rw-r--r--
bonding.h
19.63
KB
-rw-r--r--
bpf_sk_storage.h
558
B
-rw-r--r--
busy_poll.h
3.23
KB
-rw-r--r--
calipso.h
1.55
KB
-rw-r--r--
cfg80211-wext.h
1.81
KB
-rw-r--r--
cfg80211.h
265.02
KB
-rw-r--r--
cfg802154.h
10.51
KB
-rw-r--r--
checksum.h
4.67
KB
-rw-r--r--
cipso_ipv4.h
7.61
KB
-rw-r--r--
cls_cgroup.h
1.94
KB
-rw-r--r--
codel.h
5.65
KB
-rw-r--r--
codel_impl.h
7.98
KB
-rw-r--r--
codel_qdisc.h
2.9
KB
-rw-r--r--
compat.h
1.44
KB
-rw-r--r--
datalink.h
619
B
-rw-r--r--
dcbevent.h
742
B
-rw-r--r--
dcbnl.h
4.22
KB
-rw-r--r--
devlink.h
33.11
KB
-rw-r--r--
drop_monitor.h
788
B
-rw-r--r--
dsa.h
19.45
KB
-rw-r--r--
dsfield.h
1.11
KB
-rw-r--r--
dst.h
13.23
KB
-rw-r--r--
dst_cache.h
2.54
KB
-rw-r--r--
dst_metadata.h
5.39
KB
-rw-r--r--
dst_ops.h
2.08
KB
-rw-r--r--
erspan.h
8.96
KB
-rw-r--r--
esp.h
877
B
-rw-r--r--
ethoc.h
391
B
-rw-r--r--
failover.h
1.15
KB
-rw-r--r--
fib_notifier.h
1.28
KB
-rw-r--r--
fib_rules.h
5.48
KB
-rw-r--r--
firewire.h
636
B
-rw-r--r--
flow.h
5.92
KB
-rw-r--r--
flow_dissector.h
8.99
KB
-rw-r--r--
flow_offload.h
10.72
KB
-rw-r--r--
fou.h
549
B
-rw-r--r--
fq.h
2.7
KB
-rw-r--r--
fq_impl.h
7
KB
-rw-r--r--
garp.h
2.62
KB
-rw-r--r--
gen_stats.h
2.7
KB
-rw-r--r--
genetlink.h
12.24
KB
-rw-r--r--
geneve.h
1.85
KB
-rw-r--r--
gre.h
3.3
KB
-rw-r--r--
gro_cells.h
443
B
-rw-r--r--
gtp.h
633
B
-rw-r--r--
gue.h
3.23
KB
-rw-r--r--
hwbm.h
969
B
-rw-r--r--
icmp.h
1.81
KB
-rw-r--r--
ieee80211_radiotap.h
13.04
KB
-rw-r--r--
ieee802154_netdev.h
9.86
KB
-rw-r--r--
if_inet6.h
6.19
KB
-rw-r--r--
ife.h
1.03
KB
-rw-r--r--
ila.h
291
B
-rw-r--r--
inet6_connection_sock.h
765
B
-rw-r--r--
inet6_hashtables.h
3.45
KB
-rw-r--r--
inet_common.h
2.27
KB
-rw-r--r--
inet_connection_sock.h
11.4
KB
-rw-r--r--
inet_ecn.h
7.5
KB
-rw-r--r--
inet_frag.h
4.9
KB
-rw-r--r--
inet_hashtables.h
13.77
KB
-rw-r--r--
inet_sock.h
9.48
KB
-rw-r--r--
inet_timewait_sock.h
3.65
KB
-rw-r--r--
inetpeer.h
3.29
KB
-rw-r--r--
ip.h
21.92
KB
-rw-r--r--
ip6_checksum.h
2.69
KB
-rw-r--r--
ip6_fib.h
13.23
KB
-rw-r--r--
ip6_route.h
9.89
KB
-rw-r--r--
ip6_tunnel.h
4.98
KB
-rw-r--r--
ip_fib.h
13.57
KB
-rw-r--r--
ip_tunnels.h
14.69
KB
-rw-r--r--
ip_vs.h
48.06
KB
-rw-r--r--
ipcomp.h
659
B
-rw-r--r--
ipconfig.h
811
B
-rw-r--r--
ipv6.h
32.75
KB
-rw-r--r--
ipv6_frag.h
2.65
KB
-rw-r--r--
ipv6_stubs.h
2.74
KB
-rw-r--r--
ipx.h
4.28
KB
-rw-r--r--
iw_handler.h
20.91
KB
-rw-r--r--
kcm.h
4.82
KB
-rw-r--r--
l3mdev.h
6.14
KB
-rw-r--r--
lag.h
409
B
-rw-r--r--
lapb.h
4.75
KB
-rw-r--r--
lib80211.h
3.92
KB
-rw-r--r--
llc.h
4.41
KB
-rw-r--r--
llc_c_ac.h
9.31
KB
-rw-r--r--
llc_c_ev.h
10.68
KB
-rw-r--r--
llc_c_st.h
1.72
KB
-rw-r--r--
llc_conn.h
4.06
KB
-rw-r--r--
llc_if.h
2.16
KB
-rw-r--r--
llc_pdu.h
14.35
KB
-rw-r--r--
llc_s_ac.h
1.55
KB
-rw-r--r--
llc_s_ev.h
2.2
KB
-rw-r--r--
llc_s_st.h
947
B
-rw-r--r--
llc_sap.h
1.08
KB
-rw-r--r--
lwtunnel.h
6.54
KB
-rw-r--r--
mac80211.h
250.97
KB
-rw-r--r--
mac802154.h
14.88
KB
-rw-r--r--
mip6.h
1017
B
-rw-r--r--
mld.h
2.8
KB
-rw-r--r--
mpls.h
535
B
-rw-r--r--
mpls_iptunnel.h
430
B
-rw-r--r--
mrp.h
3.05
KB
-rw-r--r--
ncsi.h
1.92
KB
-rw-r--r--
ndisc.h
14.77
KB
-rw-r--r--
neighbour.h
15.75
KB
-rw-r--r--
net_failover.h
1023
B
-rw-r--r--
net_namespace.h
11.96
KB
-rw-r--r--
net_ratelimit.h
220
B
-rw-r--r--
netevent.h
1.02
KB
-rw-r--r--
netlabel.h
20.14
KB
-rw-r--r--
netlink.h
56.77
KB
-rw-r--r--
netprio_cgroup.h
1.03
KB
-rw-r--r--
netrom.h
7.71
KB
-rw-r--r--
nexthop.h
7.58
KB
-rw-r--r--
nl802154.h
12.09
KB
-rw-r--r--
nsh.h
12.31
KB
-rw-r--r--
p8022.h
447
B
-rw-r--r--
page_pool.h
6.46
KB
-rw-r--r--
ping.h
2.9
KB
-rw-r--r--
pkt_cls.h
19.61
KB
-rw-r--r--
pkt_sched.h
4.61
KB
-rw-r--r--
pptp.h
557
B
-rw-r--r--
protocol.h
3.82
KB
-rw-r--r--
psample.h
888
B
-rw-r--r--
psnap.h
351
B
-rw-r--r--
raw.h
2.09
KB
-rw-r--r--
rawv6.h
854
B
-rw-r--r--
red.h
10.45
KB
-rw-r--r--
regulatory.h
10.89
KB
-rw-r--r--
request_sock.h
6.37
KB
-rw-r--r--
rose.h
7.62
KB
-rw-r--r--
route.h
10.87
KB
-rw-r--r--
rsi_91x.h
1.67
KB
-rw-r--r--
rtnetlink.h
6.28
KB
-rw-r--r--
rtnh.h
859
B
-rw-r--r--
sch_generic.h
32.97
KB
-rw-r--r--
scm.h
3.75
KB
-rw-r--r--
secure_seq.h
855
B
-rw-r--r--
seg6.h
1.57
KB
-rw-r--r--
seg6_hmac.h
1.44
KB
-rw-r--r--
seg6_local.h
644
B
-rw-r--r--
slhc_vj.h
6.67
KB
-rw-r--r--
smc.h
2.18
KB
-rw-r--r--
snmp.h
5.02
KB
-rw-r--r--
sock.h
75.38
KB
-rw-r--r--
sock_reuseport.h
1.58
KB
-rw-r--r--
stp.h
383
B
-rw-r--r--
strparser.h
4.03
KB
-rw-r--r--
switchdev.h
8
KB
-rw-r--r--
tcp.h
70.49
KB
-rw-r--r--
tcp_states.h
1.2
KB
-rw-r--r--
timewait_sock.h
925
B
-rw-r--r--
tipc.h
2.35
KB
-rw-r--r--
tls.h
19.86
KB
-rw-r--r--
transp_v6.h
2.05
KB
-rw-r--r--
tso.h
515
B
-rw-r--r--
tun_proto.h
988
B
-rw-r--r--
udp.h
14.71
KB
-rw-r--r--
udp_tunnel.h
5.37
KB
-rw-r--r--
udplite.h
3.67
KB
-rw-r--r--
vsock_addr.h
657
B
-rw-r--r--
vxlan.h
13.45
KB
-rw-r--r--
wext.h
1.47
KB
-rw-r--r--
wimax.h
19.36
KB
-rw-r--r--
x25.h
9.43
KB
-rw-r--r--
x25device.h
387
B
-rw-r--r--
xdp.h
5.32
KB
-rw-r--r--
xdp_priv.h
446
B
-rw-r--r--
xdp_sock.h
8.26
KB
-rw-r--r--
xfrm.h
53.07
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : dst.h
/* SPDX-License-Identifier: GPL-2.0 */ /* * net/dst.h Protocol independent destination cache definitions. * * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> * */ #ifndef _NET_DST_H #define _NET_DST_H #include <net/dst_ops.h> #include <linux/netdevice.h> #include <linux/rtnetlink.h> #include <linux/rcupdate.h> #include <linux/bug.h> #include <linux/jiffies.h> #include <linux/refcount.h> #include <net/neighbour.h> #include <asm/processor.h> struct sk_buff; struct dst_entry { struct net_device *dev; struct dst_ops *ops; unsigned long _metrics; unsigned long expires; #ifdef CONFIG_XFRM struct xfrm_state *xfrm; #else void *__pad1; #endif int (*input)(struct sk_buff *); int (*output)(struct net *net, struct sock *sk, struct sk_buff *skb); unsigned short flags; #define DST_HOST 0x0001 #define DST_NOXFRM 0x0002 #define DST_NOPOLICY 0x0004 #define DST_NOCOUNT 0x0008 #define DST_FAKE_RTABLE 0x0010 #define DST_XFRM_TUNNEL 0x0020 #define DST_XFRM_QUEUE 0x0040 #define DST_METADATA 0x0080 /* A non-zero value of dst->obsolete forces by-hand validation * of the route entry. Positive values are set by the generic * dst layer to indicate that the entry has been forcefully * destroyed. * * Negative values are used by the implementation layer code to * force invocation of the dst_ops->check() method. */ short obsolete; #define DST_OBSOLETE_NONE 0 #define DST_OBSOLETE_DEAD 2 #define DST_OBSOLETE_FORCE_CHK -1 #define DST_OBSOLETE_KILL -2 unsigned short header_len; /* more space at head required */ unsigned short trailer_len; /* space to reserve at tail */ /* * __refcnt wants to be on a different cache line from * input/output/ops or performance tanks badly */ #ifdef CONFIG_64BIT atomic_t __refcnt; /* 64-bit offset 64 */ #endif int __use; unsigned long lastuse; struct lwtunnel_state *lwtstate; struct rcu_head rcu_head; short error; short __pad; __u32 tclassid; #ifndef CONFIG_64BIT atomic_t __refcnt; /* 32-bit offset 64 */ #endif }; struct dst_metrics { u32 metrics[RTAX_MAX]; refcount_t refcnt; } __aligned(4); /* Low pointer bits contain DST_METRICS_FLAGS */ extern const struct dst_metrics dst_default_metrics; u32 *dst_cow_metrics_generic(struct dst_entry *dst, unsigned long old); #define DST_METRICS_READ_ONLY 0x1UL #define DST_METRICS_REFCOUNTED 0x2UL #define DST_METRICS_FLAGS 0x3UL #define __DST_METRICS_PTR(Y) \ ((u32 *)((Y) & ~DST_METRICS_FLAGS)) #define DST_METRICS_PTR(X) __DST_METRICS_PTR((X)->_metrics) static inline bool dst_metrics_read_only(const struct dst_entry *dst) { return dst->_metrics & DST_METRICS_READ_ONLY; } void __dst_destroy_metrics_generic(struct dst_entry *dst, unsigned long old); static inline void dst_destroy_metrics_generic(struct dst_entry *dst) { unsigned long val = dst->_metrics; if (!(val & DST_METRICS_READ_ONLY)) __dst_destroy_metrics_generic(dst, val); } static inline u32 *dst_metrics_write_ptr(struct dst_entry *dst) { unsigned long p = dst->_metrics; BUG_ON(!p); if (p & DST_METRICS_READ_ONLY) return dst->ops->cow_metrics(dst, p); return __DST_METRICS_PTR(p); } /* This may only be invoked before the entry has reached global * visibility. */ static inline void dst_init_metrics(struct dst_entry *dst, const u32 *src_metrics, bool read_only) { dst->_metrics = ((unsigned long) src_metrics) | (read_only ? DST_METRICS_READ_ONLY : 0); } static inline void dst_copy_metrics(struct dst_entry *dest, const struct dst_entry *src) { u32 *dst_metrics = dst_metrics_write_ptr(dest); if (dst_metrics) { u32 *src_metrics = DST_METRICS_PTR(src); memcpy(dst_metrics, src_metrics, RTAX_MAX * sizeof(u32)); } } static inline u32 *dst_metrics_ptr(struct dst_entry *dst) { return DST_METRICS_PTR(dst); } static inline u32 dst_metric_raw(const struct dst_entry *dst, const int metric) { u32 *p = DST_METRICS_PTR(dst); return p[metric-1]; } static inline u32 dst_metric(const struct dst_entry *dst, const int metric) { WARN_ON_ONCE(metric == RTAX_HOPLIMIT || metric == RTAX_ADVMSS || metric == RTAX_MTU); return dst_metric_raw(dst, metric); } static inline u32 dst_metric_advmss(const struct dst_entry *dst) { u32 advmss = dst_metric_raw(dst, RTAX_ADVMSS); if (!advmss) advmss = dst->ops->default_advmss(dst); return advmss; } static inline void dst_metric_set(struct dst_entry *dst, int metric, u32 val) { u32 *p = dst_metrics_write_ptr(dst); if (p) p[metric-1] = val; } /* Kernel-internal feature bits that are unallocated in user space. */ #define DST_FEATURE_ECN_CA (1U << 31) #define DST_FEATURE_MASK (DST_FEATURE_ECN_CA) #define DST_FEATURE_ECN_MASK (DST_FEATURE_ECN_CA | RTAX_FEATURE_ECN) static inline u32 dst_feature(const struct dst_entry *dst, u32 feature) { return dst_metric(dst, RTAX_FEATURES) & feature; } static inline u32 dst_mtu(const struct dst_entry *dst) { return dst->ops->mtu(dst); } /* RTT metrics are stored in milliseconds for user ABI, but used as jiffies */ static inline unsigned long dst_metric_rtt(const struct dst_entry *dst, int metric) { return msecs_to_jiffies(dst_metric(dst, metric)); } static inline u32 dst_allfrag(const struct dst_entry *dst) { int ret = dst_feature(dst, RTAX_FEATURE_ALLFRAG); return ret; } static inline int dst_metric_locked(const struct dst_entry *dst, int metric) { return dst_metric(dst, RTAX_LOCK) & (1<<metric); } static inline void dst_hold(struct dst_entry *dst) { /* * If your kernel compilation stops here, please check * the placement of __refcnt in struct dst_entry */ BUILD_BUG_ON(offsetof(struct dst_entry, __refcnt) & 63); WARN_ON(atomic_inc_not_zero(&dst->__refcnt) == 0); } static inline void dst_use_noref(struct dst_entry *dst, unsigned long time) { if (unlikely(time != dst->lastuse)) { dst->__use++; dst->lastuse = time; } } static inline struct dst_entry *dst_clone(struct dst_entry *dst) { if (dst) dst_hold(dst); return dst; } void dst_release(struct dst_entry *dst); void dst_release_immediate(struct dst_entry *dst); static inline void refdst_drop(unsigned long refdst) { if (!(refdst & SKB_DST_NOREF)) dst_release((struct dst_entry *)(refdst & SKB_DST_PTRMASK)); } /** * skb_dst_drop - drops skb dst * @skb: buffer * * Drops dst reference count if a reference was taken. */ static inline void skb_dst_drop(struct sk_buff *skb) { if (skb->_skb_refdst) { refdst_drop(skb->_skb_refdst); skb->_skb_refdst = 0UL; } } static inline void __skb_dst_copy(struct sk_buff *nskb, unsigned long refdst) { nskb->_skb_refdst = refdst; if (!(nskb->_skb_refdst & SKB_DST_NOREF)) dst_clone(skb_dst(nskb)); } static inline void skb_dst_copy(struct sk_buff *nskb, const struct sk_buff *oskb) { __skb_dst_copy(nskb, oskb->_skb_refdst); } /** * dst_hold_safe - Take a reference on a dst if possible * @dst: pointer to dst entry * * This helper returns false if it could not safely * take a reference on a dst. */ static inline bool dst_hold_safe(struct dst_entry *dst) { return atomic_inc_not_zero(&dst->__refcnt); } /** * skb_dst_force - makes sure skb dst is refcounted * @skb: buffer * * If dst is not yet refcounted and not destroyed, grab a ref on it. * Returns true if dst is refcounted. */ static inline bool skb_dst_force(struct sk_buff *skb) { if (skb_dst_is_noref(skb)) { struct dst_entry *dst = skb_dst(skb); WARN_ON(!rcu_read_lock_held()); if (!dst_hold_safe(dst)) dst = NULL; skb->_skb_refdst = (unsigned long)dst; } return skb->_skb_refdst != 0UL; } /** * __skb_tunnel_rx - prepare skb for rx reinsert * @skb: buffer * @dev: tunnel device * @net: netns for packet i/o * * After decapsulation, packet is going to re-enter (netif_rx()) our stack, * so make some cleanups. (no accounting done) */ static inline void __skb_tunnel_rx(struct sk_buff *skb, struct net_device *dev, struct net *net) { skb->dev = dev; /* * Clear hash so that we can recalulate the hash for the * encapsulated packet, unless we have already determine the hash * over the L4 4-tuple. */ skb_clear_hash_if_not_l4(skb); skb_set_queue_mapping(skb, 0); skb_scrub_packet(skb, !net_eq(net, dev_net(dev))); } /** * skb_tunnel_rx - prepare skb for rx reinsert * @skb: buffer * @dev: tunnel device * @net: netns for packet i/o * * After decapsulation, packet is going to re-enter (netif_rx()) our stack, * so make some cleanups, and perform accounting. * Note: this accounting is not SMP safe. */ static inline void skb_tunnel_rx(struct sk_buff *skb, struct net_device *dev, struct net *net) { DEV_STATS_INC(dev, rx_packets); DEV_STATS_ADD(dev, rx_bytes, skb->len); __skb_tunnel_rx(skb, dev, net); } static inline u32 dst_tclassid(const struct sk_buff *skb) { #ifdef CONFIG_IP_ROUTE_CLASSID const struct dst_entry *dst; dst = skb_dst(skb); if (dst) return dst->tclassid; #endif return 0; } int dst_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb); static inline int dst_discard(struct sk_buff *skb) { return dst_discard_out(&init_net, skb->sk, skb); } void *dst_alloc(struct dst_ops *ops, struct net_device *dev, int initial_ref, int initial_obsolete, unsigned short flags); void dst_init(struct dst_entry *dst, struct dst_ops *ops, struct net_device *dev, int initial_ref, int initial_obsolete, unsigned short flags); struct dst_entry *dst_destroy(struct dst_entry *dst); void dst_dev_put(struct dst_entry *dst); static inline void dst_confirm(struct dst_entry *dst) { } static inline struct neighbour *dst_neigh_lookup(const struct dst_entry *dst, const void *daddr) { struct neighbour *n = dst->ops->neigh_lookup(dst, NULL, daddr); return IS_ERR(n) ? NULL : n; } static inline struct neighbour *dst_neigh_lookup_skb(const struct dst_entry *dst, struct sk_buff *skb) { struct neighbour *n = NULL; /* The packets from tunnel devices (eg bareudp) may have only * metadata in the dst pointer of skb. Hence a pointer check of * neigh_lookup is needed. */ if (dst->ops->neigh_lookup) n = dst->ops->neigh_lookup(dst, skb, NULL); return IS_ERR(n) ? NULL : n; } static inline void dst_confirm_neigh(const struct dst_entry *dst, const void *daddr) { if (dst->ops->confirm_neigh) dst->ops->confirm_neigh(dst, daddr); } static inline void dst_link_failure(struct sk_buff *skb) { struct dst_entry *dst = skb_dst(skb); if (dst && dst->ops && dst->ops->link_failure) dst->ops->link_failure(skb); } static inline void dst_set_expires(struct dst_entry *dst, int timeout) { unsigned long expires = jiffies + timeout; if (expires == 0) expires = 1; if (dst->expires == 0 || time_before(expires, dst->expires)) dst->expires = expires; } /* Output packet to network from transport. */ static inline int dst_output(struct net *net, struct sock *sk, struct sk_buff *skb) { return skb_dst(skb)->output(net, sk, skb); } /* Input packet from network to transport. */ static inline int dst_input(struct sk_buff *skb) { return skb_dst(skb)->input(skb); } static inline struct dst_entry *dst_check(struct dst_entry *dst, u32 cookie) { if (dst->obsolete) dst = dst->ops->check(dst, cookie); return dst; } /* Flags for xfrm_lookup flags argument. */ enum { XFRM_LOOKUP_ICMP = 1 << 0, XFRM_LOOKUP_QUEUE = 1 << 1, XFRM_LOOKUP_KEEP_DST_REF = 1 << 2, }; struct flowi; #ifndef CONFIG_XFRM static inline struct dst_entry *xfrm_lookup(struct net *net, struct dst_entry *dst_orig, const struct flowi *fl, const struct sock *sk, int flags) { return dst_orig; } static inline struct dst_entry * xfrm_lookup_with_ifid(struct net *net, struct dst_entry *dst_orig, const struct flowi *fl, const struct sock *sk, int flags, u32 if_id) { return dst_orig; } static inline struct dst_entry *xfrm_lookup_route(struct net *net, struct dst_entry *dst_orig, const struct flowi *fl, const struct sock *sk, int flags) { return dst_orig; } static inline struct xfrm_state *dst_xfrm(const struct dst_entry *dst) { return NULL; } #else struct dst_entry *xfrm_lookup(struct net *net, struct dst_entry *dst_orig, const struct flowi *fl, const struct sock *sk, int flags); struct dst_entry *xfrm_lookup_with_ifid(struct net *net, struct dst_entry *dst_orig, const struct flowi *fl, const struct sock *sk, int flags, u32 if_id); struct dst_entry *xfrm_lookup_route(struct net *net, struct dst_entry *dst_orig, const struct flowi *fl, const struct sock *sk, int flags); /* skb attached with this dst needs transformation if dst->xfrm is valid */ static inline struct xfrm_state *dst_xfrm(const struct dst_entry *dst) { return dst->xfrm; } #endif static inline void skb_dst_update_pmtu(struct sk_buff *skb, u32 mtu) { struct dst_entry *dst = skb_dst(skb); if (dst && dst->ops->update_pmtu) dst->ops->update_pmtu(dst, NULL, skb, mtu, true); } /* update dst pmtu but not do neighbor confirm */ static inline void skb_dst_update_pmtu_no_confirm(struct sk_buff *skb, u32 mtu) { struct dst_entry *dst = skb_dst(skb); if (dst && dst->ops->update_pmtu) dst->ops->update_pmtu(dst, NULL, skb, mtu, false); } static inline void skb_tunnel_check_pmtu(struct sk_buff *skb, struct dst_entry *encap_dst, int headroom) { u32 encap_mtu = dst_mtu(encap_dst); if (skb->len > encap_mtu - headroom) skb_dst_update_pmtu_no_confirm(skb, encap_mtu - headroom); } #endif /* _NET_DST_H */
Close