pedit: Do not allow using retain for too big fields

Using retain for fields longer than 32 bits is not supported.
Do not allow user to do it.

Signed-off-by: Amir Vadai <amir@vadai.me>
This commit is contained in:
Amir Vadai 2017-05-14 11:17:44 +03:00 committed by Stephen Hemminger
parent 290cdc058d
commit cdca191862
2 changed files with 8 additions and 1 deletions

View File

@ -266,7 +266,8 @@ Keep the addressed data as is.
.BI retain " RVAL"
This optional extra part of
.I CMD_SPEC
allows to exclude bits from being changed.
allows to exclude bits from being changed. Supported only for 32 bits fields
or smaller.
.TP
.I CONTROL
The following keywords allow to control how the tree of qdisc, classes,

View File

@ -353,6 +353,12 @@ int parse_cmd(int *argc_p, char ***argv_p, __u32 len, int type, __u32 retain,
argv++;
}
if (len > 4 && retain != ~0) {
fprintf(stderr,
"retain is not supported for fields longer the 32 bits\n");
return -1;
}
if (type == TMAC) {
res = pack_mac(sel, tkey, (__u8 *)val);
goto done;