aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/include/odp_classification_inlines.h
diff options
context:
space:
mode:
Diffstat (limited to 'platform/linux-generic/include/odp_classification_inlines.h')
-rw-r--r--platform/linux-generic/include/odp_classification_inlines.h377
1 files changed, 0 insertions, 377 deletions
diff --git a/platform/linux-generic/include/odp_classification_inlines.h b/platform/linux-generic/include/odp_classification_inlines.h
deleted file mode 100644
index 2747db8cc..000000000
--- a/platform/linux-generic/include/odp_classification_inlines.h
+++ /dev/null
@@ -1,377 +0,0 @@
-/* Copyright (c) 2014, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP Classification Inlines
- * Classification Inlines Functions
- */
-#ifndef __ODP_CLASSIFICATION_INLINES_H_
-#define __ODP_CLASSIFICATION_INLINES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/debug.h>
-#include <protocols/eth.h>
-#include <protocols/ip.h>
-#include <protocols/ipsec.h>
-#include <protocols/udp.h>
-#include <protocols/tcp.h>
-#include <odp_packet_internal.h>
-#include <stdio.h>
-#include <inttypes.h>
-
-/* PMR term value verification function
-These functions verify the given PMR term value with the value in the packet
-These following functions return 1 on success and 0 on failure
-*/
-
-static inline int verify_pmr_packet_len(odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- if (term_value->match.value == (packet_len(pkt_hdr) &
- term_value->match.mask))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_ip_proto(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- const _odp_ipv4hdr_t *ip;
- uint8_t proto;
- if (!pkt_hdr->p.input_flags.ipv4)
- return 0;
- ip = (const _odp_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset);
- proto = ip->proto;
- if (term_value->match.value == (proto & term_value->match.mask))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_ipv4_saddr(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- const _odp_ipv4hdr_t *ip;
- uint32_t ipaddr;
- if (!pkt_hdr->p.input_flags.ipv4)
- return 0;
- ip = (const _odp_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset);
- ipaddr = odp_be_to_cpu_32(ip->src_addr);
- if (term_value->match.value == (ipaddr & term_value->match.mask))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_ipv4_daddr(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- const _odp_ipv4hdr_t *ip;
- uint32_t ipaddr;
- if (!pkt_hdr->p.input_flags.ipv4)
- return 0;
- ip = (const _odp_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset);
- ipaddr = odp_be_to_cpu_32(ip->dst_addr);
- if (term_value->match.value == (ipaddr & term_value->match.mask))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_tcp_sport(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- uint16_t sport;
- const _odp_tcphdr_t *tcp;
- if (!pkt_hdr->p.input_flags.tcp)
- return 0;
- tcp = (const _odp_tcphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset);
- sport = odp_be_to_cpu_16(tcp->src_port);
- if (term_value->match.value == (sport & term_value->match.mask))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_tcp_dport(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- uint16_t dport;
- const _odp_tcphdr_t *tcp;
- if (!pkt_hdr->p.input_flags.tcp)
- return 0;
- tcp = (const _odp_tcphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset);
- dport = odp_be_to_cpu_16(tcp->dst_port);
- if (term_value->match.value == (dport & term_value->match.mask))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_udp_dport(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- uint16_t dport;
- const _odp_udphdr_t *udp;
- if (!pkt_hdr->p.input_flags.udp)
- return 0;
- udp = (const _odp_udphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset);
- dport = odp_be_to_cpu_16(udp->dst_port);
- if (term_value->match.value == (dport & term_value->match.mask))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_udp_sport(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- uint16_t sport;
- const _odp_udphdr_t *udp;
-
- if (!pkt_hdr->p.input_flags.udp)
- return 0;
- udp = (const _odp_udphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset);
- sport = odp_be_to_cpu_16(udp->src_port);
- if (term_value->match.value == (sport & term_value->match.mask))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_dmac(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- uint64_t dmac = 0;
- uint64_t dmac_be = 0;
- const _odp_ethhdr_t *eth;
-
- if (!packet_hdr_has_eth(pkt_hdr))
- return 0;
-
- eth = (const _odp_ethhdr_t *)(pkt_addr + pkt_hdr->p.l2_offset);
- memcpy(&dmac_be, eth->dst.addr, _ODP_ETHADDR_LEN);
- dmac = odp_be_to_cpu_64(dmac_be);
- /* since we are converting a 48 bit ethernet address from BE to cpu
- format using odp_be_to_cpu_64() the last 16 bits needs to be right
- shifted */
- if (dmac_be != dmac)
- dmac = dmac >> (64 - (_ODP_ETHADDR_LEN * 8));
-
- if (term_value->match.value == (dmac & term_value->match.mask))
- return 1;
- return 0;
-}
-
-static inline int verify_pmr_ipv6_saddr(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- const _odp_ipv6hdr_t *ipv6;
- uint64_t addr[2];
-
- if (!packet_hdr_has_ipv6(pkt_hdr))
- return 0;
-
- ipv6 = (const _odp_ipv6hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset);
-
- addr[0] = ipv6->src_addr.u64[0];
- addr[1] = ipv6->src_addr.u64[1];
-
- /* 128 bit address is processed as two 64 bit value
- * for bitwise AND operation */
- addr[0] = addr[0] & term_value->match_ipv6.mask.u64[0];
- addr[1] = addr[1] & term_value->match_ipv6.mask.u64[1];
-
- if (!memcmp(addr, term_value->match_ipv6.addr.u8, _ODP_IPV6ADDR_LEN))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_ipv6_daddr(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- const _odp_ipv6hdr_t *ipv6;
- uint64_t addr[2];
-
- if (!packet_hdr_has_ipv6(pkt_hdr))
- return 0;
- ipv6 = (const _odp_ipv6hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset);
- addr[0] = ipv6->dst_addr.u64[0];
- addr[1] = ipv6->dst_addr.u64[1];
-
- /* 128 bit address is processed as two 64 bit value
- * for bitwise AND operation */
- addr[0] = addr[0] & term_value->match_ipv6.mask.u64[0];
- addr[1] = addr[1] & term_value->match_ipv6.mask.u64[1];
-
- if (!memcmp(addr, term_value->match_ipv6.addr.u8, _ODP_IPV6ADDR_LEN))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_vlan_id_0(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- const _odp_ethhdr_t *eth;
- const _odp_vlanhdr_t *vlan;
- uint16_t tci;
- uint16_t vlan_id;
-
- if (!pkt_hdr->p.input_flags.vlan_qinq)
- return 0;
-
- eth = (const _odp_ethhdr_t *)(pkt_addr + pkt_hdr->p.l2_offset);
- vlan = (const _odp_vlanhdr_t *)(eth + 1);
- tci = odp_be_to_cpu_16(vlan->tci);
- vlan_id = tci & 0x0fff;
-
- if (term_value->match.value == (vlan_id & term_value->match.mask))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_vlan_id_x(const uint8_t *pkt_addr ODP_UNUSED,
- odp_packet_hdr_t *pkt_hdr ODP_UNUSED,
- pmr_term_value_t *term_value ODP_UNUSED)
-{
- const _odp_ethhdr_t *eth;
- const _odp_vlanhdr_t *vlan;
- uint16_t tci;
- uint16_t vlan_id;
-
- if (!pkt_hdr->p.input_flags.vlan_qinq)
- return 0;
-
- eth = (const _odp_ethhdr_t *)(pkt_addr + pkt_hdr->p.l2_offset);
- vlan = (const _odp_vlanhdr_t *)(eth + 1);
- vlan++;
- tci = odp_be_to_cpu_16(vlan->tci);
- vlan_id = tci & 0x0fff;
-
- if (term_value->match.value == (vlan_id & term_value->match.mask))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_ipsec_spi(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- uint32_t spi;
-
- pkt_addr += pkt_hdr->p.l4_offset;
-
- if (pkt_hdr->p.input_flags.ipsec_ah) {
- const _odp_ahhdr_t *ahhdr = (const _odp_ahhdr_t *)pkt_addr;
-
- spi = odp_be_to_cpu_32(ahhdr->spi);
- } else if (pkt_hdr->p.input_flags.ipsec_esp) {
- const _odp_esphdr_t *esphdr = (const _odp_esphdr_t *)pkt_addr;
-
- spi = odp_be_to_cpu_32(esphdr->spi);
- } else {
- return 0;
- }
-
- if (term_value->match.value == (spi & term_value->match.mask))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_ld_vni(const uint8_t *pkt_addr ODP_UNUSED,
- odp_packet_hdr_t *pkt_hdr ODP_UNUSED,
- pmr_term_value_t *term_value ODP_UNUSED)
-{
- ODP_UNIMPLEMENTED();
- return 0;
-}
-
-static inline int verify_pmr_custom_frame(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- uint64_t val = 0;
- uint32_t offset = term_value->offset;
- uint32_t val_sz = term_value->val_sz;
-
- ODP_ASSERT(val_sz <= ODP_PMR_TERM_BYTES_MAX);
-
- if (packet_len(pkt_hdr) <= offset + val_sz)
- return 0;
-
- memcpy(&val, pkt_addr + offset, val_sz);
- if (term_value->match.value == (val & term_value->match.mask))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_eth_type_0(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- const _odp_ethhdr_t *eth;
- uint16_t ethtype;
-
- if (!pkt_hdr->p.input_flags.vlan_qinq)
- return 0;
-
- eth = (const _odp_ethhdr_t *)(pkt_addr + pkt_hdr->p.l2_offset);
- ethtype = odp_be_to_cpu_16(eth->type);
-
- if (term_value->match.value == (ethtype & term_value->match.mask))
- return 1;
-
- return 0;
-}
-
-static inline int verify_pmr_eth_type_x(const uint8_t *pkt_addr,
- odp_packet_hdr_t *pkt_hdr,
- pmr_term_value_t *term_value)
-{
- const _odp_ethhdr_t *eth;
- uint16_t ethtype;
- const _odp_vlanhdr_t *vlan;
-
- if (!pkt_hdr->p.input_flags.vlan_qinq)
- return 0;
-
- eth = (const _odp_ethhdr_t *)(pkt_addr + pkt_hdr->p.l2_offset);
- vlan = (const _odp_vlanhdr_t *)(eth + 1);
- ethtype = odp_be_to_cpu_16(vlan->type);
-
- if (term_value->match.value == (ethtype & term_value->match.mask))
- return 1;
-
- return 0;
-}
-#ifdef __cplusplus
-}
-#endif
-#endif