git: 013784c967f9 - main - netinet: virtualize net.link.ether.inet.garp_rexmit_count
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 20 Jan 2025 15:10:51 UTC
The branch main has been updated by kp:
URL: https://cgit.FreeBSD.org/src/commit/?id=013784c967f994058f701c1fd2a82a2cc0bd90b0
commit 013784c967f994058f701c1fd2a82a2cc0bd90b0
Author: Kristof Provost <kp@FreeBSD.org>
AuthorDate: 2025-01-20 13:19:20 +0000
Commit: Kristof Provost <kp@FreeBSD.org>
CommitDate: 2025-01-20 13:28:38 +0000
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")
---
sys/netinet/if_ether.c | 11 ++++++-----
1 file 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);
}