Merge branch 'master' into net-next

This commit is contained in:
Stephen Hemminger 2016-08-29 10:57:02 -07:00
commit f7708201f8
3 changed files with 18 additions and 19 deletions

View File

@ -417,22 +417,22 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
fprintf(fp, "dev %s ", ll_index_to_name(*(int *)RTA_DATA(tb[RTA_OIF]))); fprintf(fp, "dev %s ", ll_index_to_name(*(int *)RTA_DATA(tb[RTA_OIF])));
if (table && (table != RT_TABLE_MAIN || show_details > 0) && !filter.tb) if (table && (table != RT_TABLE_MAIN || show_details > 0) && !filter.tb)
fprintf(fp, " table %s ", rtnl_rttable_n2a(table, b1, sizeof(b1))); fprintf(fp, "table %s ", rtnl_rttable_n2a(table, b1, sizeof(b1)));
if (!(r->rtm_flags&RTM_F_CLONED)) { if (!(r->rtm_flags&RTM_F_CLONED)) {
if ((r->rtm_protocol != RTPROT_BOOT || show_details > 0) && filter.protocolmask != -1) if ((r->rtm_protocol != RTPROT_BOOT || show_details > 0) && filter.protocolmask != -1)
fprintf(fp, " proto %s ", rtnl_rtprot_n2a(r->rtm_protocol, b1, sizeof(b1))); fprintf(fp, "proto %s ", rtnl_rtprot_n2a(r->rtm_protocol, b1, sizeof(b1)));
if ((r->rtm_scope != RT_SCOPE_UNIVERSE || show_details > 0) && filter.scopemask != -1) if ((r->rtm_scope != RT_SCOPE_UNIVERSE || show_details > 0) && filter.scopemask != -1)
fprintf(fp, " scope %s ", rtnl_rtscope_n2a(r->rtm_scope, b1, sizeof(b1))); fprintf(fp, "scope %s ", rtnl_rtscope_n2a(r->rtm_scope, b1, sizeof(b1)));
} }
if (tb[RTA_PREFSRC] && filter.rprefsrc.bitlen != host_len) { if (tb[RTA_PREFSRC] && filter.rprefsrc.bitlen != host_len) {
/* Do not use format_host(). It is our local addr /* Do not use format_host(). It is our local addr
and symbolic name will not be useful. and symbolic name will not be useful.
*/ */
fprintf(fp, " src %s ", fprintf(fp, "src %s ",
rt_addr_n2a_rta(r->rtm_family, tb[RTA_PREFSRC])); rt_addr_n2a_rta(r->rtm_family, tb[RTA_PREFSRC]));
} }
if (tb[RTA_PRIORITY]) if (tb[RTA_PRIORITY])
fprintf(fp, " metric %u ", rta_getattr_u32(tb[RTA_PRIORITY])); fprintf(fp, "metric %u ", rta_getattr_u32(tb[RTA_PRIORITY]));
if (r->rtm_flags & RTNH_F_DEAD) if (r->rtm_flags & RTNH_F_DEAD)
fprintf(fp, "dead "); fprintf(fp, "dead ");
if (r->rtm_flags & RTNH_F_ONLINK) if (r->rtm_flags & RTNH_F_ONLINK)
@ -450,9 +450,9 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
if (mark) { if (mark) {
if (mark >= 16) if (mark >= 16)
fprintf(fp, " mark 0x%x", mark); fprintf(fp, "mark 0x%x ", mark);
else else
fprintf(fp, " mark %u", mark); fprintf(fp, "mark %u ", mark);
} }
} }

View File

@ -26,10 +26,10 @@ police - policing action
.ti -8 .ti -8
.IR CONTROL " :=" .IR CONTROL " :="
.BI conform-exceed " EXCEEDACT\fR[\fB/\fIEXCEEDACT" .BI conform-exceed " EXCEEDACT\fR[\fB/\fINOTEXCEEDACT"
.ti -8 .ti -8
.IR EXCEEDACT " := { " .IR EXCEEDACT/NOTEXCEEDACT " := { "
.BR pipe " | " ok " | " reclassify " | " drop " | " continue " }" .BR pipe " | " ok " | " reclassify " | " drop " | " continue " }"
.SH DESCRIPTION .SH DESCRIPTION
The The
@ -94,11 +94,9 @@ Fine-tune the in-kernel packet rate estimator.
are time values and control the frequency in which samples are taken and over are time values and control the frequency in which samples are taken and over
what timespan an average is built. what timespan an average is built.
.TP .TP
.BI conform-exceed " EXCEEDACT\fR[\fB/\fIEXCEEDACT\fR]" .BI conform-exceed " EXCEEDACT\fR[\fB/\fINOTEXCEEDACT\fR]"
Define how to handle packets which exceed (and, if the second Define how to handle packets which exceed or conform the
.I EXCEEDACT configured bandwidth limit. Possible values are:
is given, also those who don't), the configured bandwidth limit. Possible values
are:
.RS .RS
.IP continue .IP continue
Don't do anything, just continue with the next action in line. Don't do anything, just continue with the next action in line.

View File

@ -36,11 +36,12 @@ static void usage(void)
{ {
fprintf(stderr, "Usage: ... police rate BPS burst BYTES[/BYTES] [ mtu BYTES[/BYTES] ]\n"); fprintf(stderr, "Usage: ... police rate BPS burst BYTES[/BYTES] [ mtu BYTES[/BYTES] ]\n");
fprintf(stderr, " [ peakrate BPS ] [ avrate BPS ] [ overhead BYTES ]\n"); fprintf(stderr, " [ peakrate BPS ] [ avrate BPS ] [ overhead BYTES ]\n");
fprintf(stderr, " [ linklayer TYPE ] [ ACTIONTERM ]\n"); fprintf(stderr, " [ linklayer TYPE ] [ CONTROL ]\n");
fprintf(stderr, "New Syntax ACTIONTERM := conform-exceed <EXCEEDACT>[/NOTEXCEEDACT]\n"); fprintf(stderr, "Where: CONTROL := conform-exceed <EXCEEDACT>[/NOTEXCEEDACT]\n");
fprintf(stderr, "Where: *EXCEEDACT := pipe | ok | reclassify | drop | continue\n"); fprintf(stderr, " Define how to handle packets which exceed (<EXCEEDACT>)\n");
fprintf(stderr, "Where: pipe is only valid for new syntax\n"); fprintf(stderr, " or conform (<NOTEXCEEDACT>) the configured bandwidth limit.\n");
fprintf(stderr, " EXCEEDACT/NOTEXCEEDACT := { pipe | ok | reclassify | drop | continue }\n");
exit(-1); exit(-1);
} }
@ -322,7 +323,7 @@ int print_police(struct action_util *a, FILE *f, struct rtattr *arg)
if (tb[TCA_POLICE_RESULT]) { if (tb[TCA_POLICE_RESULT]) {
__u32 action = rta_getattr_u32(tb[TCA_POLICE_RESULT]); __u32 action = rta_getattr_u32(tb[TCA_POLICE_RESULT]);
fprintf(f, "/%s", action_n2a(action)); fprintf(f, "/%s ", action_n2a(action));
} else } else
fprintf(f, " "); fprintf(f, " ");