<div dir="ltr"><p>Dear [Support Team / DPDK Developers / Intel Support],</p>
<p>I hope this message finds you well.</p>
<p>I'm currently developing a server application based on <strong>DPDK 24.11</strong>, using an <strong>Intel X710 NIC</strong> with the <strong>i40e driver</strong>. In my application, I'm leveraging <strong>RTE Flow</strong> to filter UDP packets based on specific IP addresses and ports.</p>
<p>To direct matching traffic, I initially used the <strong>QUEUE action</strong>, but I observed that only one CPU core reaches 100% utilization, while the others remain idle. This indicates that <strong>RSS is being bypassed</strong>, resulting in a processing bottleneck.</p>
<p>To address this, I tried replacing the <strong>QUEUE action</strong> with <strong>RSS</strong>, but I encountered the following validation error:</p>
<blockquote>
<p><strong>Validation Failure: RSS Queues not supported when pattern specified</strong></p>
</blockquote>
<p>This raises a few questions:</p>
<ul><li>
<p>Is this a known limitation of the i40e driver or the X710 hardware?</p>
</li><li>
<p>Are there specific pattern constraints that prevent RSS from being used in this context?</p>
</li><li>
<p>Is there a recommended approach to enable per-core packet distribution while still applying fine-grained filtering?</p>
</li></ul>
<p>Below is a relevant snippet of the flow rule I'm using:</p>
<pre class="gmail-overflow-visible!"><div class="gmail-contain-inline-size gmail-rounded-md gmail-border-[0.5px] gmail-border-token-border-medium gmail-relative gmail-bg-token-sidebar-surface-primary"><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></div><div><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></div><div><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></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)">// Configuration 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)">// Configuration 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)">// Configuration 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><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)">// 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)">rss_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)">0</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><span style="color:rgb(181,206,168)">4</span><span style="color:rgb(204,204,204)">, </span><span style="color:rgb(181,206,168)">5</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(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><span style="color:rgb(86,156,214)">RTE_ETH_RSS_NONFRAG_IPV4_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)">6</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)">rss_queues</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><br><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 failed: </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(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></div></pre><p>Any guidance or clarification would be greatly appreciated.</p>
<p>Best regards,</p><p>Sid-Ali</p></div>