Lines Matching refs:interface

3 /* BPF socket interface code, originally contributed by Archie Cobbs. */
59 * Called by get_interface_list for each interface that's discovered.
60 * Opens a packet filter for each interface and adds it to the select
82 /* Set the BPF device to point at this interface. */
84 error("Can't attach interface %s to bpf device %s: %m",
97 * don't need to register this interface twice.
194 /* Open a BPF device and hang it on this interface... */
253 send_packet(struct interface_info *interface, struct dhcp_packet *raw,
264 assemble_hw_header(interface, buf, &bufp, hto);
275 result = writev(interface->wfdesc, iov, 2);
282 result = sendmsg(interface->ufdesc, &msg, 0);
291 receive_packet(struct interface_info *interface, unsigned char *buf,
301 * interface. Sigh.
309 if (interface->rbuf_offset >= interface->rbuf_len) {
310 length = read(interface->rfdesc, interface->rbuf,
311 interface->rbuf_max);
314 interface->rbuf_offset = 0;
315 interface->rbuf_len = length;
323 if (interface->rbuf_len - interface->rbuf_offset <
325 interface->rbuf_offset = interface->rbuf_len;
330 memcpy(&hdr, &interface->rbuf[interface->rbuf_offset],
337 if (interface->rbuf_offset + hdr.bh_hdrlen + hdr.bh_caplen >
338 interface->rbuf_len) {
339 interface->rbuf_offset = interface->rbuf_len;
344 interface->rbuf_offset += hdr.bh_hdrlen;
352 interface->rbuf_offset =
353 BPF_WORDALIGN(interface->rbuf_offset +
359 offset = decode_hw_header(interface->rbuf,
360 interface->rbuf_offset, hfrom);
368 interface->rbuf_offset =
369 BPF_WORDALIGN(interface->rbuf_offset +
373 interface->rbuf_offset += offset;
377 offset = decode_udp_ip_header(interface->rbuf,
378 interface->rbuf_offset, from, NULL, hdr.bh_caplen);
382 interface->rbuf_offset =
383 BPF_WORDALIGN(interface->rbuf_offset +
387 interface->rbuf_offset += offset;
396 interface->rbuf_offset =
397 BPF_WORDALIGN(interface->rbuf_offset +
403 memcpy(buf, interface->rbuf + interface->rbuf_offset,
405 interface->rbuf_offset =
406 BPF_WORDALIGN(interface->rbuf_offset +