<div class="zcontentRow"> <p>In the P4 l<span class="fontstyle0">anguage s</span><span class="fontstyle0">pecification(<span class="fontstyle0">Version 1.0.3</span> <span class="fontstyle0">November 2, 2016</span>), it described as blew:</span></p><p><span class="fontstyle0">"For header instances, the compiler must produce an <span style="font-size: 14px;">error </span>if the total length of all<br>fields in a header type is not an integral number of bytes. The compiler may pad<br>the header to be byte aligned."</span></p><p><span class="fontstyle0">when I am learning tutorials/SIGCOMM_2015/flowlet_switching(<a href="https://github.com/p4lang/tutorials/tree/master/SIGCOMM_2015/flowlet_switching)" _src="https://github.com/p4lang/tutorials/tree/master/SIGCOMM_2015/flowlet_switching)">https://github.com/p4lang/tutorials/tree/master/SIGCOMM_2015/flowlet_switching)</a> </span></p><p>I found the<span style="line-height: 21px;"> ingress_metadata_t </span> didn't byte aligned<span style="font-family: Arial, 宋体, 'Microsoft Yahei', 'Lucida Grande', Verdana, Lucida, Helvetica, sans-serif; font-size: 12px; line-height: 17.1420001983643px; background-color: rgb(255, 255, 255);">.<span style="font-family: Arial, 宋体, 'Microsoft Yahei', 'Lucida Grande', Verdana, Lucida, Helvetica, sans-serif; font-size: 14px; line-height: 17.1420001983643px; background-color: rgb(255, 255, 255);"> The total</span><span style="line-height: 21px;"> length is 171 bits, but the p4c-bmv2 only indicate a warning and compile passed.</span></span></p><p><span style="font-family: Arial, 宋体, 'Microsoft Yahei', 'Lucida Grande', Verdana, Lucida, Helvetica, sans-serif; font-size: 12px; line-height: 17.1420001983643px; background-color: rgb(255, 255, 255);"><span style="line-height: 21px;">I think if <span style="line-height: 21px;"> a header type is not an integral number of bytes,<span style="line-height: 21px;">the compiler must produce an error and compile must stopped.I</span></span></span></span><span style="line-height: 21px; font-family: Arial, 宋体, 'Microsoft Yahei', 'Lucida Grande', Verdana, Lucida, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">f the compiler can </span></p><p><span style="line-height: 21px; font-family: Arial, 宋体, 'Microsoft Yahei', 'Lucida Grande', Verdana, Lucida, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">pad </span><span style="line-height: 21px; font-family: Arial, 宋体, 'Microsoft Yahei', 'Lucida Grande', Verdana, Lucida, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">the header to be byte aligned,  the warning is useless.</span></p><p>header_type ingress_metadata_t {</p><p>    fields {</p><p>        flow_ipg : 48; // inter-packet gap</p><p>        flowlet_map_index : FLOWLET_MAP_BITS; // flowlet map index</p><p>        flowlet_id : 16; // flowlet id</p><p>        flowlet_lasttime : 48; // flowlet's last reference time</p><p>        ecmp_offset : 14; // offset into the ecmp table</p><p>        nhop_ipv4 : 32;</p><p>    }</p><p>}</p><p>hll@hll:/home/opendaylight/p4lang/tutorials-master/SIGCOMM_2015/flowlet_switching/solution/p4src$ p4c-bmv2 simple_router.p4  --json simple_router.json</p><p>parsing successful</p><p>semantic checking successful</p><p>Header type standard_metadata_t not byte-aligned, adding padding</p><p>Header type ingress_metadata_t not byte-aligned, adding padding</p><p>WARNING:p4c_bm.gen_json:The P4 program defines a checksum verification on field 'ipv4.hdrChecksum'; as of now bmv2 ignores all checksum verifications; checksum updates are processed correctly.</p><p>Generating json output to /home/opendaylight/p4lang/tutorials-master/SIGCOMM_2015/flowlet_switching/solution/p4src/simple_router.json</p><p><br></p><p><br></p><p><br></p></div>