Lines Matching defs:ifi
89 struct ifi_info *ifi, *ifihead, **ifipnext, *ifipold, **ifiptr;
123 ifi = (struct ifi_info*)calloc(1, sizeof(struct ifi_info));
124 if (ifi == NULL) {
130 *ifipnext = ifi; /* prev points to this new one */
131 ifipnext = &ifi->ifi_next; /* pointer to next one goes here */
145 ifi->ifi_addr = calloc(1, sizeof(struct sockaddr_in6));
146 if (ifi->ifi_addr == NULL) {
149 memcpy(ifi->ifi_addr, res0->ai_addr, sizeof(struct sockaddr_in6));
154 ifi->ifi_netmask = calloc(1, sizeof(struct sockaddr_in6));
155 if (ifi->ifi_netmask == NULL) {
159 ((struct sockaddr_in6 *)ifi->ifi_netmask)->sin6_family=family;
160 ((struct sockaddr_in6 *)ifi->ifi_netmask)->sin6_scope_id=scope;
161 inet_pton(family, ipv6addr, &((struct sockaddr_in6 *)ifi->ifi_netmask)->sin6_addr);
164 memcpy(ifi->ifi_name, ifname, IFI_NAME);
167 ifi->ifi_index = index;
178 free(ifi->ifi_addr);
179 free(ifi->ifi_netmask);
180 free(ifi);
188 ifi->ifi_flags = ifr.ifr_flags;
244 struct ifi_info *ifi;
339 ifi = calloc(1, sizeof(struct ifi_info));
340 if (ifi == NULL)
343 ifi->ifi_flags = best_lifrflags;
344 ifi->ifi_index = if_nametoindex((*best_lifr)->lifr_name);
345 if (strlcpy(ifi->ifi_name, (*best_lifr)->lifr_name, sizeof(ifi->ifi_name)) >= sizeof(ifi->ifi_name)) {
346 free(ifi);
349 return(ifi);
360 struct ifi_info *ifi, *ifihead, **ifipnext;
429 for (ifi = ifihead; ifi != NULL; ifi = ifi->ifi_next) {
432 (void) strlcpy(cmpifname, ifi->ifi_name, sizeof(cmpifname));
441 if (ifi != NULL)
448 if ((ifi = select_src_ifi_info_solaris(sockfd, nlifr,
461 ifi->ifi_addr = malloc(sizeof(struct sockaddr_in6));
462 if (ifi->ifi_addr == NULL)
464 memcpy(ifi->ifi_addr, sinptr6, sizeof(struct sockaddr_in6));
466 ifi->ifi_netmask = calloc(1, sizeof(struct sockaddr_in6));
467 if (ifi->ifi_netmask == NULL)
469 sinptr6 = (struct sockaddr_in6 *)(ifi->ifi_netmask);
478 ifi->ifi_addr = malloc(sizeof(struct sockaddr_in));
479 if (ifi->ifi_addr == NULL)
482 memcpy(ifi->ifi_addr, sinptr, sizeof(struct sockaddr_in));
488 free(ifi->ifi_addr);
489 free(ifi);
495 ifi->ifi_netmask = malloc(sizeof(struct sockaddr_in));
496 if (ifi->ifi_netmask == NULL)
500 memcpy(ifi->ifi_netmask, sinptr, sizeof(struct sockaddr_in));
508 *ifipnext = ifi; /* prev points to this new one */
509 ifipnext = &ifi->ifi_next; /* pointer to next one goes here */
528 struct ifi_info *ifi, *ifihead, **ifipnext, *ifipold, **ifiptr;
618 ifi = (struct ifi_info*)calloc(1, sizeof(struct ifi_info));
619 if (ifi == NULL) {
624 *ifipnext = ifi; /* prev points to this new one */
625 ifipnext = &ifi->ifi_next; /* pointer to next one goes here */
627 ifi->ifi_flags = flags; /* IFF_xxx values */
628 ifi->ifi_myflags = myflags; /* IFI_xxx values */
630 ifi->ifi_index = if_nametoindex(ifr->ifr_name);
635 ifi->ifi_index = ifrcopy.ifr_index;
638 ifi->ifi_index = index++; /* SIOCGIFINDEX is broken on Solaris 2.5ish, so fake it */
640 memcpy(ifi->ifi_name, ifr->ifr_name, IFI_NAME);
641 ifi->ifi_name[IFI_NAME-1] = '\0';
647 if (ifi->ifi_addr == NULL) {
648 ifi->ifi_addr = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in));
649 if (ifi->ifi_addr == NULL) {
652 memcpy(ifi->ifi_addr, sinptr, sizeof(struct sockaddr_in));
662 free(ifi->ifi_addr);
663 free(ifi);
672 ifi->ifi_netmask = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in));
673 if (ifi->ifi_netmask == NULL) goto gotError;
680 memcpy(ifi->ifi_netmask, sinptr, sizeof(struct sockaddr_in));
694 ifi->ifi_brdaddr = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in));
695 if (ifi->ifi_brdaddr == NULL) {
698 memcpy(ifi->ifi_brdaddr, sinptr, sizeof(struct sockaddr_in));
713 ifi->ifi_dstaddr = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in));
714 if (ifi->ifi_dstaddr == NULL) {
717 memcpy(ifi->ifi_dstaddr, sinptr, sizeof(struct sockaddr_in));
726 if (ifi->ifi_addr == NULL) {
727 ifi->ifi_addr = calloc(1, sizeof(struct sockaddr_in6));
728 if (ifi->ifi_addr == NULL) {
736 memcpy(ifi->ifi_addr, sinptr6, sizeof(struct sockaddr_in6));
753 free(ifi->ifi_addr);
754 free(ifi);
762 ifi->ifi_netmask = (struct sockaddr*)calloc(1, sizeof(struct sockaddr_in6));
763 if (ifi->ifi_netmask == NULL) goto gotError;
765 memcpy(ifi->ifi_netmask, sinptr6, sizeof(struct sockaddr_in6));
804 struct ifi_info *ifi, *ifinext;
806 for (ifi = ifihead; ifi != NULL; ifi = ifinext) {
807 if (ifi->ifi_addr != NULL)
808 free(ifi->ifi_addr);
809 if (ifi->ifi_netmask != NULL)
810 free(ifi->ifi_netmask);
811 if (ifi->ifi_brdaddr != NULL)
812 free(ifi->ifi_brdaddr);
813 if (ifi->ifi_dstaddr != NULL)
814 free(ifi->ifi_dstaddr);
815 ifinext = ifi->ifi_next; /* can't fetch ifi_next after free() */
816 free(ifi); /* the ifi_info{} itself */