]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/netinet/udp.h
xnu-3789.70.16.tar.gz
[apple/xnu.git] / bsd / netinet / udp.h
index dc4171e797c24f445d8eb7cb8eb655eb49e80ef4..3f4a473469b2a5b538a8fe3fd30eb87ba6f52f8a 100644 (file)
@@ -63,6 +63,7 @@
 #ifndef _NETINET_UDP_H_
 #define _NETINET_UDP_H_
 #include <sys/appleapiopts.h>
+#include <sys/types.h>         /* 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 */