]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/netinet/udp_var.h
xnu-1699.22.81.tar.gz
[apple/xnu.git] / bsd / netinet / udp_var.h
index 97adb45080de653f413e9b106108a54f45134c06..3a75d1faf263dbbf834e33870becb9532ebc67c5 100644 (file)
@@ -1,23 +1,29 @@
 /*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2008 Apple Computer, Inc. All rights reserved.
  *
- * @APPLE_LICENSE_HEADER_START@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
- * The contents of this file constitute Original Code as defined in and
- * are subject to the Apple Public Source License Version 1.1 (the
- * "License").  You may not use this file except in compliance with the
- * License.  Please obtain a copy of the License at
- * http://www.apple.com/publicsource and read it before using this file.
+ * 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. 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.
  * 
- * This Original Code and all software distributed under the License are
- * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * 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,
  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
- * License for the specific language governing rights and limitations
- * under the License.
+ * 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, 1989, 1993
@@ -56,6 +62,7 @@
 
 #ifndef _NETINET_UDP_VAR_H_
 #define _NETINET_UDP_VAR_H_
+#include <sys/appleapiopts.h>
 
 #include <sys/sysctl.h>
 
@@ -78,30 +85,25 @@ struct      udpiphdr {
 #define ui_next                ui_i.ih_next
 #define ui_prev                ui_i.ih_prev
 
-struct udpcb {
-       /* XXX - these should be by reference so we can do options quickly */
-       struct  ip udb_ip;
-       struct  udphdr udb_uh;
-       struct  sockaddr_in udb_conn;
-       struct  in_hostcache *udb_hc;
-       struct  mbuf *udb_queue;
-};
-#define        inptoudpcb(inp) ((struct udpdb *)(inp)->inp_ppcb)
-
 struct udpstat {
                                /* input statistics: */
-       u_long  udps_ipackets;          /* total input packets */
-       u_long  udps_hdrops;            /* packet shorter than header */
-       u_long  udps_badsum;            /* checksum error */
-       u_long  udps_badlen;            /* data length larger than packet */
-       u_long  udps_noport;            /* no socket on port */
-       u_long  udps_noportbcast;       /* of above, arrived as broadcast */
-       u_long  udps_fullsock;          /* not delivered, input socket full */
-       u_long  udpps_pcbcachemiss;     /* input packets missing pcb cache */
-       u_long  udpps_pcbhashmiss;      /* input packets not for hashed pcb */
+       u_int32_t       udps_ipackets;          /* total input packets */
+       u_int32_t       udps_hdrops;            /* packet shorter than header */
+       u_int32_t       udps_badsum;            /* checksum error */
+       u_int32_t       udps_badlen;            /* data length larger than packet */
+       u_int32_t       udps_noport;            /* no socket on port */
+       u_int32_t       udps_noportbcast;       /* of above, arrived as broadcast */
+       u_int32_t       udps_fullsock;          /* not delivered, input socket full */
+       u_int32_t       udpps_pcbcachemiss;     /* input packets missing pcb cache */
+       u_int32_t       udpps_pcbhashmiss;      /* input packets not for hashed pcb */
                                /* output statistics: */
-       u_long  udps_opackets;          /* total output packets */
-       u_long  udps_fastout;           /* output packets on fast path */
+       u_int32_t       udps_opackets;          /* total output packets */
+       u_int32_t       udps_fastout;           /* output packets on fast path */
+#ifndef __APPLE__
+       u_int32_t       udps_nosum;             /* no checksum */
+                               /* of no socket on port, arrived as multicast */
+       u_int32_t       udps_noportmcast;
+#endif
 };
 
 /*
@@ -114,6 +116,7 @@ struct      udpstat {
 #define        UDPCTL_PCBLIST          5       /* list of PCBs for UDP sockets */
 #define UDPCTL_MAXID           6
 
+#ifdef KERNEL_PRIVATE
 #define UDPCTL_NAMES { \
        { 0, 0 }, \
        { "checksum", CTLTYPE_INT }, \
@@ -123,23 +126,32 @@ struct    udpstat {
        { "pcblist", CTLTYPE_STRUCT }, \
 }
 
-#ifdef KERNEL
 SYSCTL_DECL(_net_inet_udp);
 
 extern struct  pr_usrreqs udp_usrreqs;
 extern struct  inpcbhead udb;
 extern struct  inpcbinfo udbinfo;
-extern u_long  udp_sendspace;
-extern u_long  udp_recvspace;
-extern struct udpstat udpstat;
+extern u_int32_t       udp_sendspace;
+extern u_int32_t       udp_recvspace;
+extern struct  udpstat udpstat;
 extern int     log_in_vain;
 
-void   udp_ctlinput __P((int, struct sockaddr *, void *));
-void   udp_init __P((void));
-void   udp_input __P((struct mbuf *, int));
+void   udp_ctlinput(int, struct sockaddr *, void *);
+int    udp_ctloutput(struct socket *, struct sockopt *);
 
-void   udp_notify __P((struct inpcb *inp, int errno));
-int    udp_shutdown __P((struct socket *so));
-#endif
+void   udp_init(void) __attribute__((section("__TEXT, initcode")));
+void   udp_input(struct mbuf *, int);
 
+void   udp_notify(struct inpcb *inp, int errno);
+int    udp_shutdown(struct socket *so);
+int    udp_lock (struct socket *, int, void *);
+int    udp_unlock (struct socket *, int, void *);
+void   udp_slowtimo (void);
+#ifdef _KERN_LOCKS_H_
+lck_mtx_t *    udp_getlock (struct socket *, int);
+#else
+void * udp_getlock (struct socket *, int);
 #endif
+
+#endif /* KERNEL_PRIVATE */
+#endif /* _NETINET_UDP_VAR_H_ */