From patchwork Tue Jan 11 16:35:48 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vlad Dogaru X-Patchwork-Id: 78410 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 60040B70DA for ; Wed, 12 Jan 2011 03:36:19 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932424Ab1AKQf4 (ORCPT ); Tue, 11 Jan 2011 11:35:56 -0500 Received: from [141.85.37.41] ([141.85.37.41]:60302 "EHLO swarm.cs.pub.ro" rhost-flags-FAIL-FAIL-OK-OK) by vger.kernel.org with ESMTP id S932405Ab1AKQfy (ORCPT ); Tue, 11 Jan 2011 11:35:54 -0500 Received: from localhost (unknown [10.38.144.207]) by swarm.cs.pub.ro (Postfix) with ESMTPSA id 9328410EA128; Tue, 11 Jan 2011 18:35:52 +0200 (EET) From: Vlad Dogaru To: netdev@vger.kernel.org Cc: Vlad Dogaru , jamal , Octavian Purdila Subject: [PATCH v2 iproute2 2/3] ip link: support listing devices by group Date: Tue, 11 Jan 2011 18:35:48 +0200 Message-Id: <1294763749-9997-3-git-send-email-ddvlad@rosedu.org> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1294763749-9997-1-git-send-email-ddvlad@rosedu.org> References: <1294763749-9997-1-git-send-email-ddvlad@rosedu.org> To: netdev@vger.kernel.org Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org User can specify device group to list by using the devgroup keyword: ip link lst devgroup 1 If no group is specified, 0 is implied. Signed-off-by: Vlad Dogaru --- include/linux/netdevice.h | 2 +- ip/ipaddress.c | 14 ++++++++++++++ ip/iplink.c | 1 + 3 files changed, 16 insertions(+), 1 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index bec4e23..ad2e34d 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -33,7 +33,7 @@ #define MAX_ADDR_LEN 32 /* Largest hardware address length */ - +#define INIT_NETDEV_GROUP 0 /* Initial group net devices belong to */ /* Media selection options. */ enum { diff --git a/ip/ipaddress.c b/ip/ipaddress.c index a775ecd..66e4350 100644 --- a/ip/ipaddress.c +++ b/ip/ipaddress.c @@ -49,6 +49,7 @@ static struct char *flushb; int flushp; int flushe; + int group; } filter; static int do_link; @@ -246,6 +247,12 @@ int print_linkinfo(const struct sockaddr_nl *who, fnmatch(filter.label, RTA_DATA(tb[IFLA_IFNAME]), 0)) return 0; + if (tb[IFLA_GROUP]) { + int group = *(int*)RTA_DATA(tb[IFLA_GROUP]); + if (group != filter.group) + return -1; + } + if (n->nlmsg_type == RTM_DELLINK) fprintf(fp, "Deleted "); @@ -718,9 +725,12 @@ static int ipaddr_list_or_flush(int argc, char **argv, int flush) if (filter.family == AF_UNSPEC) filter.family = preferred_family; + filter.group = INIT_NETDEV_GROUP; + if (flush) { if (argc <= 0) { fprintf(stderr, "Flush requires arguments.\n"); + return -1; } if (filter.family == AF_PACKET) { @@ -779,6 +789,10 @@ static int ipaddr_list_or_flush(int argc, char **argv, int flush) } else if (strcmp(*argv, "label") == 0) { NEXT_ARG(); filter.label = *argv; + } else if (strcmp(*argv, "devgroup") == 0) { + NEXT_ARG(); + if (get_integer(&filter.group, *argv, 0)) + invarg("Invalid \"devgroup\" value\n", *argv); } else { if (strcmp(*argv, "dev") == 0) { NEXT_ARG(); diff --git a/ip/iplink.c b/ip/iplink.c index a7bad2c..c0378e7 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -66,6 +66,7 @@ void iplink_usage(void) fprintf(stderr, " [ address LLADDR ]\n"); fprintf(stderr, " [ broadcast LLADDR ]\n"); fprintf(stderr, " [ mtu MTU ]\n"); + fprintf(stderr, " [ group GROUP ]\n"); fprintf(stderr, " [ netns PID ]\n"); fprintf(stderr, " [ alias NAME ]\n"); fprintf(stderr, " [ vf NUM [ mac LLADDR ]\n");