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(ð_mask->dst)) { + if (!rte_is_unicast_ether_addr(ð_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, ð_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(ð_mask->src)) { + if (!rte_is_unicast_ether_addr(ð_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, ð_spec->src, RTE_ETHER_ADDR_LEN); en |= use_ntuple ? -- 2.20.1 (Apple Git-117)