diff --git a/man/man8/tc-pedit.8 b/man/man8/tc-pedit.8 index 6bba7419..c98d95cb 100644 --- a/man/man8/tc-pedit.8 +++ b/man/man8/tc-pedit.8 @@ -28,6 +28,8 @@ pedit - generic packet editor action .ti -8 .IR EXTENDED_LAYERED_OP " := { " .BI ip " IPHDR_FIELD" +| +.BI ip " EX_IPHDR_FIELD" .RI } " CMD_SPEC" .ti -8 @@ -39,6 +41,10 @@ pedit - generic packet editor action .IR BEYOND_IPHDR_FIELD " := { " .BR dport " | " sport " | " icmp_type " | " icmp_code " }" +.ti -8 +.IR EX_IPHDR_FIELD " := { " +.BR ttl " }" + .ti -8 .IR CMD_SPEC " := {" .BR clear " | " invert " | " set @@ -161,6 +167,17 @@ If it is not or the latter is bigger than the minimum of 20 bytes, this will do unexpected things. These fields are eight-bit values. .RE .TP +.BI ip " EX_IPHDR_FIELD" +Supported only when +.I ex +is used. The supported keywords for +.I EX_IPHDR_FIELD +are: +.RS +.TP +.B ttl +.RE +.TP .B clear Clear the addressed data (i.e., set it to zero). .TP diff --git a/tc/p_ip.c b/tc/p_ip.c index e56eb393..22fe6505 100644 --- a/tc/p_ip.c +++ b/tc/p_ip.c @@ -66,6 +66,12 @@ parse_ip(int *argc_p, char ***argv_p, res = parse_cmd(&argc, &argv, 1, TU32, 0x0f, sel, tkey); goto done; } + if (strcmp(*argv, "ttl") == 0) { + NEXT_ARG(); + tkey->off = 8; + res = parse_cmd(&argc, &argv, 1, TU32, RU8, sel, tkey); + goto done; + } if (strcmp(*argv, "protocol") == 0) { NEXT_ARG(); tkey->off = 9;