Bill Fischofer(Bill-Fischofer-Linaro) replied on github web page:

platform/linux-generic/odp_packet.c
line 5
@@ -1286,7 +1286,7 @@ int odp_packet_l2_offset_set(odp_packet_t pkt, uint32_t 
offset)
 {
        odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
 
-       if (offset >= pkt_hdr->frame_len)
+       if (offset > pkt_hdr->frame_len)


Comment:
This change requires an API change as the spec says relevant offsets must be in 
the range `0..odp_packet_len(pkt) - 1` .  Same comment for the L3 and L4 
changes in this patch.

In theory the validation tests should test these bounds, but as with most parts 
of the API violations simply result in undefined behavior, so this is an "honor 
system". Still, we can't violate the spec here without changing the spec.

> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
> Unless it has been parsed, `odp_packet_l3_offset()` is initialized to 
> `ODP_PACKET_OFFSET_INVALID`, so this seems an undue burden. The original 
> wording seems cleaner from an application perspective.


https://github.com/Linaro/odp/pull/494#discussion_r169837497
updated_at 2018-02-22 02:28:33

Reply via email to