]> git.droids-corp.org - dpdk.git/commitdiff
acl: remove old API
authorThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 1 Sep 2015 14:57:31 +0000 (16:57 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 3 Sep 2015 17:22:48 +0000 (19:22 +0200)
The functions and structures are moved to app/test in order to keep
existing unit tests. Some minor changes were done in these functions
because of library scope restrictions.
An enum is also copied in two other applications to keep existing code.
The library version is incremented.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
app/test-acl/main.c
app/test/test_acl.c
app/test/test_acl.h
doc/guides/rel_notes/deprecation.rst
doc/guides/rel_notes/release_2_2.rst
examples/l3fwd-acl/main.c
lib/librte_acl/Makefile
lib/librte_acl/rte_acl.c
lib/librte_acl/rte_acl.h
lib/librte_acl/rte_acl_version.map

index be3d773f4d42094e83ab0eff3ad36b7436d174dd..72ce83cbabcbdee793bf6983dd2cc3abc522dcf8 100644 (file)
@@ -162,6 +162,23 @@ enum {
        NUM_FIELDS_IPV4
 };
 
+/*
+ * That effectively defines order of IPV4VLAN classifications:
+ *  - PROTO
+ *  - VLAN (TAG and DOMAIN)
+ *  - SRC IP ADDRESS
+ *  - DST IP ADDRESS
+ *  - PORTS (SRC and DST)
+ */
+enum {
+       RTE_ACL_IPV4VLAN_PROTO,
+       RTE_ACL_IPV4VLAN_VLAN,
+       RTE_ACL_IPV4VLAN_SRC,
+       RTE_ACL_IPV4VLAN_DST,
+       RTE_ACL_IPV4VLAN_PORTS,
+       RTE_ACL_IPV4VLAN_NUM
+};
+
 struct rte_acl_field_def ipv4_defs[NUM_FIELDS_IPV4] = {
        {
                .type = RTE_ACL_FIELD_TYPE_BITMASK,
index b4a107d9ce57e16a846dfd5ee748e45ae7d418a7..2b8279044a3421d11dba612806177d25f44298be 100644 (file)
@@ -45,6 +45,8 @@
 
 #include "test_acl.h"
 
+#define        BIT_SIZEOF(x) (sizeof(x) * CHAR_BIT)
+
 #define LEN RTE_ACL_MAX_CATEGORIES
 
 RTE_ACL_RULE_DEF(acl_ipv4vlan_rule, RTE_ACL_IPV4VLAN_NUM_FIELDS);
@@ -100,6 +102,198 @@ bswap_test_data(struct ipv4_7tuple *data, int len, int to_be)
        }
 }
 
+static int
+acl_ipv4vlan_check_rule(const struct rte_acl_ipv4vlan_rule *rule)
+{
+       if (rule->src_port_low > rule->src_port_high ||
+                       rule->dst_port_low > rule->dst_port_high ||
+                       rule->src_mask_len > BIT_SIZEOF(rule->src_addr) ||
+                       rule->dst_mask_len > BIT_SIZEOF(rule->dst_addr))
+               return -EINVAL;
+       return 0;
+}
+
+static void
+acl_ipv4vlan_convert_rule(const struct rte_acl_ipv4vlan_rule *ri,
+       struct acl_ipv4vlan_rule *ro)
+{
+       ro->data = ri->data;
+
+       ro->field[RTE_ACL_IPV4VLAN_PROTO_FIELD].value.u8 = ri->proto;
+       ro->field[RTE_ACL_IPV4VLAN_VLAN1_FIELD].value.u16 = ri->vlan;
+       ro->field[RTE_ACL_IPV4VLAN_VLAN2_FIELD].value.u16 = ri->domain;
+       ro->field[RTE_ACL_IPV4VLAN_SRC_FIELD].value.u32 = ri->src_addr;
+       ro->field[RTE_ACL_IPV4VLAN_DST_FIELD].value.u32 = ri->dst_addr;
+       ro->field[RTE_ACL_IPV4VLAN_SRCP_FIELD].value.u16 = ri->src_port_low;
+       ro->field[RTE_ACL_IPV4VLAN_DSTP_FIELD].value.u16 = ri->dst_port_low;
+
+       ro->field[RTE_ACL_IPV4VLAN_PROTO_FIELD].mask_range.u8 = ri->proto_mask;
+       ro->field[RTE_ACL_IPV4VLAN_VLAN1_FIELD].mask_range.u16 = ri->vlan_mask;
+       ro->field[RTE_ACL_IPV4VLAN_VLAN2_FIELD].mask_range.u16 =
+               ri->domain_mask;
+       ro->field[RTE_ACL_IPV4VLAN_SRC_FIELD].mask_range.u32 =
+               ri->src_mask_len;
+       ro->field[RTE_ACL_IPV4VLAN_DST_FIELD].mask_range.u32 = ri->dst_mask_len;
+       ro->field[RTE_ACL_IPV4VLAN_SRCP_FIELD].mask_range.u16 =
+               ri->src_port_high;
+       ro->field[RTE_ACL_IPV4VLAN_DSTP_FIELD].mask_range.u16 =
+               ri->dst_port_high;
+}
+
+/*
+ * Add ipv4vlan rules to an existing ACL context.
+ * This function is not multi-thread safe.
+ *
+ * @param ctx
+ *   ACL context to add patterns to.
+ * @param rules
+ *   Array of rules to add to the ACL context.
+ *   Note that all fields in rte_acl_ipv4vlan_rule structures are expected
+ *   to be in host byte order.
+ * @param num
+ *   Number of elements in the input array of rules.
+ * @return
+ *   - -ENOMEM if there is no space in the ACL context for these rules.
+ *   - -EINVAL if the parameters are invalid.
+ *   - Zero if operation completed successfully.
+ */
+static int
+rte_acl_ipv4vlan_add_rules(struct rte_acl_ctx *ctx,
+       const struct rte_acl_ipv4vlan_rule *rules,
+       uint32_t num)
+{
+       int32_t rc;
+       uint32_t i;
+       struct acl_ipv4vlan_rule rv;
+
+       if (ctx == NULL || rules == NULL)
+               return -EINVAL;
+
+       /* check input rules. */
+       for (i = 0; i != num; i++) {
+               rc = acl_ipv4vlan_check_rule(rules + i);
+               if (rc != 0) {
+                       RTE_LOG(ERR, ACL, "%s: rule #%u is invalid\n",
+                               __func__, i + 1);
+                       return rc;
+               }
+       }
+
+       /* perform conversion to the internal format and add to the context. */
+       for (i = 0, rc = 0; i != num && rc == 0; i++) {
+               acl_ipv4vlan_convert_rule(rules + i, &rv);
+               rc = rte_acl_add_rules(ctx, (struct rte_acl_rule *)&rv, 1);
+       }
+
+       return rc;
+}
+
+static void
+acl_ipv4vlan_config(struct rte_acl_config *cfg,
+       const uint32_t layout[RTE_ACL_IPV4VLAN_NUM],
+       uint32_t num_categories)
+{
+       static const struct rte_acl_field_def
+               ipv4_defs[RTE_ACL_IPV4VLAN_NUM_FIELDS] = {
+               {
+                       .type = RTE_ACL_FIELD_TYPE_BITMASK,
+                       .size = sizeof(uint8_t),
+                       .field_index = RTE_ACL_IPV4VLAN_PROTO_FIELD,
+                       .input_index = RTE_ACL_IPV4VLAN_PROTO,
+               },
+               {
+                       .type = RTE_ACL_FIELD_TYPE_BITMASK,
+                       .size = sizeof(uint16_t),
+                       .field_index = RTE_ACL_IPV4VLAN_VLAN1_FIELD,
+                       .input_index = RTE_ACL_IPV4VLAN_VLAN,
+               },
+               {
+                       .type = RTE_ACL_FIELD_TYPE_BITMASK,
+                       .size = sizeof(uint16_t),
+                       .field_index = RTE_ACL_IPV4VLAN_VLAN2_FIELD,
+                       .input_index = RTE_ACL_IPV4VLAN_VLAN,
+               },
+               {
+                       .type = RTE_ACL_FIELD_TYPE_MASK,
+                       .size = sizeof(uint32_t),
+                       .field_index = RTE_ACL_IPV4VLAN_SRC_FIELD,
+                       .input_index = RTE_ACL_IPV4VLAN_SRC,
+               },
+               {
+                       .type = RTE_ACL_FIELD_TYPE_MASK,
+                       .size = sizeof(uint32_t),
+                       .field_index = RTE_ACL_IPV4VLAN_DST_FIELD,
+                       .input_index = RTE_ACL_IPV4VLAN_DST,
+               },
+               {
+                       .type = RTE_ACL_FIELD_TYPE_RANGE,
+                       .size = sizeof(uint16_t),
+                       .field_index = RTE_ACL_IPV4VLAN_SRCP_FIELD,
+                       .input_index = RTE_ACL_IPV4VLAN_PORTS,
+               },
+               {
+                       .type = RTE_ACL_FIELD_TYPE_RANGE,
+                       .size = sizeof(uint16_t),
+                       .field_index = RTE_ACL_IPV4VLAN_DSTP_FIELD,
+                       .input_index = RTE_ACL_IPV4VLAN_PORTS,
+               },
+       };
+
+       memcpy(&cfg->defs, ipv4_defs, sizeof(ipv4_defs));
+       cfg->num_fields = RTE_DIM(ipv4_defs);
+
+       cfg->defs[RTE_ACL_IPV4VLAN_PROTO_FIELD].offset =
+               layout[RTE_ACL_IPV4VLAN_PROTO];
+       cfg->defs[RTE_ACL_IPV4VLAN_VLAN1_FIELD].offset =
+               layout[RTE_ACL_IPV4VLAN_VLAN];
+       cfg->defs[RTE_ACL_IPV4VLAN_VLAN2_FIELD].offset =
+               layout[RTE_ACL_IPV4VLAN_VLAN] +
+               cfg->defs[RTE_ACL_IPV4VLAN_VLAN1_FIELD].size;
+       cfg->defs[RTE_ACL_IPV4VLAN_SRC_FIELD].offset =
+               layout[RTE_ACL_IPV4VLAN_SRC];
+       cfg->defs[RTE_ACL_IPV4VLAN_DST_FIELD].offset =
+               layout[RTE_ACL_IPV4VLAN_DST];
+       cfg->defs[RTE_ACL_IPV4VLAN_SRCP_FIELD].offset =
+               layout[RTE_ACL_IPV4VLAN_PORTS];
+       cfg->defs[RTE_ACL_IPV4VLAN_DSTP_FIELD].offset =
+               layout[RTE_ACL_IPV4VLAN_PORTS] +
+               cfg->defs[RTE_ACL_IPV4VLAN_SRCP_FIELD].size;
+
+       cfg->num_categories = num_categories;
+}
+
+/*
+ * Analyze set of ipv4vlan rules and build required internal
+ * run-time structures.
+ * This function is not multi-thread safe.
+ *
+ * @param ctx
+ *   ACL context to build.
+ * @param layout
+ *   Layout of input data to search through.
+ * @param num_categories
+ *   Maximum number of categories to use in that build.
+ * @return
+ *   - -ENOMEM if couldn't allocate enough memory.
+ *   - -EINVAL if the parameters are invalid.
+ *   - Negative error code if operation failed.
+ *   - Zero if operation completed successfully.
+ */
+static int
+rte_acl_ipv4vlan_build(struct rte_acl_ctx *ctx,
+       const uint32_t layout[RTE_ACL_IPV4VLAN_NUM],
+       uint32_t num_categories)
+{
+       struct rte_acl_config cfg;
+
+       if (ctx == NULL || layout == NULL)
+               return -EINVAL;
+
+       memset(&cfg, 0, sizeof(cfg));
+       acl_ipv4vlan_config(&cfg, layout, num_categories);
+       return rte_acl_build(ctx, &cfg);
+}
+
 /*
  * Test scalar and SSE ACL lookup.
  */
index 98135693843b3202314b26daec9c5057c4fdb4dc..421f3109b34bb81ed8582c4c82b1c340f303fe7c 100644 (file)
@@ -46,6 +46,65 @@ struct ipv4_7tuple {
        uint32_t deny;
 };
 
+/**
+ * Legacy support for 7-tuple IPv4 and VLAN rule.
+ * This structure and corresponding API is deprecated.
+ */
+struct rte_acl_ipv4vlan_rule {
+       struct rte_acl_rule_data data; /**< Miscellaneous data for the rule. */
+       uint8_t proto;                 /**< IPv4 protocol ID. */
+       uint8_t proto_mask;            /**< IPv4 protocol ID mask. */
+       uint16_t vlan;                 /**< VLAN ID. */
+       uint16_t vlan_mask;            /**< VLAN ID mask. */
+       uint16_t domain;               /**< VLAN domain. */
+       uint16_t domain_mask;          /**< VLAN domain mask. */
+       uint32_t src_addr;             /**< IPv4 source address. */
+       uint32_t src_mask_len;         /**< IPv4 source address mask. */
+       uint32_t dst_addr;             /**< IPv4 destination address. */
+       uint32_t dst_mask_len;         /**< IPv4 destination address mask. */
+       uint16_t src_port_low;         /**< L4 source port low. */
+       uint16_t src_port_high;        /**< L4 source port high. */
+       uint16_t dst_port_low;         /**< L4 destination port low. */
+       uint16_t dst_port_high;        /**< L4 destination port high. */
+};
+
+/**
+ * Specifies fields layout inside rte_acl_rule for rte_acl_ipv4vlan_rule.
+ */
+enum {
+       RTE_ACL_IPV4VLAN_PROTO_FIELD,
+       RTE_ACL_IPV4VLAN_VLAN1_FIELD,
+       RTE_ACL_IPV4VLAN_VLAN2_FIELD,
+       RTE_ACL_IPV4VLAN_SRC_FIELD,
+       RTE_ACL_IPV4VLAN_DST_FIELD,
+       RTE_ACL_IPV4VLAN_SRCP_FIELD,
+       RTE_ACL_IPV4VLAN_DSTP_FIELD,
+       RTE_ACL_IPV4VLAN_NUM_FIELDS
+};
+
+/**
+ * Macro to define rule size for rte_acl_ipv4vlan_rule.
+ */
+#define        RTE_ACL_IPV4VLAN_RULE_SZ        \
+       RTE_ACL_RULE_SZ(RTE_ACL_IPV4VLAN_NUM_FIELDS)
+
+/*
+ * That effectively defines order of IPV4VLAN classifications:
+ *  - PROTO
+ *  - VLAN (TAG and DOMAIN)
+ *  - SRC IP ADDRESS
+ *  - DST IP ADDRESS
+ *  - PORTS (SRC and DST)
+ */
+enum {
+       RTE_ACL_IPV4VLAN_PROTO,
+       RTE_ACL_IPV4VLAN_VLAN,
+       RTE_ACL_IPV4VLAN_SRC,
+       RTE_ACL_IPV4VLAN_DST,
+       RTE_ACL_IPV4VLAN_PORTS,
+       RTE_ACL_IPV4VLAN_NUM
+};
+
 /* rules for invalid layout test */
 struct rte_acl_ipv4vlan_rule invalid_layout_rules[] = {
                /* test src and dst address */
index c40764aa1bdba27b0a3b1512a152cf7f5f060c65..e7e213cb0fb78a41d26e023d988b871bb76a7f3d 100644 (file)
@@ -59,10 +59,6 @@ Deprecation Notices
 * The scheduler statistics structure will change to allow keeping track of
   RED actions.
 
-* librte_acl: The structure rte_acl_ipv4vlan_rule is deprecated and should
-  be removed as well as the associated functions rte_acl_ipv4vlan_add_rules
-  and rte_acl_ipv4vlan_build.
-
 * librte_cfgfile: In order to allow for longer names and values,
   the value of macros CFG_NAME_LEN and CFG_NAME_VAL will be increased.
   Most likely, the new values will be 64 and 256, respectively.
index 2a238c57b0ee128fbe732b1ce5639dd95d1ea386..6e73092085b427e27a56e30c9c00e7dc37a577d1 100644 (file)
@@ -19,6 +19,8 @@ API Changes
 * The function rte_eal_pci_close_one() is removed.
   It was replaced by rte_eal_pci_detach().
 
+* The deprecated ACL API ipv4vlan is removed.
+
 
 ABI Changes
 -----------
@@ -45,7 +47,7 @@ The libraries prepended with a plus sign were incremented in this version.
 .. code-block:: diff
 
    + libethdev.so.2
-     librte_acl.so.1
+   + librte_acl.so.2
      librte_cfgfile.so.1
      librte_cmdline.so.1
      librte_distributor.so.1
index f6126718eaeb5bdf01569b0b01405b475a55af95..f676d146c748693d93f22dc87cedd760a6197896 100644 (file)
@@ -261,6 +261,23 @@ enum {
        NUM_FIELDS_IPV4
 };
 
+/*
+ * That effectively defines order of IPV4VLAN classifications:
+ *  - PROTO
+ *  - VLAN (TAG and DOMAIN)
+ *  - SRC IP ADDRESS
+ *  - DST IP ADDRESS
+ *  - PORTS (SRC and DST)
+ */
+enum {
+       RTE_ACL_IPV4VLAN_PROTO,
+       RTE_ACL_IPV4VLAN_VLAN,
+       RTE_ACL_IPV4VLAN_SRC,
+       RTE_ACL_IPV4VLAN_DST,
+       RTE_ACL_IPV4VLAN_PORTS,
+       RTE_ACL_IPV4VLAN_NUM
+};
+
 struct rte_acl_field_def ipv4_defs[NUM_FIELDS_IPV4] = {
        {
                .type = RTE_ACL_FIELD_TYPE_BITMASK,
index 46acc2b847a1f562ccc2e53c423a07f1b587b7af..7a1cf8aa27564f0dd0537b4276f94ee753f8f6bd 100644 (file)
@@ -39,7 +39,7 @@ CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)
 
 EXPORT_MAP := rte_acl_version.map
 
-LIBABIVER := 1
+LIBABIVER := 2
 
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_ACL) += tb_mem.c
index a54d531ad0b6d46ba2a6ff8926c011f8b30ebcf7..d60219f4edd5f675971f361c9af3726032ee488b 100644 (file)
@@ -34,8 +34,6 @@
 #include <rte_acl.h>
 #include "acl.h"
 
-#define        BIT_SIZEOF(x)   (sizeof(x) * CHAR_BIT)
-
 TAILQ_HEAD(rte_acl_list, rte_tailq_entry);
 
 static struct rte_tailq_elem rte_acl_tailq = {
@@ -365,171 +363,3 @@ rte_acl_list_dump(void)
        }
        rte_rwlock_read_unlock(RTE_EAL_TAILQ_RWLOCK);
 }
-
-/*
- * Support for legacy ipv4vlan rules.
- */
-
-RTE_ACL_RULE_DEF(acl_ipv4vlan_rule, RTE_ACL_IPV4VLAN_NUM_FIELDS);
-
-static int
-acl_ipv4vlan_check_rule(const struct rte_acl_ipv4vlan_rule *rule)
-{
-       if (rule->src_port_low > rule->src_port_high ||
-                       rule->dst_port_low > rule->dst_port_high ||
-                       rule->src_mask_len > BIT_SIZEOF(rule->src_addr) ||
-                       rule->dst_mask_len > BIT_SIZEOF(rule->dst_addr))
-               return -EINVAL;
-
-       return acl_check_rule(&rule->data);
-}
-
-static void
-acl_ipv4vlan_convert_rule(const struct rte_acl_ipv4vlan_rule *ri,
-       struct acl_ipv4vlan_rule *ro)
-{
-       ro->data = ri->data;
-
-       ro->field[RTE_ACL_IPV4VLAN_PROTO_FIELD].value.u8 = ri->proto;
-       ro->field[RTE_ACL_IPV4VLAN_VLAN1_FIELD].value.u16 = ri->vlan;
-       ro->field[RTE_ACL_IPV4VLAN_VLAN2_FIELD].value.u16 = ri->domain;
-       ro->field[RTE_ACL_IPV4VLAN_SRC_FIELD].value.u32 = ri->src_addr;
-       ro->field[RTE_ACL_IPV4VLAN_DST_FIELD].value.u32 = ri->dst_addr;
-       ro->field[RTE_ACL_IPV4VLAN_SRCP_FIELD].value.u16 = ri->src_port_low;
-       ro->field[RTE_ACL_IPV4VLAN_DSTP_FIELD].value.u16 = ri->dst_port_low;
-
-       ro->field[RTE_ACL_IPV4VLAN_PROTO_FIELD].mask_range.u8 = ri->proto_mask;
-       ro->field[RTE_ACL_IPV4VLAN_VLAN1_FIELD].mask_range.u16 = ri->vlan_mask;
-       ro->field[RTE_ACL_IPV4VLAN_VLAN2_FIELD].mask_range.u16 =
-               ri->domain_mask;
-       ro->field[RTE_ACL_IPV4VLAN_SRC_FIELD].mask_range.u32 =
-               ri->src_mask_len;
-       ro->field[RTE_ACL_IPV4VLAN_DST_FIELD].mask_range.u32 = ri->dst_mask_len;
-       ro->field[RTE_ACL_IPV4VLAN_SRCP_FIELD].mask_range.u16 =
-               ri->src_port_high;
-       ro->field[RTE_ACL_IPV4VLAN_DSTP_FIELD].mask_range.u16 =
-               ri->dst_port_high;
-}
-
-int
-rte_acl_ipv4vlan_add_rules(struct rte_acl_ctx *ctx,
-       const struct rte_acl_ipv4vlan_rule *rules,
-       uint32_t num)
-{
-       int32_t rc;
-       uint32_t i;
-       struct acl_ipv4vlan_rule rv;
-
-       if (ctx == NULL || rules == NULL || ctx->rule_sz != sizeof(rv))
-               return -EINVAL;
-
-       /* check input rules. */
-       for (i = 0; i != num; i++) {
-               rc = acl_ipv4vlan_check_rule(rules + i);
-               if (rc != 0) {
-                       RTE_LOG(ERR, ACL, "%s(%s): rule #%u is invalid\n",
-                               __func__, ctx->name, i + 1);
-                       return rc;
-               }
-       }
-
-       if (num + ctx->num_rules > ctx->max_rules)
-               return -ENOMEM;
-
-       /* perform conversion to the internal format and add to the context. */
-       for (i = 0, rc = 0; i != num && rc == 0; i++) {
-               acl_ipv4vlan_convert_rule(rules + i, &rv);
-               rc = acl_add_rules(ctx, &rv, 1);
-       }
-
-       return rc;
-}
-
-static void
-acl_ipv4vlan_config(struct rte_acl_config *cfg,
-       const uint32_t layout[RTE_ACL_IPV4VLAN_NUM],
-       uint32_t num_categories)
-{
-       static const struct rte_acl_field_def
-               ipv4_defs[RTE_ACL_IPV4VLAN_NUM_FIELDS] = {
-               {
-                       .type = RTE_ACL_FIELD_TYPE_BITMASK,
-                       .size = sizeof(uint8_t),
-                       .field_index = RTE_ACL_IPV4VLAN_PROTO_FIELD,
-                       .input_index = RTE_ACL_IPV4VLAN_PROTO,
-               },
-               {
-                       .type = RTE_ACL_FIELD_TYPE_BITMASK,
-                       .size = sizeof(uint16_t),
-                       .field_index = RTE_ACL_IPV4VLAN_VLAN1_FIELD,
-                       .input_index = RTE_ACL_IPV4VLAN_VLAN,
-               },
-               {
-                       .type = RTE_ACL_FIELD_TYPE_BITMASK,
-                       .size = sizeof(uint16_t),
-                       .field_index = RTE_ACL_IPV4VLAN_VLAN2_FIELD,
-                       .input_index = RTE_ACL_IPV4VLAN_VLAN,
-               },
-               {
-                       .type = RTE_ACL_FIELD_TYPE_MASK,
-                       .size = sizeof(uint32_t),
-                       .field_index = RTE_ACL_IPV4VLAN_SRC_FIELD,
-                       .input_index = RTE_ACL_IPV4VLAN_SRC,
-               },
-               {
-                       .type = RTE_ACL_FIELD_TYPE_MASK,
-                       .size = sizeof(uint32_t),
-                       .field_index = RTE_ACL_IPV4VLAN_DST_FIELD,
-                       .input_index = RTE_ACL_IPV4VLAN_DST,
-               },
-               {
-                       .type = RTE_ACL_FIELD_TYPE_RANGE,
-                       .size = sizeof(uint16_t),
-                       .field_index = RTE_ACL_IPV4VLAN_SRCP_FIELD,
-                       .input_index = RTE_ACL_IPV4VLAN_PORTS,
-               },
-               {
-                       .type = RTE_ACL_FIELD_TYPE_RANGE,
-                       .size = sizeof(uint16_t),
-                       .field_index = RTE_ACL_IPV4VLAN_DSTP_FIELD,
-                       .input_index = RTE_ACL_IPV4VLAN_PORTS,
-               },
-       };
-
-       memcpy(&cfg->defs, ipv4_defs, sizeof(ipv4_defs));
-       cfg->num_fields = RTE_DIM(ipv4_defs);
-
-       cfg->defs[RTE_ACL_IPV4VLAN_PROTO_FIELD].offset =
-               layout[RTE_ACL_IPV4VLAN_PROTO];
-       cfg->defs[RTE_ACL_IPV4VLAN_VLAN1_FIELD].offset =
-               layout[RTE_ACL_IPV4VLAN_VLAN];
-       cfg->defs[RTE_ACL_IPV4VLAN_VLAN2_FIELD].offset =
-               layout[RTE_ACL_IPV4VLAN_VLAN] +
-               cfg->defs[RTE_ACL_IPV4VLAN_VLAN1_FIELD].size;
-       cfg->defs[RTE_ACL_IPV4VLAN_SRC_FIELD].offset =
-               layout[RTE_ACL_IPV4VLAN_SRC];
-       cfg->defs[RTE_ACL_IPV4VLAN_DST_FIELD].offset =
-               layout[RTE_ACL_IPV4VLAN_DST];
-       cfg->defs[RTE_ACL_IPV4VLAN_SRCP_FIELD].offset =
-               layout[RTE_ACL_IPV4VLAN_PORTS];
-       cfg->defs[RTE_ACL_IPV4VLAN_DSTP_FIELD].offset =
-               layout[RTE_ACL_IPV4VLAN_PORTS] +
-               cfg->defs[RTE_ACL_IPV4VLAN_SRCP_FIELD].size;
-
-       cfg->num_categories = num_categories;
-}
-
-int
-rte_acl_ipv4vlan_build(struct rte_acl_ctx *ctx,
-       const uint32_t layout[RTE_ACL_IPV4VLAN_NUM],
-       uint32_t num_categories)
-{
-       struct rte_acl_config cfg;
-
-       if (ctx == NULL || layout == NULL)
-               return -EINVAL;
-
-       memset(&cfg, 0, sizeof(cfg));
-       acl_ipv4vlan_config(&cfg, layout, num_categories);
-       return rte_acl_build(ctx, &cfg);
-}
index bd8f892e6f62ed094a2f2c02ceec2bd15c261ecc..98ef2fc9efafdedb7744a61724090f89e0a52fcc 100644 (file)
@@ -380,110 +380,6 @@ rte_acl_dump(const struct rte_acl_ctx *ctx);
 void
 rte_acl_list_dump(void);
 
-/**
- * Legacy support for 7-tuple IPv4 and VLAN rule.
- * This structure and corresponding API is deprecated.
- */
-struct rte_acl_ipv4vlan_rule {
-       struct rte_acl_rule_data data; /**< Miscellaneous data for the rule. */
-       uint8_t proto;                 /**< IPv4 protocol ID. */
-       uint8_t proto_mask;            /**< IPv4 protocol ID mask. */
-       uint16_t vlan;                 /**< VLAN ID. */
-       uint16_t vlan_mask;            /**< VLAN ID mask. */
-       uint16_t domain;               /**< VLAN domain. */
-       uint16_t domain_mask;          /**< VLAN domain mask. */
-       uint32_t src_addr;             /**< IPv4 source address. */
-       uint32_t src_mask_len;         /**< IPv4 source address mask. */
-       uint32_t dst_addr;             /**< IPv4 destination address. */
-       uint32_t dst_mask_len;         /**< IPv4 destination address mask. */
-       uint16_t src_port_low;         /**< L4 source port low. */
-       uint16_t src_port_high;        /**< L4 source port high. */
-       uint16_t dst_port_low;         /**< L4 destination port low. */
-       uint16_t dst_port_high;        /**< L4 destination port high. */
-};
-
-/**
- * Specifies fields layout inside rte_acl_rule for rte_acl_ipv4vlan_rule.
- */
-enum {
-       RTE_ACL_IPV4VLAN_PROTO_FIELD,
-       RTE_ACL_IPV4VLAN_VLAN1_FIELD,
-       RTE_ACL_IPV4VLAN_VLAN2_FIELD,
-       RTE_ACL_IPV4VLAN_SRC_FIELD,
-       RTE_ACL_IPV4VLAN_DST_FIELD,
-       RTE_ACL_IPV4VLAN_SRCP_FIELD,
-       RTE_ACL_IPV4VLAN_DSTP_FIELD,
-       RTE_ACL_IPV4VLAN_NUM_FIELDS
-};
-
-/**
- * Macro to define rule size for rte_acl_ipv4vlan_rule.
- */
-#define        RTE_ACL_IPV4VLAN_RULE_SZ        \
-       RTE_ACL_RULE_SZ(RTE_ACL_IPV4VLAN_NUM_FIELDS)
-
-/*
- * That effectively defines order of IPV4VLAN classifications:
- *  - PROTO
- *  - VLAN (TAG and DOMAIN)
- *  - SRC IP ADDRESS
- *  - DST IP ADDRESS
- *  - PORTS (SRC and DST)
- */
-enum {
-       RTE_ACL_IPV4VLAN_PROTO,
-       RTE_ACL_IPV4VLAN_VLAN,
-       RTE_ACL_IPV4VLAN_SRC,
-       RTE_ACL_IPV4VLAN_DST,
-       RTE_ACL_IPV4VLAN_PORTS,
-       RTE_ACL_IPV4VLAN_NUM
-};
-
-/**
- * Add ipv4vlan rules to an existing ACL context.
- * This function is not multi-thread safe.
- *
- * @param ctx
- *   ACL context to add patterns to.
- * @param rules
- *   Array of rules to add to the ACL context.
- *   Note that all fields in rte_acl_ipv4vlan_rule structures are expected
- *   to be in host byte order.
- * @param num
- *   Number of elements in the input array of rules.
- * @return
- *   - -ENOMEM if there is no space in the ACL context for these rules.
- *   - -EINVAL if the parameters are invalid.
- *   - Zero if operation completed successfully.
- */
-int
-rte_acl_ipv4vlan_add_rules(struct rte_acl_ctx *ctx,
-       const struct rte_acl_ipv4vlan_rule *rules,
-       uint32_t num);
-
-/**
- * Analyze set of ipv4vlan rules and build required internal
- * run-time structures.
- * This function is not multi-thread safe.
- *
- * @param ctx
- *   ACL context to build.
- * @param layout
- *   Layout of input data to search through.
- * @param num_categories
- *   Maximum number of categories to use in that build.
- * @return
- *   - -ENOMEM if couldn't allocate enough memory.
- *   - -EINVAL if the parameters are invalid.
- *   - Negative error code if operation failed.
- *   - Zero if operation completed successfully.
- */
-int
-rte_acl_ipv4vlan_build(struct rte_acl_ctx *ctx,
-       const uint32_t layout[RTE_ACL_IPV4VLAN_NUM],
-       uint32_t num_categories);
-
-
 #ifdef __cplusplus
 }
 #endif
index 3f9c8108e15495ca3535d777ee95be9b5264531c..b09370a104edc6236295246895bf72d7fb4dcd41 100644 (file)
@@ -10,8 +10,6 @@ DPDK_2.0 {
        rte_acl_dump;
        rte_acl_find_existing;
        rte_acl_free;
-       rte_acl_ipv4vlan_add_rules;
-       rte_acl_ipv4vlan_build;
        rte_acl_list_dump;
        rte_acl_reset;
        rte_acl_reset_rules;