#ifndef _NETINET_IN_H_
#define _NETINET_IN_H_
#include <sys/cdefs.h>
#ifndef _KERNEL
#include <sys/types.h>
#ifndef htons
#define htons(x) __htobe16(x)
#define htonl(x) __htobe32(x)
#define ntohs(x) __htobe16(x)
#define ntohl(x) __htobe32(x)
#endif
#endif
#ifndef _SA_FAMILY_T_DEFINED_
#define _SA_FAMILY_T_DEFINED_
typedef __sa_family_t sa_family_t;
#endif
#ifndef _IN_TYPES_DEFINED_
#define _IN_TYPES_DEFINED_
typedef __in_addr_t in_addr_t;
typedef __in_port_t in_port_t;
#endif
#define IPPROTO_IP 0
#define IPPROTO_HOPOPTS IPPROTO_IP
#define IPPROTO_ICMP 1
#define IPPROTO_IGMP 2
#define IPPROTO_GGP 3
#define IPPROTO_IPIP 4
#define IPPROTO_IPV4 IPPROTO_IPIP
#define IPPROTO_TCP 6
#define IPPROTO_EGP 8
#define IPPROTO_PUP 12
#define IPPROTO_UDP 17
#define IPPROTO_IDP 22
#define IPPROTO_TP 29
#define IPPROTO_IPV6 41
#define IPPROTO_ROUTING 43
#define IPPROTO_FRAGMENT 44
#define IPPROTO_RSVP 46
#define IPPROTO_GRE 47
#define IPPROTO_ESP 50
#define IPPROTO_AH 51
#define IPPROTO_MOBILE 55
#define IPPROTO_ICMPV6 58
#define IPPROTO_NONE 59
#define IPPROTO_DSTOPTS 60
#define IPPROTO_EON 80
#define IPPROTO_ETHERIP 97
#define IPPROTO_ENCAP 98
#define IPPROTO_PIM 103
#define IPPROTO_IPCOMP 108
#define IPPROTO_CARP 112
#define IPPROTO_SCTP 132
#define IPPROTO_UDPLITE 136
#define IPPROTO_MPLS 137
#define IPPROTO_PFSYNC 240
#define IPPROTO_RAW 255
#define IPPROTO_MAX 256
#define IPPROTO_DIVERT 258
#define IPPORT_RESERVED 1024
#define IPPORT_USERRESERVED 49151
#define IPPORT_HIFIRSTAUTO 49152
#define IPPORT_HILASTAUTO 65535
#ifndef _IN_ADDR_DECLARED
#define _IN_ADDR_DECLARED
struct in_addr {
in_addr_t s_addr;
};
#endif
#define IPPROTO_DONE 257
#ifdef _KERNEL
#define __IPADDR(x) ((u_int32_t) htonl((u_int32_t)(x)))
#else
#define __IPADDR(x) ((u_int32_t)(x))
#endif
#define IN_CLASSA(i) (((u_int32_t)(i) & __IPADDR(0x80000000)) == \
__IPADDR(0x00000000))
#define IN_CLASSA_NET __IPADDR(0xff000000)
#define IN_CLASSA_NSHIFT 24
#define IN_CLASSA_HOST __IPADDR(0x00ffffff)
#define IN_CLASSA_MAX 128
#define IN_CLASSB(i) (((u_int32_t)(i) & __IPADDR(0xc0000000)) == \
__IPADDR(0x80000000))
#define IN_CLASSB_NET __IPADDR(0xffff0000)
#define IN_CLASSB_NSHIFT 16
#define IN_CLASSB_HOST __IPADDR(0x0000ffff)
#define IN_CLASSB_MAX 65536
#define IN_CLASSC(i) (((u_int32_t)(i) & __IPADDR(0xe0000000)) == \
__IPADDR(0xc0000000))
#define IN_CLASSC_NET __IPADDR(0xffffff00)
#define IN_CLASSC_NSHIFT 8
#define IN_CLASSC_HOST __IPADDR(0x000000ff)
#define IN_CLASSD(i) (((u_int32_t)(i) & __IPADDR(0xf0000000)) == \
__IPADDR(0xe0000000))
#define IN_CLASSD_NET __IPADDR(0xf0000000)
#define IN_CLASSD_NSHIFT 28
#define IN_CLASSD_HOST __IPADDR(0x0fffffff)
#define IN_MULTICAST(i) IN_CLASSD(i)
#define IN_RFC3021_NET __IPADDR(0xfffffffe)
#define IN_RFC3021_NSHIFT 31
#define IN_RFC3021_HOST __IPADDR(0x00000001)
#define IN_RFC3021_SUBNET(n) (((u_int32_t)(n) & IN_RFC3021_NET) == \
IN_RFC3021_NET)
#define IN_EXPERIMENTAL(i) (((u_int32_t)(i) & __IPADDR(0xf0000000)) == \
__IPADDR(0xf0000000))
#define IN_BADCLASS(i) (((u_int32_t)(i) & __IPADDR(0xf0000000)) == \
__IPADDR(0xf0000000))
#define IN_LOCAL_GROUP(i) (((u_int32_t)(i) & __IPADDR(0xffffff00)) == \
__IPADDR(0xe0000000))
#ifdef _KERNEL
#define IN_CLASSFULBROADCAST(i, b) \
((IN_CLASSC(b) && (b | IN_CLASSC_HOST) == i) || \
(IN_CLASSB(b) && (b | IN_CLASSB_HOST) == i) || \
(IN_CLASSA(b) && (b | IN_CLASSA_HOST) == i))
#endif
#define INADDR_ANY __IPADDR(0x00000000)
#define INADDR_LOOPBACK __IPADDR(0x7f000001)
#define INADDR_BROADCAST __IPADDR(0xffffffff)
#ifndef _KERNEL
#define INADDR_NONE __IPADDR(0xffffffff)
#endif
#define INADDR_UNSPEC_GROUP __IPADDR(0xe0000000)
#define INADDR_ALLHOSTS_GROUP __IPADDR(0xe0000001)
#define INADDR_ALLROUTERS_GROUP __IPADDR(0xe0000002)
#define INADDR_CARP_GROUP __IPADDR(0xe0000012)
#define INADDR_PFSYNC_GROUP __IPADDR(0xe00000f0)
#define INADDR_MAX_LOCAL_GROUP __IPADDR(0xe00000ff)
#define IN_LOOPBACKNET 127
struct sockaddr_in {
u_int8_t sin_len;
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
int8_t sin_zero[8];
};
struct ip_opts {
struct in_addr ip_dst;
#if defined(__cplusplus)
int8_t Ip_opts[40];
#else
int8_t ip_opts[40];
#endif
};
#define IP_OPTIONS 1
#define IP_HDRINCL 2
#define IP_TOS 3
#define IP_TTL 4
#define IP_RECVOPTS 5
#define IP_RECVRETOPTS 6
#define IP_RECVDSTADDR 7
#define IP_RETOPTS 8
#define IP_MULTICAST_IF 9
#define IP_MULTICAST_TTL 10
#define IP_MULTICAST_LOOP 11
#define IP_ADD_MEMBERSHIP 12
#define IP_DROP_MEMBERSHIP 13
#define IP_PORTRANGE 19
#define IP_AUTH_LEVEL 20
#define IP_ESP_TRANS_LEVEL 21
#define IP_ESP_NETWORK_LEVEL 22
#define IP_IPSEC_LOCAL_ID 23
#define IP_IPSEC_REMOTE_ID 24
#define IP_IPSEC_LOCAL_CRED 25
#define IP_IPSEC_REMOTE_CRED 26
#define IP_IPSEC_LOCAL_AUTH 27
#define IP_IPSEC_REMOTE_AUTH 28
#define IP_IPCOMP_LEVEL 29
#define IP_RECVIF 30
#define IP_RECVTTL 31
#define IP_MINTTL 32
#define IP_RECVDSTPORT 33
#define IP_PIPEX 34
#define IP_RECVRTABLE 35
#define IP_IPSECFLOWINFO 36
#define IP_IPDEFTTL 37
#define IP_SENDSRCADDR IP_RECVDSTADDR
#define IP_RTABLE 0x1021
#if __BSD_VISIBLE
#define IPSEC_LEVEL_BYPASS 0x00
#define IPSEC_LEVEL_NONE 0x00
#define IPSEC_LEVEL_AVAIL 0x01
#define IPSEC_LEVEL_USE 0x02
#define IPSEC_LEVEL_REQUIRE 0x03
#define IPSEC_LEVEL_UNIQUE 0x04
#define IPSEC_LEVEL_DEFAULT IPSEC_LEVEL_AVAIL
#define IPSEC_AUTH_LEVEL_DEFAULT IPSEC_LEVEL_DEFAULT
#define IPSEC_ESP_TRANS_LEVEL_DEFAULT IPSEC_LEVEL_DEFAULT
#define IPSEC_ESP_NETWORK_LEVEL_DEFAULT IPSEC_LEVEL_DEFAULT
#define IPSEC_IPCOMP_LEVEL_DEFAULT IPSEC_LEVEL_DEFAULT
#endif
#define IP_DEFAULT_MULTICAST_TTL 1
#define IP_DEFAULT_MULTICAST_LOOP 1
#define IP_MIN_MEMBERSHIPS 15
#define IP_MAX_MEMBERSHIPS 4095
struct ip_mreq {
struct in_addr imr_multiaddr;
struct in_addr imr_interface;
};
struct ip_mreqn {
struct in_addr imr_multiaddr;
struct in_addr imr_address;
int imr_ifindex;
};
#define IP_PORTRANGE_DEFAULT 0
#define IP_PORTRANGE_HIGH 1
#define IP_PORTRANGE_LOW 2
#ifndef INET_ADDRSTRLEN
#define INET_ADDRSTRLEN 16
#endif
#if __BSD_VISIBLE
#define IPPROTO_MAXID (IPPROTO_DIVERT + 1)
#define CTL_IPPROTO_NAMES { \
{ "ip", CTLTYPE_NODE }, \
{ "icmp", CTLTYPE_NODE }, \
{ "igmp", CTLTYPE_NODE }, \
{ "ggp", CTLTYPE_NODE }, \
{ "ipip", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ "tcp", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ "egp", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "pup", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "udp", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "gre", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "esp", CTLTYPE_NODE }, \
{ "ah", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "etherip", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "ipcomp", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "carp", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "pfsync", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "divert", CTLTYPE_NODE }, \
}
#define IPCTL_FORWARDING 1
#define IPCTL_SENDREDIRECTS 2
#define IPCTL_DEFTTL 3
#define IPCTL_SOURCEROUTE 5
#define IPCTL_DIRECTEDBCAST 6
#define IPCTL_IPPORT_FIRSTAUTO 7
#define IPCTL_IPPORT_LASTAUTO 8
#define IPCTL_IPPORT_HIFIRSTAUTO 9
#define IPCTL_IPPORT_HILASTAUTO 10
#define IPCTL_IPPORT_MAXQUEUE 11
#define IPCTL_ENCDEBUG 12
#define IPCTL_IPSEC_STATS 13
#define IPCTL_IPSEC_EXPIRE_ACQUIRE 14
#define IPCTL_IPSEC_EMBRYONIC_SA_TIMEOUT 15
#define IPCTL_IPSEC_REQUIRE_PFS 16
#define IPCTL_IPSEC_SOFT_ALLOCATIONS 17
#define IPCTL_IPSEC_ALLOCATIONS 18
#define IPCTL_IPSEC_SOFT_BYTES 19
#define IPCTL_IPSEC_BYTES 20
#define IPCTL_IPSEC_TIMEOUT 21
#define IPCTL_IPSEC_SOFT_TIMEOUT 22
#define IPCTL_IPSEC_SOFT_FIRSTUSE 23
#define IPCTL_IPSEC_FIRSTUSE 24
#define IPCTL_IPSEC_ENC_ALGORITHM 25
#define IPCTL_IPSEC_AUTH_ALGORITHM 26
#define IPCTL_MTUDISC 27
#define IPCTL_MTUDISCTIMEOUT 28
#define IPCTL_IPSEC_IPCOMP_ALGORITHM 29
#define IPCTL_IFQUEUE 30
#define IPCTL_MFORWARDING 31
#define IPCTL_MULTIPATH 32
#define IPCTL_STATS 33
#define IPCTL_MRTPROTO 34
#define IPCTL_MRTSTATS 35
#define IPCTL_ARPQUEUED 36
#define IPCTL_MRTMFC 37
#define IPCTL_MRTVIF 38
#define IPCTL_ARPTIMEOUT 39
#define IPCTL_ARPDOWN 40
#define IPCTL_ARPQUEUE 41
#define IPCTL_MAXID 42
#define IPCTL_NAMES { \
{ 0, 0 }, \
{ "forwarding", CTLTYPE_INT }, \
{ "redirect", CTLTYPE_INT }, \
{ "ttl", CTLTYPE_INT }, \
{ 0, 0 }, \
{ "sourceroute", CTLTYPE_INT }, \
{ "directed-broadcast", CTLTYPE_INT }, \
{ "portfirst", CTLTYPE_INT }, \
{ "portlast", CTLTYPE_INT }, \
{ "porthifirst", CTLTYPE_INT }, \
{ "porthilast", CTLTYPE_INT }, \
{ "maxqueue", CTLTYPE_INT }, \
{ "encdebug", CTLTYPE_INT }, \
{ 0, 0 }, \
{ "ipsec-expire-acquire", CTLTYPE_INT }, \
{ "ipsec-invalid-life", CTLTYPE_INT }, \
{ "ipsec-pfs", CTLTYPE_INT }, \
{ "ipsec-soft-allocs", CTLTYPE_INT }, \
{ "ipsec-allocs", CTLTYPE_INT }, \
{ "ipsec-soft-bytes", CTLTYPE_INT }, \
{ "ipsec-bytes", CTLTYPE_INT }, \
{ "ipsec-timeout", CTLTYPE_INT }, \
{ "ipsec-soft-timeout", CTLTYPE_INT }, \
{ "ipsec-soft-firstuse", CTLTYPE_INT }, \
{ "ipsec-firstuse", CTLTYPE_INT }, \
{ "ipsec-enc-alg", CTLTYPE_STRING }, \
{ "ipsec-auth-alg", CTLTYPE_STRING }, \
{ "mtudisc", CTLTYPE_INT }, \
{ "mtudisctimeout", CTLTYPE_INT }, \
{ "ipsec-comp-alg", CTLTYPE_STRING }, \
{ "ifq", CTLTYPE_NODE }, \
{ "mforwarding", CTLTYPE_INT }, \
{ "multipath", CTLTYPE_INT }, \
{ "stats", CTLTYPE_STRUCT }, \
{ "mrtproto", CTLTYPE_INT }, \
{ "mrtstats", CTLTYPE_STRUCT }, \
{ "arpqueued", CTLTYPE_INT }, \
{ "mrtmfc", CTLTYPE_STRUCT }, \
{ "mrtvif", CTLTYPE_STRUCT }, \
{ "arptimeout", CTLTYPE_INT }, \
{ "arpdown", CTLTYPE_INT }, \
{ "arpq", CTLTYPE_NODE }, \
}
#endif
#define __KAME_NETINET_IN_H_INCLUDED_
#include <netinet6/in6.h>
#undef __KAME_NETINET_IN_H_INCLUDED_
#ifndef _KERNEL
#if __BSD_VISIBLE
__BEGIN_DECLS
int bindresvport(int, struct sockaddr_in *);
struct sockaddr;
int bindresvport_sa(int, struct sockaddr *);
__END_DECLS
#endif
#endif
#ifdef _KERNEL
extern const u_char inetctlerrmap[];
extern const struct in_addr zeroin_addr;
struct mbuf;
struct sockaddr;
struct sockaddr_in;
struct ifaddr;
struct in_ifaddr;
struct route;
struct netstack;
void ipv4_input(struct ifnet *, struct mbuf *, struct netstack *);
struct mbuf *
ipv4_check(struct ifnet *, struct mbuf *);
int in_broadcast(struct in_addr, u_int);
int in_canforward(struct in_addr);
int in_cksum(struct mbuf *, int);
int in4_cksum(struct mbuf *, u_int8_t, int, int);
void in_hdr_cksum_out(struct mbuf *, struct ifnet *);
void in_proto_cksum_out(struct mbuf *, struct ifnet *);
int in_ifcap_cksum(struct mbuf *, struct ifnet *, int);
void in_ifdetach(struct ifnet *);
int in_mask2len(struct in_addr *);
void in_len2mask(struct in_addr *, int);
int in_nam2sin(const struct mbuf *, struct sockaddr_in **);
int in_sa2sin(struct sockaddr *, struct sockaddr_in **);
char *inet_ntoa(struct in_addr);
int inet_nat64(int, const void *, void *, const void *, u_int8_t);
int inet_nat46(int, const void *, void *, const void *, u_int8_t);
const char *inet_ntop(int, const void *, char *, socklen_t);
const char *sockaddr_ntop(struct sockaddr *, char *, size_t);
#define in_hosteq(s,t) ((s).s_addr == (t).s_addr)
#define in_nullhost(x) ((x).s_addr == INADDR_ANY)
static inline struct sockaddr_in *
satosin(struct sockaddr *sa)
{
return ((struct sockaddr_in *)(sa));
}
static inline const struct sockaddr_in *
satosin_const(const struct sockaddr *sa)
{
return ((const struct sockaddr_in *)(sa));
}
static inline struct sockaddr *
sintosa(struct sockaddr_in *sin)
{
return ((struct sockaddr *)(sin));
}
static inline struct in_ifaddr *
ifatoia(struct ifaddr *ifa)
{
return ((struct in_ifaddr *)(ifa));
}
#endif
#endif