/* * 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 protocol. * * Version: @(#)udp.h 1.0.2 04/28/93 * * Author: Fred N. van Kempen, * * 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 _LINUX_UDP_H #define _LINUX_UDP_H #include struct udphdr { __be16 source; __be16 dest; __be16 len; __sum16 check; }; #define UDP_CORK 1 #define UDP_ENCAP 100 #define UDP_ENCAP_ESPINUDP_NON_IKE 1 #define UDP_ENCAP_ESPINUDP 2 #define UDP_ENCAP_L2TPINUDP 3 #ifdef __KERNEL__ #include #include #include static inline struct udphdr *udp_hdr(const struct sk_buff *skb) { return (struct udphdr *)skb_transport_header(skb); } #define UDP_HTABLE_SIZE_MIN (CONFIG_BASE_SMALL ? 128 : 256) static inline int udp_hashfn(struct net *net, unsigned num, unsigned mask) { return (num + net_hash_mix(net)) & mask; } struct udp_sock { struct inet_sock inet; #define udp_port_hash inet.sk.__sk_common.skc_u16hashes[0] #define udp_portaddr_hash inet.sk.__sk_common.skc_u16hashes[1] #define udp_portaddr_node inet.sk.__sk_common.skc_portaddr_node int pending; unsigned int corkflag; __u16 encap_type; __u16 len; __u16 pcslen; __u16 pcrlen; #define UDPLITE_BIT 0x1 #define UDPLITE_SEND_CC 0x2 #define UDPLITE_RECV_CC 0x4 __u8 pcflag; __u8 unused[3]; int (*encap_rcv)(struct sock *sk, struct sk_buff *skb); }; static inline struct udp_sock *udp_sk(const struct sock *sk) { return (struct udp_sock *)sk; } #define udp_portaddr_for_each_entry(__sk, node, list) \ hlist_nulls_for_each_entry(__sk, node, list, __sk_common.skc_portaddr_node) #define udp_portaddr_for_each_entry_rcu(__sk, node, list) \ hlist_nulls_for_each_entry_rcu(__sk, node, list, __sk_common.skc_portaddr_node) #define IS_UDPLITE(__sk) (udp_sk(__sk)->pcflag) #endif #endif