X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/8f6c56a50524aa785f7e596d52dddfb331e18961..4bd07ac2140668789aa3ee8ec4dde4a3e0a3bba5:/bsd/netinet/udp.h?ds=sidebyside diff --git a/bsd/netinet/udp.h b/bsd/netinet/udp.h index dc4171e79..3f4a47346 100644 --- a/bsd/netinet/udp.h +++ b/bsd/netinet/udp.h @@ -63,6 +63,7 @@ #ifndef _NETINET_UDP_H_ #define _NETINET_UDP_H_ #include +#include /* u_short */ /* * Udp protocol header. @@ -75,4 +76,40 @@ struct udphdr { u_short uh_sum; /* udp checksum */ }; -#endif +/* + * 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 /* PRIVATE */ +#endif /* _NETINET_UDP_H */