summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sbin/dhclient/bpf.c31
-rw-r--r--sbin/dhclient/dhclient.c3
2 files changed, 3 insertions, 31 deletions
diff --git a/sbin/dhclient/bpf.c b/sbin/dhclient/bpf.c
index 379af942279..aa2e5c11839 100644
--- a/sbin/dhclient/bpf.c
+++ b/sbin/dhclient/bpf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: bpf.c,v 1.41 2016/07/19 17:23:20 krw Exp $ */
+/* $OpenBSD: bpf.c,v 1.42 2016/07/23 15:53:19 stsp Exp $ */
/* BPF socket interface code, originally contributed by Archie Cobbs. */
@@ -114,27 +114,8 @@ if_register_send(void)
*
* XXX: Changes to the filter program may require changes to the
* constant offsets used in if_register_receive to patch the BPF program!
- *
- * Adapted from script shown by
- *
- * tcpdump -d 'ether dst 00:00:00:00:00:00 ip proto \udp dst port 67'
- *
- * NOTE: tcpdump shows absolute jumps and relative jumps are required here!
*/
struct bpf_insn dhcp_bpf_filter[] = {
- /*
- * Make sure this is directed to our MAC.
- * a) compare last 4 octets
- * b) compare first 2 octets
- *
- * NOTE: MAC value must be patched in!
- */
-
- BPF_STMT(BPF_LD + BPF_W + BPF_ABS, 2),
- BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, 0x00000000, 0, 12), /* patch */
- BPF_STMT(BPF_LD + BPF_H + BPF_ABS, 0),
- BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, 0x0000, 0, 10), /* patch */
-
/* Make sure this is an IP packet. */
BPF_STMT(BPF_LD + BPF_H + BPF_ABS, 12),
BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, ETHERTYPE_IP, 0, 8),
@@ -209,8 +190,6 @@ if_register_receive(void)
struct bpf_version v;
struct bpf_program p;
int flag = 1, sz;
- uint32_t bits;
- uint16_t bits16;
/* Open a BPF device and hang it on this interface. */
ifi->bfdesc = if_register_bpf();
@@ -256,13 +235,7 @@ if_register_receive(void)
* XXX: changes to filter program may require changes to the
* insn number(s) used below!
*/
- memcpy(&bits, ((uint8_t *)&ifi->hw_address) + 2, sizeof(bits));
- dhcp_bpf_filter[1].k = ntohl(bits);
-
- memcpy(&bits16, ((uint8_t *)&ifi->hw_address), sizeof(bits16));
- dhcp_bpf_filter[3].k = ntohs(bits16);
-
- dhcp_bpf_filter[12].k = LOCAL_PORT;
+ dhcp_bpf_filter[8].k = LOCAL_PORT;
if (ioctl(ifi->bfdesc, BIOCSETF, &p) < 0)
error("Can't install packet filter program: %s",
diff --git a/sbin/dhclient/dhclient.c b/sbin/dhclient/dhclient.c
index 804fc095b7b..d2592cf4f88 100644
--- a/sbin/dhclient/dhclient.c
+++ b/sbin/dhclient/dhclient.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dhclient.c,v 1.378 2016/07/22 13:23:38 krw Exp $ */
+/* $OpenBSD: dhclient.c,v 1.379 2016/07/23 15:53:19 stsp Exp $ */
/*
* Copyright 2004 Henning Brauer <henning@openbsd.org>
@@ -603,7 +603,6 @@ main(int argc, char *argv[])
error("setsockopt(ROUTE_TABLEFILTER): %s", strerror(errno));
/* Register the interface. */
- get_hw_address();
if_register_receive();
if_register_send();