mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-10-08 22:35:50 +00:00
ip: allow ip address show to list addresses with certain flags not being set
Sometimes it's needed to have "ip address show" list only addresses with certain flags not being set, e.g. in network scripts. As an example one might want to exclude addresses in "tentative" or "deprecated" state. Support listing addresses with flags tentative, deprecated, dadfailed not being set by prefixing the respective flag with a minus. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
This commit is contained in:
parent
79aa79d058
commit
b5f39b2588
@ -80,7 +80,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 | temporary |\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 | mngtmpaddr | noprefixroute ]\n");
|
fprintf(stderr, "CONFFLAG := [ home | nodad | mngtmpaddr | noprefixroute ]\n");
|
||||||
@ -1261,9 +1261,15 @@ static int ipaddr_list_flush_or_save(int argc, char **argv, int action)
|
|||||||
} else if (strcmp(*argv, "tentative") == 0) {
|
} else if (strcmp(*argv, "tentative") == 0) {
|
||||||
filter.flags |= IFA_F_TENTATIVE;
|
filter.flags |= IFA_F_TENTATIVE;
|
||||||
filter.flagmask |= IFA_F_TENTATIVE;
|
filter.flagmask |= IFA_F_TENTATIVE;
|
||||||
|
} else if (strcmp(*argv, "-tentative") == 0) {
|
||||||
|
filter.flags &= ~IFA_F_TENTATIVE;
|
||||||
|
filter.flagmask |= IFA_F_TENTATIVE;
|
||||||
} else if (strcmp(*argv, "deprecated") == 0) {
|
} else if (strcmp(*argv, "deprecated") == 0) {
|
||||||
filter.flags |= IFA_F_DEPRECATED;
|
filter.flags |= IFA_F_DEPRECATED;
|
||||||
filter.flagmask |= IFA_F_DEPRECATED;
|
filter.flagmask |= IFA_F_DEPRECATED;
|
||||||
|
} else if (strcmp(*argv, "-deprecated") == 0) {
|
||||||
|
filter.flags &= ~IFA_F_DEPRECATED;
|
||||||
|
filter.flagmask |= IFA_F_DEPRECATED;
|
||||||
} else if (strcmp(*argv, "home") == 0) {
|
} else if (strcmp(*argv, "home") == 0) {
|
||||||
filter.flags |= IFA_F_HOMEADDRESS;
|
filter.flags |= IFA_F_HOMEADDRESS;
|
||||||
filter.flagmask |= IFA_F_HOMEADDRESS;
|
filter.flagmask |= IFA_F_HOMEADDRESS;
|
||||||
@ -1279,6 +1285,9 @@ static int ipaddr_list_flush_or_save(int argc, char **argv, int action)
|
|||||||
} else if (strcmp(*argv, "dadfailed") == 0) {
|
} else if (strcmp(*argv, "dadfailed") == 0) {
|
||||||
filter.flags |= IFA_F_DADFAILED;
|
filter.flags |= IFA_F_DADFAILED;
|
||||||
filter.flagmask |= IFA_F_DADFAILED;
|
filter.flagmask |= IFA_F_DADFAILED;
|
||||||
|
} else if (strcmp(*argv, "-dadfailed") == 0) {
|
||||||
|
filter.flags &= ~IFA_F_DADFAILED;
|
||||||
|
filter.flagmask |= IFA_F_DADFAILED;
|
||||||
} else if (strcmp(*argv, "label") == 0) {
|
} else if (strcmp(*argv, "label") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
filter.label = *argv;
|
filter.label = *argv;
|
||||||
|
Loading…
Reference in New Issue
Block a user