examples/ip_pipeline: check VLAN and MPLS parameters
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: Anand B Jyoti <anand.b.jyoti@intel.com> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
This commit is contained in:
parent
45e1c8b782
commit
50c644fc1f
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user