Commit a1b9ffcc authored by Brian Haley's avatar Brian Haley Committed by Stephen Hemminger

ip: print "temporary" for IPv6 temp addresses

IPv6 addresses that have IFA_F_SECONDARY set are actually temporary addresses,
hence the IFA_F_TEMPORARY equivalent.  Change the output in this case and
allow filtering on the word "temporary".
Signed-off-by: default avatarBrian Haley <brian.haley@hp.com>
parent 63a0f20a
...@@ -72,7 +72,7 @@ static void usage(void) ...@@ -72,7 +72,7 @@ static void usage(void)
fprintf(stderr, "SCOPE-ID := [ host | link | global | NUMBER ]\n"); fprintf(stderr, "SCOPE-ID := [ host | link | global | NUMBER ]\n");
fprintf(stderr, "FLAG-LIST := [ FLAG-LIST ] FLAG\n"); fprintf(stderr, "FLAG-LIST := [ FLAG-LIST ] FLAG\n");
fprintf(stderr, "FLAG := [ permanent | dynamic | secondary | primary |\n"); fprintf(stderr, "FLAG := [ permanent | dynamic | secondary | primary |\n");
fprintf(stderr, " tentative | deprecated | dadfailed |\n"); fprintf(stderr, " tentative | deprecated | dadfailed | temporary |\n");
fprintf(stderr, " CONFFLAG-LIST ]\n"); fprintf(stderr, " CONFFLAG-LIST ]\n");
fprintf(stderr, "CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAG\n"); fprintf(stderr, "CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAG\n");
fprintf(stderr, "CONFFLAG := [ home | nodad ]\n"); fprintf(stderr, "CONFFLAG := [ home | nodad ]\n");
...@@ -484,7 +484,10 @@ int print_addrinfo(const struct sockaddr_nl *who, struct nlmsghdr *n, ...@@ -484,7 +484,10 @@ int print_addrinfo(const struct sockaddr_nl *who, struct nlmsghdr *n,
fprintf(fp, "scope %s ", rtnl_rtscope_n2a(ifa->ifa_scope, b1, sizeof(b1))); fprintf(fp, "scope %s ", rtnl_rtscope_n2a(ifa->ifa_scope, b1, sizeof(b1)));
if (ifa->ifa_flags&IFA_F_SECONDARY) { if (ifa->ifa_flags&IFA_F_SECONDARY) {
ifa->ifa_flags &= ~IFA_F_SECONDARY; ifa->ifa_flags &= ~IFA_F_SECONDARY;
fprintf(fp, "secondary "); if (ifa->ifa_family == AF_INET6)
fprintf(fp, "temporary ");
else
fprintf(fp, "secondary ");
} }
if (ifa->ifa_flags&IFA_F_TENTATIVE) { if (ifa->ifa_flags&IFA_F_TENTATIVE) {
ifa->ifa_flags &= ~IFA_F_TENTATIVE; ifa->ifa_flags &= ~IFA_F_TENTATIVE;
...@@ -661,7 +664,8 @@ static int ipaddr_list_or_flush(int argc, char **argv, int flush) ...@@ -661,7 +664,8 @@ static int ipaddr_list_or_flush(int argc, char **argv, int flush)
} else if (strcmp(*argv, "permanent") == 0) { } else if (strcmp(*argv, "permanent") == 0) {
filter.flags |= IFA_F_PERMANENT; filter.flags |= IFA_F_PERMANENT;
filter.flagmask |= IFA_F_PERMANENT; filter.flagmask |= IFA_F_PERMANENT;
} else if (strcmp(*argv, "secondary") == 0) { } else if (strcmp(*argv, "secondary") == 0 ||
strcmp(*argv, "temporary") == 0) {
filter.flags |= IFA_F_SECONDARY; filter.flags |= IFA_F_SECONDARY;
filter.flagmask |= IFA_F_SECONDARY; filter.flagmask |= IFA_F_SECONDARY;
} else if (strcmp(*argv, "primary") == 0) { } else if (strcmp(*argv, "primary") == 0) {
......
...@@ -97,7 +97,7 @@ ip \- show / manipulate routing, devices, policy routing and tunnels ...@@ -97,7 +97,7 @@ ip \- show / manipulate routing, devices, policy routing and tunnels
.ti -8 .ti -8
.IR FLAG " := " .IR FLAG " := "
.RB "[ " permanent " | " dynamic " | " secondary " | " primary " | "\ .RB "[ " permanent " | " dynamic " | " secondary " | " primary " | "\
tentative " | " deprecated " | " dadfailed " ]" tentative " | " deprecated " | " dadfailed " | " temporary " ]"
.ti -8 .ti -8
.BR "ip addrlabel" " { " add " | " del " } " prefix .BR "ip addrlabel" " { " add " | " del " } " prefix
...@@ -1040,6 +1040,10 @@ address detection. ...@@ -1040,6 +1040,10 @@ address detection.
(IPv6 only) only list addresses which have failed duplicate (IPv6 only) only list addresses which have failed duplicate
address detection. address detection.
.TP
.B temporary
(IPv6 only) only list temporary addresses.
.TP .TP
.BR primary " and " secondary .BR primary " and " secondary
only list primary (or secondary) addresses. only list primary (or secondary) addresses.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment