qcacmn: Check ICMPV4 and ICMV6 are redirect or not

Add API to check ICMPV4 and ICMPV6 are redirect or not
This is to avoid a security breach.

Change-Id: I61e7c54c6d9279c1e7d2f316381fbc1c83ce5b4a
CRs-Fixed: 3233925
This commit is contained in:
Author Amrit Sahai
2022-06-30 10:54:34 +05:30
committed by Madan Koyyalamudi
parent c58feb9240
commit dc5cc15bba
3 changed files with 44 additions and 0 deletions

View File

@@ -2077,6 +2077,33 @@ bool __qdf_nbuf_data_is_icmpv4_rsp(uint8_t *data)
return false;
}
bool __qdf_nbuf_data_is_icmpv4_redirect(uint8_t *data)
{
uint8_t op_code;
op_code = (uint8_t)(*(uint8_t *)(data +
QDF_NBUF_PKT_ICMPv4_OPCODE_OFFSET));
if (op_code == QDF_NBUF_PKT_ICMPV4_REDIRECT)
return true;
return false;
}
qdf_export_symbol(__qdf_nbuf_data_is_icmpv4_redirect);
bool __qdf_nbuf_data_is_icmpv6_redirect(uint8_t *data)
{
uint8_t subtype;
subtype = (uint8_t)(*(uint8_t *)(data + ICMPV6_SUBTYPE_OFFSET));
if (subtype == ICMPV6_REDIRECT)
return true;
return false;
}
qdf_export_symbol(__qdf_nbuf_data_is_icmpv6_redirect);
/**
* __qdf_nbuf_data_get_icmpv4_src_ip() - get icmpv4 src IP
* @data: Pointer to network data buffer
@@ -2311,6 +2338,8 @@ bool __qdf_nbuf_data_is_icmpv6_pkt(uint8_t *data)
return false;
}
qdf_export_symbol(__qdf_nbuf_data_is_icmpv6_pkt);
/**
* __qdf_nbuf_data_is_ipv4_udp_pkt() - check if it is IPV4 UDP packet.
* @data: Pointer to IPV4 UDP packet data buffer