Lines Matching refs:ifac

99 	TAILQ_HEAD(, ifac) ifc_ifac_head;	/* list of AF_INET6 addrs */
105 struct ifac { /* Adddress associated to an interface */
106 TAILQ_ENTRY(ifac) ifac_next;
250 struct ifac *ifa_match(const struct ifc *, const struct in6_addr *, int);
1585 struct ifac *ifac;
1599 if ((ifac = ifa_match(ifcp, &sin6->sin6_addr, plen)) != NULL) {
1608 if ((ifac = MALLOC(struct ifac)) == NULL) {
1609 fatal("malloc: struct ifac");
1612 memset(ifac, 0, sizeof(*ifac));
1614 ifac->ifac_ifc = ifcp;
1615 ifac->ifac_addr = sin6->sin6_addr;
1616 ifac->ifac_plen = plen;
1617 ifac->ifac_scope_id = sin6->sin6_scope_id;
1624 ifac->ifac_raddr = ifr.ifr_dstaddr.sin6_addr;
1625 inet_ntop(AF_INET6, (void *)&ifac->ifac_raddr, buf,
1628 inet6_n2p(&ifac->ifac_addr), ifac->ifac_plen, buf);
1631 inet6_n2p(&ifac->ifac_addr), ifac->ifac_plen);
1633 if (ifcp->ifc_index < 0 && IN6_IS_ADDR_LINKLOCAL(&ifac->ifac_addr)) {
1634 ifcp->ifc_mylladdr = ifac->ifac_addr;
1635 ifcp->ifc_index = ifac->ifac_scope_id;
1652 TAILQ_INSERT_HEAD(&ifcp->ifc_ifac_head, ifac, ifac_next);
2039 struct ifac *ifac = NULL;
2054 ifac = ifa_match(ifcp, addr, prefix);
2055 if (!ifac) {
2060 if (ifac->ifac_ifc != ifcp) {
2063 ifcp->ifc_name, ifac->ifac_ifc->ifc_name);
2066 TAILQ_REMOVE(&ifcp->ifc_ifac_head, ifac, ifac_next);
2070 ni6.rip6_dest = ifac->ifac_addr;
2071 ni6.rip6_plen = ifac->ifac_plen;
2098 ni6.rip6_dest = ifac->ifac_raddr;
2107 &ifac->ifac_addr)) {
2124 free(ifac);
2136 struct ifac *ifac;
2152 TAILQ_FOREACH(ifac, &ifcp->ifc_ifac_head, ifac_next) {
2153 if (IN6_IS_ADDR_LINKLOCAL(&ifac->ifac_addr)) {
2157 inet6_n2p(&ifac->ifac_addr), ifcp->ifc_name);
2161 if (IN6_IS_ADDR_UNSPECIFIED(&ifac->ifac_addr)) {
2168 if (IN6_IS_ADDR_LOOPBACK(&ifac->ifac_addr)) {
2182 rrt->rrt_info.rip6_dest = ifac->ifac_addr;
2185 rrt->rrt_info.rip6_plen = ifac->ifac_plen;
2188 applyplen(&rrt->rrt_info.rip6_dest, ifac->ifac_plen);
2190 rrt->rrt_gw = ifac->ifac_addr;
2249 struct ifac *ifac;
2262 TAILQ_FOREACH(ifac, &ifcp->ifc_ifac_head, ifac_next) {
2263 addr = ifac->ifac_addr;
2264 dest = ifac->ifac_raddr;
2265 applyplen(&addr, ifac->ifac_plen);
2266 applyplen(&dest, ifac->ifac_plen);
2311 if (!IN6_IS_ADDR_UNSPECIFIED(&ifac->ifac_raddr)) {
2337 rrt->rrt_info.rip6_dest = ifac->ifac_addr;
2338 rrt->rrt_info.rip6_plen = ifac->ifac_plen;
2340 ifac->ifac_plen);
2344 rrt->rrt_info.rip6_dest = ifac->ifac_addr;
2350 rrt->rrt_info.rip6_dest = ifac->ifac_raddr;
2352 rrt->rrt_gw = ifac->ifac_addr;
3040 struct ifac *ifac;
3050 TAILQ_FOREACH(ifac, &ifcp->ifc_ifac_head, ifac_next) {
3052 inet_ntop(AF_INET6, (void *)&ifac->ifac_raddr,
3055 inet6_n2p(&ifac->ifac_addr),
3056 ifac->ifac_plen, buf);
3059 inet6_n2p(&ifac->ifac_addr),
3060 ifac->ifac_plen);
3270 * Returns a pointer to ifac whose address and prefix length matches
3273 struct ifac *
3278 struct ifac *ifac;
3280 TAILQ_FOREACH(ifac, &ifcp->ifc_ifac_head, ifac_next) {
3281 if (IN6_ARE_ADDR_EQUAL(&ifac->ifac_addr, ia) &&
3282 ifac->ifac_plen == plen)
3286 return (ifac);