+ if ((n_tokens != 64) ||
+ /* flow */
+ strcmp(tokens[0], "flow") ||
+ parser_read_uint32(&flow_ids[i], tokens[1]) ||
+
+ /* meter & policer 0 */
+ strcmp(tokens[2], "meter") ||
+ strcmp(tokens[3], "0") ||
+ strcmp(tokens[4], "trtcm") ||
+ parser_read_uint64(&p[i].m[0].cir, tokens[5]) ||
+ parser_read_uint64(&p[i].m[0].pir, tokens[6]) ||
+ parser_read_uint64(&p[i].m[0].cbs, tokens[7]) ||
+ parser_read_uint64(&p[i].m[0].pbs, tokens[8]) ||
+ strcmp(tokens[9], "policer") ||
+ strcmp(tokens[10], "0") ||
+ strcmp(tokens[11], "g") ||
+ string_to_policer_action(tokens[12],
+ &p[i].p[0].action[e_RTE_METER_GREEN]) ||
+ strcmp(tokens[13], "y") ||
+ string_to_policer_action(tokens[14],
+ &p[i].p[0].action[e_RTE_METER_YELLOW]) ||
+ strcmp(tokens[15], "r") ||
+ string_to_policer_action(tokens[16],
+ &p[i].p[0].action[e_RTE_METER_RED]) ||
+
+ /* meter & policer 1 */
+ strcmp(tokens[17], "meter") ||
+ strcmp(tokens[18], "1") ||
+ strcmp(tokens[19], "trtcm") ||
+ parser_read_uint64(&p[i].m[1].cir, tokens[20]) ||
+ parser_read_uint64(&p[i].m[1].pir, tokens[21]) ||
+ parser_read_uint64(&p[i].m[1].cbs, tokens[22]) ||
+ parser_read_uint64(&p[i].m[1].pbs, tokens[23]) ||
+ strcmp(tokens[24], "policer") ||
+ strcmp(tokens[25], "1") ||
+ strcmp(tokens[26], "g") ||
+ string_to_policer_action(tokens[27],
+ &p[i].p[1].action[e_RTE_METER_GREEN]) ||
+ strcmp(tokens[28], "y") ||
+ string_to_policer_action(tokens[29],
+ &p[i].p[1].action[e_RTE_METER_YELLOW]) ||
+ strcmp(tokens[30], "r") ||
+ string_to_policer_action(tokens[31],
+ &p[i].p[1].action[e_RTE_METER_RED]) ||
+
+ /* meter & policer 2 */
+ strcmp(tokens[32], "meter") ||
+ strcmp(tokens[33], "2") ||
+ strcmp(tokens[34], "trtcm") ||
+ parser_read_uint64(&p[i].m[2].cir, tokens[35]) ||
+ parser_read_uint64(&p[i].m[2].pir, tokens[36]) ||
+ parser_read_uint64(&p[i].m[2].cbs, tokens[37]) ||
+ parser_read_uint64(&p[i].m[2].pbs, tokens[38]) ||
+ strcmp(tokens[39], "policer") ||
+ strcmp(tokens[40], "2") ||
+ strcmp(tokens[41], "g") ||
+ string_to_policer_action(tokens[42],
+ &p[i].p[2].action[e_RTE_METER_GREEN]) ||
+ strcmp(tokens[43], "y") ||
+ string_to_policer_action(tokens[44],
+ &p[i].p[2].action[e_RTE_METER_YELLOW]) ||
+ strcmp(tokens[45], "r") ||
+ string_to_policer_action(tokens[46],
+ &p[i].p[2].action[e_RTE_METER_RED]) ||
+
+ /* meter & policer 3 */
+ strcmp(tokens[47], "meter") ||
+ strcmp(tokens[48], "3") ||
+ strcmp(tokens[49], "trtcm") ||
+ parser_read_uint64(&p[i].m[3].cir, tokens[50]) ||
+ parser_read_uint64(&p[i].m[3].pir, tokens[51]) ||
+ parser_read_uint64(&p[i].m[3].cbs, tokens[52]) ||
+ parser_read_uint64(&p[i].m[3].pbs, tokens[53]) ||
+ strcmp(tokens[54], "policer") ||
+ strcmp(tokens[55], "3") ||
+ strcmp(tokens[56], "g") ||
+ string_to_policer_action(tokens[57],
+ &p[i].p[3].action[e_RTE_METER_GREEN]) ||
+ strcmp(tokens[58], "y") ||
+ string_to_policer_action(tokens[59],
+ &p[i].p[3].action[e_RTE_METER_YELLOW]) ||
+ strcmp(tokens[60], "r") ||
+ string_to_policer_action(tokens[61],
+ &p[i].p[3].action[e_RTE_METER_RED]) ||
+
+ /* port */
+ strcmp(tokens[62], "port") ||
+ parser_read_uint32(&p[i].port_id, tokens[63]))
+ goto error1;
+
+ i++;