summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2021-10-10 10:02:26 -0700
committerSebastian Huber <sebastian.huber@embedded-brains.de>2022-07-11 13:28:10 +0200
commit94c33ba9920922e05f2dd4c384eaa01f91a58408 (patch)
tree096d670445341ebb592dedb81b4a06c8b716dec5
parentrouting: fix source address selection rules for IPv4 over IPv6. (diff)
downloadrtems-94c33ba9920922e05f2dd4c384eaa01f91a58408.tar.bz2
Use network epoch to protect local IPv4 addresses hash.
The modification to the hash are already naturally locked by in_control_sx. Convert the hash lists to CK lists. Remove the in_ifaddr_rmlock. Assert the network epoch where necessary. Most cases when the hash lookup is done the epoch is already entered. Cover a few cases, that need entering the epoch, which mostly is initial configuration of tunnel interfaces and multicast addresses. Reviewed by: melifaro Differential revision: https://reviews.freebsd.org/D32584
-rw-r--r--cpukit/include/machine/_kernel_in.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/cpukit/include/machine/_kernel_in.h b/cpukit/include/machine/_kernel_in.h
index 69b189cfe0..c9dcfbd033 100644
--- a/cpukit/include/machine/_kernel_in.h
+++ b/cpukit/include/machine/_kernel_in.h
@@ -50,7 +50,11 @@ int in_broadcast(struct in_addr, struct ifnet *);
int in_ifaddr_broadcast(struct in_addr, struct in_ifaddr *);
int in_canforward(struct in_addr);
int in_localaddr(struct in_addr);
+#if __FreeBSD_version >= 1400039
+bool in_localip(struct in_addr);
+#else
int in_localip(struct in_addr);
+#endif
int in_ifhasaddr(struct ifnet *, struct in_addr);
struct in_ifaddr *in_findlocal(uint32_t, bool);
int inet_aton(const char *, struct in_addr *); /* in libkern */