~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/udp.h

Version: ~ [ linux-5.1-rc1 ] ~ [ linux-5.0.3 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.30 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.107 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.164 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.176 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.136 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.63 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.39.4 ] ~ [ linux-2.6.38.8 ] ~ [ linux-2.6.37.6 ] ~ [ linux-2.6.36.4 ] ~ [ linux-2.6.35.14 ] ~ [ linux-2.6.34.15 ] ~ [ linux-2.6.33.20 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * INET         An implementation of the TCP/IP protocol suite for the LINUX
  3  *              operating system.  INET is implemented using the  BSD Socket
  4  *              interface as the means of communication with the user level.
  5  *
  6  *              Definitions for the UDP protocol.
  7  *
  8  * Version:     @(#)udp.h       1.0.2   04/28/93
  9  *
 10  * Author:      Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
 11  *
 12  *              This program is free software; you can redistribute it and/or
 13  *              modify it under the terms of the GNU General Public License
 14  *              as published by the Free Software Foundation; either version
 15  *              2 of the License, or (at your option) any later version.
 16  */
 17 #ifndef _LINUX_UDP_H
 18 #define _LINUX_UDP_H
 19 
 20 #include <linux/types.h>
 21 
 22 struct udphdr {
 23         __be16  source;
 24         __be16  dest;
 25         __be16  len;
 26         __sum16 check;
 27 };
 28 
 29 /* UDP socket options */
 30 #define UDP_CORK        1       /* Never send partially complete segments */
 31 #define UDP_ENCAP       100     /* Set the socket to accept encapsulated packets */
 32 
 33 /* UDP encapsulation types */
 34 #define UDP_ENCAP_ESPINUDP_NON_IKE      1 /* draft-ietf-ipsec-nat-t-ike-00/01 */
 35 #define UDP_ENCAP_ESPINUDP      2 /* draft-ietf-ipsec-udp-encaps-06 */
 36 #define UDP_ENCAP_L2TPINUDP     3 /* rfc2661 */
 37 
 38 #ifdef __KERNEL__
 39 #include <net/inet_sock.h>
 40 #include <linux/skbuff.h>
 41 #include <net/netns/hash.h>
 42 
 43 static inline struct udphdr *udp_hdr(const struct sk_buff *skb)
 44 {
 45         return (struct udphdr *)skb_transport_header(skb);
 46 }
 47 
 48 #define UDP_HTABLE_SIZE_MIN             (CONFIG_BASE_SMALL ? 128 : 256)
 49 
 50 static inline int udp_hashfn(struct net *net, unsigned num, unsigned mask)
 51 {
 52         return (num + net_hash_mix(net)) & mask;
 53 }
 54 
 55 struct udp_sock {
 56         /* inet_sock has to be the first member */
 57         struct inet_sock inet;
 58 #define udp_port_hash           inet.sk.__sk_common.skc_u16hashes[0]
 59 #define udp_portaddr_hash       inet.sk.__sk_common.skc_u16hashes[1]
 60 #define udp_portaddr_node       inet.sk.__sk_common.skc_portaddr_node
 61         int              pending;       /* Any pending frames ? */
 62         unsigned int     corkflag;      /* Cork is required */
 63         __u16            encap_type;    /* Is this an Encapsulation socket? */
 64         /*
 65          * Following member retains the information to create a UDP header
 66          * when the socket is uncorked.
 67          */
 68         __u16            len;           /* total length of pending frames */
 69         /*
 70          * Fields specific to UDP-Lite.
 71          */
 72         __u16            pcslen;
 73         __u16            pcrlen;
 74 /* indicator bits used by pcflag: */
 75 #define UDPLITE_BIT      0x1            /* set by udplite proto init function */
 76 #define UDPLITE_SEND_CC  0x2            /* set via udplite setsockopt         */
 77 #define UDPLITE_RECV_CC  0x4            /* set via udplite setsocktopt        */
 78         __u8             pcflag;        /* marks socket as UDP-Lite if > 0    */
 79         __u8             unused[3];
 80         /*
 81          * For encapsulation sockets.
 82          */
 83         int (*encap_rcv)(struct sock *sk, struct sk_buff *skb);
 84 };
 85 
 86 static inline struct udp_sock *udp_sk(const struct sock *sk)
 87 {
 88         return (struct udp_sock *)sk;
 89 }
 90 
 91 #define udp_portaddr_for_each_entry(__sk, node, list) \
 92         hlist_nulls_for_each_entry(__sk, node, list, __sk_common.skc_portaddr_node)
 93 
 94 #define udp_portaddr_for_each_entry_rcu(__sk, node, list) \
 95         hlist_nulls_for_each_entry_rcu(__sk, node, list, __sk_common.skc_portaddr_node)
 96 
 97 #define IS_UDPLITE(__sk) (udp_sk(__sk)->pcflag)
 98 
 99 #endif
100 
101 #endif  /* _LINUX_UDP_H */
102 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp