Lines Matching refs:ifi

214 	struct ifi_info *ifi, *ifihead, **ifipnext;
244 ifi = (struct ifi_info*)calloc(1, sizeof(struct ifi_info));
245 if (ifi == NULL) {
249 *ifipnext = ifi; /* prev points to this new one */
250 ifipnext = &ifi->ifi_next; /* pointer to next one goes here */
264 ifi->ifi_addr = calloc(1, sizeof(struct sockaddr_in6));
265 if (ifi->ifi_addr == NULL) {
268 memcpy(ifi->ifi_addr, res0->ai_addr, sizeof(struct sockaddr_in6));
273 ifi->ifi_netmask = calloc(1, sizeof(struct sockaddr_in6));
274 if (ifi->ifi_addr == NULL) {
283 memcpy(ifi->ifi_netmask, sin6, sizeof(struct sockaddr_in6));
288 memcpy(ifi->ifi_name, ifname, IFI_NAME);
291 ifi->ifi_index = index;
294 ifi->ifi_flags = IFF_UP;
347 struct ifi_info *ifi;
455 ifi = calloc(1, sizeof(struct ifi_info));
456 if (ifi == NULL)
459 ifi->ifi_flags = best_lifrflags;
460 ifi->ifi_index = if_nametoindex((*best_lifr)->lifr_name);
461 if (strlcpy(ifi->ifi_name, (*best_lifr)->lifr_name, sizeof(ifi->ifi_name)) >= sizeof(ifi->ifi_name)) {
462 free(ifi);
465 return(ifi);
476 struct ifi_info *ifi, *ifihead, **ifipnext;
545 for (ifi = ifihead; ifi != NULL; ifi = ifi->ifi_next) {
548 (void) strlcpy(cmpifname, ifi->ifi_name, sizeof(cmpifname));
557 if (ifi != NULL)
564 if ((ifi = select_src_ifi_info_solaris(sockfd, nlifr,
577 ifi->ifi_addr = malloc(sizeof(struct sockaddr_in6));
578 if (ifi->ifi_addr == NULL)
580 memcpy(ifi->ifi_addr, sinptr6, sizeof(struct sockaddr_in6));
582 ifi->ifi_netmask = calloc(1, sizeof(struct sockaddr_in6));
583 if (ifi->ifi_netmask == NULL)
585 sinptr6 = (struct sockaddr_in6 *)(ifi->ifi_netmask);
594 ifi->ifi_addr = malloc(sizeof(struct sockaddr_in));
595 if (ifi->ifi_addr == NULL)
598 memcpy(ifi->ifi_addr, sinptr, sizeof(struct sockaddr_in));
604 free(ifi->ifi_addr);
605 free(ifi);
611 ifi->ifi_netmask = malloc(sizeof(struct sockaddr_in));
612 if (ifi->ifi_netmask == NULL)
616 memcpy(ifi->ifi_netmask, sinptr, sizeof(struct sockaddr_in));
624 *ifipnext = ifi; /* prev points to this new one */
625 ifipnext = &ifi->ifi_next; /* pointer to next one goes here */
644 struct ifi_info *ifi, *ifihead, **ifipnext;
734 ifi = (struct ifi_info*)calloc(1, sizeof(struct ifi_info));
735 if (ifi == NULL) {
738 *ifipnext = ifi; /* prev points to this new one */
739 ifipnext = &ifi->ifi_next; /* pointer to next one goes here */
741 ifi->ifi_flags = flags; /* IFF_xxx values */
742 ifi->ifi_myflags = myflags; /* IFI_xxx values */
744 ifi->ifi_index = if_nametoindex(ifr->ifr_name);
749 ifi->ifi_index = ifrcopy.ifr_index;
752 ifi->ifi_index = index++; /* SIOCGIFINDEX is broken on Solaris 2.5ish, so fake it */
754 memcpy(ifi->ifi_name, ifr->ifr_name, IFI_NAME);
755 ifi->ifi_name[IFI_NAME-1] = '\0';
761 if (ifi->ifi_addr == NULL) {
762 ifi->ifi_addr = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in));
763 if (ifi->ifi_addr == NULL) {
766 memcpy(ifi->ifi_addr, sinptr, sizeof(struct sockaddr_in));
770 ifi->ifi_netmask = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in));
771 if (ifi->ifi_netmask == NULL) goto gotError;
778 memcpy(ifi->ifi_netmask, sinptr, sizeof(struct sockaddr_in));
792 ifi->ifi_brdaddr = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in));
793 if (ifi->ifi_brdaddr == NULL) {
796 memcpy(ifi->ifi_brdaddr, sinptr, sizeof(struct sockaddr_in));
811 ifi->ifi_dstaddr = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in));
812 if (ifi->ifi_dstaddr == NULL) {
815 memcpy(ifi->ifi_dstaddr, sinptr, sizeof(struct sockaddr_in));
824 if (ifi->ifi_addr == NULL) {
825 ifi->ifi_addr = calloc(1, sizeof(struct sockaddr_in6));
826 if (ifi->ifi_addr == NULL) {
834 memcpy(ifi->ifi_addr, sinptr6, sizeof(struct sockaddr_in6));
845 ifi->ifi_netmask = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in6));
846 if (ifi->ifi_netmask == NULL) goto gotError;
848 memcpy(ifi->ifi_netmask, sinptr6, sizeof(struct sockaddr_in6));
887 struct ifi_info *ifi, *ifinext;
889 for (ifi = ifihead; ifi != NULL; ifi = ifinext) {
890 if (ifi->ifi_addr != NULL)
891 free(ifi->ifi_addr);
892 if (ifi->ifi_brdaddr != NULL)
893 free(ifi->ifi_brdaddr);
894 if (ifi->ifi_dstaddr != NULL)
895 free(ifi->ifi_dstaddr);
896 if (ifi->ifi_netmask != NULL)
897 free(ifi->ifi_netmask);
898 ifinext = ifi->ifi_next; /* can't fetch ifi_next after free() */
899 free(ifi); /* the ifi_info{} itself */