Lines Matching refs:in6

96 #define EUI64_TO_IFID(in6)	do {(in6)->s6_addr[8] ^= EUI64_UBIT; } while (0)
97 #define EUI64_GROUP(in6) ((in6)->s6_addr[8] & EUI64_GBIT)
98 #define EUI64_INDIVIDUAL(in6) (!EUI64_GROUP(in6))
99 #define EUI64_LOCAL(in6) ((in6)->s6_addr[8] & EUI64_UBIT)
100 #define EUI64_UNIVERSAL(in6) (!EUI64_LOCAL(in6))
102 #define IFID_LOCAL(in6) (!EUI64_LOCAL(in6))
103 #define IFID_UNIVERSAL(in6) (!EUI64_UNIVERSAL(in6))
112 * in6 - upper 64bits are preserved
115 get_rand_ifid(struct ifnet *ifp, struct in6_addr *in6)
141 bcopy(digest, &in6->s6_addr[8], 8);
144 in6->s6_addr[8] &= ~EUI64_GBIT; /* g bit to "individual" */
145 in6->s6_addr[8] |= EUI64_UBIT; /* u bit to "local" */
148 EUI64_TO_IFID(in6);
236 * in6 - upper 64bits are preserved
239 in6_get_hw_ifid(struct ifnet *ifp, struct in6_addr *in6)
307 bcopy(addr, &in6->s6_addr[8], 8);
309 in6->s6_addr[8] = addr[0];
310 in6->s6_addr[9] = addr[1];
311 in6->s6_addr[10] = addr[2];
312 in6->s6_addr[11] = 0xff;
313 in6->s6_addr[12] = 0xfe;
314 in6->s6_addr[13] = addr[3];
315 in6->s6_addr[14] = addr[4];
316 in6->s6_addr[15] = addr[5];
330 bzero(&in6->s6_addr[8], 8);
331 in6->s6_addr[15] = addr[0];
336 in6->s6_addr[8] &= ~EUI64_GBIT; /* g bit to "individual" */
337 in6->s6_addr[8] |= EUI64_UBIT; /* u bit to "local" */
356 bcopy(addr + 12, &in6->s6_addr[8], 8);
365 if (EUI64_GROUP(in6)) {
371 EUI64_TO_IFID(in6);
377 if ((in6->s6_addr[8] & ~(EUI64_GBIT | EUI64_UBIT)) == 0x00 &&
378 bcmp(&in6->s6_addr[9], allzero, 7) == 0) {
396 struct in6_addr *in6)
401 if (in6_get_hw_ifid(ifp0, in6) == 0) {
408 if (altifp && in6_get_hw_ifid(altifp, in6) == 0) {
419 if (in6_get_hw_ifid(ifp, in6) != 0)
426 if (IFID_UNIVERSAL(in6)) {
437 if (get_rand_ifid(ifp, in6) == 0) {
449 if_name(ifp0), in6->s6_addr[8], in6->s6_addr[9], in6->s6_addr[10],
450 in6->s6_addr[11], in6->s6_addr[12], in6->s6_addr[13],
451 in6->s6_addr[14], in6->s6_addr[15]));
611 struct in6_addr *in6, int oldmcprefix)
663 bzero(in6, sizeof(*in6));
664 in6->s6_addr16[0] = IPV6_ADDR_INT16_MLL;
665 in6->s6_addr8[11] = 2;
667 in6->s6_addr8[12] = 0xff;
669 bcopy(digest, &in6->s6_addr8[13], 3);
672 bcopy(digest, &in6->s6_addr32[3], sizeof(in6->s6_addr32[3]));
674 if (in6_setscope(in6, ifp, NULL))
682 struct in6_addr *in6)
685 return (in6_nigroup0(ifp, name, namelen, in6, 0));
690 struct in6_addr *in6)
693 return (in6_nigroup0(ifp, name, namelen, in6, 1));