这篇教程C++ IN6_IS_ADDR_MC_LINKLOCAL函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中IN6_IS_ADDR_MC_LINKLOCAL函数的典型用法代码示例。如果您正苦于以下问题:C++ IN6_IS_ADDR_MC_LINKLOCAL函数的具体用法?C++ IN6_IS_ADDR_MC_LINKLOCAL怎么用?C++ IN6_IS_ADDR_MC_LINKLOCAL使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了IN6_IS_ADDR_MC_LINKLOCAL函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: setScopeFromAddress/** Determines the IPv6 scope of a specified address. * * @param[in] v6Addr - The IPv6 address to be checked. * * @return The ipv6 scope of the address. * * @remarks The @p v6Addr parameter must be pointer to a 16-byte IPv6 * address in binary form. * * @internal */static int setScopeFromAddress(const struct in6_addr * v6Addr){ if (IN6_IS_ADDR_MULTICAST(v6Addr)) { if (IN6_IS_ADDR_MC_GLOBAL(v6Addr)) return SLP_SCOPE_GLOBAL; if (IN6_IS_ADDR_MC_ORGLOCAL(v6Addr)) return SLP_SCOPE_ORG_LOCAL; if (IN6_IS_ADDR_MC_SITELOCAL(v6Addr)) return SLP_SCOPE_SITE_LOCAL; if (IN6_IS_ADDR_MC_NODELOCAL(v6Addr)) return SLP_SCOPE_NODE_LOCAL; if (IN6_IS_ADDR_MC_LINKLOCAL(v6Addr)) return SLP_SCOPE_LINK_LOCAL; } if (IN6_IS_ADDR_SITELOCAL(v6Addr)) return SLP_SCOPE_SITE_LOCAL; if (SLP_IN6_IS_ADDR_LOOPBACK(v6Addr)) return SLP_SCOPE_NODE_LOCAL; if (IN6_IS_ADDR_LINKLOCAL(v6Addr)) return SLP_SCOPE_LINK_LOCAL; return 0;}
开发者ID:Distrotech,项目名称:openslp,代码行数:41,
示例2: ifa_make_sockaddrstatic void ifa_make_sockaddr(sa_family_t family, struct sockaddr *sa, void *p, size_t len, uint32_t scope, uint32_t scopeid){ if (sa == NULL) return; switch(family){ case AF_INET: memcpy(&((struct sockaddr_in*)sa)->sin_addr, (char *)p, len); break; case AF_INET6: memcpy(&((struct sockaddr_in6*)sa)->sin6_addr, (char *)p, len); if (IN6_IS_ADDR_LINKLOCAL(p) || IN6_IS_ADDR_MC_LINKLOCAL(p)){ ((struct sockaddr_in6*)sa)->sin6_scope_id = scopeid; } break; case AF_PACKET: memcpy(((struct sockaddr_ll*)sa)->sll_addr, (char *)p, len); ((struct sockaddr_ll*)sa)->sll_halen = len; break; default: memcpy(sa->sa_data, p, len); /*XXX*/ break; } sa->sa_family = family;#ifdef HAVE_SOCKADDR_SA_LEN sa->sa_len = ifa_sa_len(family, len);#endif}
开发者ID:alexshavelev,项目名称:lldpd,代码行数:31,
示例3: copy_addrstatic void copy_addr(struct sockaddr** r, int af, union sockany* sa, void* addr, size_t addrlen, int ifindex) { uint8_t* dst; int len; switch (af) { case AF_INET: dst = (uint8_t*)&sa->v4.sin_addr; len = 4; break; case AF_INET6: dst = (uint8_t*)&sa->v6.sin6_addr; len = 16; if (IN6_IS_ADDR_LINKLOCAL(addr) || IN6_IS_ADDR_MC_LINKLOCAL(addr)) sa->v6.sin6_scope_id = ifindex; break; default: return; } if (addrlen < len) return; sa->sa.sa_family = af; memcpy(dst, addr, len); *r = &sa->sa;}
开发者ID:freiling,项目名称:mojo,代码行数:29,
示例4: __inet6_scopeid_pton/* Parse SOURCE as a scope ID for ADDRESS. Return 0 on success and -1 on error. */internal_function int__inet6_scopeid_pton (const struct in6_addr *address, const char *scope, uint32_t *result){ if (IN6_IS_ADDR_LINKLOCAL (address) || IN6_IS_ADDR_MC_LINKLOCAL (address)) { uint32_t number = __if_nametoindex (scope); if (number != 0) { *result = number; return 0; } } if (isdigit_l (scope[0], _nl_C_locobj_ptr)) { char *end; unsigned long long number = ____strtoull_l_internal (scope, &end, /*base */ 10, /* group */ 0, _nl_C_locobj_ptr); if (*end == '/0' && number <= UINT32_MAX) { *result = number; return 0; } } __set_errno (EINVAL); return -1;}
开发者ID:siddhesh,项目名称:glibc,代码行数:33,
|