From: Roopa Prabhu <roopa@cumulusnetworks.com>
To: Vadim Kochan <vadim4j@gmail.com>
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH iproute2] ip link: Show devices by link type
Date: Tue, 02 Dec 2014 16:55:44 -0800 [thread overview]
Message-ID: <547E5F90.2060105@cumulusnetworks.com> (raw)
In-Reply-To: <1417370335-15772-1-git-send-email-vadim4j@gmail.com>
On 11/30/14, 9:58 AM, Vadim Kochan wrote:
> Added new option 'type' to 'ip link show'
> command which allows to filter devices by
> link type name:
>
> ip link show type bridge
> ip link show type vlan
>
> Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
> ---
> ip/ipaddress.c | 24 ++++++++++++++++++++++++
> ip/iplink.c | 2 +-
> man/man8/ip-link.8.in | 20 +++++++++++++++++++-
> 3 files changed, 44 insertions(+), 2 deletions(-)
>
> diff --git a/ip/ipaddress.c b/ip/ipaddress.c
> index 4d99324..a2f7a83 100644
> --- a/ip/ipaddress.c
> +++ b/ip/ipaddress.c
> @@ -57,6 +57,7 @@ static struct
> int flushe;
> int group;
> int master;
> + char *link_kind;
The name can be just "kind", given all the others dont use the link prefix
> } filter;
>
> static int do_link;
> @@ -189,6 +190,18 @@ static void print_linkmode(FILE *f, struct rtattr *tb)
> fprintf(f, "mode %s ", link_modes[mode]);
> }
>
> +static char *parse_link_kind(struct rtattr *tb)
> +{
> + struct rtattr *linkinfo[IFLA_INFO_MAX+1];
> +
> + parse_rtattr_nested(linkinfo, IFLA_INFO_MAX, tb);
> +
> + if (linkinfo[IFLA_INFO_KIND])
> + return RTA_DATA(linkinfo[IFLA_INFO_KIND]);
> +
> + return "";
> +}
> +
> static void print_linktype(FILE *fp, struct rtattr *tb)
> {
> struct rtattr *linkinfo[IFLA_INFO_MAX+1];
> @@ -551,6 +564,14 @@ int print_linkinfo(const struct sockaddr_nl *who,
> else if (filter.master > 0)
> return -1;
>
> + if (filter.link_kind && tb[IFLA_LINKINFO]) {
> + char *link_kind = parse_link_kind(tb[IFLA_LINKINFO]);
> + if (strcmp(link_kind, filter.link_kind)) {
> + return -1;
> + }
you can skip the braces
> + } else if (filter.link_kind)
you have if (filter.link_kind) twice, you can use a single if without
the else.
> + return -1;
> +
> if (n->nlmsg_type == RTM_DELLINK)
> fprintf(fp, "Deleted ");
>
> @@ -1293,6 +1314,9 @@ static int ipaddr_list_flush_or_save(int argc, char **argv, int action)
> if (!ifindex)
> invarg("Device does not exist\n", *argv);
> filter.master = ifindex;
> + } else if (do_link && strcmp(*argv, "type") == 0) {
> + NEXT_ARG();
> + filter.link_kind = *argv;
> } else {
> if (strcmp(*argv, "dev") == 0) {
> NEXT_ARG();
> diff --git a/ip/iplink.c b/ip/iplink.c
> index ce6eb3e..f9a75d5 100644
> --- a/ip/iplink.c
> +++ b/ip/iplink.c
> @@ -82,7 +82,7 @@ void iplink_usage(void)
> fprintf(stderr, " [ master DEVICE ]\n");
> fprintf(stderr, " [ nomaster ]\n");
> fprintf(stderr, " [ addrgenmode { eui64 | none } ]\n");
> - fprintf(stderr, " ip link show [ DEVICE | group GROUP ] [up] [master DEV]\n");
> + fprintf(stderr, " ip link show [ DEVICE | group GROUP ] [up] [master DEV] [type TYPE]\n");
>
> if (iplink_have_newlink()) {
> fprintf(stderr, " ip link help [ TYPE ]\n");
> diff --git a/man/man8/ip-link.8.in b/man/man8/ip-link.8.in
> index 9d4e3da..4233291 100644
> --- a/man/man8/ip-link.8.in
> +++ b/man/man8/ip-link.8.in
> @@ -148,7 +148,9 @@ ip-link \- network device configuration
> .IR GROUP " | "
> .BR up " | "
> .B master
> -.IR DEVICE " ]"
> +.IR DEVICE " | "
> +.B type
> +.IR TYPE " ]"
>
> .ti -8
> .B ip link help
> @@ -688,6 +690,12 @@ only display running interfaces.
> .I DEVICE
> specifies the master device which enslaves devices to show.
>
> +.TP
> +.BI type " TYPE "
> +.I TYPE
> +specifies the link type of devices to show.
> +
> +.TP
> The show command has additional formatting options:
>
> .TP
> @@ -719,6 +727,16 @@ ip link show
> Shows the state of all network interfaces on the system.
> .RE
> .PP
> +ip link show type bridge
> +.RS 4
> +Shows the bridge devices.
> +.RE
> +.PP
> +ip link show type vlan
> +.RS 4
> +Shows the vlan devices.
> +.RE
> +.PP
> ip link set dev ppp0 mtu 1400
> .RS 4
> Change the MTU the ppp0 device.
next prev parent reply other threads:[~2014-12-03 0:55 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-30 17:58 [PATCH iproute2] ip link: Show devices by link type Vadim Kochan
2014-12-02 22:01 ` Vadim Kochan
2014-12-03 0:55 ` Roopa Prabhu [this message]
2014-12-03 1:13 ` vadim4j
2014-12-03 10:59 ` Vadim Kochan
2014-12-03 14:40 ` Roopa Prabhu
2014-12-03 14:47 ` Vadim Kochan
2014-12-03 15:08 ` Vadim Kochan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=547E5F90.2060105@cumulusnetworks.com \
--to=roopa@cumulusnetworks.com \
--cc=netdev@vger.kernel.org \
--cc=vadim4j@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.