|
@@ -1430,6 +1430,84 @@ bool __qdf_nbuf_data_is_ipv4_arp_pkt(uint8_t *data)
|
|
|
}
|
|
|
EXPORT_SYMBOL(__qdf_nbuf_data_is_ipv4_arp_pkt);
|
|
|
|
|
|
+/**
|
|
|
+ * __qdf_nbuf_data_is_arp_req() - check if skb data is a arp request
|
|
|
+ * @data: Pointer to network data buffer
|
|
|
+ *
|
|
|
+ * This api is for ipv4 packet.
|
|
|
+ *
|
|
|
+ * Return: true if packet is ARP request
|
|
|
+ * false otherwise.
|
|
|
+ */
|
|
|
+bool __qdf_nbuf_data_is_arp_req(uint8_t *data)
|
|
|
+{
|
|
|
+ uint16_t op_code;
|
|
|
+
|
|
|
+ op_code = (uint16_t)(*(uint16_t *)(data +
|
|
|
+ QDF_NBUF_PKT_ARP_OPCODE_OFFSET));
|
|
|
+
|
|
|
+ if (op_code == QDF_SWAP_U16(QDF_NBUF_PKT_ARPOP_REQ))
|
|
|
+ return true;
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * __qdf_nbuf_data_is_arp_rsp() - check if skb data is a arp response
|
|
|
+ * @data: Pointer to network data buffer
|
|
|
+ *
|
|
|
+ * This api is for ipv4 packet.
|
|
|
+ *
|
|
|
+ * Return: true if packet is ARP response
|
|
|
+ * false otherwise.
|
|
|
+ */
|
|
|
+bool __qdf_nbuf_data_is_arp_rsp(uint8_t *data)
|
|
|
+{
|
|
|
+ uint16_t op_code;
|
|
|
+
|
|
|
+ op_code = (uint16_t)(*(uint16_t *)(data +
|
|
|
+ QDF_NBUF_PKT_ARP_OPCODE_OFFSET));
|
|
|
+
|
|
|
+ if (op_code == QDF_SWAP_U16(QDF_NBUF_PKT_ARPOP_REPLY))
|
|
|
+ return true;
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * __qdf_nbuf_data_get_arp_src_ip() - get arp src IP
|
|
|
+ * @data: Pointer to network data buffer
|
|
|
+ *
|
|
|
+ * This api is for ipv4 packet.
|
|
|
+ *
|
|
|
+ * Return: ARP packet source IP value.
|
|
|
+ */
|
|
|
+uint32_t __qdf_nbuf_get_arp_src_ip(uint8_t *data)
|
|
|
+{
|
|
|
+ uint32_t src_ip;
|
|
|
+
|
|
|
+ src_ip = (uint32_t)(*(uint32_t *)(data +
|
|
|
+ QDF_NBUF_PKT_ARP_SRC_IP_OFFSET));
|
|
|
+
|
|
|
+ return src_ip;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * __qdf_nbuf_data_get_arp_tgt_ip() - get arp target IP
|
|
|
+ * @data: Pointer to network data buffer
|
|
|
+ *
|
|
|
+ * This api is for ipv4 packet.
|
|
|
+ *
|
|
|
+ * Return: ARP packet target IP value.
|
|
|
+ */
|
|
|
+uint32_t __qdf_nbuf_get_arp_tgt_ip(uint8_t *data)
|
|
|
+{
|
|
|
+ uint32_t tgt_ip;
|
|
|
+
|
|
|
+ tgt_ip = (uint32_t)(*(uint32_t *)(data +
|
|
|
+ QDF_NBUF_PKT_ARP_TGT_IP_OFFSET));
|
|
|
+
|
|
|
+ return tgt_ip;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* __qdf_nbuf_data_is_ipv6_pkt() - check if it is IPV6 packet.
|
|
|
* @data: Pointer to IPV6 packet data buffer
|