/*
- * Copyright (c) 2006 Apple Computer, Inc. All Rights Reserved.
+ * Copyright (c) 2000-2008 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
- * @APPLE_LICENSE_OSREFERENCE_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. 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 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.
- *
- * 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, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
+ * 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, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
* limitations under the License.
- *
- * @APPLE_LICENSE_OSREFERENCE_HEADER_END@
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
*/
/*
* Copyright (c) 1985, 1986, 1993
#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' */
};
/*
*/
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
/*
#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),
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.
(addr).s_addr) \
break; \
} \
- (inm) = ifma ? ifma->ifma_protospec : 0; \
+ (inm) = ifma ? ifma->ifma_protospec : NULL; \
} while(0)
/*
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);