diff options
author | 2016-08-23 09:26:02 +0000 | |
---|---|---|
committer | 2016-08-23 09:26:02 +0000 | |
commit | 916c3997e23ded6430381df1d1fa98bf1e7f1e9d (patch) | |
tree | 306054c66acfd9d82a75018680ea9bf3780a684b /sbin/dhclient/bpf.c | |
parent | downgrade an error() to a debug2() to match similar cases (diff) | |
download | wireguard-openbsd-916c3997e23ded6430381df1d1fa98bf1e7f1e9d.tar.xz wireguard-openbsd-916c3997e23ded6430381df1d1fa98bf1e7f1e9d.zip |
Make the 'ifi' global local to dhclient.c and pass it as an argument to
functions needing it.
This is the first step to support multiple interfaces in one dhclient(8)
instance.
ok krw@
Diffstat (limited to 'sbin/dhclient/bpf.c')
-rw-r--r-- | sbin/dhclient/bpf.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/sbin/dhclient/bpf.c b/sbin/dhclient/bpf.c index aa2e5c11839..74dc0b1c72e 100644 --- a/sbin/dhclient/bpf.c +++ b/sbin/dhclient/bpf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: bpf.c,v 1.42 2016/07/23 15:53:19 stsp Exp $ */ +/* $OpenBSD: bpf.c,v 1.43 2016/08/23 09:26:02 mpi Exp $ */ /* BPF socket interface code, originally contributed by Archie Cobbs. */ @@ -64,7 +64,7 @@ #include "dhcp.h" #include "dhcpd.h" -int if_register_bpf(void); +int if_register_bpf(struct interface_info *ifi); /* * Called by get_interface_list for each interface that's discovered. @@ -72,7 +72,7 @@ int if_register_bpf(void); * mask. */ int -if_register_bpf(void) +if_register_bpf(struct interface_info *ifi) { struct ifreq ifr; int sock; @@ -90,7 +90,7 @@ if_register_bpf(void) } void -if_register_send(void) +if_register_send(struct interface_info *ifi) { int sock, on = 1; @@ -185,14 +185,14 @@ struct bpf_insn dhcp_bpf_wfilter[] = { int dhcp_bpf_wfilter_len = sizeof(dhcp_bpf_wfilter) / sizeof(struct bpf_insn); void -if_register_receive(void) +if_register_receive(struct interface_info *ifi) { struct bpf_version v; struct bpf_program p; int flag = 1, sz; /* Open a BPF device and hang it on this interface. */ - ifi->bfdesc = if_register_bpf(); + ifi->bfdesc = if_register_bpf(ifi); /* Make sure the BPF version is in range. */ if (ioctl(ifi->bfdesc, BIOCVERSION, &v) < 0) @@ -257,7 +257,7 @@ if_register_receive(void) } ssize_t -send_packet(struct in_addr from, struct in_addr to) +send_packet(struct interface_info *ifi, struct in_addr from, struct in_addr to) { struct sockaddr_in dest; struct ether_header eh; @@ -275,7 +275,7 @@ send_packet(struct in_addr from, struct in_addr to) dest.sin_addr.s_addr = to.s_addr; if (to.s_addr == INADDR_BROADCAST) { - assemble_eh_header(&eh); + assemble_eh_header(ifi, &eh); iov[0].iov_base = &eh; iov[0].iov_len = sizeof(eh); iovcnt++; @@ -333,7 +333,8 @@ send_packet(struct in_addr from, struct in_addr to) } ssize_t -receive_packet(struct sockaddr_in *from, struct ether_addr *hfrom) +receive_packet(struct interface_info *ifi, struct sockaddr_in *from, + struct ether_addr *hfrom) { int length = 0, offset = 0; struct bpf_hdr hdr; |