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

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

Version: ~ [ linux-5.11-rc3 ] ~ [ linux-5.10.7 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.89 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.167 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.215 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.251 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.251 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.85 ] ~ [ 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-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 <net/inet_sock.h>
 21 #include <linux/skbuff.h>
 22 #include <net/netns/hash.h>
 23 #include <uapi/linux/udp.h>
 24 
 25 static inline struct udphdr *udp_hdr(const struct sk_buff *skb)
 26 {
 27         return (struct udphdr *)skb_transport_header(skb);
 28 }
 29 
 30 static inline struct udphdr *inner_udp_hdr(const struct sk_buff *skb)
 31 {
 32         return (struct udphdr *)skb_inner_transport_header(skb);
 33 }
 34 
 35 #define UDP_HTABLE_SIZE_MIN             (CONFIG_BASE_SMALL ? 128 : 256)
 36 
 37 static inline int udp_hashfn(struct net *net, unsigned num, unsigned mask)
 38 {
 39         return (num + net_hash_mix(net)) & mask;
 40 }
 41 
 42 struct udp_sock {
 43         /* inet_sock has to be the first member */
 44         struct inet_sock inet;
 45 #define udp_port_hash           inet.sk.__sk_common.skc_u16hashes[0]
 46 #define udp_portaddr_hash       inet.sk.__sk_common.skc_u16hashes[1]
 47 #define udp_portaddr_node       inet.sk.__sk_common.skc_portaddr_node
 48         int              pending;       /* Any pending frames ? */
 49         unsigned int     corkflag;      /* Cork is required */
 50         __u8             encap_type;    /* Is this an Encapsulation socket? */
 51         unsigned char    no_check6_tx:1,/* Send zero UDP6 checksums on TX? */
 52                          no_check6_rx:1;/* Allow zero UDP6 checksums on RX? */
 53         /*
 54          * Following member retains the information to create a UDP header
 55          * when the socket is uncorked.
 56          */
 57         __u16            len;           /* total length of pending frames */
 58         /*
 59          * Fields specific to UDP-Lite.
 60          */
 61         __u16            pcslen;
 62         __u16            pcrlen;
 63 /* indicator bits used by pcflag: */
 64 #define UDPLITE_BIT      0x1            /* set by udplite proto init function */
 65 #define UDPLITE_SEND_CC  0x2            /* set via udplite setsockopt         */
 66 #define UDPLITE_RECV_CC  0x4            /* set via udplite setsocktopt        */
 67         __u8             pcflag;        /* marks socket as UDP-Lite if > 0    */
 68         __u8             unused[3];
 69         /*
 70          * For encapsulation sockets.
 71          */
 72         int (*encap_rcv)(struct sock *sk, struct sk_buff *skb);
 73         void (*encap_destroy)(struct sock *sk);
 74 };
 75 
 76 static inline struct udp_sock *udp_sk(const struct sock *sk)
 77 {
 78         return (struct udp_sock *)sk;
 79 }
 80 
 81 static inline void udp_set_no_check6_tx(struct sock *sk, bool val)
 82 {
 83         udp_sk(sk)->no_check6_tx = val;
 84 }
 85 
 86 static inline void udp_set_no_check6_rx(struct sock *sk, bool val)
 87 {
 88         udp_sk(sk)->no_check6_rx = val;
 89 }
 90 
 91 static inline bool udp_get_no_check6_tx(struct sock *sk)
 92 {
 93         return udp_sk(sk)->no_check6_tx;
 94 }
 95 
 96 static inline bool udp_get_no_check6_rx(struct sock *sk)
 97 {
 98         return udp_sk(sk)->no_check6_rx;
 99 }
100 
101 #define udp_portaddr_for_each_entry(__sk, node, list) \
102         hlist_nulls_for_each_entry(__sk, node, list, __sk_common.skc_portaddr_node)
103 
104 #define udp_portaddr_for_each_entry_rcu(__sk, node, list) \
105         hlist_nulls_for_each_entry_rcu(__sk, node, list, __sk_common.skc_portaddr_node)
106 
107 #define IS_UDPLITE(__sk) (udp_sk(__sk)->pcflag)
108 
109 #endif  /* _LINUX_UDP_H */
110 

~ [ 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