X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=examples%2Fip_pipeline%2Fpipeline%2Fpipeline_flow_actions_be.c;h=3ad3ee63c975f7d7d88e60731aba14f4da121c9b;hb=f1aefdbf66df0edf5454fa85e37c9037e3e2315c;hp=ec149c8af5091935e518afb8dcec6b532532c81f;hpb=693f715da45c48ec1ec0fe4ba2f3b5ffd11ba53e;p=dpdk.git diff --git a/examples/ip_pipeline/pipeline/pipeline_flow_actions_be.c b/examples/ip_pipeline/pipeline/pipeline_flow_actions_be.c index ec149c8af5..3ad3ee63c9 100644 --- a/examples/ip_pipeline/pipeline/pipeline_flow_actions_be.c +++ b/examples/ip_pipeline/pipeline/pipeline_flow_actions_be.c @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright(c) 2010-2015 Intel Corporation. All rights reserved. + * Copyright(c) 2010-2016 Intel Corporation. All rights reserved. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -42,6 +42,7 @@ #include "pipeline_actions_common.h" #include "pipeline_flow_actions_be.h" +#include "parser.h" #include "hash_func.h" int @@ -415,80 +416,118 @@ pipeline_fa_parse_args(struct pipeline_fa_params *p, /* n_flows */ if (strcmp(arg_name, "n_flows") == 0) { - if (n_flows_present) - return -1; + int status; + PIPELINE_PARSE_ERR_DUPLICATE( + n_flows_present == 0, params->name, + arg_name); n_flows_present = 1; - p->n_flows = atoi(arg_value); - if (p->n_flows == 0) - return -1; + status = parser_read_uint32(&p->n_flows, + arg_value); + PIPELINE_PARSE_ERR_INV_VAL(((status != -EINVAL) && + (p->n_flows != 0)), params->name, + arg_name, arg_value); + PIPELINE_PARSE_ERR_OUT_RNG((status != -ERANGE), + params->name, arg_name, arg_value); continue; } /* n_meters_per_flow */ if (strcmp(arg_name, "n_meters_per_flow") == 0) { - if (n_meters_per_flow_present) - return -1; + int status; + PIPELINE_PARSE_ERR_DUPLICATE( + n_meters_per_flow_present == 0, + params->name, arg_name); n_meters_per_flow_present = 1; - p->n_meters_per_flow = atoi(arg_value); - if ((p->n_meters_per_flow == 0) || - (p->n_meters_per_flow > PIPELINE_FA_N_TC_MAX)) - return -1; + status = parser_read_uint32(&p->n_meters_per_flow, + arg_value); + PIPELINE_PARSE_ERR_INV_VAL(((status != -EINVAL) && + (p->n_meters_per_flow != 0)), + params->name, arg_name, arg_value); + PIPELINE_PARSE_ERR_OUT_RNG(((status != -ERANGE) && + (p->n_meters_per_flow <= + PIPELINE_FA_N_TC_MAX)), params->name, + arg_name, arg_value); continue; } /* flow_id_offset */ if (strcmp(arg_name, "flow_id_offset") == 0) { - if (flow_id_offset_present) - return -1; + int status; + PIPELINE_PARSE_ERR_DUPLICATE( + flow_id_offset_present == 0, + params->name, arg_name); flow_id_offset_present = 1; - p->flow_id_offset = atoi(arg_value); + status = parser_read_uint32(&p->flow_id_offset, + arg_value); + PIPELINE_PARSE_ERR_INV_VAL((status != -EINVAL), + params->name, arg_name, arg_value); + PIPELINE_PARSE_ERR_OUT_RNG((status != -ERANGE), + params->name, arg_name, arg_value); continue; } /* ip_hdr_offset */ if (strcmp(arg_name, "ip_hdr_offset") == 0) { - if (ip_hdr_offset_present) - return -1; + int status; + PIPELINE_PARSE_ERR_DUPLICATE( + ip_hdr_offset_present == 0, + params->name, arg_name); ip_hdr_offset_present = 1; - p->ip_hdr_offset = atoi(arg_value); + status = parser_read_uint32(&p->ip_hdr_offset, + arg_value); + PIPELINE_PARSE_ERR_INV_VAL((status != -EINVAL), + params->name, arg_name, arg_value); + PIPELINE_PARSE_ERR_OUT_RNG((status != -ERANGE), + params->name, arg_name, arg_value); continue; } /* color_offset */ if (strcmp(arg_name, "color_offset") == 0) { - if (color_offset_present) - return -1; + int status; + PIPELINE_PARSE_ERR_DUPLICATE( + color_offset_present == 0, params->name, + arg_name); color_offset_present = 1; + status = parser_read_uint32(&p->color_offset, + arg_value); + PIPELINE_PARSE_ERR_INV_VAL((status != -EINVAL), + params->name, arg_name, arg_value); + PIPELINE_PARSE_ERR_OUT_RNG((status != -ERANGE), + params->name, arg_name, arg_value); + p->dscp_enabled = 1; - p->color_offset = atoi(arg_value); continue; } /* Unknown argument */ - return -1; + PIPELINE_PARSE_ERR_INV_ENT(0, params->name, arg_name); } /* Check that mandatory arguments are present */ - if ((n_flows_present == 0) || - (flow_id_offset_present == 0) || - (ip_hdr_offset_present == 0) || - (color_offset_present == 0)) - return -1; + PIPELINE_PARSE_ERR_MANDATORY((n_flows_present), params->name, + "n_flows"); + PIPELINE_PARSE_ERR_MANDATORY((flow_id_offset_present), + params->name, "flow_id_offset"); + PIPELINE_PARSE_ERR_MANDATORY((ip_hdr_offset_present), + params->name, "ip_hdr_offset"); + PIPELINE_PARSE_ERR_MANDATORY((color_offset_present), params->name, + "color_offset"); return 0; } @@ -585,7 +624,6 @@ static void *pipeline_fa_init(struct pipeline_params *params, .arg_create = pipeline_port_out_params_convert( ¶ms->port_out[i]), .f_action = NULL, - .f_action_bulk = NULL, .arg_ah = NULL, };