Hi Akhil,
> > Hi Marcin, > > > > > Introduce new function for IPv6 header extension parsing able to > > determine extension length and next protocol number. > > > > This function is helpful when implementing IPv6 header traversing. > > > > Signed-off-by: Marcin Smoczynski <marcinx.smoczyn...@intel.com> > > --- > > lib/librte_net/rte_ip.h | 49 +++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 49 insertions(+) > > > > diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h > > index f9b909090..be64da662 100644 > > --- a/lib/librte_net/rte_ip.h > > +++ b/lib/librte_net/rte_ip.h > > @@ -425,6 +425,55 @@ rte_ipv6_udptcp_cksum(const struct ipv6_hdr > > *ipv6_hdr, const void *l4_hdr) > > return (uint16_t)cksum; > > } > > > > +/* IPv6 fragmentation header size */ > > +#define RTE_IPV6_FRAG_HDR_SIZE 8 > > + > > +/** > > + * Parse next IPv6 header extension > > + * > > + * This function checks if proto number is an IPv6 extensions and parses > > its > > + * data if so, providing information on next header and extension length. > > + * > > + * @param p > > + * Pointer to an extension raw data. > > + * @param proto > > + * Protocol number extracted from the "next header" field from > > + * the IPv6 header or the previous extension. > > + * @param ext_len > > + * Extension data length. > > + * @return > > + * next protocol number if proto is an IPv6 extension, -EINVAL otherwise > > + */ > > +static inline int __rte_experimental > > > Rte_experimental may not be required for inline functions. AFAIK we do need that tag for both inline and non-inline functions, till API will be transferred to 'stable' state: $ find lib -type f | xargs grep __rte_experimental | grep inline | wc -l 57 > > > > +rte_ipv6_get_next_ext(uint8_t *p, int proto, size_t *ext_len) > > +{ > > + int next_proto; > > + > > + switch (proto) { > > + case IPPROTO_AH: > > + next_proto = *p++; > > + *ext_len = (*p + 2) * sizeof(uint32_t); > > + break; > > + > > + case IPPROTO_HOPOPTS: > > + case IPPROTO_ROUTING: > > + case IPPROTO_DSTOPTS: > > + next_proto = *p++; > > + *ext_len = (*p + 1) * sizeof(uint64_t); > > + break; > > + > > + case IPPROTO_FRAGMENT: > I see that there is some compilation issues with respect to IPPROTO_xxx > fields. These are reported in patchworks if you need details. > > Could you please fix these and send next rev. > > Thanks, > Akhil