tc: pedit: parse_cmd: add flags argument

This patch just prepares the flags argument, so it's
available to the next patch.

Signed-off-by: Asbjørn Sloth Tønnesen <asbjorn@asbjorn.st>
Signed-off-by: David Ahern <dsahern@kernel.org>
This commit is contained in:
Asbjørn Sloth Tønnesen 2021-06-18 16:06:34 +00:00 committed by David Ahern
parent 6acccd52a2
commit bc5e8473aa
7 changed files with 34 additions and 34 deletions

View File

@ -330,7 +330,7 @@ static int parse_val(int *argc_p, char ***argv_p, __u32 *val, int type)
} }
int parse_cmd(int *argc_p, char ***argv_p, __u32 len, int type, __u32 retain, int parse_cmd(int *argc_p, char ***argv_p, __u32 len, int type, __u32 retain,
struct m_pedit_sel *sel, struct m_pedit_key *tkey) struct m_pedit_sel *sel, struct m_pedit_key *tkey, int flags)
{ {
__u32 mask[4] = { 0 }; __u32 mask[4] = { 0 };
__u32 val[4] = { 0 }; __u32 val[4] = { 0 };
@ -502,7 +502,7 @@ done:
NEXT_ARG(); NEXT_ARG();
} }
res = parse_cmd(&argc, &argv, len, TU32, retain, sel, tkey); res = parse_cmd(&argc, &argv, len, TU32, retain, sel, tkey, 0);
*argc_p = argc; *argc_p = argc;
*argv_p = argv; *argv_p = argv;

View File

