iproute2 add hoplimit parsing and update usage and documentation
- Parse and handle the hoplimit ip route option and add it to the usage line and documentation. - Add the missing reordering ip route option to the usage line. - Add documentation for initcwnd ip route option. Tested by setting hoplimit and retreiving it via "show". Signed-off-by: Gilad Ben-Yossef <gilad@codefidence.com> [ported to HEAD, fixed a bug with hoplimit lock handling, added documentation] Signed-off-by: Ori Finkelman <ori@comsleep.com> Signed-off-by: Yony Amit <yony@comsleep.com>
This commit is contained in:
parent
232642c28c
commit
71e5815105
|
|
@ -1324,7 +1324,17 @@ peers are allowed to send to us.
|
||||||
If it is not given, Linux uses the value selected with \verb|sysctl|
|
If it is not given, Linux uses the value selected with \verb|sysctl|
|
||||||
variable \verb|net/ipv4/tcp_reordering|.
|
variable \verb|net/ipv4/tcp_reordering|.
|
||||||
|
|
||||||
|
\item \verb|hoplimit NUMBER|
|
||||||
|
|
||||||
|
--- [2.5.74+ only] Maximum number of hops on the path to this destination.
|
||||||
|
The default is the value selected with the \verb|sysctl| variable
|
||||||
|
\verb|net/ipv4/ip_default_ttl|.
|
||||||
|
|
||||||
|
\item \verb|initcwnd NUMBER|
|
||||||
|
--- [2.5.70+ only] Initial congestion window size for connections to
|
||||||
|
this destination. Actual window size is this value multiplied by the
|
||||||
|
MSS (``Maximal Segment Size'') for same connection. The default is
|
||||||
|
zero, meaning to use the values specified in~\cite{RFC2414}.
|
||||||
|
|
||||||
\item \verb|nexthop NEXTHOP|
|
\item \verb|nexthop NEXTHOP|
|
||||||
|
|
||||||
|
|
@ -2653,6 +2663,9 @@ http://www.cisco.com/univercd/cc/td/doc/product/software/ios120.
|
||||||
\bibitem{RFC-DHCP} R.~Droms.
|
\bibitem{RFC-DHCP} R.~Droms.
|
||||||
``Dynamic Host Configuration Protocol.'', RFC-2131
|
``Dynamic Host Configuration Protocol.'', RFC-2131
|
||||||
|
|
||||||
|
\bibitem{RFC2414} M.~Allman, S.~Floyd, C.~Partridge.
|
||||||
|
``Increasing TCP's Initial Window'', RFC-2414.
|
||||||
|
|
||||||
\end{thebibliography}
|
\end{thebibliography}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
16
ip/iproute.c
16
ip/iproute.c
|
|
@ -65,10 +65,10 @@ static void usage(void)
|
||||||
fprintf(stderr, "INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...\n");
|
fprintf(stderr, "INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...\n");
|
||||||
fprintf(stderr, "NH := [ via ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS\n");
|
fprintf(stderr, "NH := [ via ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS\n");
|
||||||
fprintf(stderr, "OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]\n");
|
fprintf(stderr, "OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]\n");
|
||||||
fprintf(stderr, " [ rtt TIME ] [ rttvar TIME ]\n");
|
fprintf(stderr, " [ rtt TIME ] [ rttvar TIME ] [reordering NUMBER ]\n");
|
||||||
fprintf(stderr, " [ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]\n");
|
fprintf(stderr, " [ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]\n");
|
||||||
fprintf(stderr, " [ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]\n");
|
fprintf(stderr, " [ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]\n");
|
||||||
fprintf(stderr, " [ rto_min TIME ]\n");
|
fprintf(stderr, " [ rto_min TIME ] [ hoplimit NUMBER ] \n");
|
||||||
fprintf(stderr, "TYPE := [ unicast | local | broadcast | multicast | throw |\n");
|
fprintf(stderr, "TYPE := [ unicast | local | broadcast | multicast | throw |\n");
|
||||||
fprintf(stderr, " unreachable | prohibit | blackhole | nat ]\n");
|
fprintf(stderr, " unreachable | prohibit | blackhole | nat ]\n");
|
||||||
fprintf(stderr, "TABLE_ID := [ local | main | default | all | NUMBER ]\n");
|
fprintf(stderr, "TABLE_ID := [ local | main | default | all | NUMBER ]\n");
|
||||||
|
|
@ -763,6 +763,18 @@ int iproute_modify(int cmd, unsigned flags, int argc, char **argv)
|
||||||
if (get_unsigned(&mtu, *argv, 0))
|
if (get_unsigned(&mtu, *argv, 0))
|
||||||
invarg("\"mtu\" value is invalid\n", *argv);
|
invarg("\"mtu\" value is invalid\n", *argv);
|
||||||
rta_addattr32(mxrta, sizeof(mxbuf), RTAX_MTU, mtu);
|
rta_addattr32(mxrta, sizeof(mxbuf), RTAX_MTU, mtu);
|
||||||
|
#ifdef RTAX_HOPLIMIT
|
||||||
|
} else if (strcmp(*argv, "hoplimit") == 0) {
|
||||||
|
unsigned hoplimit;
|
||||||
|
NEXT_ARG();
|
||||||
|
if (strcmp(*argv, "lock") == 0) {
|
||||||
|
mxlock |= (1<<RTAX_HOPLIMIT);
|
||||||
|
NEXT_ARG();
|
||||||
|
}
|
||||||
|
if (get_unsigned(&hoplimit, *argv, 0))
|
||||||
|
invarg("\"hoplimit\" value is invalid\n", *argv);
|
||||||
|
rta_addattr32(mxrta, sizeof(mxbuf), RTAX_HOPLIMIT, hoplimit);
|
||||||
|
#endif
|
||||||
#ifdef RTAX_ADVMSS
|
#ifdef RTAX_ADVMSS
|
||||||
} else if (strcmp(*argv, "advmss") == 0) {
|
} else if (strcmp(*argv, "advmss") == 0) {
|
||||||
unsigned mss;
|
unsigned mss;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue