[dpdk-dev] examples/ip_pipeline: check vlan and mpls params
Checks
Commit Message
From e346e359ed9c5e8261f09f93629bff56d7c10a11 Mon Sep 17 00:00:00 2001
From: "Jyoti, Anand B" <anand.b.jyoti@intel.com>
Date: Fri, 6 Jan 2017 08:40:55 +0530
Subject: [PATCH] examples/ip_pipeline: check vlan and mpls params
This commit add to CLI command check for the following errors
1. svlan and cvlan IDs greater than 12 bits
2. mpls ID greater than 20 bits
3. max number of supported mpls labels to avoid array overflow
It prevents running CLI commands with invalid parameters.
Signed-off-by: Jyoti, Anand B <anand.b.jyoti@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
examples/ip_pipeline/pipeline/pipeline_routing.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
Comments
On Fri, 6 Jan 2017 17:21:46 +0000
"Jyoti, Anand B" <anand.b.jyoti@intel.com> wrote:
> +
> + /* Max MPLS label value 20 bits */
> + for (i = 0; i < data->l2.mpls.n_labels; i++)
What ever editor or mail system you are using is putting a unicode space in that statement,
not visible to normal mail client, but causes checkpatch failure.
> +
> + /* Max MPLS label value 20 bits */
> + for (i =3D 0; i < data->l2.mpls.n_labels; i++)
Please fix the patch and resubmit
@@ -494,6 +494,26 @@ app_pipeline_routing_add_route(struct app_params *app,
/* data */
if (data->port_id >= p->n_ports_out)
return -1;
+
+ /* Valid range of VLAN tags 12 bits */
+ if (data->flags & PIPELINE_ROUTING_ROUTE_QINQ)
+ if ((data->l2.qinq.svlan & 0xF000) ||
+ (data->l2.qinq.cvlan & 0xF000))
+ return -1;
+
+ /* Max number of MPLS labels supported */
+ if (data->flags & PIPELINE_ROUTING_ROUTE_MPLS) {
+ uint32_t i;
+
+ if (data->l2.mpls.n_labels >
+ PIPELINE_ROUTING_MPLS_LABELS_MAX)
+ return -1;
+
+ /* Max MPLS label value 20 bits */
+ for (i = 0; i < data->l2.mpls.n_labels; i++)
+ if (data->l2.mpls.labels[i] & 0xFFF00000)
+ return -1;
+ }
}
break;