<html 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=Windows-1252">
<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:Aptos;
panose-1:2 11 0 4 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:10.0pt;
font-family:"Aptos",sans-serif;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Aptos",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;
mso-ligatures:none;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="en-PS" link="#467886" vlink="#96607D" style="word-wrap:break-word">
<div class="WordSection1">
<div id="mail-editor-reference-message-container">
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt"><br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> Signed-off-by: Raslan Darawsheh <rasland@nvidia.com><br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> ---<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> app/test-pmd/csumonly.c | 8 +++++---<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> 1 file changed, 5 insertions(+), 3 deletions(-)<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> index 5b906eaa53..302cc4cc66 100644<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> --- a/app/test-pmd/csumonly.c<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> +++ b/app/test-pmd/csumonly.c<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> @@ -468,6 +468,7 @@ get_ethertype_by_ptype(struct rte_ether_hdr *eth_hdr, uint32_t ptype)<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> {<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> struct rte_vlan_hdr *vlan_hdr;<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> uint16_t ethertype;<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> + uint32_t i = 0;<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> switch (ptype) {<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> case RTE_PTYPE_L3_IPV4:<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> @@ -486,10 +487,11 @@ get_ethertype_by_ptype(struct rte_ether_hdr *eth_hdr, uint32_t ptype)<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> return _htons(RTE_ETHER_TYPE_IPV6);<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> default:<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> ethertype = eth_hdr->ether_type;<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> - while (eth_hdr->ether_type == _htons(RTE_ETHER_TYPE_VLAN) ||<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> - eth_hdr->ether_type == _htons(RTE_ETHER_TYPE_QINQ)) {<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> + while (ethertype == _htons(RTE_ETHER_TYPE_VLAN) ||<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> + ethertype == _htons(RTE_ETHER_TYPE_QINQ)) {<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> vlan_hdr = (struct rte_vlan_hdr *)<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> - ((char *)eth_hdr + sizeof(*eth_hdr));<br>
</span><span lang="EN-US" style="font-size:11.0pt">v</span><span style="font-size:11.0pt">> + ((char *)eth_hdr + sizeof(*eth_hdr) +<br>
</span><span lang="EN-US" style="font-size:11.0pt">v</span><span style="font-size:11.0pt">> + (i * sizeof(struct rte_vlan_hdr)));<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> ethertype = vlan_hdr->eth_proto;<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> }<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> return ethertype;<br>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">A loop like this is prone to getting attacked with a malicious packet.<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">You should cut it off after a few vlan headers.<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">Also. what if packet is truncated, shouldn't be reading past end of data.<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">And what if packet is fragmented, you need to use rte_pktmbuf_read()</span><span lang="EN-US" style="font-size:11.0pt"><br>
I’m trying to fix the current loop not really changing the logic, and I’m not sure we handled these cases originally.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">If needed, we can issue a separate patch for fixing these cases.
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">Kindest regards<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">Raslan Darawsheh<o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>