Lines Matching refs:ifp
44 static void addrouteforif(struct interface *ifp);
64 struct interface *ifp; in initifs() local
102 for (ifp = ifnet; ifp != NULL; ifp = ifp->int_next) in initifs()
103 ifp->int_flags |= RIP6_IFF_MARKED; in initifs()
119 ifp = if_ifwithname(lifr.lifr_name); in initifs()
120 if (ifp != NULL) in initifs()
121 ifp->int_flags &= ~RIP6_IFF_MARKED; in initifs()
131 if (ifp != NULL) { in initifs()
132 if (ifp->int_flags & RIP6_IFF_UP) { in initifs()
138 ifp->int_transitions++; in initifs()
141 if_purge(ifp); in initifs()
221 if (ifp != NULL) { in initifs()
229 if (ifp->int_prefix_length == ifs.int_prefix_length && in initifs()
230 ((ifp->int_flags | RIP6_IFF_NORTEXCH) == in initifs()
232 ifp->int_metric == ifs.int_metric && in initifs()
233 ifp->int_ifindex == ifs.int_ifindex) { in initifs()
239 ifp->int_flags |= RIP6_IFF_NORTEXCH; in initifs()
241 ifp->int_flags &= ~RIP6_IFF_NORTEXCH; in initifs()
243 if (!(ifp->int_flags & RIP6_IFF_POINTOPOINT) && in initifs()
244 IN6_ARE_ADDR_EQUAL(&ifp->int_addr, in initifs()
247 if ((ifp->int_flags & RIP6_IFF_POINTOPOINT) && in initifs()
248 IN6_ARE_ADDR_EQUAL(&ifp->int_dstaddr, in initifs()
252 if_purge(ifp); in initifs()
253 if (ifp->int_prefix_length != ifs.int_prefix_length) in initifs()
255 ifp->int_addr = ifs.int_addr; in initifs()
256 ifp->int_dstaddr = ifs.int_dstaddr; in initifs()
257 ifp->int_metric = ifs.int_metric; in initifs()
262 if (!(ifp->int_flags & RIP6_IFF_UP) && in initifs()
264 ifp->int_transitions++; in initifs()
265 ifp->int_flags |= ifs.int_flags; in initifs()
266 ifp->int_prefix_length = ifs.int_prefix_length; in initifs()
272 if (ifp->int_ifindex != ifs.int_ifindex) { in initifs()
273 if (ifp->int_sock != -1) { in initifs()
274 resetup_listen_sock(ifp, in initifs()
277 ifp->int_ifindex = ifs.int_ifindex; in initifs()
280 ifp->int_mtu = ifs.int_mtu; in initifs()
285 ifp = (struct interface *) in initifs()
287 if (ifp == NULL) { in initifs()
291 *ifp = ifs; in initifs()
292 ifp->int_name = ifp->int_ifbase = NULL; in initifs()
293 ifp->int_name = in initifs()
295 if (ifp->int_name == NULL) { in initifs()
296 free(ifp); in initifs()
300 (void) strcpy(ifp->int_name, lifr.lifr_name); in initifs()
301 ifp->int_ifbase = in initifs()
303 if (ifp->int_ifbase == NULL) { in initifs()
304 free(ifp->int_name); in initifs()
305 free(ifp); in initifs()
309 (void) strcpy(ifp->int_ifbase, lifr.lifr_name); in initifs()
310 cp = (char *)index(ifp->int_ifbase, IF_SEPARATOR); in initifs()
319 free(ifp->int_ifbase); in initifs()
320 free(ifp->int_name); in initifs()
321 free(ifp); in initifs()
324 "not be parsed", ifp->int_name); in initifs()
332 ifp->int_sock = in initifs()
333 setup_listen_sock(ifp->int_ifindex); in initifs()
335 ifp->int_sock = -1; in initifs()
337 ifp->int_next = ifnet; in initifs()
338 ifnet = ifp; in initifs()
339 traceinit(ifp); in initifs()
341 addrouteforif(ifp); in initifs()
349 for (ifp = ifnet; ifp != NULL; ifp = ifp->int_next) { in initifs()
350 if ((ifp->int_flags & (RIP6_IFF_MARKED | RIP6_IFF_UP)) == in initifs()
352 if_purge(ifp); in initifs()
353 ifp->int_flags &= ~RIP6_IFF_MARKED; in initifs()
364 addrouteforif(struct interface *ifp) in addrouteforif() argument
369 if (ifp->int_flags & RIP6_IFF_POINTOPOINT) in addrouteforif()
370 dst = &ifp->int_dstaddr; in addrouteforif()
372 dst = &ifp->int_addr; in addrouteforif()
374 rt = rtlookup(dst, ifp->int_prefix_length); in addrouteforif()
381 rtadd(dst, &ifp->int_addr, ifp->int_prefix_length, ifp->int_metric, 0, in addrouteforif()
382 _B_TRUE, ifp); in addrouteforif()
505 resetup_listen_sock(struct interface *ifp, int newindex) in resetup_listen_sock() argument
509 (void) close(ifp->int_sock); in resetup_listen_sock()
514 if (poll_ifs[i].fd == ifp->int_sock) { in resetup_listen_sock()
531 ifp->int_sock = setup_listen_sock(newindex); in resetup_listen_sock()