[ovs-dev] [PATCH] ofpbuf: Abstract 'l2' pointer and document usage conventions.
Jarno Rajahalme
jrajahalme at nicira.com
Wed Apr 2 18:33:18 UTC 2014
On Apr 2, 2014, at 11:23 AM, Lori Jakab <lojakab at cisco.com> wrote:
> On 4/2/14, 8:59 PM, Jarno Rajahalme wrote:
>
> [...]
>
>> diff --git a/lib/ofpbuf.h b/lib/ofpbuf.h
>> index 8d1cb11..fa8a3f0 100644
>> --- a/lib/ofpbuf.h
>> +++ b/lib/ofpbuf.h
>> @@ -36,26 +36,46 @@ enum OVS_PACKED_ENUM ofpbuf_source {
>> };
>> /* Buffer for holding arbitrary data. An ofpbuf is automatically reallocated
>> - * as necessary if it grows too large for the available memory. */
>> + * as necessary if it grows too large for the available memory.
>> + *
>> + * 'frame' and offset conventions:
>> + *
>> + * Network frames (aka "packets"): 'frame' MUST be set to the start of the
>> + * packet, layer offsets MAY be set as appropriate for the packet.
>> + * Additionally, we assume in many places that the 'frame' and 'data' are
>> + * the same for packets.
>> + *
>> + * OpenFlow messages: 'frame' points to the start of the OpenFlow
>> + * header, while 'l3_ofs' is the length of the OpenFlow header.
>> + * When parsing, the 'data' will move past these, as data is being
>> + * pulled from the OpenFlow message.
>> + *
>> + * Actions: When encoding OVS action lists, the 'frame' is used
>> + * as a pointer to the beginning of the current action (see ofpact_put()).
>> + *
>> + * rconn: Reuses 'frame' as a private pointer while queuing.
>> + */
>> struct ofpbuf {
>> void *base; /* First byte of allocated space. */
>> uint32_t allocated; /* Number of bytes allocated. */
>> uint32_t size; /* Number of bytes in use. */
>> void *data; /* First byte actually in use. */
>> - void *l2; /* Link-level header. */
>> - uint16_t l2_5_ofs; /* MPLS label stack offset from l2, or
>> + void *frame; /* Packet frame start, or NULL. */
>> + uint16_t l2_5_ofs; /* MPLS label stack offset from 'packet', or
>> * UINT16_MAX */
>> - uint16_t l3_ofs; /* Network-level header offset from l2, or
>> - * UINT16_MAX. */
>> - uint16_t l4_ofs; /* Transport-level header offset from l2, or
>> - UINT16_MAX. */
>> + uint16_t l3_ofs; /* Network-level header offset from 'packet',
>> + or UINT16_MAX. */
>> + uint16_t l4_ofs; /* Transport-level header offset from 'packet',
>> + or UINT16_MAX. */
>
> Shouldn't you say 'frame' in the comments instead of 'packet' (using quotes usually refers to struct members) ?
Yes I should. I’ll fix this before pushing to master.
Thanks,
Jarno
More information about the dev
mailing list