Fix 32-bit shim for BIOCSETF to drop all packets buffered on the descriptor

and reset statistics as it should.

MFC after:	3 days
This commit is contained in:
Jung-uk Kim 2012-05-29 18:44:53 +00:00
parent 97e9ad8ec4
commit 6f731135ac
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=236251

View File

@ -1718,13 +1718,23 @@ bpf_setf(struct bpf_d *d, struct bpf_program *fp, u_long cmd)
struct bpf_program32 *fp32;
struct bpf_program fp_swab;
if (cmd == BIOCSETWF32 || cmd == BIOCSETF32 || cmd == BIOCSETFNR32) {
switch (cmd) {
case BIOCSETF32:
case BIOCSETWF32:
case BIOCSETFNR32:
fp32 = (struct bpf_program32 *)fp;
fp_swab.bf_len = fp32->bf_len;
fp_swab.bf_insns = (struct bpf_insn *)(uintptr_t)fp32->bf_insns;
fp = &fp_swab;
if (cmd == BIOCSETWF32)
switch (cmd) {
case BIOCSETF32:
cmd = BIOCSETF;
break;
case BIOCSETWF32:
cmd = BIOCSETWF;
break;
}
break;
}
#endif
/*