<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=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><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:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        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:#954F72;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.m4531917905538456733m-3538264827947674476m-3198329532753826150m2784614309406062842m3958004942886826818hoenzb
        {mso-style-name:m_4531917905538456733m-3538264827947674476m-3198329532753826150m2784614309406062842m3958004942886826818hoenzb;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
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-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Mihai,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Got it – thanks.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hemant<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> Mihai Budiu [mailto:mbudiu@vmware.com] <br><b>Sent:</b> Wednesday, August 23, 2017 11:11 PM<br><b>To:</b> hemant@mnkcg.com; 'p4-dev lists.p4.org' <p4-dev@lists.p4.org><br><b>Subject:</b> RE: [P4-dev] clarify nested struct support in P4-16?<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>P4-16 allows nested structures to an arbitrary degree. Various targets and back-ends may introduce additional restrictions. Some restrictions are due to target limitations, and may never be lifted, some are due to code immaturity in the compilers.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The bmv2 backend removes nested structs that do not appear in control apis (arguments),because bmv does not support nested structs.  More work is needed to remove the other ones. In principle ebpf does not need to remove nested structs, because it generates c, which supports nested structs. However, there are currently no tests with nested structs, so it is possible that they don’t work.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Mihai<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:hemant@mnkcg.com">hemant@mnkcg.com</a><br><b>Sent: </b>Wednesday, August 23, 2017 16:47<br><b>To: </b><a href="mailto:p4-dev@lists.p4.org">'p4-dev lists.p4.org'</a><br><b>Subject: </b>[P4-dev] clarify nested struct support in P4-16?<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>I don’t see any text in the P4-16 spec that says nested struct is not supported.  At least, when I use p4test, I see a nested struct pass compilation.  When folks get a chance, the EBPF backend could use the same behavior because p4c-ebpf does not support a nested struct.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hemant<o:p></o:p></p></div></div></body></html>