@ -73,5 +73,5 @@ struct m_pedit_util {
int parse_cmd(int *argc_p, char ***argv_p, __u32 len, int type, int parse_cmd(int *argc_p, char ***argv_p, __u32 len, int type,
__u32 retain, __u32 retain,
struct m_pedit_sel *sel, struct m_pedit_key *tkey); struct m_pedit_sel *sel, struct m_pedit_key *tkey, int flags);
#endif #endif

View File

@ -41,21 +41,21 @@ parse_eth(int *argc_p, char ***argv_p,
if (strcmp(*argv, "type") == 0) { if (strcmp(*argv, "type") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 12; tkey->off = 12;
res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey); res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "dst") == 0) { if (strcmp(*argv, "dst") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 0; tkey->off = 0;
res = parse_cmd(&argc, &argv, 6, TMAC, RU32, sel, tkey); res = parse_cmd(&argc, &argv, 6, TMAC, RU32, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "src") == 0) { if (strcmp(*argv, "src") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 6; tkey->off = 6;
res = parse_cmd(&argc, &argv, 6, TMAC, RU32, sel, tkey); res = parse_cmd(&argc, &argv, 6, TMAC, RU32, sel, tkey, 0);
goto done; goto done;
} }

View File

@ -40,13 +40,13 @@ parse_ip(int *argc_p, char ***argv_p,
if (strcmp(*argv, "src") == 0) { if (strcmp(*argv, "src") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 12; tkey->off = 12;
res = parse_cmd(&argc, &argv, 4, TIPV4, RU32, sel, tkey); res = parse_cmd(&argc, &argv, 4, TIPV4, RU32, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "dst") == 0) { if (strcmp(*argv, "dst") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 16; tkey->off = 16;
res = parse_cmd(&argc, &argv, 4, TIPV4, RU32, sel, tkey); res = parse_cmd(&argc, &argv, 4, TIPV4, RU32, sel, tkey, 0);
goto done; goto done;
} }
/* jamal - look at these and make them either old or new /* jamal - look at these and make them either old or new
@ -56,64 +56,64 @@ parse_ip(int *argc_p, char ***argv_p,
if (strcmp(*argv, "tos") == 0 || matches(*argv, "dsfield") == 0) { if (strcmp(*argv, "tos") == 0 || matches(*argv, "dsfield") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 1; tkey->off = 1;
res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "ihl") == 0) { if (strcmp(*argv, "ihl") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 0; tkey->off = 0;
res = parse_cmd(&argc, &argv, 1, TU32, 0x0f, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, 0x0f, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "ttl") == 0) { if (strcmp(*argv, "ttl") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 8; tkey->off = 8;
res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "protocol") == 0) { if (strcmp(*argv, "protocol") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 9; tkey->off = 9;
res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey, 0);
goto done; goto done;
} }
/* jamal - fix this */ /* jamal - fix this */
if (matches(*argv, "precedence") == 0) { if (matches(*argv, "precedence") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 1; tkey->off = 1;
res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey, 0);
goto done; goto done;
} }
/* jamal - validate this at some point */ /* jamal - validate this at some point */
if (strcmp(*argv, "nofrag") == 0) { if (strcmp(*argv, "nofrag") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 6; tkey->off = 6;
res = parse_cmd(&argc, &argv, 1, TU32, 0x3F, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, 0x3F, sel, tkey, 0);
goto done; goto done;
} }
/* jamal - validate this at some point */ /* jamal - validate this at some point */
if (strcmp(*argv, "firstfrag") == 0) { if (strcmp(*argv, "firstfrag") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 6; tkey->off = 6;
res = parse_cmd(&argc, &argv, 1, TU32, 0x1F, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, 0x1F, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "ce") == 0) { if (strcmp(*argv, "ce") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 6; tkey->off = 6;
res = parse_cmd(&argc, &argv, 1, TU32, 0x80, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, 0x80, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "df") == 0) { if (strcmp(*argv, "df") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 6; tkey->off = 6;
res = parse_cmd(&argc, &argv, 1, TU32, 0x40, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, 0x40, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "mf") == 0) { if (strcmp(*argv, "mf") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 6; tkey->off = 6;
res = parse_cmd(&argc, &argv, 1, TU32, 0x20, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, 0x20, sel, tkey, 0);
goto done; goto done;
} }
@ -126,25 +126,25 @@ parse_ip(int *argc_p, char ***argv_p,
if (strcmp(*argv, "dport") == 0) { if (strcmp(*argv, "dport") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 22; tkey->off = 22;
res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey); res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "sport") == 0) { if (strcmp(*argv, "sport") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 20; tkey->off = 20;
res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey); res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "icmp_type") == 0) { if (strcmp(*argv, "icmp_type") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 20; tkey->off = 20;
res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "icmp_code") == 0) { if (strcmp(*argv, "icmp_code") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 20; tkey->off = 20;
res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey, 0);
goto done; goto done;
} }
return -1; return -1;

View File

@ -41,43 +41,43 @@ parse_ip6(int *argc_p, char ***argv_p,
if (strcmp(*argv, "src") == 0) { if (strcmp(*argv, "src") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 8; tkey->off = 8;
res = parse_cmd(&argc, &argv, 16, TIPV6, RU32, sel, tkey); res = parse_cmd(&argc, &argv, 16, TIPV6, RU32, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "dst") == 0) { if (strcmp(*argv, "dst") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 24; tkey->off = 24;
res = parse_cmd(&argc, &argv, 16, TIPV6, RU32, sel, tkey); res = parse_cmd(&argc, &argv, 16, TIPV6, RU32, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "flow_lbl") == 0) { if (strcmp(*argv, "flow_lbl") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 0; tkey->off = 0;
res = parse_cmd(&argc, &argv, 4, TU32, 0x0007ffff, sel, tkey); res = parse_cmd(&argc, &argv, 4, TU32, 0x0007ffff, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "payload_len") == 0) { if (strcmp(*argv, "payload_len") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 4; tkey->off = 4;
res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey); res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "nexthdr") == 0) { if (strcmp(*argv, "nexthdr") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 6; tkey->off = 6;
res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "hoplimit") == 0) { if (strcmp(*argv, "hoplimit") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 7; tkey->off = 7;
res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "traffic_class") == 0) { if (strcmp(*argv, "traffic_class") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 1; tkey->off = 1;
res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey, 0);
/* Shift the field by 4 bits on success. */ /* Shift the field by 4 bits on success. */
if (!res) { if (!res) {

View File

@ -41,21 +41,21 @@ parse_tcp(int *argc_p, char ***argv_p,
if (strcmp(*argv, "sport") == 0) { if (strcmp(*argv, "sport") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 0; tkey->off = 0;
res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey); res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "dport") == 0) { if (strcmp(*argv, "dport") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 2; tkey->off = 2;
res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey); res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "flags") == 0) { if (strcmp(*argv, "flags") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 13; tkey->off = 13;
res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey); res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey, 0);
goto done; goto done;
} }

View File

@ -41,14 +41,14 @@ parse_udp(int *argc_p, char ***argv_p,
if (strcmp(*argv, "sport") == 0) { if (strcmp(*argv, "sport") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 0; tkey->off = 0;
res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey); res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey, 0);
goto done; goto done;
} }
if (strcmp(*argv, "dport") == 0) { if (strcmp(*argv, "dport") == 0) {
NEXT_ARG(); NEXT_ARG();
tkey->off = 2; tkey->off = 2;
res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey); res = parse_cmd(&argc, &argv, 2, TU32, RU16, sel, tkey, 0);
goto done; goto done;
} }