Linux vmi284606.contaboserver.net 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
Apache/2.4.57 (Ubuntu)
: 167.86.127.34 | : 216.73.217.31
Cant Read [ /etc/named.conf ]
7.2.24-0ubuntu0.18.04.17
root
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
src /
linux-headers-4.15.0-64 /
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.15
KB
-rw-r--r--
act_api.h
6.3
KB
-rw-r--r--
addrconf.h
12.54
KB
-rw-r--r--
af_ieee802154.h
1.55
KB
-rw-r--r--
af_rxrpc.h
2.79
KB
-rw-r--r--
af_unix.h
2.17
KB
-rw-r--r--
af_vsock.h
7.21
KB
-rw-r--r--
ah.h
382
B
-rw-r--r--
arp.h
2
KB
-rw-r--r--
atmclip.h
1.48
KB
-rw-r--r--
ax25.h
14.78
KB
-rw-r--r--
ax88796.h
998
B
-rw-r--r--
bond_3ad.h
9.79
KB
-rw-r--r--
bond_alb.h
6.6
KB
-rw-r--r--
bond_options.h
3.92
KB
-rw-r--r--
bonding.h
18.92
KB
-rw-r--r--
busy_poll.h
3.76
KB
-rw-r--r--
calipso.h
2.15
KB
-rw-r--r--
cfg80211-wext.h
1.95
KB
-rw-r--r--
cfg80211.h
220.22
KB
-rw-r--r--
cfg802154.h
10.89
KB
-rw-r--r--
checksum.h
4.64
KB
-rw-r--r--
cipso_ipv4.h
8.2
KB
-rw-r--r--
cls_cgroup.h
2.15
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
2.11
KB
-rw-r--r--
datalink.h
619
B
-rw-r--r--
dcbevent.h
1.26
KB
-rw-r--r--
dcbnl.h
4.2
KB
-rw-r--r--
devlink.h
13.25
KB
-rw-r--r--
dn.h
6.88
KB
-rw-r--r--
dn_dev.h
5.36
KB
-rw-r--r--
dn_fib.h
3.98
KB
-rw-r--r--
dn_neigh.h
968
B
-rw-r--r--
dn_nsp.h
5.83
KB
-rw-r--r--
dn_route.h
4.36
KB
-rw-r--r--
dsa.h
13.92
KB
-rw-r--r--
dsfield.h
1.11
KB
-rw-r--r--
dst.h
12.96
KB
-rw-r--r--
dst_cache.h
2.53
KB
-rw-r--r--
dst_metadata.h
5.05
KB
-rw-r--r--
dst_ops.h
1.97
KB
-rw-r--r--
erspan.h
2.11
KB
-rw-r--r--
esp.h
877
B
-rw-r--r--
ethoc.h
538
B
-rw-r--r--
fib_notifier.h
1.29
KB
-rw-r--r--
fib_rules.h
4.14
KB
-rw-r--r--
firewire.h
636
B
-rw-r--r--
flow.h
6.16
KB
-rw-r--r--
flow_dissector.h
7.24
KB
-rw-r--r--
fou.h
549
B
-rw-r--r--
fq.h
2.66
KB
-rw-r--r--
fq_impl.h
6.87
KB
-rw-r--r--
garp.h
2.62
KB
-rw-r--r--
gen_stats.h
2.34
KB
-rw-r--r--
genetlink.h
11.72
KB
-rw-r--r--
geneve.h
1.67
KB
-rw-r--r--
gre.h
2.99
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
937
B
-rw-r--r--
icmp.h
1.72
KB
-rw-r--r--
ieee80211_radiotap.h
6.63
KB
-rw-r--r--
ieee802154_netdev.h
9.14
KB
-rw-r--r--
if_inet6.h
6.13
KB
-rw-r--r--
ife.h
1.06
KB
-rw-r--r--
ila.h
498
B
-rw-r--r--
inet6_connection_sock.h
976
B
-rw-r--r--
inet6_hashtables.h
3.7
KB
-rw-r--r--
inet_common.h
1.89
KB
-rw-r--r--
inet_connection_sock.h
10.34
KB
-rw-r--r--
inet_ecn.h
5.99
KB
-rw-r--r--
inet_frag.h
4.51
KB
-rw-r--r--
inet_hashtables.h
12.57
KB
-rw-r--r--
inet_sock.h
8.24
KB
-rw-r--r--
inet_timewait_sock.h
3.82
KB
-rw-r--r--
inetpeer.h
3.29
KB
-rw-r--r--
ip.h
18.3
KB
-rw-r--r--
ip6_checksum.h
2.89
KB
-rw-r--r--
ip6_fib.h
10.03
KB
-rw-r--r--
ip6_route.h
7.55
KB
-rw-r--r--
ip6_tunnel.h
4.72
KB
-rw-r--r--
ip_fib.h
10.72
KB
-rw-r--r--
ip_tunnels.h
13.61
KB
-rw-r--r--
ip_vs.h
46.74
KB
-rw-r--r--
ipcomp.h
659
B
-rw-r--r--
ipconfig.h
811
B
-rw-r--r--
ipv6.h
29.95
KB
-rw-r--r--
ipv6_frag.h
2.54
KB
-rw-r--r--
ipx.h
4.4
KB
-rw-r--r--
iw_handler.h
20.91
KB
-rw-r--r--
kcm.h
4.96
KB
-rw-r--r--
l3mdev.h
5.86
KB
-rw-r--r--
lapb.h
4.75
KB
-rw-r--r--
lib80211.h
3.92
KB
-rw-r--r--
llc.h
4.36
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.08
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
5.84
KB
-rw-r--r--
mac80211.h
230.36
KB
-rw-r--r--
mac802154.h
15.27
KB
-rw-r--r--
mip6.h
1.58
KB
-rw-r--r--
mld.h
2.8
KB
-rw-r--r--
mpls.h
932
B
-rw-r--r--
mpls_iptunnel.h
827
B
-rw-r--r--
mrp.h
3.03
KB
-rw-r--r--
ncsi.h
1.92
KB
-rw-r--r--
ndisc.h
13.77
KB
-rw-r--r--
neighbour.h
15.02
KB
-rw-r--r--
net_namespace.h
9.93
KB
-rw-r--r--
net_ratelimit.h
220
B
-rw-r--r--
netevent.h
910
B
-rw-r--r--
netlabel.h
20.74
KB
-rw-r--r--
netlink.h
40.39
KB
-rw-r--r--
netprio_cgroup.h
1.24
KB
-rw-r--r--
netrom.h
7.68
KB
-rw-r--r--
nexthop.h
865
B
-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--
ping.h
3.45
KB
-rw-r--r--
pkt_cls.h
17.27
KB
-rw-r--r--
pkt_sched.h
4.05
KB
-rw-r--r--
pptp.h
557
B
-rw-r--r--
protocol.h
4.08
KB
-rw-r--r--
psample.h
821
B
-rw-r--r--
psnap.h
351
B
-rw-r--r--
raw.h
2.07
KB
-rw-r--r--
rawv6.h
854
B
-rw-r--r--
red.h
10.28
KB
-rw-r--r--
regulatory.h
10.12
KB
-rw-r--r--
request_sock.h
6.44
KB
-rw-r--r--
rose.h
7.62
KB
-rw-r--r--
route.h
10.02
KB
-rw-r--r--
rtnetlink.h
6.04
KB
-rw-r--r--
sch_generic.h
23.08
KB
-rw-r--r--
scm.h
3.5
KB
-rw-r--r--
secure_seq.h
855
B
-rw-r--r--
seg6.h
1.66
KB
-rw-r--r--
seg6_hmac.h
1.65
KB
-rw-r--r--
slhc_vj.h
6.67
KB
-rw-r--r--
smc.h
440
B
-rw-r--r--
snmp.h
5.23
KB
-rw-r--r--
sock.h
68.5
KB
-rw-r--r--
sock_reuseport.h
863
B
-rw-r--r--
stp.h
383
B
-rw-r--r--
strparser.h
3.75
KB
-rw-r--r--
switchdev.h
6.52
KB
-rw-r--r--
tcp.h
62.04
KB
-rw-r--r--
tcp_states.h
1.26
KB
-rw-r--r--
timewait_sock.h
1.11
KB
-rw-r--r--
tipc.h
2.34
KB
-rw-r--r--
tls.h
7.12
KB
-rw-r--r--
transp_v6.h
2.08
KB
-rw-r--r--
tso.h
515
B
-rw-r--r--
tun_proto.h
988
B
-rw-r--r--
udp.h
12.82
KB
-rw-r--r--
udp_tunnel.h
5.12
KB
-rw-r--r--
udplite.h
3.83
KB
-rw-r--r--
vsock_addr.h
1.05
KB
-rw-r--r--
vxlan.h
10.43
KB
-rw-r--r--
wext.h
1.51
KB
-rw-r--r--
wimax.h
19.97
KB
-rw-r--r--
x25.h
9.43
KB
-rw-r--r--
x25device.h
387
B
-rw-r--r--
xfrm.h
53.5
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : udp.h
/* * INET An implementation of the TCP/IP protocol suite for the LINUX * operating system. INET is implemented using the BSD Socket * interface as the means of communication with the user level. * * Definitions for the UDP module. * * Version: @(#)udp.h 1.0.2 05/07/93 * * Authors: Ross Biro * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> * * Fixes: * Alan Cox : Turned on udp checksums. I don't want to * chase 'memory corruption' bugs that aren't! * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #ifndef _UDP_H #define _UDP_H #include <linux/list.h> #include <linux/bug.h> #include <net/inet_sock.h> #include <net/sock.h> #include <net/snmp.h> #include <net/ip.h> #include <linux/ipv6.h> #include <linux/seq_file.h> #include <linux/poll.h> /** * struct udp_skb_cb - UDP(-Lite) private variables * * @header: private variables used by IPv4/IPv6 * @cscov: checksum coverage length (UDP-Lite only) * @partial_cov: if set indicates partial csum coverage */ struct udp_skb_cb { union { struct inet_skb_parm h4; #if IS_ENABLED(CONFIG_IPV6) struct inet6_skb_parm h6; #endif } header; __u16 cscov; __u8 partial_cov; }; #define UDP_SKB_CB(__skb) ((struct udp_skb_cb *)((__skb)->cb)) /** * struct udp_hslot - UDP hash slot * * @head: head of list of sockets * @count: number of sockets in 'head' list * @lock: spinlock protecting changes to head/count */ struct udp_hslot { struct hlist_head head; int count; spinlock_t lock; } __attribute__((aligned(2 * sizeof(long)))); /** * struct udp_table - UDP table * * @hash: hash table, sockets are hashed on (local port) * @hash2: hash table, sockets are hashed on (local port, local address) * @mask: number of slots in hash tables, minus 1 * @log: log2(number of slots in hash table) */ struct udp_table { struct udp_hslot *hash; struct udp_hslot *hash2; unsigned int mask; unsigned int log; }; extern struct udp_table udp_table; void udp_table_init(struct udp_table *, const char *); static inline struct udp_hslot *udp_hashslot(struct udp_table *table, struct net *net, unsigned int num) { return &table->hash[udp_hashfn(net, num, table->mask)]; } /* * For secondary hash, net_hash_mix() is performed before calling * udp_hashslot2(), this explains difference with udp_hashslot() */ static inline struct udp_hslot *udp_hashslot2(struct udp_table *table, unsigned int hash) { return &table->hash2[hash & table->mask]; } extern struct proto udp_prot; extern atomic_long_t udp_memory_allocated; /* sysctl variables for udp */ extern long sysctl_udp_mem[3]; extern int sysctl_udp_rmem_min; extern int sysctl_udp_wmem_min; struct sk_buff; /* * Generic checksumming routines for UDP(-Lite) v4 and v6 */ static inline __sum16 __udp_lib_checksum_complete(struct sk_buff *skb) { return (UDP_SKB_CB(skb)->cscov == skb->len ? __skb_checksum_complete(skb) : __skb_checksum_complete_head(skb, UDP_SKB_CB(skb)->cscov)); } static inline int udp_lib_checksum_complete(struct sk_buff *skb) { return !skb_csum_unnecessary(skb) && __udp_lib_checksum_complete(skb); } /** * udp_csum_outgoing - compute UDPv4/v6 checksum over fragments * @sk: socket we are writing to * @skb: sk_buff containing the filled-in UDP header * (checksum field must be zeroed out) */ static inline __wsum udp_csum_outgoing(struct sock *sk, struct sk_buff *skb) { __wsum csum = csum_partial(skb_transport_header(skb), sizeof(struct udphdr), 0); skb_queue_walk(&sk->sk_write_queue, skb) { csum = csum_add(csum, skb->csum); } return csum; } static inline __wsum udp_csum(struct sk_buff *skb) { __wsum csum = csum_partial(skb_transport_header(skb), sizeof(struct udphdr), skb->csum); for (skb = skb_shinfo(skb)->frag_list; skb; skb = skb->next) { csum = csum_add(csum, skb->csum); } return csum; } static inline __sum16 udp_v4_check(int len, __be32 saddr, __be32 daddr, __wsum base) { return csum_tcpudp_magic(saddr, daddr, len, IPPROTO_UDP, base); } void udp_set_csum(bool nocheck, struct sk_buff *skb, __be32 saddr, __be32 daddr, int len); static inline void udp_csum_pull_header(struct sk_buff *skb) { if (!skb->csum_valid && skb->ip_summed == CHECKSUM_NONE) skb->csum = csum_partial(skb->data, sizeof(struct udphdr), skb->csum); skb_pull_rcsum(skb, sizeof(struct udphdr)); UDP_SKB_CB(skb)->cscov -= sizeof(struct udphdr); } typedef struct sock *(*udp_lookup_t)(struct sk_buff *skb, __be16 sport, __be16 dport); struct sk_buff **udp_gro_receive(struct sk_buff **head, struct sk_buff *skb, struct udphdr *uh, udp_lookup_t lookup); int udp_gro_complete(struct sk_buff *skb, int nhoff, udp_lookup_t lookup); static inline struct udphdr *udp_gro_udphdr(struct sk_buff *skb) { struct udphdr *uh; unsigned int hlen, off; off = skb_gro_offset(skb); hlen = off + sizeof(*uh); uh = skb_gro_header_fast(skb, off); if (skb_gro_header_hard(skb, hlen)) uh = skb_gro_header_slow(skb, hlen, off); return uh; } /* hash routines shared between UDPv4/6 and UDP-Litev4/6 */ static inline int udp_lib_hash(struct sock *sk) { BUG(); return 0; } void udp_lib_unhash(struct sock *sk); void udp_lib_rehash(struct sock *sk, u16 new_hash); static inline void udp_lib_close(struct sock *sk, long timeout) { sk_common_release(sk); } int udp_lib_get_port(struct sock *sk, unsigned short snum, unsigned int hash2_nulladdr); u32 udp_flow_hashrnd(void); static inline __be16 udp_flow_src_port(struct net *net, struct sk_buff *skb, int min, int max, bool use_eth) { u32 hash; if (min >= max) { /* Use default range */ inet_get_local_port_range(net, &min, &max); } hash = skb_get_hash(skb); if (unlikely(!hash)) { if (use_eth) { /* Can't find a normal hash, caller has indicated an * Ethernet packet so use that to compute a hash. */ hash = jhash(skb->data, 2 * ETH_ALEN, (__force u32) skb->protocol); } else { /* Can't derive any sort of hash for the packet, set * to some consistent random value. */ hash = udp_flow_hashrnd(); } } /* Since this is being sent on the wire obfuscate hash a bit * to minimize possbility that any useful information to an * attacker is leaked. Only upper 16 bits are relevant in the * computation for 16 bit port value. */ hash ^= hash << 16; return htons((((u64) hash * (max - min)) >> 32) + min); } static inline int udp_rqueue_get(struct sock *sk) { return sk_rmem_alloc_get(sk) - READ_ONCE(udp_sk(sk)->forward_deficit); } /* net/ipv4/udp.c */ void udp_destruct_sock(struct sock *sk); void skb_consume_udp(struct sock *sk, struct sk_buff *skb, int len); int __udp_enqueue_schedule_skb(struct sock *sk, struct sk_buff *skb); void udp_skb_destructor(struct sock *sk, struct sk_buff *skb); struct sk_buff *__skb_recv_udp(struct sock *sk, unsigned int flags, int noblock, int *peeked, int *off, int *err); static inline struct sk_buff *skb_recv_udp(struct sock *sk, unsigned int flags, int noblock, int *err) { int peeked, off = 0; return __skb_recv_udp(sk, flags, noblock, &peeked, &off, err); } int udp_v4_early_demux(struct sk_buff *skb); bool udp_sk_rx_dst_set(struct sock *sk, struct dst_entry *dst); int udp_get_port(struct sock *sk, unsigned short snum, int (*saddr_cmp)(const struct sock *, const struct sock *)); void udp_err(struct sk_buff *, u32); int udp_abort(struct sock *sk, int err); int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len); int udp_push_pending_frames(struct sock *sk); void udp_flush_pending_frames(struct sock *sk); void udp4_hwcsum(struct sk_buff *skb, __be32 src, __be32 dst); int udp_rcv(struct sk_buff *skb); int udp_ioctl(struct sock *sk, int cmd, unsigned long arg); int udp_init_sock(struct sock *sk); int __udp_disconnect(struct sock *sk, int flags); int udp_disconnect(struct sock *sk, int flags); unsigned int udp_poll(struct file *file, struct socket *sock, poll_table *wait); struct sk_buff *skb_udp_tunnel_segment(struct sk_buff *skb, netdev_features_t features, bool is_ipv6); int udp_lib_getsockopt(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen); int udp_lib_setsockopt(struct sock *sk, int level, int optname, char __user *optval, unsigned int optlen, int (*push_pending_frames)(struct sock *)); struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport, __be32 daddr, __be16 dport, int dif); struct sock *__udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport, __be32 daddr, __be16 dport, int dif, int sdif, struct udp_table *tbl, struct sk_buff *skb); struct sock *udp4_lib_lookup_skb(struct sk_buff *skb, __be16 sport, __be16 dport); struct sock *udp6_lib_lookup(struct net *net, const struct in6_addr *saddr, __be16 sport, const struct in6_addr *daddr, __be16 dport, int dif); struct sock *__udp6_lib_lookup(struct net *net, const struct in6_addr *saddr, __be16 sport, const struct in6_addr *daddr, __be16 dport, int dif, int sdif, struct udp_table *tbl, struct sk_buff *skb); struct sock *udp6_lib_lookup_skb(struct sk_buff *skb, __be16 sport, __be16 dport); /* UDP uses skb->dev_scratch to cache as much information as possible and avoid * possibly multiple cache miss on dequeue() */ struct udp_dev_scratch { /* skb->truesize and the stateless bit are embedded in a single field; * do not use a bitfield since the compiler emits better/smaller code * this way */ u32 _tsize_state; #if BITS_PER_LONG == 64 /* len and the bit needed to compute skb_csum_unnecessary * will be on cold cache lines at recvmsg time. * skb->len can be stored on 16 bits since the udp header has been * already validated and pulled. */ u16 len; bool is_linear; bool csum_unnecessary; #endif }; static inline struct udp_dev_scratch *udp_skb_scratch(struct sk_buff *skb) { return (struct udp_dev_scratch *)&skb->dev_scratch; } #if BITS_PER_LONG == 64 static inline unsigned int udp_skb_len(struct sk_buff *skb) { return udp_skb_scratch(skb)->len; } static inline bool udp_skb_csum_unnecessary(struct sk_buff *skb) { return udp_skb_scratch(skb)->csum_unnecessary; } static inline bool udp_skb_is_linear(struct sk_buff *skb) { return udp_skb_scratch(skb)->is_linear; } #else static inline unsigned int udp_skb_len(struct sk_buff *skb) { return skb->len; } static inline bool udp_skb_csum_unnecessary(struct sk_buff *skb) { return skb_csum_unnecessary(skb); } static inline bool udp_skb_is_linear(struct sk_buff *skb) { return !skb_is_nonlinear(skb); } #endif static inline int copy_linear_skb(struct sk_buff *skb, int len, int off, struct iov_iter *to) { int n; n = copy_to_iter(skb->data + off, len, to); if (n == len) return 0; iov_iter_revert(to, n); return -EFAULT; } /* * SNMP statistics for UDP and UDP-Lite */ #define UDP_INC_STATS(net, field, is_udplite) do { \ if (is_udplite) SNMP_INC_STATS((net)->mib.udplite_statistics, field); \ else SNMP_INC_STATS((net)->mib.udp_statistics, field); } while(0) #define __UDP_INC_STATS(net, field, is_udplite) do { \ if (is_udplite) __SNMP_INC_STATS((net)->mib.udplite_statistics, field); \ else __SNMP_INC_STATS((net)->mib.udp_statistics, field); } while(0) #define __UDP6_INC_STATS(net, field, is_udplite) do { \ if (is_udplite) __SNMP_INC_STATS((net)->mib.udplite_stats_in6, field);\ else __SNMP_INC_STATS((net)->mib.udp_stats_in6, field); \ } while(0) #define UDP6_INC_STATS(net, field, __lite) do { \ if (__lite) SNMP_INC_STATS((net)->mib.udplite_stats_in6, field); \ else SNMP_INC_STATS((net)->mib.udp_stats_in6, field); \ } while(0) #if IS_ENABLED(CONFIG_IPV6) #define __UDPX_INC_STATS(sk, field) \ do { \ if ((sk)->sk_family == AF_INET) \ __UDP_INC_STATS(sock_net(sk), field, 0); \ else \ __UDP6_INC_STATS(sock_net(sk), field, 0); \ } while (0) #else #define __UDPX_INC_STATS(sk, field) __UDP_INC_STATS(sock_net(sk), field, 0) #endif /* /proc */ int udp_seq_open(struct inode *inode, struct file *file); struct udp_seq_afinfo { char *name; sa_family_t family; struct udp_table *udp_table; const struct file_operations *seq_fops; struct seq_operations seq_ops; }; struct udp_iter_state { struct seq_net_private p; sa_family_t family; int bucket; struct udp_table *udp_table; }; #ifdef CONFIG_PROC_FS int udp_proc_register(struct net *net, struct udp_seq_afinfo *afinfo); void udp_proc_unregister(struct net *net, struct udp_seq_afinfo *afinfo); int udp4_proc_init(void); void udp4_proc_exit(void); #endif int udpv4_offload_init(void); void udp_init(void); void udp_encap_enable(void); #if IS_ENABLED(CONFIG_IPV6) void udpv6_encap_enable(void); #endif #endif /* _UDP_H */
Close