in6_addr
BNetworkAddress(const in6_addr& address,
void SetTo(const in6_addr& address, uint16 port = 0);
status_t SetAddress(const in6_addr& address);
struct in6_addr mld_addr; /* multicast address */
struct in6_addr nd_ns_target; /*target address */
struct in6_addr nd_na_target; /* target address */
struct in6_addr nd_rd_target; /* target address */
struct in6_addr nd_rd_dst; /* destination address */
struct in6_addr nd_opt_pi_prefix;
struct in6_addr rpm_prefix;
struct in6_addr rpu_prefix;
struct in6_addr rrr_prefix;
struct in6_addr ip6_src; /* source address */
struct in6_addr ip6_dst; /* destination address */
(!memcmp((a)->s6_addr, (b)->s6_addr, sizeof(struct in6_addr)))
struct in6_addr sin6_addr;
extern const struct in6_addr in6addr_any;
extern const struct in6_addr in6addr_loopback;
struct in6_addr ipv6mr_multiaddr;
struct in6_addr ipi6_addr; /* src/dst IPv6 address */
(!memcmp((a)->s6_addr, in6addr_any.s6_addr, sizeof(struct in6_addr)))
(!memcmp((a)->s6_addr, in6addr_loopback.s6_addr, sizeof(struct in6_addr)))
return sizeof(in6_addr);
memset(&protocol->local_address, 0, sizeof(in6_addr));
static ndp_entry* Lookup(const in6_addr& protocolAddress);
static ndp_entry* Add(const in6_addr& protocolAddress,
typedef in6_addr KeyType;
size_t HashKey(in6_addr key) const
sizeof(in6_addr) / sizeof(uint32), 0);
bool Compare(in6_addr key, ndp_entry* value) const
ipv6_to_sockaddr(sockaddr_in6* target, const in6_addr& address)
memcpy(target->sin6_addr.s6_addr, address.s6_addr, sizeof(in6_addr));
ipv6_to_solicited_multicast(sockaddr_in6* target, const in6_addr& address)
memset(targetIPv6, 0, sizeof(in6_addr));
ndp_entry::Lookup(const in6_addr& address)
ndp_entry::Add(const in6_addr& protocolAddress, sockaddr_dl* hardwareAddress,
ndp_update_entry(const in6_addr& protocolAddress, sockaddr_dl* hardwareAddress,
in6_addr local_address;
in6_addr inetAddress;
memset(&inetAddress, 0, sizeof(in6_addr));
sizeof(in6_addr));
memcpy(&mreq.ipv6mr_multiaddr, &multicast.sin6_addr, sizeof(in6_addr));
memset(&protocol->local_address, 0, sizeof(in6_addr));
&((sockaddr_in6*)address->local)->sin6_addr, sizeof(in6_addr));
in6_addr inetAddress;
memset(&inetAddress, 0, sizeof(in6_addr));
sizeof(in6_addr));
memcpy(&mreq.ipv6mr_multiaddr, &multicast.sin6_addr, sizeof(in6_addr));
memcpy(&protocol->local_address, &inetAddress, sizeof(in6_addr));
memset(&protocol->local_address, 0, sizeof(in6_addr));
const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
memcpy(&destination->sin6_addr, &source->sin6_addr, sizeof(in6_addr));
memcpy(&source->sin6_addr, &header.target_address, sizeof(in6_addr));
in6_addr target_address;
ndp_start_resolve(ipv6_datalink_protocol* protocol, const in6_addr& address,
memcpy(&header->target_address, &address, sizeof(in6_addr));
&source->sin6_addr, sizeof(in6_addr));
in6_addr protocol_address;
if (length != sizeof(struct in6_addr))
if (user_memcpy(&address->sin6_addr, value, sizeof(in6_addr))
memcpy(&header->ip6_src, &source.sin6_addr, sizeof(in6_addr));
memcpy(&header->ip6_dst, &destination.sin6_addr, sizeof(in6_addr));
typedef std::pair<const in6_addr*, uint32> KeyType;
sizeof(struct in6_addr));
sizeof(in6_addr) / sizeof(uint32), result);
memcpy(&key.source, &header.Src(), sizeof(in6_addr));
memcpy(&key.destination, &header.Dst(), sizeof(in6_addr));
const in6_addr& Dst() const { return header.ip6_dst; }
const in6_addr& Src() const { return header.ip6_src; }
fill_sockaddr_in6(sockaddr_in6* target, const in6_addr &address)
in6_addr source;
memcpy(target->sin6_addr.s6_addr, address.s6_addr, sizeof(in6_addr));
in6_addr destination;
net_interface* interface, const in6_addr* sourceAddr)
net_interface* interface, const in6_addr* groupAddr,
const in6_addr* sourceAddr)
uint32 interfaceIndex, in6_addr* groupAddr, in6_addr* sourceAddr)
return !memcmp(&i6a->sin6_addr, &i6b->sin6_addr, sizeof(in6_addr));
&& !memcmp(&i6a->sin6_addr, &i6b->sin6_addr, sizeof(in6_addr));
const in6_addr *i6a;
const in6_addr *i6b;
return !memcmp(i6a, i6b, sizeof(in6_addr));
for (uint8 i = 0; i < sizeof(in6_addr); ++i) {
for (uint8 i = 0; i < sizeof(in6_addr); ++i) {
const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
const struct in6_addr in6addr_loopback = IN6ADDR_LOOPBACK_INIT;
for (uint8 i = 0; i < sizeof(in6_addr); ++i) {
in6_addr &i6addr = ((sockaddr_in6 *)address)->sin6_addr;
const in6_addr &i6mask = ((const sockaddr_in6 *)mask)->sin6_addr;
for (uint32 i = 0; i < sizeof(in6_addr); i++)
sizeof(in6_addr));
mask->sin6_addr.s6_addr, sizeof(in6_addr));
memset(defaultMask->sin6_addr.s6_addr, 0xff, sizeof(in6_addr));
sizeof(in6_addr) / sizeof(uint32), 0);
in6_addr &a = ((sockaddr_in6 *)address)->sin6_addr;
for (uint32 i = 0; i < sizeof(in6_addr); i += 2)
memcpy(&address->sin6_addr, &in6addr_loopback, sizeof(in6_addr));
operator==(const in6_addr &a1, const in6_addr &a2)
return !memcmp(&a1, &a2, sizeof(in6_addr));
ip6_sprintf(const in6_addr *srcaddr, char *dst, size_t size)
const char *ip6_sprintf(const in6_addr *addr, char *dst,
ipv6_checksum(const struct in6_addr* source,
const struct in6_addr* destination,
sum += compute_wordsum((uint8*)source, sizeof(in6_addr));
sum += compute_wordsum((uint8*)destination, sizeof(in6_addr));
sizeof(in6_addr) / sizeof(uint32), result);
typedef struct in6_addr AddressType;
static const in6_addr &AddressFromSockAddr(const sockaddr *sockaddr)
static size_t HashAddress(const in6_addr &address)
sizeof(in6_addr) / sizeof(uint32), 0); }
addrsize = sizeof(struct in6_addr);
struct in6_addr *mapped_in6 = NULL;
struct in6_addr a6;
#define IN6LEN sizeof(struct in6_addr)
struct in6_addr *in6;
if (nilen % (sizeof(u_int32_t) + sizeof(struct in6_addr)) == 0)
nilen -= sizeof(struct in6_addr);
cp += sizeof(struct in6_addr);
if (l == sizeof(struct in6_addr) &&
struct in6_addr in6;
sizeof(struct in6_addr)))
struct in6_addr lastaddr;
BNetworkAddress::BNetworkAddress(const in6_addr& address, uint16 port)
BNetworkAddress::SetTo(const in6_addr& inet6Address, uint16 port)
for (uint8 i = 0; i < sizeof(in6_addr); i++, prefixLength -= 8) {
BNetworkAddress::SetAddress(const in6_addr& inet6Address)
sizeof(in6_addr));
for (uint8 i = 0; i < sizeof(in6_addr); i++) {
in6_addr addressRaw;
struct in6_addr in6;
struct in6_addr a;
addrlen = sizeof(struct in6_addr);
{PF_INET6, sizeof(struct in6_addr), sizeof(struct sockaddr_in6),
struct in6_addr mapaddr;
struct in6_addr *a6;
struct in6_addr in6;
struct in6_addr host_addrs[MAXADDRS];
struct in6_addr in6;
(IN6_IS_ADDR_LINKLOCAL((const struct in6_addr *)addr) ||
IN6_IS_ADDR_SITELOCAL((const struct in6_addr *)addr))) {
(IN6_IS_ADDR_V4MAPPED((const struct in6_addr *)addr) ||
IN6_IS_ADDR_V4COMPAT((const struct in6_addr *)addr))) {
struct in6_addr host_addr;
const struct in6_addr *a6;
{PF_INET6, sizeof(struct in6_addr), sizeof(struct sockaddr_in6),
const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
const struct in6_addr in6addr_loopback = IN6ADDR_LOOPBACK_INIT;
const struct in6_addr in6addr_nodelocal_allnodes = IN6ADDR_NODELOCAL_ALLNODES_INIT;
const struct in6_addr in6addr_linklocal_allnodes = IN6ADDR_LINKLOCAL_ALLNODES_INIT;
const struct in6_addr in6addr_linklocal_allrouters = IN6ADDR_LINKLOCAL_ALLROUTERS_INIT;
struct in6_addr in6a;