]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
ipaddress: Allow listing addresses by type
authorPhil Sutter <phil@nwl.cc>
Thu, 9 Jun 2016 17:20:36 +0000 (19:20 +0200)
committerStephen Hemminger <shemming@brocade.com>
Tue, 14 Jun 2016 21:20:39 +0000 (14:20 -0700)
Not sure why this was limited to ip-link before. It is semantically
equal to the 'master' keyword, which is not restricted at all.

The man page and help text adjustments include the 'master' keyword as
well since that is also supported but wasn't documented before.

Cc: Vadim Kochan <vadim4j@gmail.com>
Signed-off-by: Phil Sutter <phil@nwl.cc>
ip/ipaddress.c
man/man8/ip-address.8.in

index df363b070d5de26494e3fe5e56035293487d7d8c..8766530f7fa7c11b11779b98343039042f8b87fd 100644 (file)
@@ -75,8 +75,11 @@ static void usage(void)
        fprintf(stderr, "Usage: ip address {add|change|replace} IFADDR dev IFNAME [ LIFETIME ]\n");
        fprintf(stderr, "                                                      [ CONFFLAG-LIST ]\n");
        fprintf(stderr, "       ip address del IFADDR dev IFNAME [mngtmpaddr]\n");
-       fprintf(stderr, "       ip address {show|save|flush} [ dev IFNAME ] [ scope SCOPE-ID ]\n");
+       fprintf(stderr, "       ip address {save|flush} [ dev IFNAME ] [ scope SCOPE-ID ]\n");
        fprintf(stderr, "                            [ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up]\n");
+       fprintf(stderr, "       ip address [ show [ dev IFNAME ] [ scope SCOPE-ID ] [ master DEVICE ]\n");
+       fprintf(stderr, "                         [ type TYPE ] [ to PREFIX ] [ FLAG-LIST ]\n");
+       fprintf(stderr, "                         [ label LABEL ] [up] ]\n");
        fprintf(stderr, "       ip address {showdump|restore}\n");
        fprintf(stderr, "IFADDR := PREFIX | ADDR peer PREFIX\n");
        fprintf(stderr, "          [ broadcast ADDR ] [ anycast ADDR ]\n");
@@ -90,6 +93,10 @@ static void usage(void)
        fprintf(stderr, "CONFFLAG  := [ home | nodad | mngtmpaddr | noprefixroute | autojoin ]\n");
        fprintf(stderr, "LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ]\n");
        fprintf(stderr, "LFT := forever | SECONDS\n");
+       fprintf(stderr, "TYPE := { vlan | veth | vcan | dummy | ifb | macvlan | macvtap |\n");
+       fprintf(stderr, "          bridge | bond | ipoib | ip6tnl | ipip | sit | vxlan |\n");
+       fprintf(stderr, "          gre | gretap | ip6gre | ip6gretap | vti | nlmon |\n");
+       fprintf(stderr, "          bond_slave | ipvlan | geneve | bridge_slave | vrf }\n");
 
        exit(-1);
 }
@@ -1613,7 +1620,7 @@ 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) {
+               } else if (strcmp(*argv, "type") == 0) {
                        NEXT_ARG();
                        filter.kind = *argv;
                } else {
index ff3fe0b96b02a9836ea2f08f8a73a907e05e3e98..ab0942d7e94e2ae438e00b100f1e0510fbfba9ea 100644 (file)
@@ -23,7 +23,7 @@ ip-address \- protocol address management
 .IB IFADDR " dev " IFNAME " [ " mngtmpaddr " ]"
 
 .ti -8
-.BR "ip address" " { " show " | " save " | " flush " } [ " dev
+.BR "ip address" " { " save " | " flush " } [ " dev
 .IR IFNAME " ] [ "
 .B  scope
 .IR SCOPE-ID " ] [ "
@@ -32,6 +32,21 @@ ip-address \- protocol address management
 .B  label
 .IR PATTERN " ] [ " up " ]"
 
+.ti -8
+.BR "ip address" " [ " show  " [ " dev
+.IR IFNAME " ] [ "
+.B  scope
+.IR SCOPE-ID " ] [ "
+.B  to
+.IR PREFIX " ] [ " FLAG-LIST " ] [ "
+.B  label
+.IR PATTERN " ] [ "
+.B  master
+.IR DEVICE " ] [ "
+.B  type
+.IR TYPE " ] [ "
+.BR up " ] ]"
+
 .ti -8
 .BR "ip address" " { " showdump " | " restore " }"
 
@@ -80,6 +95,34 @@ ip-address \- protocol address management
 .BR forever " |"
 .IR SECONDS " ]"
 
+.ti -8
+.IR TYPE " := [ "
+.BR bridge " | "
+.BR bond " | "
+.BR can " | "
+.BR dummy " | "
+.BR hsr " | "
+.BR ifb " | "
+.BR ipoib " |"
+.BR macvlan  " | "
+.BR macvtap  " | "
+.BR vcan " | "
+.BR veth " | "
+.BR vlan " | "
+.BR vxlan " |"
+.BR ip6tnl " |"
+.BR ipip " |"
+.BR sit " |"
+.BR gre " |"
+.BR gretap " |"
+.BR ip6gre " |"
+.BR ip6gretap " |"
+.BR vti " |"
+.BR nlmon " |"
+.BR ipvlan " |"
+.BR lowpan " |"
+.BR geneve " ]"
+
 .SH "DESCRIPTION"
 The
 .B address
@@ -229,6 +272,14 @@ only list addresses with labels matching the
 .I PATTERN
 is a usual shell style pattern.
 
+.TP
+.BI master " DEVICE"
+only list interfaces enslaved to this master device.
+
+.TP
+.BI type " TYPE"
+only list interfaces of the given type.
+
 .TP
 .B up
 only list running interfaces.
@@ -280,8 +331,8 @@ This command flushes the protocol addresses selected by some criteria.
 
 .PP
 This command has the same arguments as
-.B show.
-The difference is that it does not run when no arguments are given.
+.BR show " except that " type " and " master " selectors are not supported."
+Another difference is that it does not run when no arguments are given.
 
 .PP
 .B Warning: