<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi SidAli,</p>
<p><br>
</p>
<p>if that is the only rule you are creating then I don't think it
is enough. Please have a look at this snippet I made few years
back. <br>
</p>
<p><a class="moz-txt-link-freetext" href="https://gist.github.com/lukashino/8fe387caabe2750d396bc97f2d66066a">https://gist.github.com/lukashino/8fe387caabe2750d396bc97f2d66066a</a></p>
<p><br>
</p>
<p>There you first initialize the number of queues and then in the
follow-up rules the patterns you want to apply RSS to.</p>
<p><br>
</p>
<p>Cheers,</p>
<p>Lukas<br>
</p>
<div class="moz-cite-prefix">On 3/25/25 17:42, Sid ali cherrati
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CALn3+CMzLvE8hF4T0vdrit9S-wqb2nnETMByPY7aZ=4dQrhMGw@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div dir="ltr">
<div>Dear DPDK Team,</div>
<div><br>
</div>
<div>I hope this message finds you well. I am reaching out to
seek your expertise regarding an issue I am encountering
while configuring <b>DPDK flow rules with RSS</b> on an <b>Intel
X710 NIC</b> (using the <code>i40e</code> driver).
Despite multiple attempts, I have been unable to resolve the
error and would greatly appreciate your guidance.</div>
<div><br>
</div>
<div><b>Objective</b> :</div>
<div>Redirect UDP traffic (specific destination IP/port) to <b>multiple
RX queues</b> using <code>rte_flow</code> with RSS.<br>
<br>
</div>
<div><b>Error : </b><br>
Validation failed: RSS Queues not supported when pattern
specified .<br>
<br>
<p><b>Hardware/Software</b>:</p>
</div>
<div>
<ul>
<li>
<p>NIC: Intel X710</p>
</li>
<li>Driver: <code>i40e</code></li>
<li>
<p>DPDK Version: 23.11</p>
</li>
</ul>
<b>Code Snippet:</b><br>
<div
style="color:rgb(204,204,204);background-color:rgb(31,31,31);font-family:"Droid Sans Mono","monospace",monospace;font-weight:normal;font-size:14px;line-height:19px;white-space:pre"><div><span
style="color:rgb(86,156,214)">int</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(220,220,170)">flow_filtering</span><span
style="color:rgb(204,204,204)">(</span><span
style="color:rgb(78,201,176)">uint16_t</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">port_id</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(78,201,176)">uint32_t</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">ip_addr</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(78,201,176)">uint16_t</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">udp_port</span><span
style="color:rgb(204,204,204)">) {</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">struct</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(78,201,176)">rte_flow_error</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">error</span><span
style="color:rgb(204,204,204)">;</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">struct</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(78,201,176)">rte_flow_attr</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">attr</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> { .</span><span
style="color:rgb(156,220,254)">ingress</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(181,206,168)">1</span><span
style="color:rgb(204,204,204)">, .</span><span
style="color:rgb(156,220,254)">priority</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(181,206,168)">0</span><span
style="color:rgb(204,204,204)"> };</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">struct</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(78,201,176)">rte_flow_item</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">pattern</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">4</span><span
style="color:rgb(204,204,204)">];</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">struct</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(78,201,176)">rte_flow_action</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">action</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">2</span><span
style="color:rgb(204,204,204)">];</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">struct</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(78,201,176)">rte_flow</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">*</span><span
style="color:rgb(156,220,254)">flow</span><span
style="color:rgb(204,204,204)">;</span></div>
<div><span style="color:rgb(204,204,204)"> </span><span
style="color:rgb(106,153,85)">// Ethernet</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(220,220,170)">memset</span><span
style="color:rgb(204,204,204)">(</span><span
style="color:rgb(156,220,254)">pattern</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(181,206,168)">0</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(86,156,214)">sizeof</span><span
style="color:rgb(204,204,204)">(</span><span
style="color:rgb(156,220,254)">pattern</span><span
style="color:rgb(204,204,204)">));</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">pattern</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">0</span><span
style="color:rgb(204,204,204)">].</span><span
style="color:rgb(156,220,254)">type</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(79,193,255)">RTE_FLOW_ITEM_TYPE_ETH</span><span
style="color:rgb(204,204,204)">;</span></div>
<div><span style="color:rgb(204,204,204)"> </span><span
style="color:rgb(106,153,85)">// IPv4</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">struct</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(78,201,176)">rte_flow_item_ipv4</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">ipv4_spec</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> { .</span><span
style="color:rgb(156,220,254)">hdr</span><span
style="color:rgb(204,204,204)">.</span><span
style="color:rgb(156,220,254)">dst_addr</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">RTE_BE32</span><span
style="color:rgb(204,204,204)">(</span><span
style="color:rgb(156,220,254)">ip_addr</span><span
style="color:rgb(204,204,204)">) };</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">struct</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(78,201,176)">rte_flow_item_ipv4</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">ipv4_mask</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> { .</span><span
style="color:rgb(156,220,254)">hdr</span><span
style="color:rgb(204,204,204)">.</span><span
style="color:rgb(156,220,254)">dst_addr</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">RTE_BE32</span><span
style="color:rgb(204,204,204)">(</span><span
style="color:rgb(181,206,168)">0xFFFFFFFF</span><span
style="color:rgb(204,204,204)">) };</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">pattern</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">1</span><span
style="color:rgb(204,204,204)">].</span><span
style="color:rgb(156,220,254)">type</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(79,193,255)">RTE_FLOW_ITEM_TYPE_IPV4</span><span
style="color:rgb(204,204,204)">;</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">pattern</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">1</span><span
style="color:rgb(204,204,204)">].</span><span
style="color:rgb(156,220,254)">spec</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">&</span><span
style="color:rgb(156,220,254)">ipv4_spec</span><span
style="color:rgb(204,204,204)">;</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">pattern</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">1</span><span
style="color:rgb(204,204,204)">].</span><span
style="color:rgb(156,220,254)">mask</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">&</span><span
style="color:rgb(156,220,254)">ipv4_mask</span><span
style="color:rgb(204,204,204)">;</span></div>
<div><span style="color:rgb(204,204,204)"> </span><span
style="color:rgb(106,153,85)">// UDP</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">struct</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(78,201,176)">rte_flow_item_udp</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">udp_spec</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> { .</span><span
style="color:rgb(156,220,254)">hdr</span><span
style="color:rgb(204,204,204)">.</span><span
style="color:rgb(156,220,254)">dst_port</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">RTE_BE16</span><span
style="color:rgb(204,204,204)">(</span><span
style="color:rgb(156,220,254)">udp_port</span><span
style="color:rgb(204,204,204)">) };</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">struct</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(78,201,176)">rte_flow_item_udp</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">udp_mask</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> { .</span><span
style="color:rgb(156,220,254)">hdr</span><span
style="color:rgb(204,204,204)">.</span><span
style="color:rgb(156,220,254)">dst_port</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">RTE_BE16</span><span
style="color:rgb(204,204,204)">(</span><span
style="color:rgb(181,206,168)">0xFFFF</span><span
style="color:rgb(204,204,204)">) };</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">pattern</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">2</span><span
style="color:rgb(204,204,204)">].</span><span
style="color:rgb(156,220,254)">type</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(79,193,255)">RTE_FLOW_ITEM_TYPE_UDP</span><span
style="color:rgb(204,204,204)">;</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">pattern</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">2</span><span
style="color:rgb(204,204,204)">].</span><span
style="color:rgb(156,220,254)">spec</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">&</span><span
style="color:rgb(156,220,254)">udp_spec</span><span
style="color:rgb(204,204,204)">;</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">pattern</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">2</span><span
style="color:rgb(204,204,204)">].</span><span
style="color:rgb(156,220,254)">mask</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">&</span><span
style="color:rgb(156,220,254)">udp_mask</span><span
style="color:rgb(204,204,204)">;</span></div>
<div><span style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">pattern</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">3</span><span
style="color:rgb(204,204,204)">].</span><span
style="color:rgb(156,220,254)">type</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(79,193,255)">RTE_FLOW_ITEM_TYPE_END</span><span
style="color:rgb(204,204,204)">;</span></div>
<div><span style="color:rgb(204,204,204)"> </span><span
style="color:rgb(106,153,85)">// action</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">action</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">0</span><span
style="color:rgb(204,204,204)">].</span><span
style="color:rgb(156,220,254)">type</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(79,193,255)">RTE_FLOW_ACTION_TYPE_RSS</span><span
style="color:rgb(204,204,204)">;</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(106,153,85)">// struct rte_flow_action_queue queue_action = { .index = RX_ID };</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(106,153,85)">// action[0].conf = &queue_action;</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(106,153,85)">// Configuration RSS</span></div>
<div><span style="color:rgb(204,204,204)"> </span><span
style="color:rgb(78,201,176)">uint16_t</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">queues</span><span
style="color:rgb(86,156,214)">[]</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> {</span><span
style="color:rgb(181,206,168)">1</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(181,206,168)">2</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(181,206,168)">3</span><span
style="color:rgb(204,204,204)">};</span></div>
<div><span style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">struct</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(78,201,176)">rte_flow_action_rss</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">rss_conf</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> {</span></div><div><span
style="color:rgb(204,204,204)"> .</span><span
style="color:rgb(156,220,254)">func</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(79,193,255)">RTE_ETH_HASH_FUNCTION_DEFAULT</span><span
style="color:rgb(204,204,204)">,</span></div><div><span
style="color:rgb(204,204,204)"> .</span><span
style="color:rgb(156,220,254)">types</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">RTE_ETH_RSS_IPV4</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">|</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">RTE_ETH_RSS_UDP</span><span
style="color:rgb(204,204,204)">,</span></div><div><span
style="color:rgb(204,204,204)"> .</span><span
style="color:rgb(156,220,254)">key_len</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(181,206,168)">0</span><span
style="color:rgb(204,204,204)">,</span></div><div><span
style="color:rgb(204,204,204)"> .</span><span
style="color:rgb(156,220,254)">queue_num</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(181,206,168)">3</span><span
style="color:rgb(204,204,204)">,</span></div><div><span
style="color:rgb(204,204,204)"> .</span><span
style="color:rgb(156,220,254)">queue</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">queues</span><span
style="color:rgb(204,204,204)">,</span></div><div><span
style="color:rgb(204,204,204)"> };</span></div>
<div><span style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">action</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">0</span><span
style="color:rgb(204,204,204)">].</span><span
style="color:rgb(156,220,254)">type</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(79,193,255)">RTE_FLOW_ACTION_TYPE_RSS</span><span
style="color:rgb(204,204,204)">;</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">action</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">0</span><span
style="color:rgb(204,204,204)">].</span><span
style="color:rgb(156,220,254)">conf</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">&</span><span
style="color:rgb(156,220,254)">rss_conf</span><span
style="color:rgb(204,204,204)">;</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">action</span><span
style="color:rgb(204,204,204)">[</span><span
style="color:rgb(181,206,168)">1</span><span
style="color:rgb(204,204,204)">].</span><span
style="color:rgb(156,220,254)">type</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(79,193,255)">RTE_FLOW_ACTION_TYPE_END</span><span
style="color:rgb(204,204,204)">;</span></div><div><span
style="color:rgb(204,204,204)"> </span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(197,134,192)">if</span><span
style="color:rgb(204,204,204)"> (</span><span
style="color:rgb(220,220,170)">rte_flow_validate</span><span
style="color:rgb(204,204,204)">(</span><span
style="color:rgb(156,220,254)">port_id</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(212,212,212)">&</span><span
style="color:rgb(156,220,254)">attr</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(156,220,254)">pattern</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(156,220,254)">action</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(212,212,212)">&</span><span
style="color:rgb(156,220,254)">error</span><span
style="color:rgb(204,204,204)">) </span><span
style="color:rgb(212,212,212)">!=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(181,206,168)">0</span><span
style="color:rgb(204,204,204)">) {</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(220,220,170)">printf</span><span
style="color:rgb(204,204,204)">(</span><span
style="color:rgb(206,145,120)">"Validation Failure: </span><span
style="color:rgb(156,220,254)">%s</span><span
style="color:rgb(215,186,125)">\n</span><span
style="color:rgb(206,145,120)">"</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(156,220,254)">error</span><span
style="color:rgb(204,204,204)">.</span><span
style="color:rgb(156,220,254)">message</span><span
style="color:rgb(204,204,204)">);</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(197,134,192)">return</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">-</span><span
style="color:rgb(181,206,168)">1</span><span
style="color:rgb(204,204,204)">;</span></div><div><span
style="color:rgb(204,204,204)"> }</span></div><div><span
style="color:rgb(204,204,204)"> </span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(106,153,85)">// Flow rule creation</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(156,220,254)">flow</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">=</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(220,220,170)">rte_flow_create</span><span
style="color:rgb(204,204,204)">(</span><span
style="color:rgb(156,220,254)">port_id</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(212,212,212)">&</span><span
style="color:rgb(156,220,254)">attr</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(156,220,254)">pattern</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(156,220,254)">action</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(212,212,212)">&</span><span
style="color:rgb(156,220,254)">error</span><span
style="color:rgb(204,204,204)">);</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(197,134,192)">if</span><span
style="color:rgb(204,204,204)"> (</span><span
style="color:rgb(156,220,254)">flow</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">==</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(86,156,214)">NULL</span><span
style="color:rgb(204,204,204)">) {</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(220,220,170)">printf</span><span
style="color:rgb(204,204,204)">(</span><span
style="color:rgb(206,145,120)">"Error creating flow rule : </span><span
style="color:rgb(156,220,254)">%s</span><span
style="color:rgb(215,186,125)">\n</span><span
style="color:rgb(206,145,120)">"</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(156,220,254)">error</span><span
style="color:rgb(204,204,204)">.</span><span
style="color:rgb(156,220,254)">message</span><span
style="color:rgb(204,204,204)">);</span></div><div><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(197,134,192)">return</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">-</span><span
style="color:rgb(181,206,168)">1</span><span
style="color:rgb(204,204,204)">;</span></div><div><span
style="color:rgb(204,204,204)"> }</span></div>
<div><span style="color:rgb(204,204,204)"> </span><span
style="color:rgb(220,220,170)">printf</span><span
style="color:rgb(204,204,204)">(</span><span
style="color:rgb(206,145,120)">"Flow rule created for IP </span><span
style="color:rgb(156,220,254)">%u</span><span
style="color:rgb(206,145,120)">.</span><span
style="color:rgb(156,220,254)">%u</span><span
style="color:rgb(206,145,120)">.</span><span
style="color:rgb(156,220,254)">%u</span><span
style="color:rgb(206,145,120)">.</span><span
style="color:rgb(156,220,254)">%u</span><span
style="color:rgb(206,145,120)"> and UDP port </span><span
style="color:rgb(156,220,254)">%u</span><span
style="color:rgb(215,186,125)">\n</span><span
style="color:rgb(206,145,120)">"</span><span
style="color:rgb(204,204,204)">,</span></div><div><span
style="color:rgb(204,204,204)"> (</span><span
style="color:rgb(156,220,254)">ip_addr</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">>></span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(181,206,168)">24</span><span
style="color:rgb(204,204,204)">) </span><span
style="color:rgb(212,212,212)">&</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(181,206,168)">0xFF</span><span
style="color:rgb(204,204,204)">, (</span><span
style="color:rgb(156,220,254)">ip_addr</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">>></span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(181,206,168)">16</span><span
style="color:rgb(204,204,204)">) </span><span
style="color:rgb(212,212,212)">&</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(181,206,168)">0xFF</span><span
style="color:rgb(204,204,204)">,</span></div><div><span
style="color:rgb(204,204,204)"> (</span><span
style="color:rgb(156,220,254)">ip_addr</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">>></span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(181,206,168)">8</span><span
style="color:rgb(204,204,204)">) </span><span
style="color:rgb(212,212,212)">&</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(181,206,168)">0xFF</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(156,220,254)">ip_addr</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(212,212,212)">&</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(181,206,168)">0xFF</span><span
style="color:rgb(204,204,204)">, </span><span
style="color:rgb(156,220,254)">udp_port</span><span
style="color:rgb(204,204,204)">);</span></div>
<div><span style="color:rgb(204,204,204)"> </span><span
style="color:rgb(197,134,192)">return</span><span
style="color:rgb(204,204,204)"> </span><span
style="color:rgb(181,206,168)">0</span><span
style="color:rgb(204,204,204)">;</span></div><div><span
style="color:rgb(204,204,204)">}</span></div></div>
<br>
<p>I would be grateful for any insights, code examples, or
documentation references to resolve this issue. Please let
me know if additional details are required.</p>
<p>Thank you in advance for your time and support.</p>
<p>Best regards,<br>
</p>
<p>SidAli</p>
<br>
</div>
</div>
</div>
</blockquote>
</body>
</html>