Lines Matching refs:ifi

96 	struct ifi_info *ifi, *ifihead, **ifipnext;  in get_ifi_info_linuxv6()  local
126 ifi = (struct ifi_info*)calloc(1, sizeof(struct ifi_info)); in get_ifi_info_linuxv6()
127 if (ifi == NULL) { in get_ifi_info_linuxv6()
131 *ifipnext = ifi; /* prev points to this new one */ in get_ifi_info_linuxv6()
132 ifipnext = &ifi->ifi_next; /* pointer to next one goes here */ in get_ifi_info_linuxv6()
146 ifi->ifi_addr = calloc(1, sizeof(struct sockaddr_in6)); in get_ifi_info_linuxv6()
147 if (ifi->ifi_addr == NULL) { in get_ifi_info_linuxv6()
150 memcpy(ifi->ifi_addr, res0->ai_addr, sizeof(struct sockaddr_in6)); in get_ifi_info_linuxv6()
155 ifi->ifi_netmask = calloc(1, sizeof(struct sockaddr_in6)); in get_ifi_info_linuxv6()
156 if (ifi->ifi_addr == NULL) { in get_ifi_info_linuxv6()
165 memcpy(ifi->ifi_netmask, sin6, sizeof(struct sockaddr_in6)); in get_ifi_info_linuxv6()
170 memcpy(ifi->ifi_name, ifname, IFI_NAME); in get_ifi_info_linuxv6()
173 ifi->ifi_index = index; in get_ifi_info_linuxv6()
176 ifi->ifi_flags = IFF_UP; in get_ifi_info_linuxv6()
229 struct ifi_info *ifi; in select_src_ifi_info_solaris() local
324 ifi = calloc(1, sizeof(struct ifi_info)); in select_src_ifi_info_solaris()
325 if (ifi == NULL) in select_src_ifi_info_solaris()
328 ifi->ifi_flags = best_lifrflags; in select_src_ifi_info_solaris()
329 ifi->ifi_index = if_nametoindex((*best_lifr)->lifr_name); in select_src_ifi_info_solaris()
330 …if (strlcpy(ifi->ifi_name, (*best_lifr)->lifr_name, sizeof(ifi->ifi_name)) >= sizeof(ifi->ifi_name… in select_src_ifi_info_solaris()
331 free(ifi); in select_src_ifi_info_solaris()
334 return(ifi); in select_src_ifi_info_solaris()
345 struct ifi_info *ifi, *ifihead, **ifipnext; in get_ifi_info_solaris() local
414 for (ifi = ifihead; ifi != NULL; ifi = ifi->ifi_next) { in get_ifi_info_solaris()
417 (void) strlcpy(cmpifname, ifi->ifi_name, sizeof(cmpifname)); in get_ifi_info_solaris()
426 if (ifi != NULL) in get_ifi_info_solaris()
433 if ((ifi = select_src_ifi_info_solaris(sockfd, nlifr, in get_ifi_info_solaris()
446 ifi->ifi_addr = malloc(sizeof(struct sockaddr_in6)); in get_ifi_info_solaris()
447 if (ifi->ifi_addr == NULL) in get_ifi_info_solaris()
449 memcpy(ifi->ifi_addr, sinptr6, sizeof(struct sockaddr_in6)); in get_ifi_info_solaris()
451 ifi->ifi_netmask = calloc(1, sizeof(struct sockaddr_in6)); in get_ifi_info_solaris()
452 if (ifi->ifi_netmask == NULL) in get_ifi_info_solaris()
454 sinptr6 = (struct sockaddr_in6 *)(ifi->ifi_netmask); in get_ifi_info_solaris()
463 ifi->ifi_addr = malloc(sizeof(struct sockaddr_in)); in get_ifi_info_solaris()
464 if (ifi->ifi_addr == NULL) in get_ifi_info_solaris()
467 memcpy(ifi->ifi_addr, sinptr, sizeof(struct sockaddr_in)); in get_ifi_info_solaris()
473 free(ifi->ifi_addr); in get_ifi_info_solaris()
474 free(ifi); in get_ifi_info_solaris()
480 ifi->ifi_netmask = malloc(sizeof(struct sockaddr_in)); in get_ifi_info_solaris()
481 if (ifi->ifi_netmask == NULL) in get_ifi_info_solaris()
485 memcpy(ifi->ifi_netmask, sinptr, sizeof(struct sockaddr_in)); in get_ifi_info_solaris()
493 *ifipnext = ifi; /* prev points to this new one */ in get_ifi_info_solaris()
494 ifipnext = &ifi->ifi_next; /* pointer to next one goes here */ in get_ifi_info_solaris()
513 struct ifi_info *ifi, *ifihead, **ifipnext; in get_ifi_info() local
603 ifi = (struct ifi_info*)calloc(1, sizeof(struct ifi_info)); in get_ifi_info()
604 if (ifi == NULL) { in get_ifi_info()
607 *ifipnext = ifi; /* prev points to this new one */ in get_ifi_info()
608 ifipnext = &ifi->ifi_next; /* pointer to next one goes here */ in get_ifi_info()
610 ifi->ifi_flags = flags; /* IFF_xxx values */ in get_ifi_info()
611 ifi->ifi_myflags = myflags; /* IFI_xxx values */ in get_ifi_info()
613 ifi->ifi_index = if_nametoindex(ifr->ifr_name); in get_ifi_info()
618 ifi->ifi_index = ifrcopy.ifr_index; in get_ifi_info()
621 ifi->ifi_index = index++; /* SIOCGIFINDEX is broken on Solaris 2.5ish, so fake it */ in get_ifi_info()
623 memcpy(ifi->ifi_name, ifr->ifr_name, IFI_NAME); in get_ifi_info()
624 ifi->ifi_name[IFI_NAME-1] = '\0'; in get_ifi_info()
630 if (ifi->ifi_addr == NULL) { in get_ifi_info()
631 ifi->ifi_addr = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in)); in get_ifi_info()
632 if (ifi->ifi_addr == NULL) { in get_ifi_info()
635 memcpy(ifi->ifi_addr, sinptr, sizeof(struct sockaddr_in)); in get_ifi_info()
639 ifi->ifi_netmask = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in)); in get_ifi_info()
640 if (ifi->ifi_netmask == NULL) goto gotError; in get_ifi_info()
647 memcpy(ifi->ifi_netmask, sinptr, sizeof(struct sockaddr_in)); in get_ifi_info()
661 ifi->ifi_brdaddr = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in)); in get_ifi_info()
662 if (ifi->ifi_brdaddr == NULL) { in get_ifi_info()
665 memcpy(ifi->ifi_brdaddr, sinptr, sizeof(struct sockaddr_in)); in get_ifi_info()
680 ifi->ifi_dstaddr = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in)); in get_ifi_info()
681 if (ifi->ifi_dstaddr == NULL) { in get_ifi_info()
684 memcpy(ifi->ifi_dstaddr, sinptr, sizeof(struct sockaddr_in)); in get_ifi_info()
693 if (ifi->ifi_addr == NULL) { in get_ifi_info()
694 ifi->ifi_addr = calloc(1, sizeof(struct sockaddr_in6)); in get_ifi_info()
695 if (ifi->ifi_addr == NULL) { in get_ifi_info()
703 memcpy(ifi->ifi_addr, sinptr6, sizeof(struct sockaddr_in6)); in get_ifi_info()
714 ifi->ifi_netmask = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in6)); in get_ifi_info()
715 if (ifi->ifi_netmask == NULL) goto gotError; in get_ifi_info()
717 memcpy(ifi->ifi_netmask, sinptr6, sizeof(struct sockaddr_in6)); in get_ifi_info()
756 struct ifi_info *ifi, *ifinext; in free_ifi_info() local
758 for (ifi = ifihead; ifi != NULL; ifi = ifinext) { in free_ifi_info()
759 if (ifi->ifi_addr != NULL) in free_ifi_info()
760 free(ifi->ifi_addr); in free_ifi_info()
761 if (ifi->ifi_brdaddr != NULL) in free_ifi_info()
762 free(ifi->ifi_brdaddr); in free_ifi_info()
763 if (ifi->ifi_dstaddr != NULL) in free_ifi_info()
764 free(ifi->ifi_dstaddr); in free_ifi_info()
765 if (ifi->ifi_netmask != NULL) in free_ifi_info()
766 free(ifi->ifi_netmask); in free_ifi_info()
767 ifinext = ifi->ifi_next; /* can't fetch ifi_next after free() */ in free_ifi_info()
768 free(ifi); /* the ifi_info{} itself */ in free_ifi_info()