Lines Matching refs:ifa
38 struct ifaddrs ifa;
114 struct ifaddrmsg *ifa = NLMSG_DATA(h);
126 for (ifs0 = ctx->hash[ifa->ifa_index % IFADDRS_HASH_SIZE]; ifs0; ifs0 = ifs0->hash_next)
127 if (ifs0->index == ifa->ifa_index)
139 ifs->ifa.ifa_flags = ifi->ifi_flags;
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) {
168 ifs->ifa.ifa_name = ifs0->ifa.ifa_name;
169 ifs->ifa.ifa_flags = ifs0->ifa.ifa_flags;
171 ifs->index = ifa->ifa_index;
172 for (rta = NLMSG_RTA(h, sizeof(*ifa)); NLMSG_RTAOK(rta, h); rta = RTA_NEXT(rta)) {
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) {
190 ifs->ifa.ifa_dstaddr = &ifs->ifu.sa;
193 copy_addr(&ifs->ifa.ifa_addr, ifa->ifa_family, &ifs->addr, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
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;
222 struct ifaddrs* next_addr = addr->ifa.ifa_next;
226 addr->ifa.ifa_name = addr->name;
234 prev_addr->ifa.ifa_next = next_addr;