Lines Matching defs:ifi

89     struct ifi_info *ifi, *ifihead, **ifipnext, *ifipold, **ifiptr;
125 ifi = (struct ifi_info*)calloc(1, sizeof(struct ifi_info));
126 if (ifi == NULL) {
132 *ifipnext = ifi; /* prev points to this new one */
133 ifipnext = &ifi->ifi_next; /* pointer to next one goes here */
147 ifi->ifi_addr = calloc(1, sizeof(struct sockaddr_in6));
148 if (ifi->ifi_addr == NULL) {
151 memcpy(ifi->ifi_addr, res0->ai_addr, sizeof(struct sockaddr_in6));
156 ifi->ifi_netmask = calloc(1, sizeof(struct sockaddr_in6));
157 if (ifi->ifi_addr == NULL) {
166 memcpy(ifi->ifi_netmask, sin6, sizeof(struct sockaddr_in6));
171 memcpy(ifi->ifi_name, ifname, IFI_NAME);
174 ifi->ifi_index = index;
185 free(ifi->ifi_addr);
186 free(ifi);
194 ifi->ifi_flags = ifr.ifr_flags;
247 struct ifi_info *ifi;
342 ifi = calloc(1, sizeof(struct ifi_info));
343 if (ifi == NULL)
346 ifi->ifi_flags = best_lifrflags;
347 ifi->ifi_index = if_nametoindex((*best_lifr)->lifr_name);
348 if (strlcpy(ifi->ifi_name, (*best_lifr)->lifr_name, sizeof(ifi->ifi_name)) >= sizeof(ifi->ifi_name)) {
349 free(ifi);
352 return(ifi);
363 struct ifi_info *ifi, *ifihead, **ifipnext;
432 for (ifi = ifihead; ifi != NULL; ifi = ifi->ifi_next) {
435 (void) strlcpy(cmpifname, ifi->ifi_name, sizeof(cmpifname));
444 if (ifi != NULL)
451 if ((ifi = select_src_ifi_info_solaris(sockfd, nlifr,
464 ifi->ifi_addr = malloc(sizeof(struct sockaddr_in6));
465 if (ifi->ifi_addr == NULL)
467 memcpy(ifi->ifi_addr, sinptr6, sizeof(struct sockaddr_in6));
469 ifi->ifi_netmask = calloc(1, sizeof(struct sockaddr_in6));
470 if (ifi->ifi_netmask == NULL)
472 sinptr6 = (struct sockaddr_in6 *)(ifi->ifi_netmask);
481 ifi->ifi_addr = malloc(sizeof(struct sockaddr_in));
482 if (ifi->ifi_addr == NULL)
485 memcpy(ifi->ifi_addr, sinptr, sizeof(struct sockaddr_in));
491 free(ifi->ifi_addr);
492 free(ifi);
498 ifi->ifi_netmask = malloc(sizeof(struct sockaddr_in));
499 if (ifi->ifi_netmask == NULL)
503 memcpy(ifi->ifi_netmask, sinptr, sizeof(struct sockaddr_in));
511 *ifipnext = ifi; /* prev points to this new one */
512 ifipnext = &ifi->ifi_next; /* pointer to next one goes here */
531 struct ifi_info *ifi, *ifihead, **ifipnext, *ifipold, **ifiptr;
621 ifi = (struct ifi_info*)calloc(1, sizeof(struct ifi_info));
622 if (ifi == NULL) {
627 *ifipnext = ifi; /* prev points to this new one */
628 ifipnext = &ifi->ifi_next; /* pointer to next one goes here */
630 ifi->ifi_flags = flags; /* IFF_xxx values */
631 ifi->ifi_myflags = myflags; /* IFI_xxx values */
633 ifi->ifi_index = if_nametoindex(ifr->ifr_name);
638 ifi->ifi_index = ifrcopy.ifr_index;
641 ifi->ifi_index = index++; /* SIOCGIFINDEX is broken on Solaris 2.5ish, so fake it */
643 memcpy(ifi->ifi_name, ifr->ifr_name, IFI_NAME);
644 ifi->ifi_name[IFI_NAME-1] = '\0';
650 if (ifi->ifi_addr == NULL) {
651 ifi->ifi_addr = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in));
652 if (ifi->ifi_addr == NULL) {
655 memcpy(ifi->ifi_addr, sinptr, sizeof(struct sockaddr_in));
665 free(ifi->ifi_addr);
666 free(ifi);
675 ifi->ifi_netmask = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in));
676 if (ifi->ifi_netmask == NULL) goto gotError;
683 memcpy(ifi->ifi_netmask, sinptr, sizeof(struct sockaddr_in));
697 ifi->ifi_brdaddr = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in));
698 if (ifi->ifi_brdaddr == NULL) {
701 memcpy(ifi->ifi_brdaddr, sinptr, sizeof(struct sockaddr_in));
716 ifi->ifi_dstaddr = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in));
717 if (ifi->ifi_dstaddr == NULL) {
720 memcpy(ifi->ifi_dstaddr, sinptr, sizeof(struct sockaddr_in));
729 if (ifi->ifi_addr == NULL) {
730 ifi->ifi_addr = calloc(1, sizeof(struct sockaddr_in6));
731 if (ifi->ifi_addr == NULL) {
739 memcpy(ifi->ifi_addr, sinptr6, sizeof(struct sockaddr_in6));
756 free(ifi->ifi_addr);
757 free(ifi);
765 ifi->ifi_netmask = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in6));
766 if (ifi->ifi_netmask == NULL) goto gotError;
768 memcpy(ifi->ifi_netmask, sinptr6, sizeof(struct sockaddr_in6));
807 struct ifi_info *ifi, *ifinext;
809 for (ifi = ifihead; ifi != NULL; ifi = ifinext) {
810 if (ifi->ifi_addr != NULL)
811 free(ifi->ifi_addr);
812 if (ifi->ifi_netmask != NULL)
813 free(ifi->ifi_netmask);
814 if (ifi->ifi_brdaddr != NULL)
815 free(ifi->ifi_brdaddr);
816 if (ifi->ifi_dstaddr != NULL)
817 free(ifi->ifi_dstaddr);
818 ifinext = ifi->ifi_next; /* can't fetch ifi_next after free() */
819 free(ifi); /* the ifi_info{} itself */