Check if the application is trying to create filters using
broadcast and multicast MAC address and reject it.

Signed-off-by: Ajit Khaparde <ajit.khapa...@broadcom.com>
Reviewed-by: Rahul Gupta <rahul.gu...@broadcom.com>
Reviewed-by: Santoshkumar Karanappa Rastapur <santosh.rasta...@broadcom.com>
---
 drivers/net/bnxt/bnxt_flow.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/net/bnxt/bnxt_flow.c b/drivers/net/bnxt/bnxt_flow.c
index aed822ee3..578081890 100644
--- a/drivers/net/bnxt/bnxt_flow.c
+++ b/drivers/net/bnxt/bnxt_flow.c
@@ -217,6 +217,14 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp,
                        }
 
                        if (rte_is_broadcast_ether_addr(&eth_mask->dst)) {
+                               if (!rte_is_unicast_ether_addr(&eth_spec->dst)) 
{
+                                       rte_flow_error_set(error,
+                                                          EINVAL,
+                                                          
RTE_FLOW_ERROR_TYPE_ITEM,
+                                                          item,
+                                                          "DMAC is invalid");
+                                       return -rte_errno;
+                               }
                                rte_memcpy(filter->dst_macaddr,
                                           &eth_spec->dst, RTE_ETHER_ADDR_LEN);
                                en |= use_ntuple ?
@@ -231,6 +239,14 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp,
                        }
 
                        if (rte_is_broadcast_ether_addr(&eth_mask->src)) {
+                               if (!rte_is_unicast_ether_addr(&eth_spec->src)) 
{
+                                       rte_flow_error_set(error,
+                                                          EINVAL,
+                                                          
RTE_FLOW_ERROR_TYPE_ITEM,
+                                                          item,
+                                                          "SMAC is invalid");
+                                       return -rte_errno;
+                               }
                                rte_memcpy(filter->src_macaddr,
                                           &eth_spec->src, RTE_ETHER_ADDR_LEN);
                                en |= use_ntuple ?
-- 
2.20.1 (Apple Git-117)

Reply via email to