1/* Copyright (C) 1991-2025 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
55struct 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 */