Variable length arrays are extension not required in C standard and not available in Windows. Use alloca() instead of variable length array.
Signed-off-by: Stephen Hemminger <[email protected]> --- lib/bpf/bpf_pkt.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/bpf/bpf_pkt.c b/lib/bpf/bpf_pkt.c index 087ac0f244..5007f6aef5 100644 --- a/lib/bpf/bpf_pkt.c +++ b/lib/bpf/bpf_pkt.c @@ -163,7 +163,7 @@ apply_filter(struct rte_mbuf *mb[], const uint64_t rc[], uint32_t num, uint32_t drop) { uint32_t i, j, k; - struct rte_mbuf *dr[num]; + struct rte_mbuf **dr = alloca(num * sizeof(struct rte_mbuf *)); for (i = 0, j = 0, k = 0; i != num; i++) { @@ -192,8 +192,8 @@ pkt_filter_vm(const struct rte_bpf *bpf, struct rte_mbuf *mb[], uint32_t num, uint32_t drop) { uint32_t i; - void *dp[num]; - uint64_t rc[num]; + void **dp = alloca(num * sizeof(void *)); + uint64_t *rc = alloca(num * sizeof(uint64_t)); for (i = 0; i != num; i++) dp[i] = rte_pktmbuf_mtod(mb[i], void *); @@ -208,7 +208,7 @@ pkt_filter_jit(const struct rte_bpf_jit *jit, struct rte_mbuf *mb[], { uint32_t i, n; void *dp; - uint64_t rc[num]; + uint64_t *rc = alloca(num * sizeof(uint64_t)); n = 0; for (i = 0; i != num; i++) { @@ -227,7 +227,7 @@ static inline uint32_t pkt_filter_mb_vm(const struct rte_bpf *bpf, struct rte_mbuf *mb[], uint32_t num, uint32_t drop) { - uint64_t rc[num]; + uint64_t *rc = alloca(num * sizeof(uint64_t)); rte_bpf_exec_burst(bpf, (void **)mb, rc, num); return apply_filter(mb, rc, num, drop); @@ -238,7 +238,7 @@ pkt_filter_mb_jit(const struct rte_bpf_jit *jit, struct rte_mbuf *mb[], uint32_t num, uint32_t drop) { uint32_t i, n; - uint64_t rc[num]; + uint64_t *rc = alloca(num * sizeof(uint64_t)); n = 0; for (i = 0; i != num; i++) { -- 2.51.0

