]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/netinet/in_var.h
xnu-1228.12.14.tar.gz
[apple/xnu.git] / bsd / netinet / in_var.h
index a40d855ae5de8aa393fe0ee7be8ad2f617b4af9d..fe1bc48995133fce5c90e4a3fdea399530abcfd7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2008 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
@@ -71,6 +71,7 @@
 #endif
 
 #ifdef PRIVATE
+#include <net/route.h>
 
 /*
  * Interface address, Internet version.  One of these structures
  * of the structure and is assumed to be first.
  */
 struct in_ifaddr {
-       struct  ifaddr ia_ifa;          /* protocol-independent info */
-#define        ia_ifp          ia_ifa.ifa_ifp
-#define ia_flags       ia_ifa.ifa_flags
-                                       /* ia_{,sub}net{,mask} in host order */
-       u_long  ia_net;                 /* network number of interface */
-       u_long  ia_netmask;             /* mask of net part */
-       u_long  ia_subnet;              /* subnet number, including net */
-       u_long  ia_subnetmask;          /* mask of subnet part */
-       struct  in_addr ia_netbroadcast; /* to recognize net broadcasts */
-       TAILQ_ENTRY(in_ifaddr) ia_link; /* tailq macro glue */
-       struct  sockaddr_in ia_addr;    /* reserve space for interface name */
-       struct  sockaddr_in ia_dstaddr; /* reserve space for broadcast addr */
-#define        ia_broadaddr    ia_dstaddr
-       struct  sockaddr_in ia_sockmask; /* reserve space for general netmask */
+       struct ifaddr           ia_ifa;         /* protocol-independent info */
+#define        ia_ifp                  ia_ifa.ifa_ifp
+#define        ia_flags                ia_ifa.ifa_flags
+                                               /* ia_{,sub}net{,mask} in host order */
+       u_long                  ia_net;         /* network number of interface */
+       u_long                  ia_netmask;     /* mask of net part */
+       u_long                  ia_subnet;      /* subnet number, including net */
+       u_long                  ia_subnetmask;  /* mask of subnet part */
+       struct in_addr          ia_netbroadcast; /* to recognize net broadcasts */
+       TAILQ_ENTRY(in_ifaddr)  ia_link;        /* tailq macro glue */
+       struct sockaddr_in      ia_addr;        /* reserve space for interface name */
+       struct sockaddr_in      ia_dstaddr;     /* reserve space for broadcast addr */
+#define        ia_broadaddr            ia_dstaddr
+       struct sockaddr_in      ia_sockmask;    /* reserve space for general netmask */
 };
 #endif /* PRIVATE */
 
 struct in_aliasreq {
-       char    ifra_name[IFNAMSIZ];            /* if name, e.g. "en0" */
-       struct  sockaddr_in ifra_addr;
-       struct  sockaddr_in ifra_broadaddr;
-#define ifra_dstaddr ifra_broadaddr
-       struct  sockaddr_in ifra_mask;
-#ifdef __APPLE__
-        u_long              dlt;
-#endif
+       char                    ifra_name[IFNAMSIZ];    /* if name, e.g. "en0" */
+       struct sockaddr_in      ifra_addr;
+       struct sockaddr_in      ifra_broadaddr;
+#define ifra_dstaddr           ifra_broadaddr
+       struct sockaddr_in      ifra_mask;
+       u_int32_t               ifra_unused;    /* not used: used to be 'dlt' */
 };
 
 /*
@@ -112,21 +111,29 @@ struct    in_aliasreq {
  */
 struct kev_in_data {
        struct net_event_data   link_data;
-       struct in_addr  ia_addr;
-       u_long  ia_net;                 /* network number of interface */
-       u_long  ia_netmask;             /* mask of net part */
-       u_long  ia_subnet;              /* subnet number, including net */
-       u_long  ia_subnetmask;          /* mask of subnet part */
-       struct  in_addr ia_netbroadcast; /* to recognize net broadcasts */
-       struct  in_addr ia_dstaddr;
+       struct in_addr          ia_addr;
+       u_int32_t               ia_net;         /* network number of interface */
+       u_int32_t               ia_netmask;     /* mask of net part */
+       u_int32_t               ia_subnet;      /* subnet number, including net */
+       u_int32_t               ia_subnetmask;  /* mask of subnet part */
+       struct in_addr          ia_netbroadcast;/* to recognize net broadcasts */
+       struct in_addr          ia_dstaddr;
 };
 
 struct kev_in_collision {
-       struct  net_event_data  link_data;      /* link colliding arp was received on */
-       struct  in_addr ia_ipaddr;      /* IP address we and another node are using */
-       u_char  hw_len; /* length of hardware address */
-       u_char  hw_addr[0];     /* variable length hardware address */
+       struct net_event_data   link_data;      /* link colliding arp was received on */
+       struct in_addr          ia_ipaddr;      /* IP address we and another node are using */
+       u_char                  hw_len;         /* length of hardware address */
+       u_char                  hw_addr[0];     /* variable length hardware address */
+};
+
+#ifdef __APPLE_API_PRIVATE
+struct kev_in_portinuse {
+       u_int16_t               port;           /* conflicting port number in host order */
+       u_int32_t               req_pid;        /* PID port requestor */
+       u_int32_t               reserved[2];    
 };
+#endif
 
 
 /*
@@ -143,6 +150,10 @@ struct kev_in_collision {
 #define KEV_INET_SIFNETMASK   6
 #define KEV_INET_ARPCOLLISION 7        /* use kev_in_collision */
 
+#ifdef __APPLE_API_PRIVATE
+#define KEV_INET_PORTINUSE    8        /* use ken_in_portinuse */
+#endif
+
 #ifdef KERNEL_PRIVATE
 /*
  * Given a pointer to an in_ifaddr (ifaddr),
@@ -160,6 +171,9 @@ extern      struct  in_addr zeroin_addr;
 extern u_char  inetctlerrmap[];
 extern lck_mtx_t *rt_mtx;
 
+extern int apple_hwcksum_tx;
+extern int apple_hwcksum_rx;
+
 /*
  * Macro for finding the interface (ifnet structure) corresponding to one
  * of our IP addresses.
@@ -258,7 +272,7 @@ do { \
                    (addr).s_addr) \
                        break; \
        } \
-       (inm) = ifma ? ifma->ifma_protospec : 0; \
+       (inm) = ifma ? ifma->ifma_protospec : NULL; \
 } while(0)
 
 /*
@@ -290,6 +304,7 @@ void        in_delmulti(struct in_multi **);
 int    in_control(struct socket *, u_long, caddr_t, struct ifnet *,
                        struct proc *);
 void   in_rtqdrain(void);
+extern struct radix_node *in_validate(struct radix_node *);
 void   ip_input(struct mbuf *);
 int    in_ifadown(struct ifaddr *ifa, int);
 void   in_ifscrub(struct ifnet *, struct in_ifaddr *, int);