diff --git a/src/core/bpf/clat.bpf.c b/src/core/bpf/clat.bpf.c index 2419c50cdc..3a20a6da3f 100644 --- a/src/core/bpf/clat.bpf.c +++ b/src/core/bpf/clat.bpf.c @@ -632,6 +632,7 @@ icmp_out: *dst_hdr_out = dst_hdr; + ret = TC_ACT_UNSPEC; out: return ret; } @@ -651,10 +652,12 @@ clat_handle_v6(struct __sk_buff *skb, struct hdr_cursor *nh) int ip_offset = (nh->pos - data) & 0x1fff; ret = clat_translate_v6(skb, nh, data_end, &dst_hdr, 0); - if (ret != TC_ACT_SHOT) { + if (ret != TC_ACT_UNSPEC) { goto out; } + ret = TC_ACT_SHOT; + if (bpf_skb_change_proto(skb, bpf_htons(ETH_P_IP), 0)) goto out;