From: Daniel Borkmann Date: Mon, 25 Oct 2021 15:47:27 +0000 (+0200) Subject: ip, neigh: Add missing NTF_USE support X-Git-Tag: v5.16.0~21^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=040e52526c22163a218b9cb2224f51a2de0e6576;p=thirdparty%2Fiproute2.git ip, neigh: Add missing NTF_USE support Currently, ip neigh does not support the NTF_USE flag. Similar to other flags such as extern_learn, add cmdline support. The flag dump support is explicitly missing here, since the kernel does not propagate the flag back to user space. Usage example: # ./ip/ip n replace 192.168.178.30 dev enp5s0 use extern_learn # ./ip/ip n 192.168.178.30 dev enp5s0 lladdr f4:8c:50:5e:71:9a extern_learn REACHABLE [...] Signed-off-by: Daniel Borkmann Signed-off-by: David Ahern --- diff --git a/ip/ipneigh.c b/ip/ipneigh.c index a8006f94a..874c90335 100644 --- a/ip/ipneigh.c +++ b/ip/ipneigh.c @@ -51,7 +51,7 @@ static void usage(void) fprintf(stderr, "Usage: ip neigh { add | del | change | replace }\n" " { ADDR [ lladdr LLADDR ] [ nud STATE ] proxy ADDR }\n" - " [ dev DEV ] [ router ] [ extern_learn ] [ protocol PROTO ]\n" + " [ dev DEV ] [ router ] [ use ] [ extern_learn ] [ protocol PROTO ]\n" "\n" " ip neigh { show | flush } [ proxy ] [ to PREFIX ] [ dev DEV ] [ nud STATE ]\n" " [ vrf NAME ] [ nomaster ]\n" @@ -148,6 +148,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 (strcmp(*argv, "use") == 0) { + req.ndm.ndm_flags |= NTF_USE; } else if (matches(*argv, "extern_learn") == 0) { req.ndm.ndm_flags |= NTF_EXT_LEARNED; } else if (strcmp(*argv, "dev") == 0) { diff --git a/man/man8/ip-neighbour.8 b/man/man8/ip-neighbour.8 index 028629641..3001cd010 100644 --- a/man/man8/ip-neighbour.8 +++ b/man/man8/ip-neighbour.8 @@ -25,6 +25,7 @@ ip-neighbour \- neighbour/arp tables management. .B dev .IR DEV " ] [ " .BR router " ] [ " +.BR use " ] [ " .BR extern_learn " ]" .ti -8 @@ -92,6 +93,13 @@ indicates whether we are proxying for this neighbour entry .BI router indicates whether neighbour is a router +.TP +.BI use +this neigh entry is in "use". This option can be used to indicate to +the kernel that a controller is using this dynamic entry. If the entry +does not exist, the kernel will resolve it. If it exists, an attempt +to refresh the neighbor entry will be triggered. + .TP .BI extern_learn this neigh entry was learned externally. This option can be used to