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
22struct udphdr {
23	__u16	source;
24	__u16	dest;
25	__u16	len;
26	__u16	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
37#ifdef __KERNEL__
38#include <linux/types.h>
39
40#include <net/inet_sock.h>
41
42struct udp_sock {
43	/* inet_sock has to be the first member */
44	struct inet_sock inet;
45	int		 pending;	/* Any pending frames ? */
46	unsigned int	 corkflag;	/* Cork is required */
47  	__u16		 encap_type;	/* Is this an Encapsulation socket? */
48	/*
49	 * Following member retains the information to create a UDP header
50	 * when the socket is uncorked.
51	 */
52	__u16		 len;		/* total length of pending frames */
53};
54
55static inline struct udp_sock *udp_sk(const struct sock *sk)
56{
57	return (struct udp_sock *)sk;
58}
59
60#endif
61
62#endif	/* _LINUX_UDP_H */
63