summaryrefslogtreecommitdiffstats
path: root/src/vnet/ip/ip_neighbor.h
diff options
context:
space:
mode:
authorJohn Lo <loj@cisco.com>2018-04-28 01:19:24 -0400
committerFlorin Coras <florin.coras@gmail.com>2018-05-11 22:35:30 +0000
commit7f358b30b04aabe9a35680997cc1eeefb080a869 (patch)
tree25b82c278355adf4a49289b31e3e3ca008bbc743 /src/vnet/ip/ip_neighbor.h
parent84c6204969898453aacfa900876e7b7eecd8be0e (diff)
Periodic scan and probe of IP neighbors to maintain neighbor pools
Scan IPv4 and IPv6 neigbor pool entries once a minute to keep them up to date. The neighbor of an entry is probed if its time-stamp is older than 1 minute. If the neighbor respond, its time-stamp will be updated. If there is no response from a neighbor, its entry will be deleted when the time-stamp of the entry become more than 4 minutes old. Static neighbor entries are not probed nor deleted. Implemented CLI and API to enable and disable priodic scan of IPv4, IPv6 or both types of IP neighbors. CLI is "ip scan-neighbor" and API is "ip_scan_neighbor_enable_disable". Other IP neighbor scan parameters can also be changed from their defaults via the CLI/API. Change-Id: Id1a0a934ace15d03db845aa698bcbb9cdabebfcd Signed-off-by: John Lo <loj@cisco.com>
Diffstat (limited to 'src/vnet/ip/ip_neighbor.h')
-rw-r--r--src/vnet/ip/ip_neighbor.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/vnet/ip/ip_neighbor.h b/src/vnet/ip/ip_neighbor.h
new file mode 100644
index 00000000000..d2790bcce5e
--- /dev/null
+++ b/src/vnet/ip/ip_neighbor.h
@@ -0,0 +1,46 @@
+/*
+ * ip_neighboor.h: ip neighbor generic services
+ *
+ * Copyright (c) 2018 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef included_ip_neighbor_h
+#define included_ip_neighbor_h
+
+#define IP_SCAN_DISABLED 0
+#define IP_SCAN_V4_NEIGHBORS (1 << 0)
+#define IP_SCAN_V6_NEIGHBORS (1 << 1)
+#define IP_SCAN_V46_NEIGHBORS (IP_SCAN_V4_NEIGHBORS | IP_SCAN_V6_NEIGHBORS)
+
+typedef struct
+{
+ u8 mode; /* 0: disable, 1: ip4, 2: ip6, 3: both */
+ u8 scan_interval; /* neighbor scan interval in minutes */
+ u8 max_proc_time; /* max processing time per run, in usecs */
+ u8 max_update; /* max probe/delete operations per run */
+ u8 scan_int_delay; /* delay in msecs, to resume scan on max */
+ u8 stale_threshold; /* Threashold in minutes to delete nei entry */
+} ip_neighbor_scan_arg_t;
+
+void ip_neighbor_scan_enable_disable (ip_neighbor_scan_arg_t * arg);
+
+#endif /* included_ip_neighbor_h */
+
+/*
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */