Lines Matching refs:iface
88 struct iface *
98 struct iface *iface; in iface_Create() local
136 iface = NULL; in iface_Create()
139 while (ptr < end && iface == NULL) { in iface_Create()
145 iface = (struct iface *)malloc(sizeof *iface); in iface_Create()
146 if (iface == NULL) { in iface_Create()
151 iface->name = strdup(name); in iface_Create()
152 iface->descr = NULL; in iface_Create()
153 iface->index = ifm->ifm_index; in iface_Create()
154 iface->flags = ifm->ifm_flags; in iface_Create()
155 iface->mtu = 0; in iface_Create()
156 iface->addrs = 0; in iface_Create()
157 iface->addr = NULL; in iface_Create()
166 if (iface != NULL && ifam->ifam_addrs & RTA_IFA) { in iface_Create()
178 realloc(iface->addr, (iface->addrs + 1) * sizeof iface->addr[0]); in iface_Create()
181 iface->addr = addr; in iface_Create()
183 addr += iface->addrs; in iface_Create()
184 iface->addrs++; in iface_Create()
198 return iface; in iface_Create()
354 iface_Name(struct iface *iface, const char *name) in iface_Name() argument
371 strlcpy(ifr.ifr_name, iface->name, sizeof(ifr.ifr_name)); in iface_Name()
380 free(iface->name); in iface_Name()
381 iface->name = newname; in iface_Name()
390 struct iface *iface; in iface_Descr() local
434 iface = arg->bundle->iface; in iface_Descr()
435 strlcpy(ifr.ifr_name, iface->name, sizeof(ifr.ifr_name)); in iface_Descr()
445 free(iface->descr); in iface_Descr()
446 iface->descr = descr; in iface_Descr()
452 iface_Clear(struct iface *iface, struct ncp *ncp, int family, int how) in iface_Clear() argument
457 if (iface->addrs) { in iface_Clear()
460 for (n = 0; n < iface->addrs; n++) { in iface_Clear()
461 af = ncprange_family(&iface->addr[n].ifa); in iface_Clear()
463 if (!iface->addr[n].system && (how & IFACE_SYSTEM)) in iface_Clear()
489 else if (iface_addr_Zap(iface->name, iface->addr + n, *s)) { in iface_Clear()
490 ncp_IfaceAddrDeleted(ncp, iface->addr + n); in iface_Clear()
491 bcopy(iface->addr + n + 1, iface->addr + n, in iface_Clear()
492 (iface->addrs - n - 1) * sizeof *iface->addr); in iface_Clear()
493 iface->addrs--; in iface_Clear()
509 iface_Add(struct iface *iface, struct ncp *ncp, const struct ncprange *ifa, in iface_Add() argument
524 for (n = 0; n < iface->addrs; n++) { in iface_Add()
525 if (ncprange_contains(&iface->addr[n].ifa, &ncplocal) || in iface_Add()
526 ncpaddr_equal(&iface->addr[n].peer, peer)) { in iface_Add()
533 if (ncprange_equal(&iface->addr[n].ifa, ifa) && in iface_Add()
534 ncpaddr_equal(&iface->addr[n].peer, peer)) { in iface_Add()
536 ncp_IfaceAddrAdded(ncp, iface->addr + n); in iface_Add()
540 removed = iface_addr_Zap(iface->name, iface->addr + n, s); in iface_Add()
542 ncp_IfaceAddrDeleted(ncp, iface->addr + n); in iface_Add()
543 ncprange_copy(&iface->addr[n].ifa, ifa); in iface_Add()
544 ncpaddr_copy(&iface->addr[n].peer, peer); in iface_Add()
545 if (!iface_addr_Add(iface->name, iface->addr + n, s)) { in iface_Add()
547 bcopy(iface->addr + n + 1, iface->addr + n, in iface_Add()
548 (iface->addrs - n - 1) * sizeof *iface->addr); in iface_Add()
549 iface->addrs--; in iface_Add()
556 ncp_IfaceAddrAdded(ncp, iface->addr + n); in iface_Add()
562 (iface->addr, (iface->addrs + 1) * sizeof iface->addr[0]); in iface_Add()
568 iface->addr = addr; in iface_Add()
573 if (!iface_addr_Add(iface->name, &newaddr, s)) { in iface_Add()
581 bcopy(iface->addr, iface->addr + 1, iface->addrs * sizeof *iface->addr); in iface_Add()
583 n = iface->addrs; in iface_Add()
585 iface->addrs++; in iface_Add()
586 memcpy(iface->addr + n, &newaddr, sizeof(*iface->addr)); in iface_Add()
589 ncp_IfaceAddrAdded(ncp, iface->addr + n); in iface_Add()
595 iface_Delete(struct iface *iface, struct ncp *ncp, const struct ncpaddr *del) in iface_Delete() argument
606 for (n = res = 0; n < iface->addrs; n++) { in iface_Delete()
607 ncprange_getaddr(&iface->addr[n].ifa, &found); in iface_Delete()
609 if (iface_addr_Zap(iface->name, iface->addr + n, s)) { in iface_Delete()
610 ncp_IfaceAddrDeleted(ncp, iface->addr + n); in iface_Delete()
611 bcopy(iface->addr + n + 1, iface->addr + n, in iface_Delete()
612 (iface->addrs - n - 1) * sizeof *iface->addr); in iface_Delete()
613 iface->addrs--; in iface_Delete()
688 iface_Free(struct iface *iface) in iface_Free() argument
690 free(iface->name); in iface_Free()
691 free(iface->descr); in iface_Free()
692 free(iface->addr); in iface_Free()
693 free(iface); in iface_Free()
697 iface_Destroy(struct iface *iface) in iface_Destroy() argument
702 if (iface != NULL) { in iface_Destroy()
706 strlcpy(ifr.ifr_name, iface->name, sizeof(ifr.ifr_name)); in iface_Destroy()
709 iface->name, strerror(errno)); in iface_Destroy()
711 iface_Free(iface); in iface_Destroy()
743 struct iface *iface = arg->bundle->iface, *current; in iface_Show() local
751 current = iface_Create(iface->name); in iface_Show()
752 flags = iface->flags = current->flags; in iface_Show()
755 prompt_Printf(arg->prompt, "%s (idx %d) <", iface->name, iface->index); in iface_Show()
758 prompt_Printf(arg->prompt, "%s%s", flags == iface->flags ? "" : ",", in iface_Show()
765 prompt_Printf(arg->prompt, "%s0x%x", flags == iface->flags ? "" : ",", in iface_Show()
769 prompt_Printf(arg->prompt, "> mtu %lu has %d address%s:\n", iface->mtu, in iface_Show()
770 iface->addrs, iface->addrs == 1 ? "" : "es"); in iface_Show()
772 for (f = 0; f < iface->addrs; f++) { in iface_Show()
773 ncprange_getaddr(&iface->addr[f].ifa, &ncpaddr); in iface_Show()
774 switch (ncprange_family(&iface->addr[f].ifa)) { in iface_Show()
777 if (ncpaddr_family(&iface->addr[f].peer) == AF_UNSPEC) in iface_Show()
780 prompt_Printf(arg->prompt, "%s", ncpaddr_ntoa(&iface->addr[f].peer)); in iface_Show()
781 ncprange_getip4mask(&iface->addr[f].ifa, &mask); in iface_Show()
788 if (ncpaddr_family(&iface->addr[f].peer) != AF_UNSPEC) in iface_Show()
790 ncpaddr_ntoa(&iface->addr[f].peer)); in iface_Show()
791 ncprange_getwidth(&iface->addr[f].ifa, &width); in iface_Show()
792 if (ncpaddr_family(&iface->addr[f].peer) == AF_UNSPEC) in iface_Show()
794 if ((scopeid = ncprange_scopeid(&iface->addr[f].ifa)) != -1) in iface_Show()