Index: bpf.h =================================================================== RCS file: /cvs/src/sys/net/bpf.h,v retrieving revision 1.69 diff -u -p -r1.69 bpf.h --- bpf.h 18 Jun 2020 23:27:58 -0000 1.69 +++ bpf.h 16 Jul 2020 06:17:38 -0000 @@ -237,6 +237,7 @@ struct bpf_hdr { #define BPF_MEM 0x60 #define BPF_LEN 0x80 #define BPF_MSH 0xa0 +#define BPF_RND 0xc0 /* alu/jmp fields */ #define BPF_OP(code) ((code) & 0xf0) Index: bpf_filter.c =================================================================== RCS file: /cvs/src/sys/net/bpf_filter.c,v retrieving revision 1.33 diff -u -p -r1.33 bpf_filter.c --- bpf_filter.c 8 Sep 2017 05:36:53 -0000 1.33 +++ bpf_filter.c 16 Jul 2020 06:17:38 -0000 @@ -199,6 +199,14 @@ _bpf_filter(const struct bpf_insn *pc, c X = wirelen; continue; + case BPF_LD|BPF_W|BPF_RND: + A = arc4random(); + continue; + + case BPF_LDX|BPF_W|BPF_RND: + X = arc4random(); + continue; + case BPF_LD|BPF_W|BPF_IND: k = X + pc->k; A = ops->ldw(pkt, k, &err); @@ -414,6 +422,7 @@ bpf_validate(struct bpf_insn *f, int len return 0; break; case BPF_LEN: + case BPF_RND: break; default: return 0;