Lines Matching refs:ifa

37 	struct ifaddrs ifa;
119 struct ifaddrmsg *ifa = NLMSG_DATA(h);
130 for (ifs0 = ctx->hash[ifa->ifa_index % IFADDRS_HASH_SIZE]; ifs0; ifs0 = ifs0->hash_next)
131 if (ifs0->index == ifa->ifa_index)
141 ifs->ifa.ifa_flags = ifi->ifi_flags;
148 ifs->ifa.ifa_name = ifs->name;
152 copy_lladdr(&ifs->ifa.ifa_addr, &ifs->addr, RTA_DATA(rta), RTA_DATALEN(rta), ifi->ifi_index, ifi->ifi_type);
155 copy_lladdr(&ifs->ifa.ifa_broadaddr, &ifs->ifu, RTA_DATA(rta), RTA_DATALEN(rta), ifi->ifi_index, ifi->ifi_type);
158 ifs->ifa.ifa_data = (void*)(ifs + 1);
159 memcpy(ifs->ifa.ifa_data, RTA_DATA(rta), RTA_DATALEN(rta));
163 if (ifs->ifa.ifa_name) {
169 ifs->ifa.ifa_name = ifs0->ifa.ifa_name;
170 ifs->ifa.ifa_flags = ifs0->ifa.ifa_flags;
171 for (rta = NLMSG_RTA(h, sizeof(*ifa)); NLMSG_RTAOK(rta, h); rta = RTA_NEXT(rta)) {
176 if (ifs->ifa.ifa_addr)
177 copy_addr(&ifs->ifa.ifa_dstaddr, ifa->ifa_family, &ifs->ifu, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
179 copy_addr(&ifs->ifa.ifa_addr, ifa->ifa_family, &ifs->addr, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
182 copy_addr(&ifs->ifa.ifa_broadaddr, ifa->ifa_family, &ifs->ifu, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
187 if (ifs->ifa.ifa_addr) {
189 ifs->ifa.ifa_dstaddr = &ifs->ifu.sa;
192 copy_addr(&ifs->ifa.ifa_addr, ifa->ifa_family, &ifs->addr, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
197 ifs->ifa.ifa_name = ifs->name;
202 if (ifs->ifa.ifa_addr)
203 gen_netmask(&ifs->ifa.ifa_netmask, ifa->ifa_family, &ifs->netmask, ifa->ifa_prefixlen);
206 if (ifs->ifa.ifa_name) {
207 if (!ctx->first) ctx->first = &ifs->ifa;
208 if (ctx->last) ctx->last->ifa_next = &ifs->ifa;
209 ctx->last = &ifs->ifa;
219 struct ifaddrs *ifa = NULL;
220 ifa = malloc(sizeof(struct ifaddrs));
221 if (!ifa)
223 ifa->ifa_name = malloc(sizeof(char) * (IF_NAMESIZE + 1));
224 ifa->ifa_addr = malloc(sizeof(struct sockaddr));
225 ifa->ifa_netmask = malloc(sizeof(struct sockaddr));
226 ifa->ifa_next = NULL;
227 if (!ifa->ifa_name || !ifa->ifa_addr || !ifa->ifa_netmask) {
228 free(ifa->ifa_name);
229 free(ifa->ifa_addr);
230 free(ifa->ifa_netmask);
231 free(ifa);
234 return ifa;
265 struct ifaddrs *ifa = ifstart;
268 memcpy(ifa->ifa_name, ifr[i].ifr_name, IF_NAMESIZE);
269 ifa->ifa_name[IF_NAMESIZE] = '\0';
270 memcpy(ifa->ifa_addr, &ifr[i].ifr_addr, sizeof(struct sockaddr));
273 memcpy(ifa->ifa_netmask, &ifr[i].ifr_netmask, sizeof(struct sockaddr));
277 ifa->ifa_flags = ifr[i].ifr_flags;
280 ifa->ifa_next = ifaddrs_init();
281 if (!ifa->ifa_next) {
285 ifa = ifa->ifa_next;