<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><br><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><br><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><br><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><br><br><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><br><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><br><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><br><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><br><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><br><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><br><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>