]> git.proxmox.com Git - mirror_iproute2.git/blobdiff - ip/ipneigh.c
ipnetns: parse nsid as a signed integer
[mirror_iproute2.git] / ip / ipneigh.c
index a0af705b6cebd3843900b7a09c81f3e2cb2cc675..6041c467749c35bc25794a9bdc20a409e8a4af74 100644 (file)
@@ -48,6 +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 ] [ 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"
@@ -139,6 +140,10 @@ static int ipneigh_modify(int cmd, int flags, int argc, char **argv)
                        dst_ok = 1;
                        dev_ok = 1;
                        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;
@@ -232,7 +237,7 @@ static void print_neigh_state(unsigned int nud)
        close_json_array(PRINT_JSON, NULL);
 }
 
-int print_neigh(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
+int print_neigh(struct nlmsghdr *n, void *arg)
 {
        FILE *fp = (FILE *)arg;
        struct ndmsg *r = NLMSG_DATA(n);
@@ -351,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]));