]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
ipneigh: support for NTF_EXT_LEARNED flag on neigh entries
authorRoopa Prabhu <roopa@cumulusnetworks.com>
Thu, 11 Oct 2018 20:45:10 +0000 (13:45 -0700)
committerDavid Ahern <dsahern@gmail.com>
Sun, 14 Oct 2018 02:24:45 +0000 (19:24 -0700)
Adds new option extern_learn to set NTF_EXT_LEARNED flag
on neigh entries.

Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
ip/ipneigh.c
man/man8/ip-neighbour.8

index 165546e478c123d49acd9fb413f5b609591676eb..042d01fd24c2cd8e01c48556f5396797f7f63268 100644 (file)
@@ -48,7 +48,7 @@ static void usage(void)
 {
        fprintf(stderr, "Usage: ip neigh { add | del | change | replace }\n"
                        "                { ADDR [ lladdr LLADDR ] [ nud STATE ] | proxy ADDR } [ dev DEV ]\n");
-       fprintf(stderr, "                                 [ router ]\n\n");
+       fprintf(stderr, "                                 [ router ] [ extern_learn ]\n\n");
        fprintf(stderr, "       ip neigh { show | flush } [ proxy ] [ to PREFIX ] [ dev DEV ] [ nud STATE ]\n");
        fprintf(stderr, "                                 [ vrf NAME ]\n\n");
        fprintf(stderr, "STATE := { permanent | noarp | stale | reachable | none |\n"
@@ -142,6 +142,8 @@ static int ipneigh_modify(int cmd, int flags, int argc, char **argv)
                        req.ndm.ndm_flags |= NTF_PROXY;
                } else if (strcmp(*argv, "router") == 0) {
                        req.ndm.ndm_flags |= NTF_ROUTER;
+               } else if (matches(*argv, "extern_learn") == 0) {
+                       req.ndm.ndm_flags |= NTF_EXT_LEARNED;
                } else if (strcmp(*argv, "dev") == 0) {
                        NEXT_ARG();
                        dev = *argv;
@@ -354,6 +356,9 @@ int print_neigh(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
        if (r->ndm_flags & NTF_PROXY)
                print_null(PRINT_ANY, "proxy", " %s", "proxy");
 
+       if (r->ndm_flags & NTF_EXT_LEARNED)
+               print_null(PRINT_ANY, "extern_learn", " %s ", "extern_learn");
+
        if (show_stats) {
                if (tb[NDA_CACHEINFO])
                        print_cacheinfo(RTA_DATA(tb[NDA_CACHEINFO]));
index db286d181f0fcea686959462eaa42f33284b4f2e..4a672bb542f9e47e74d617e812006d2919248632 100644 (file)
@@ -24,7 +24,8 @@ ip-neighbour \- neighbour/arp tables management.
 .IR ADDR " } [ "
 .B  dev
 .IR DEV " ] [ "
-.BR router " ] "
+.BR router " ] [ "
+.BR extern_learn " ]"
 
 .ti -8
 .BR "ip neigh" " { " show " | " flush " } [ " proxy " ] [ " to
@@ -84,6 +85,12 @@ indicates whether we are proxying for this neigbour entry
 .BI router
 indicates whether neigbour is a router
 
+.TP
+.BI extern_learn
+this neigh entry was learned externally. This option can be used to
+indicate to the kernel that this is a controller learnt dynamic entry.
+Kernel will not gc such an entry.
+
 .TP
 .BI lladdr " LLADDRESS"
 the link layer address of the neighbour.