Lines Matching refs:iface
48 send_arp(const struct interface *iface, int op, in_addr_t sip, in_addr_t tip) in send_arp() argument
56 ar.ar_hrd = htons(iface->family); in send_arp()
58 ar.ar_hln = iface->hwlen; in send_arp()
63 memcpy(p, iface->hwaddr, iface->hwlen); in send_arp()
64 p += iface->hwlen; in send_arp()
68 retval = iface->hwlen; in send_arp()
74 retval = send_raw_packet(iface, ETHERTYPE_ARP, arp_buffer, len); in send_arp()
79 handle_arp_failure(struct interface *iface) in handle_arp_failure() argument
84 if ((iface->state->offer != NULL && in handle_arp_failure()
85 iface->state->offer->cookie != htonl(MAGIC_COOKIE)) || in handle_arp_failure()
86 (iface->state->new != NULL && in handle_arp_failure()
87 iface->state->new->cookie != htonl(MAGIC_COOKIE))) in handle_arp_failure()
89 handle_ipv4ll_failure(iface); in handle_arp_failure()
93 unlink(iface->leasefile); in handle_arp_failure()
94 if (!iface->state->lease.frominfo) in handle_arp_failure()
95 send_decline(iface); in handle_arp_failure()
96 close_sockets(iface); in handle_arp_failure()
97 delete_timeout(NULL, iface); in handle_arp_failure()
98 if (iface->state->lease.frominfo) in handle_arp_failure()
99 start_interface(iface); in handle_arp_failure()
101 add_timeout_sec(DHCP_ARP_FAIL, start_interface, iface); in handle_arp_failure()
107 struct interface *iface = arg; in handle_arp_packet() local
114 struct if_state *state = iface->state; in handle_arp_packet()
121 bytes = get_raw_packet(iface, ETHERTYPE_ARP, in handle_arp_packet()
146 if (ar.ar_hln == iface->hwlen && in handle_arp_packet()
147 memcmp(hw_s, iface->hwaddr, iface->hwlen) == 0) in handle_arp_packet()
165 iface->name, inet_ntoa(ina), hwaddr); in handle_arp_packet()
166 if (select_profile(iface, hwaddr) == -1 && in handle_arp_packet()
168 select_profile(iface, inet_ntoa(ina)); in handle_arp_packet()
169 close_sockets(iface); in handle_arp_packet()
170 delete_timeout(NULL, iface); in handle_arp_packet()
171 start_interface(iface); in handle_arp_packet()
182 if (IN_LINKLOCAL(htonl(iface->addr.s_addr)) && in handle_arp_packet()
183 (reply_s == iface->addr.s_addr || in handle_arp_packet()
184 (reply_s == 0 && reply_t == iface->addr.s_addr))) in handle_arp_packet()
185 state->fail.s_addr = iface->addr.s_addr; in handle_arp_packet()
189 iface->name, in handle_arp_packet()
194 handle_arp_failure(iface); in handle_arp_packet()
203 struct interface *iface = arg; in send_arp_announce() local
204 struct if_state *state = iface->state; in send_arp_announce()
207 if (iface->arp_fd == -1) { in send_arp_announce()
208 open_socket(iface, ETHERTYPE_ARP); in send_arp_announce()
209 add_event(iface->arp_fd, handle_arp_packet, iface); in send_arp_announce()
215 iface->name, state->claims, ANNOUNCE_NUM, ANNOUNCE_WAIT); in send_arp_announce()
219 iface->name, state->claims, ANNOUNCE_NUM); in send_arp_announce()
220 if (send_arp(iface, ARPOP_REQUEST, in send_arp_announce()
224 add_timeout_sec(ANNOUNCE_WAIT, send_arp_announce, iface); in send_arp_announce()
237 add_timeout_tv(&tv, start_discover, iface); in send_arp_announce()
239 delete_event(iface->arp_fd); in send_arp_announce()
240 close(iface->arp_fd); in send_arp_announce()
241 iface->arp_fd = -1; in send_arp_announce()
248 struct interface *iface = arg; in send_arp_probe() local
249 struct if_state *state = iface->state; in send_arp_probe()
263 addr.s_addr = iface->addr.s_addr; in send_arp_probe()
265 if (iface->arp_fd == -1) { in send_arp_probe()
266 open_socket(iface, ETHERTYPE_ARP); in send_arp_probe()
267 add_event(iface->arp_fd, handle_arp_packet, iface); in send_arp_probe()
272 iface->name, inet_ntoa(addr)); in send_arp_probe()
275 iface->name, inet_ntoa(addr)); in send_arp_probe()
281 add_timeout_tv(&tv, send_arp_probe, iface); in send_arp_probe()
288 add_timeout_tv(&tv, send_arp_probe, iface); in send_arp_probe()
290 add_timeout_tv(&tv, start_interface, iface); in send_arp_probe()
292 add_timeout_tv(&tv, bind_interface, iface); in send_arp_probe()
296 iface->name, state->probes ? state->probes : PROBE_NUM, PROBE_NUM, in send_arp_probe()
298 if (send_arp(iface, ARPOP_REQUEST, 0, addr.s_addr) == -1) in send_arp_probe()
303 start_arping(struct interface *iface) in start_arping() argument
305 iface->state->probes = 0; in start_arping()
306 iface->state->arping_index = 0; in start_arping()
307 send_arp_probe(iface); in start_arping()