iplink: add support for xstats subcommand
This patch adds support for a new xstats link subcommand which uses the specified link type's new parse/print_ifla_xstats callbacks to display extended statistics. Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
parent
bb8771573a
commit
94f1a22aa7
|
|
@ -8,7 +8,7 @@ IPOBJ=ip.o ipaddress.o ipaddrlabel.o iproute.o iprule.o ipnetns.o \
|
||||||
link_iptnl.o link_gre6.o iplink_bond.o iplink_bond_slave.o iplink_hsr.o \
|
link_iptnl.o link_gre6.o iplink_bond.o iplink_bond_slave.o iplink_hsr.o \
|
||||||
iplink_bridge.o iplink_bridge_slave.o ipfou.o iplink_ipvlan.o \
|
iplink_bridge.o iplink_bridge_slave.o ipfou.o iplink_ipvlan.o \
|
||||||
iplink_geneve.o iplink_vrf.o iproute_lwtunnel.o ipmacsec.o ipila.o \
|
iplink_geneve.o iplink_vrf.o iproute_lwtunnel.o ipmacsec.o ipila.o \
|
||||||
ipvrf.o
|
ipvrf.o iplink_xstats.o
|
||||||
|
|
||||||
RTMONOBJ=rtmon.o
|
RTMONOBJ=rtmon.o
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ void vrf_reset(void);
|
||||||
int netns_identify_pid(const char *pidstr, char *name, int len);
|
int netns_identify_pid(const char *pidstr, char *name, int len);
|
||||||
|
|
||||||
int iplink_get(unsigned int flags, char *name, __u32 filt_mask);
|
int iplink_get(unsigned int flags, char *name, __u32 filt_mask);
|
||||||
|
int iplink_ifla_xstats(int argc, char **argv);
|
||||||
|
|
||||||
static inline int rtm_get_table(struct rtmsg *r, struct rtattr **tb)
|
static inline int rtm_get_table(struct rtmsg *r, struct rtattr **tb)
|
||||||
{
|
{
|
||||||
|
|
@ -85,9 +86,13 @@ struct link_util {
|
||||||
void (*print_opt)(struct link_util *, FILE *,
|
void (*print_opt)(struct link_util *, FILE *,
|
||||||
struct rtattr *[]);
|
struct rtattr *[]);
|
||||||
void (*print_xstats)(struct link_util *, FILE *,
|
void (*print_xstats)(struct link_util *, FILE *,
|
||||||
struct rtattr *);
|
struct rtattr *);
|
||||||
void (*print_help)(struct link_util *, int, char **,
|
void (*print_help)(struct link_util *, int, char **,
|
||||||
FILE *);
|
FILE *);
|
||||||
|
int (*parse_ifla_xstats)(struct link_util *,
|
||||||
|
int, char **);
|
||||||
|
int (*print_ifla_xstats)(const struct sockaddr_nl *,
|
||||||
|
struct nlmsghdr *, void *);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct link_util *get_link_kind(const char *kind);
|
struct link_util *get_link_kind(const char *kind);
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,8 @@ void iplink_usage(void)
|
||||||
"\n"
|
"\n"
|
||||||
" ip link show [ DEVICE | group GROUP ] [up] [master DEV] [vrf NAME] [type TYPE]\n");
|
" ip link show [ DEVICE | group GROUP ] [up] [master DEV] [vrf NAME] [type TYPE]\n");
|
||||||
|
|
||||||
|
fprintf(stderr, "\n ip link xstats type TYPE [ ARGS ]\n");
|
||||||
|
|
||||||
if (iplink_have_newlink()) {
|
if (iplink_have_newlink()) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\n"
|
"\n"
|
||||||
|
|
@ -1411,6 +1413,9 @@ int do_iplink(int argc, char **argv)
|
||||||
matches(*argv, "list") == 0)
|
matches(*argv, "list") == 0)
|
||||||
return ipaddr_list_link(argc-1, argv+1);
|
return ipaddr_list_link(argc-1, argv+1);
|
||||||
|
|
||||||
|
if (matches(*argv, "xstats") == 0)
|
||||||
|
return iplink_ifla_xstats(argc-1, argv+1);
|
||||||
|
|
||||||
if (matches(*argv, "help") == 0) {
|
if (matches(*argv, "help") == 0) {
|
||||||
do_help(argc-1, argv+1);
|
do_help(argc-1, argv+1);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,11 @@ ip-link \- network device configuration
|
||||||
.B vrf
|
.B vrf
|
||||||
.IR NAME " ]"
|
.IR NAME " ]"
|
||||||
|
|
||||||
|
.ti -8
|
||||||
|
.B ip link xstats
|
||||||
|
.BI type " TYPE"
|
||||||
|
.RI "[ " ARGS " ]"
|
||||||
|
|
||||||
.ti -8
|
.ti -8
|
||||||
.B ip link help
|
.B ip link help
|
||||||
.RI "[ " TYPE " ]"
|
.RI "[ " TYPE " ]"
|
||||||
|
|
@ -1616,6 +1621,13 @@ interface list by comparing it with the relevant attribute in case the kernel
|
||||||
didn't filter already. Therefore any string is accepted, but may lead to empty
|
didn't filter already. Therefore any string is accepted, but may lead to empty
|
||||||
output.
|
output.
|
||||||
|
|
||||||
|
.SS ip link xstats - display extended statistics
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.BI type " TYPE "
|
||||||
|
.I TYPE
|
||||||
|
specifies the type of devices to display extended statistics for.
|
||||||
|
|
||||||
.SS ip link help - display help
|
.SS ip link help - display help
|
||||||
|
|
||||||
.PP
|
.PP
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue