aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristof Provost <kp@FreeBSD.org>2025-01-20 13:19:20 +0000
committerKristof Provost <kp@FreeBSD.org>2025-01-20 13:28:38 +0000
commit013784c967f994058f701c1fd2a82a2cc0bd90b0 (patch)
tree88a4e17c87f52d0ef4598a92965ec254c304b840
parent5b86888bae651e54ccc0adde0ed897ec1c1e0d45 (diff)
netinet: virtualize net.link.ether.inet.garp_rexmit_count
Turn garp_rexmit_count into a per-vnet variable. This immediate use case is to enable easier testing. Sponsored by: Rubicon Communications, LLC ("Netgate")
-rw-r--r--sys/netinet/if_ether.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c
index 81f4b901f21b..502261f5f2d9 100644
--- a/sys/netinet/if_ether.c
+++ b/sys/netinet/if_ether.c
@@ -155,11 +155,12 @@ SYSCTL_INT(_net_link_ether_inet, OID_AUTO, max_log_per_second,
*/
#define MAX_GARP_RETRANSMITS 16
static int sysctl_garp_rexmit(SYSCTL_HANDLER_ARGS);
-static int garp_rexmit_count = 0; /* GARP retransmission setting. */
+VNET_DEFINE_STATIC(int, garp_rexmit_count) = 0; /* GARP retransmission setting. */
+#define V_garp_rexmit_count VNET(garp_rexmit_count)
SYSCTL_PROC(_net_link_ether_inet, OID_AUTO, garp_rexmit_count,
- CTLTYPE_INT|CTLFLAG_RW|CTLFLAG_MPSAFE,
- &garp_rexmit_count, 0, sysctl_garp_rexmit, "I",
+ CTLTYPE_INT|CTLFLAG_RW|CTLFLAG_MPSAFE|CTLFLAG_VNET,
+ &VNET_NAME(garp_rexmit_count), 0, sysctl_garp_rexmit, "I",
"Number of times to retransmit GARP packets;"
" 0 to disable, maximum of 16");
@@ -1377,7 +1378,7 @@ garp_rexmit(void *arg)
* the callout to retransmit another GARP packet.
*/
++ia->ia_garp_count;
- if (ia->ia_garp_count >= garp_rexmit_count) {
+ if (ia->ia_garp_count >= V_garp_rexmit_count) {
ifa_free(&ia->ia_ifa);
} else {
int rescheduled;
@@ -1444,7 +1445,7 @@ arp_ifinit(struct ifnet *ifp, struct ifaddr *ifa)
NET_EPOCH_ENTER(et);
arp_announce_ifaddr(ifp, dst_in->sin_addr, IF_LLADDR(ifp));
NET_EPOCH_EXIT(et);
- if (garp_rexmit_count > 0) {
+ if (V_garp_rexmit_count > 0) {
garp_timer_start(ifa);
}