[P4-dev] P4 variable fields

shubham bhardwaj bhardwajshubham2011 at gmail.com
Wed Jul 19 16:10:15 EDT 2017


Yeah, this is wrong. I found out that the length should be the (packet
length - fixed fields length). Right now the packet i am parsing is of 46
bytes and fixed fields are of 6 bytes. I am not sure that the fields in
this header contain any details about the header length (like IHL in IPv4).
This is the screenshot of the packet, header fields, and the parsed output.
I am using length as 40 bytes (which is probably wrong) and also i am not
getting any result for the variable field from this value.

[image: Inline image 1]

fields {
frameID: 16;
        cyclecounter: 16;
datastatus: 8;
transferstatus: 8;
        profinetcyclic: *;
       }
length: 40;
max_length: 80;
}

[image: Inline image 2]

On Wed, Jul 19, 2017 at 6:31 PM, Andy Fingerhut <andy.fingerhut at gmail.com>
wrote:

> The length expression 'frameID * 20' can be much larger than 512, since
> frameID is 16 bits in size.  I don't know if that is causing any issues for
> you.
>
> What is going wrong when you try to compile/run the program you shared?
>
> Andy
>
> On Wed, Jul 19, 2017 at 6:05 AM, shubham bhardwaj <
> bhardwajshubham2011 at gmail.com> wrote:
>
>> Hello Andy,
>>
>> Thanks for your reply, its really helpful. But i am facing another issue
>> in initializing the variable length. I am able to initialize variable
>> length of the field options for IPv4, as already explained by Antonin.
>> However, I am not able to do the same for Profinet RT header, which is a
>> low-level protocol. I am not sure if i am doing something wrong or is there
>> any other issue.
>>
>> //Ethernet header
>> header_type ethernet_t {
>>     fields {
>>         dstAddr: 48;
>>         srcAddr: 48;
>>         etherType: 16;
>>      }
>> }
>>
>> //Profinet header
>> header_type Profinet_RT_t {
>>     fields {
>> frameID: 16;
>>         profinetcyclic: *;
>>    }
>> length: frameID * 20;
>> max_length: 512;
>> }
>>
>>
>> On Tue, Jul 18, 2017 at 4:57 PM, Andy Fingerhut <andy.fingerhut at gmail.com
>> > wrote:
>>
>>> The only ways I know of in P4 programs to fill in the values of
>>> variable-length fields of headers is to extract() them from a packet being
>>> parsed.  From there, they can be copied (without any modifications) to
>>> other instances of the same type of header, by copy_header() in P4_14, or
>>> in P4_16 simply assigning the value of one header to another of the same
>>> type.
>>>
>>> I believe it would be nice if P4_16 were extended to include ways to
>>> copy parts of varbit fields and copy them into fixed-width
>>> fields/variables, or vice versa, and I have suggested such a language
>>> addition on this Github issue: https://github.com/p4la
>>> ng/p4-spec/issues/264   It will probably be some time before
>>> significant-sized changes will be made to the P4_16 spec, and there is no
>>> consensus yet on whether such a change is of interest to a wider audience.
>>>
>>> Andy
>>>
>>> On Tue, Jul 18, 2017 at 6:07 AM, shubham bhardwaj <
>>> bhardwajshubham2011 at gmail.com> wrote:
>>>
>>>> Dear All,
>>>>
>>>> I am working on a case where a single field in a header can vary in
>>>> length. In that case, is it possible to initialize it using variable fields.
>>>>
>>>> --
>>>> Thanks & Regards
>>>> Shubham Bhardwaj
>>>> *Technical University of Darmstadt*
>>>> +49 17643686394 <+49%20176%2043686394>
>>>>
>>>> _______________________________________________
>>>> P4-dev mailing list
>>>> P4-dev at lists.p4.org
>>>> http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org
>>>>
>>>
>>>
>>
>>
>> --
>> Thanks & Regards
>> Shubham Bhardwaj
>> *Technical University of Darmstadt*
>> +49 17643686394 <+49%20176%2043686394>
>>
>
>


-- 
Thanks & Regards
Shubham Bhardwaj
*Technical University of Darmstadt*
+49 17643686394
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.p4.org/pipermail/p4-dev_lists.p4.org/attachments/20170719/329748fd/attachment-0002.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 39008 bytes
Desc: not available
URL: <http://lists.p4.org/pipermail/p4-dev_lists.p4.org/attachments/20170719/329748fd/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 12505 bytes
Desc: not available
URL: <http://lists.p4.org/pipermail/p4-dev_lists.p4.org/attachments/20170719/329748fd/attachment-0001.png>


More information about the P4-dev mailing list