glibc (2.38)

(root)/
include/
netinet/
udp.h
       1  /* Copyright (C) 1991-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  /*
      19   * Copyright (C) 1982, 1986 Regents of the University of California.
      20   * All rights reserved.
      21   *
      22   * Redistribution and use in source and binary forms, with or without
      23   * modification, are permitted provided that the following conditions
      24   * are met:
      25   * 1. Redistributions of source code must retain the above copyright
      26   *    notice, this list of conditions and the following disclaimer.
      27   * 2. Redistributions in binary form must reproduce the above copyright
      28   *    notice, this list of conditions and the following disclaimer in the
      29   *    documentation and/or other materials provided with the distribution.
      30   * 4. Neither the name of the University nor the names of its contributors
      31   *    may be used to endorse or promote products derived from this software
      32   *    without specific prior written permission.
      33   *
      34   * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
      35   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      36   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      37   * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
      38   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      39   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      40   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      41   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      42   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      43   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      44   * SUCH DAMAGE.
      45   */
      46  
      47  #ifndef __NETINET_UDP_H
      48  #define __NETINET_UDP_H    1
      49  
      50  #include <sys/types.h>
      51  #include <stdint.h>
      52  
      53  /* UDP header as specified by RFC 768, August 1980. */
      54  
      55  struct udphdr
      56  {
      57    __extension__ union
      58    {
      59      struct
      60      {
      61        uint16_t uh_sport;	/* source port */
      62        uint16_t uh_dport;	/* destination port */
      63        uint16_t uh_ulen;		/* udp length */
      64        uint16_t uh_sum;		/* udp checksum */
      65      };
      66      struct
      67      {
      68        uint16_t source;
      69        uint16_t dest;
      70        uint16_t len;
      71        uint16_t check;
      72      };
      73    };
      74  };
      75  
      76  /* UDP socket options */
      77  #define UDP_CORK	1	/* Never send partially complete segments.  */
      78  #define UDP_ENCAP	100	/* Set the socket to accept
      79  				   encapsulated packets.  */
      80  #define UDP_NO_CHECK6_TX 101	/* Disable sending checksum for UDP
      81  				   over IPv6.  */
      82  #define UDP_NO_CHECK6_RX 102	/* Disable accepting checksum for UDP
      83  				   over IPv6.  */
      84  #define UDP_SEGMENT	103	/* Set GSO segmentation size.  */
      85  #define UDP_GRO		104	/* This socket can receive UDP GRO packets.  */
      86  
      87  /* UDP encapsulation types */
      88  #define UDP_ENCAP_ESPINUDP_NON_IKE 1	/* draft-ietf-ipsec-nat-t-ike-00/01 */
      89  #define UDP_ENCAP_ESPINUDP	2	/* draft-ietf-ipsec-udp-encaps-06 */
      90  #define UDP_ENCAP_L2TPINUDP	3	/* rfc2661 */
      91  #define UDP_ENCAP_GTP0		4	/* GSM TS 09.60 */
      92  #define UDP_ENCAP_GTP1U		5	/* 3GPP TS 29.060 */
      93  
      94  #define SOL_UDP            17      /* sockopt level for UDP */
      95  
      96  #endif /* netinet/udp.h */