> IPv6 only allows traffic source nodes to fragment,

Yes.

> so submitting
> a packet with next header of IPPROTO_FRAGMENT would be invalid.

If only source is allowed to fragment packet, then this check seems redundant, 
no?
I can't imagine source calling fragment() twice for the same packet, and
I don't see any point for us to check such situations.
Besides, strictly speaking the check below is insufficient,
as fragmentation ext header could be not the first one. 
Konstantin

> 
> Signed-off-by: Aaron Conole <acon...@redhat.com>
> ---
>  lib/librte_ip_frag/rte_ipv6_fragmentation.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/lib/librte_ip_frag/rte_ipv6_fragmentation.c 
> b/lib/librte_ip_frag/rte_ipv6_fragmentation.c
> index 820a5dc725..aebcfa4325 100644
> --- a/lib/librte_ip_frag/rte_ipv6_fragmentation.c
> +++ b/lib/librte_ip_frag/rte_ipv6_fragmentation.c
> @@ -106,6 +106,10 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in,
> 
>       in_hdr = rte_pktmbuf_mtod(pkt_in, struct rte_ipv6_hdr *);
> 
> +     /* Fragmenting a fragmented packet?! */
> +     if (unlikely(in_hdr->proto == IPPROTO_FRAGMENT))
> +             return -ENOTSUP;
> +
>       in_seg = pkt_in;
>       in_seg_data_pos = sizeof(struct rte_ipv6_hdr);
>       out_pkt_pos = 0;
> --
> 2.25.1

Reply via email to