Lines Matching refs:ia
411 assign_ra_entry(struct rr_prefix *rpp, int iilen, struct in6_ifaddr *ia)
421 (caddr_t)IA6_IN6(ia),
422 sizeof(*IA6_IN6(ia)) << 3, rpp->rp_plen, iilen);
423 /* link to ia, and put into list */
424 rap->ra_addr = ia;
427 ia->ia6_ifpr = rp2ifpr(rpp);
441 in6_prefix_add_llifid(__unused int iilen, struct in6_ifaddr *ia)
452 (caddr_t)IA6_IN6(ia), sizeof(*IA6_IN6(ia)) << 3,
463 if (rpp->rp_ifp != ia->ia_ifp)
478 in6_prefix_add_ifid(int iilen, struct in6_ifaddr *ia)
480 int plen = (sizeof(*IA6_IN6(ia)) << 3) - iilen;
485 if (IN6_IS_ADDR_LINKLOCAL(IA6_IN6(ia)))
486 return(in6_prefix_add_llifid(iilen, ia));
487 ifpr = in6_prefixwithifp(ia->ia_ifp, plen, IA6_IN6(ia));
493 /* allocate a prefix for ia, with default properties */
498 rp.rp_ifp = ia->ia_ifp;
503 (char *)&ia->ia_addr.sin6_addr,
504 sizeof(ia->ia_addr.sin6_addr) << 3,
532 ifpr = in6_prefixwithifp(ia->ia_ifp, pplen, IA6_IN6(ia));
536 rap = search_ifidwithprefix(ifpr2rp(ifpr), IA6_IN6(ia));
539 rap->ra_addr = ia;
541 } else if (rap->ra_addr != ia) {
544 " already has another ia %p(%s) on its ifid list\n",
545 ip6_sprintf(IA6_IN6(ia)), plen,
550 ia->ia6_ifpr = ifpr;
553 error = assign_ra_entry(ifpr2rp(ifpr), iilen, ia);
555 ia->ia6_ifpr = ifpr;
560 in6_prefix_remove_ifid(__unused int iilen, struct in6_ifaddr *ia)
564 if (ia->ia6_ifpr == NULL)
566 rap = search_ifidwithprefix(ifpr2rp(ia->ia6_ifpr), IA6_IN6(ia));
576 if (LIST_EMPTY(&ifpr2rp(ia->ia6_ifpr)->rp_addrhead))
577 rp_remove(ifpr2rp(ia->ia6_ifpr));