mirror of
https://github.com/rsmarples/dhcpcd.git
synced 2024-11-27 03:54:56 +08:00
DHCP: Don't enforce the message came port 67
RFC2131 and updates make no mention of what the source port should or must be. Update for #179.
This commit is contained in:
parent
53e2f6de4b
commit
6e127eac69
11
src/bpf.c
11
src/bpf.c
@ -612,16 +612,19 @@ static const struct bpf_insn bpf_bootp_base[] = {
|
||||
#define BPF_BOOTP_BASE_LEN __arraycount(bpf_bootp_base)
|
||||
|
||||
static const struct bpf_insn bpf_bootp_read[] = {
|
||||
/* Make sure it's from and to the right port. */
|
||||
BPF_STMT(BPF_LD + BPF_W + BPF_IND, 0),
|
||||
BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, (BOOTPS << 16) + BOOTPC, 1, 0),
|
||||
/* Make sure it's to the right port.
|
||||
* RFC2131 makes no mention of enforcing a source port. */
|
||||
BPF_STMT(BPF_LD + BPF_H + BPF_IND, offsetof(struct udphdr, uh_dport)),
|
||||
BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, BOOTPC, 1, 0),
|
||||
BPF_STMT(BPF_RET + BPF_K, 0),
|
||||
};
|
||||
#define BPF_BOOTP_READ_LEN __arraycount(bpf_bootp_read)
|
||||
|
||||
#ifdef BIOCSETWF
|
||||
static const struct bpf_insn bpf_bootp_write[] = {
|
||||
/* Make sure it's from and to the right port. */
|
||||
/* Make sure it's from and to the right port.
|
||||
* RFC2131 makes no mention of encforcing a source port,
|
||||
* but dhcpcd does enforce it for sending. */
|
||||
BPF_STMT(BPF_LD + BPF_W + BPF_IND, 0),
|
||||
BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, (BOOTPC << 16) + BOOTPS, 1, 0),
|
||||
BPF_STMT(BPF_RET + BPF_K, 0),
|
||||
|
@ -3459,8 +3459,8 @@ is_packet_udp_bootp(void *packet, size_t plen)
|
||||
if (ip_hlen + ntohs(udp.uh_ulen) > plen)
|
||||
return false;
|
||||
|
||||
/* Check it's to and from the right ports. */
|
||||
if (udp.uh_dport != htons(BOOTPC) || udp.uh_sport != htons(BOOTPS))
|
||||
/* Check it's to the right port. */
|
||||
if (udp.uh_dport != htons(BOOTPC))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user