<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@等线";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.m-5020793771600839367m-2431767368020277807hoenzb
        {mso-style-name:m_-5020793771600839367m_-2431767368020277807hoenzb;}
span.m-5020793771600839367m-2431767368020277807m-1614252644282559178m4901917783758041970hoenzb
        {mso-style-name:m_-5020793771600839367m_-2431767368020277807m_-1614252644282559178m_4901917783758041970hoenzb;}
span.m-5020793771600839367m-2431767368020277807m-1614252644282559178m4901917783758041970m6129999355772137120m4783151367435736285m8572086684818879835hoenzb
        {mso-style-name:m_-5020793771600839367m_-2431767368020277807m_-1614252644282559178m_4901917783758041970m_6129999355772137120m_4783151367435736285m_8572086684818879835hoenzb;}
span.m-5020793771600839367m-2431767368020277807m-1614252644282559178m4901917783758041970m6129999355772137120m4783151367435736285m8572086684818879835m5171796780311652462m-8285066832829797006m6110091301469344478hoenzb
        {mso-style-name:m_-5020793771600839367m_-2431767368020277807m_-1614252644282559178m_4901917783758041970m_6129999355772137120m_4783151367435736285m_8572086684818879835m_5171796780311652462m_-8285066832829797006m_6110091301469344478hoenzb;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-AU" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi, <o:p></o:p></p>
<p class="MsoNormal">I noticed in `core.p4`, a method named `length` is defined. (
<a href="https://github.com/p4lang/p4c/blob/master/p4include/core.p4#L49-L51">https://github.com/p4lang/p4c/blob/master/p4include/core.p4#L49-L51</a> )<o:p></o:p></p>
<p class="MsoNormal">It may help you to calculate the length of variable fields.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Dingyuan<o:p></o:p></p>
<p class="MsoNormal"><a name="_MailEndCompose"><o:p> </o:p></a></p>
<span style="mso-bookmark:_MailEndCompose"></span>
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> P4-dev [mailto:p4-dev-bounces@lists.p4.org]
<b>On Behalf Of </b>shubham bhardwaj<br>
<b>Sent:</b> Thursday, 27 July 2017 6:45 AM<br>
<b>To:</b> Andy Fingerhut <andy.fingerhut@gmail.com><br>
<b>Cc:</b> p4-dev <p4-dev@lists.p4.org><br>
<b>Subject:</b> Re: [P4-dev] P4 variable fields<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">Yes, I have three other fields after that variable field that I want to parse. That's why I am trying to calculate the length. <o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Wed, 26 Jul 2017 at 10:24 PM, Andy Fingerhut <<a href="mailto:andy.fingerhut@gmail.com">andy.fingerhut@gmail.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<p class="MsoNormal">Probably most P4 implementations provide a packet_length of the received packet and make it available in the ingress control block.  A notable exception would be any device that does cut-through forwarding, i.e. starting running the P4
 code on the packet header before the entire packet has arrived into the device, where it is not possible to know the packet_length.<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">In some experiments recently I have learned that the open source simple_switch process that is part of the
<a href="https://github.com/p4lang/behavioral-model" target="_blank">https://github.com/p4lang/behavioral-model</a> project makes a packet_length available on ingress as part of the standard_metadata_t struct, and it appears to always be the number of bytes
 in the Ethernet header plus Ethernet payload, not counting any Ethernet CRC at the end, and it can be smaller than 64 bytes, so it does not include any padding in the Ethernet payload required to meet the minimum Ethernet frame size requirements.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If you had a packet_length like that available for your purposes, do you know how you would calculate the length of the variable-length field of interest to you in the Profinet protocol?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If the answer is: from the end of this header, I always want the rest of the packet from that point forward, until the end of the packet, then that is exactly what in P4 is considered the 'payload', if you don't parse it, and by default
 gets copied after any headers you emit in your deparser.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If the answer is something _less_ than that, then perhaps calculating the length of the variable length header and extracting it might make sense for your application.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Is the reason that you want to extract this variable-length header because there is more in the packet after it, and you want to parse and extract that part of the packet, too?  If that isn't the reason, then it isn't clear to me what benefit
 you are hoping to get by extracting this variable-length header.<o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Andy<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Jul 26, 2017 at 3:09 AM, shubham bhardwaj <<a href="mailto:bhardwajshubham2011@gmail.com" target="_blank">bhardwajshubham2011@gmail.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<p class="MsoNormal">I am not sure, but can't we derive the packet length from the metadata. I mean if there is no packet length field in a header itself, then it should be somewhere and the metadata is my best guess. <o:p></o:p></p>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Sun, Jul 23, 2017 at 10:43 PM, Andy Fingerhut <<a href="mailto:andy.fingerhut@gmail.com" target="_blank">andy.fingerhut@gmail.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<p class="MsoNormal">Can you describe how software written in some language other than P4 determines the length of this variable-length part of the packet?  I am not familiar with this Profinet protocol, and don't have any interest in spending significant time
 learning about it, but if you can precisely describe one way to determine the field's length, maybe someone will think of a way that a P4 program might be able to do it, too.<span class="m-5020793771600839367m-2431767368020277807hoenzb"><span style="color:#888888"><o:p></o:p></span></span></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888">Andy<o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Sun, Jul 23, 2017 at 10:36 AM, shubham bhardwaj <<a href="mailto:bhardwajshubham2011@gmail.com" target="_blank">bhardwajshubham2011@gmail.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<p class="MsoNormal"><img border="0" id="_x0000_i1025" src="https://mailtrack.io/trace/mail/fa8cd1b69dc54c032436cc5efebf8a6eb7d0c96d.png?u=645156"><o:p></o:p></p>
<div>
<p class="MsoNormal">Hello Andy, <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt">Thanks for your reply, but the header I am trying to parse is not the payload (rest of the packet) and the only field before it is FrameID which is providing information about the type of data, for example,
 RTC1, RTC2, RTC3, etc. Therefore, I am not sure how I can calculate the variable field length from this field. <br>
<br>
<br>
<o:p></o:p></p>
</div>
<div id="m_-5020793771600839367m_-2431767368020277807m_-1614252644282559178m_4901917783758041970DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2">
<p class="MsoNormal"><o:p> </o:p></p>
<table class="MsoNormalTable" border="1" cellspacing="3" cellpadding="0" style="border:none;border-top:solid #D3D4DE 1.0pt">
<tbody>
<tr>
<td width="55" style="width:41.25pt;border:none;padding:9.75pt .75pt .75pt .75pt">
<p class="MsoNormal"><a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail" target="_blank"><span style="text-decoration:none"><img border="0" width="46" height="29" style="width:.4791in;height:.3055in" id="_x0000_i1026" src="https://ipmcdn.avast.com/images/icons/icon-envelope-tick-round-orange-animated-no-repeat-v1.gif"></span></a><o:p></o:p></p>
</td>
<td width="470" style="width:352.5pt;border:none;padding:9.0pt .75pt .75pt .75pt">
<p class="MsoNormal" style="line-height:13.5pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#41424E">Virus-free.
<a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail" target="_blank">
<span style="color:#4453EA">www.avast.com</span></a> <o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Sat, Jul 22, 2017 at 8:03 PM, Andy Fingerhut <<a href="mailto:andy.fingerhut@gmail.com" target="_blank">andy.fingerhut@gmail.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<p class="MsoNormal">The only way that P4 programs can extract a variable-length field from a packet is if there is some field in the packet before that variable-length field, from which the length of the variable-length field can be calculated.<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If the variable-length field you want is "the rest of the packet, all the way to the end", I don't see any advantage to extract'ing it -- any header you do not extract in P4 is considered part of the payload, automatically, and the payload
 will automatically be copied from the received packet to the transmitted packet, after the headers your program emit's.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888">Andy<o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Fri, Jul 21, 2017 at 5:33 AM, shubham bhardwaj <<a href="mailto:bhardwajshubham2011@gmail.com" target="_blank">bhardwajshubham2011@gmail.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<p class="MsoNormal">Adding on, this length can go up to 40 - 1440 but my main question is if there is no header length field is present in the header. Then, is there any way to form an expression for the variable length. For example, in the above case there
 is no header field in Ethernet and its payload i.e. Profinet. <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks & Regards<o:p></o:p></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Jul 19, 2017 at 10:10 PM, shubham bhardwaj <<a href="mailto:bhardwajshubham2011@gmail.com" target="_blank">bhardwajshubham2011@gmail.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<p class="MsoNormal">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.<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><img border="0" width="827" height="219" style="width:8.618in;height:2.2847in" id="_x0000_i1027" src="cid:image001.png@01D31F54.0BBE6F60" alt="Inline image 1"><o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">fields {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">frameID: 16;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        cyclecounter: 16;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">datastatus: 8;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">transferstatus: 8; <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        profinetcyclic: *;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">       }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">length: 40;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">max_length: 80;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><img border="0" width="399" height="111" style="width:4.1597in;height:1.1597in" id="_x0000_i1028" src="cid:image002.png@01D31F54.0BBE6F60" alt="Inline image 2"><o:p></o:p></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Jul 19, 2017 at 6:31 PM, Andy Fingerhut <<a href="mailto:andy.fingerhut@gmail.com" target="_blank">andy.fingerhut@gmail.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<p class="MsoNormal">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.<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">What is going wrong when you try to compile/run the program you shared?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888">Andy<o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Jul 19, 2017 at 6:05 AM, shubham bhardwaj <<a href="mailto:bhardwajshubham2011@gmail.com" target="_blank">bhardwajshubham2011@gmail.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<p class="MsoNormal">Hello Andy,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">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.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">//Ethernet header<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">header_type ethernet_t {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    fields {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        dstAddr: 48;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        srcAddr: 48;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        etherType: 16;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">     }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">//Profinet header<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">header_type Profinet_RT_t {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    fields {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">frameID: 16;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        profinetcyclic: *;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">   }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">length: frameID * 20;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">max_length: 512;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Tue, Jul 18, 2017 at 4:57 PM, Andy Fingerhut <<a href="mailto:andy.fingerhut@gmail.com" target="_blank">andy.fingerhut@gmail.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<p class="MsoNormal">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.<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">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: <a href="https://github.com/p4lang/p4-spec/issues/264" target="_blank">https://github.com/p4lang/p4-spec/issues/264</a>
   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.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Andy<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<p class="MsoNormal">On Tue, Jul 18, 2017 at 6:07 AM, shubham bhardwaj <<a href="mailto:bhardwajshubham2011@gmail.com" target="_blank">bhardwajshubham2011@gmail.com</a>> wrote:<o:p></o:p></p>
</div>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">Dear All,<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt">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.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888">-- <o:p></o:p></span></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="color:#888888">Thanks & Regards<br>
Shubham Bhardwaj<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><b><span style="color:#888888">Technical University of Darmstadt</span></b><span style="color:#888888"><br>
<a href="tel:+49%20176%2043686394" target="_blank">+49 17643686394</a><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<p class="MsoNormal">_______________________________________________<br>
P4-dev mailing list<br>
<a href="mailto:P4-dev@lists.p4.org" target="_blank">P4-dev@lists.p4.org</a><br>
<a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org" target="_blank">http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Thanks & Regards<br>
Shubham Bhardwaj<o:p></o:p></p>
</div>
<p class="MsoNormal"><b>Technical University of Darmstadt</b><br>
<a href="tel:+49%20176%2043686394" target="_blank">+49 17643686394</a><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Thanks & Regards<br>
Shubham Bhardwaj<o:p></o:p></p>
</div>
<p class="MsoNormal"><b>Technical University of Darmstadt</b><br>
<a href="tel:+49%20176%2043686394" target="_blank">+49 17643686394</a><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Thanks & Regards<br>
Shubham Bhardwaj<o:p></o:p></p>
</div>
<p class="MsoNormal"><b>Technical University of Darmstadt</b><br>
<a href="tel:+49%20176%2043686394" target="_blank">+49 17643686394</a><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Thanks & Regards<br>
Shubham Bhardwaj<o:p></o:p></p>
</div>
<p class="MsoNormal"><b>Technical University of Darmstadt</b><br>
<a href="tel:+49%20176%2043686394" target="_blank">+49 17643686394</a><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Thanks & Regards<br>
Shubham Bhardwaj<o:p></o:p></p>
</div>
<p class="MsoNormal"><b>Technical University of Darmstadt</b><br>
<a href="tel:+49%20176%2043686394" target="_blank">+49 17643686394</a><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</blockquote>
</div>
</div>
<div>
<p class="MsoNormal">-- <o:p></o:p></p>
</div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Thanks & Regards<br>
Shubham Bhardwaj<o:p></o:p></p>
</div>
<p class="MsoNormal"><b>Technical University of Darmstadt</b><br>
+49 17643686394<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>