X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/d7e50217d7adf6e52786a38bcaa4cd698cb9a79e..0a7de7458d150b5d4dffc935ba399be265ef0a1a:/bsd/netinet/udp.h diff --git a/bsd/netinet/udp.h b/bsd/netinet/udp.h index 18ed8c194..bad136e63 100644 --- a/bsd/netinet/udp.h +++ b/bsd/netinet/udp.h @@ -1,17 +1,20 @@ /* * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. * - * @APPLE_LICENSE_HEADER_START@ - * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. - * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. - * + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, @@ -19,8 +22,8 @@ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * Please see the License for the specific language governing rights and * limitations under the License. - * - * @APPLE_LICENSE_HEADER_END@ + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ /* * Copyright (c) 1982, 1986, 1993 @@ -60,16 +63,53 @@ #ifndef _NETINET_UDP_H_ #define _NETINET_UDP_H_ #include +#include /* u_short */ /* * Udp protocol header. * Per RFC 768, September, 1981. */ struct udphdr { - u_short uh_sport; /* source port */ - u_short uh_dport; /* destination port */ - u_short uh_ulen; /* udp length */ - u_short uh_sum; /* udp checksum */ + u_short uh_sport; /* source port */ + u_short uh_dport; /* destination port */ + u_short uh_ulen; /* udp length */ + u_short uh_sum; /* udp checksum */ +}; + +/* + * User-settable options (used with setsockopt). + */ +#define UDP_NOCKSUM 0x01 /* don't checksum outbound payloads */ +#ifdef PRIVATE +#define UDP_KEEPALIVE_OFFLOAD 0x02 /* Send keep-alive at a given interval */ +#endif /* PRIVATE */ + +#ifdef PRIVATE +/* + * This is a mechanism to offload keep-alive or heartbeat messages + * to the Wifi driver when the host processor is sleeping. The application + * will give a small amount of data that can be placed in the message. The + * application will also specify an interval at which these messages + * should be sent. + * + * The purpose of these messages is to detect loss of connectivity in + * peer-to-peer communication without keeping the host processor awake. + * + * The application will pass this data to the kernel using setsockopt. It + * can set the interval to 0 to disable keepalive offload. + */ +#define UDP_KEEPALIVE_OFFLOAD_DATA_SIZE 32 + +/* Maximum keep alive interval in seconds */ +#define UDP_KEEPALIVE_INTERVAL_MAX_SECONDS 65536 + +struct udp_keepalive_offload { + u_char ka_data[UDP_KEEPALIVE_OFFLOAD_DATA_SIZE]; + u_int16_t ka_interval; /* interval in seconds */ + u_int8_t ka_data_len; /* valid length of ka_data */ + u_int8_t ka_type; /* type of application */ +#define UDP_KEEPALIVE_OFFLOAD_TYPE_AIRPLAY 0x1 }; -#endif +#endif /* PRIVATE */ +#endif /* _NETINET_UDP_H */