Lines Matching defs:ifs

112 	struct ifaddrs_storage *ifs, *ifs0;
134 ifs = calloc(1, sizeof(struct ifaddrs_storage) + stats_len);
135 if (ifs == 0) return -1;
138 ifs->index = ifi->ifi_index;
139 ifs->ifa.ifa_flags = ifi->ifi_flags;
144 if (RTA_DATALEN(rta) < sizeof(ifs->name)) {
145 memcpy(ifs->name, RTA_DATA(rta), RTA_DATALEN(rta));
146 ifs->ifa.ifa_name = ifs->name;
150 copy_lladdr(&ifs->ifa.ifa_addr, &ifs->addr, RTA_DATA(rta), RTA_DATALEN(rta), ifi->ifi_index, ifi->ifi_type);
153 copy_lladdr(&ifs->ifa.ifa_broadaddr, &ifs->ifu, RTA_DATA(rta), RTA_DATALEN(rta), ifi->ifi_index, ifi->ifi_type);
156 ifs->ifa.ifa_data = (void*)(ifs+1);
157 memcpy(ifs->ifa.ifa_data, RTA_DATA(rta), RTA_DATALEN(rta));
161 if (ifs->ifa.ifa_name) {
162 unsigned int bucket = ifs->index % IFADDRS_HASH_SIZE;
163 ifs->hash_next = ctx->hash[bucket];
164 ctx->hash[bucket] = ifs;
168 ifs->ifa.ifa_name = ifs0->ifa.ifa_name;
169 ifs->ifa.ifa_flags = ifs0->ifa.ifa_flags;
171 ifs->index = ifa->ifa_index;
177 if (ifs->ifa.ifa_addr)
178 copy_addr(&ifs->ifa.ifa_dstaddr, ifa->ifa_family, &ifs->ifu, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
180 copy_addr(&ifs->ifa.ifa_addr, ifa->ifa_family, &ifs->addr, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
183 copy_addr(&ifs->ifa.ifa_broadaddr, ifa->ifa_family, &ifs->ifu, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
188 if (ifs->ifa.ifa_addr) {
189 ifs->ifu = ifs->addr;
190 ifs->ifa.ifa_dstaddr = &ifs->ifu.sa;
191 memset(&ifs->addr, 0, sizeof(ifs->addr));
193 copy_addr(&ifs->ifa.ifa_addr, ifa->ifa_family, &ifs->addr, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
196 if (RTA_DATALEN(rta) < sizeof(ifs->name)) {
197 memcpy(ifs->name, RTA_DATA(rta), RTA_DATALEN(rta));
198 ifs->ifa.ifa_name = ifs->name;
203 if (ifs->ifa.ifa_addr)
204 gen_netmask(&ifs->ifa.ifa_netmask, ifa->ifa_family, &ifs->netmask, ifa->ifa_prefixlen);
207 if (ifs->ifa.ifa_name || get_link_fail) {
208 if (!ctx->first) ctx->first = &ifs->ifa;
209 if (ctx->last) ctx->last->ifa_next = &ifs->ifa;
210 ctx->last = &ifs->ifa;
212 free(ifs);