| 65 | #endif |
| 66 | |
| 67 | bpf_jit_filter * |
| 68 | bpf_jitter(struct bpf_insn *fp, int nins) |
| 69 | { |
| 70 | bpf_jit_filter *filter; |
| 71 | |
| 72 | /* Allocate the filter structure. */ |
| 73 | #ifdef _KERNEL |
| 74 | filter = (struct bpf_jit_filter *)malloc(sizeof(*filter), |
| 75 | M_BPFJIT, M_NOWAIT); |
| 76 | #else |
| 77 | filter = (struct bpf_jit_filter *)malloc(sizeof(*filter)); |
| 78 | #endif |
| 79 | if (filter == NULL) |
| 80 | return (NULL); |
| 81 | |
| 82 | /* No filter means accept all. */ |
| 83 | if (fp == NULL || nins == 0) { |
| 84 | filter->func = bpf_jit_accept_all; |
| 85 | return (filter); |
| 86 | } |
| 87 | |
| 88 | /* Create the binary. */ |
| 89 | if ((filter->func = bpf_jit_compile(fp, nins, &filter->size)) == NULL) { |
| 90 | #ifdef _KERNEL |
| 91 | free(filter, M_BPFJIT); |
| 92 | #else |
| 93 | free(filter); |
| 94 | #endif |
| 95 | return (NULL); |
| 96 | } |
| 97 | |
| 98 | return (filter); |
| 99 | } |
| 100 | |
| 101 | void |
| 102 | bpf_destroy_jit_filter(bpf_jit_filter *filter) |
no test coverage detected