gluon-radv-filterd: Fix bug in BPF router lifetime filter
The router lifetime field actually is 2 bytes long, but we only checked the first one, thus falsely discarding RAs with router lifetime < 256 seconds.
This commit is contained in:
parent
31660c7402
commit
5b34931a97
@ -192,7 +192,7 @@ static int init_packet_socket(unsigned int ifindex) {
|
|||||||
BPF_STMT(BPF_LD|BPF_B|BPF_ABS, sizeof(struct ip6_hdr) + offsetof(struct nd_router_advert, nd_ra_code)),
|
BPF_STMT(BPF_LD|BPF_B|BPF_ABS, sizeof(struct ip6_hdr) + offsetof(struct nd_router_advert, nd_ra_code)),
|
||||||
BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 0, 0, 3),
|
BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 0, 0, 3),
|
||||||
// check that this is a default route (lifetime > 0)
|
// check that this is a default route (lifetime > 0)
|
||||||
BPF_STMT(BPF_LD|BPF_B|BPF_ABS, sizeof(struct ip6_hdr) + offsetof(struct nd_router_advert, nd_ra_router_lifetime)),
|
BPF_STMT(BPF_LD|BPF_H|BPF_ABS, sizeof(struct ip6_hdr) + offsetof(struct nd_router_advert, nd_ra_router_lifetime)),
|
||||||
BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 0, 1, 0),
|
BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 0, 1, 0),
|
||||||
// return true
|
// return true
|
||||||
BPF_STMT(BPF_RET|BPF_K, 0xffffffff),
|
BPF_STMT(BPF_RET|BPF_K, 0xffffffff),
|
||||||
|
Loading…
Reference in New Issue
Block a user