summaryrefslogtreecommitdiff
path: root/sys/netinet/in_rmx.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet/in_rmx.c')
-rw-r--r--sys/netinet/in_rmx.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/sys/netinet/in_rmx.c b/sys/netinet/in_rmx.c
index 2cface409d7fc..cc866e33cfaa5 100644
--- a/sys/netinet/in_rmx.c
+++ b/sys/netinet/in_rmx.c
@@ -80,12 +80,17 @@ in_addroute(void *v_arg, void *n_arg, struct radix_head *head,
* dubious since it's so easy to inspect the address).
*/
if (rt->rt_flags & RTF_HOST) {
- if (in_broadcast(sin->sin_addr, rt->rt_ifp)) {
+ struct epoch_tracker et;
+ bool bcast;
+
+ NET_EPOCH_ENTER(et);
+ bcast = in_broadcast(sin->sin_addr, rt->rt_ifp);
+ NET_EPOCH_EXIT(et);
+ if (bcast)
rt->rt_flags |= RTF_BROADCAST;
- } else if (satosin(rt->rt_ifa->ifa_addr)->sin_addr.s_addr ==
- sin->sin_addr.s_addr) {
+ else if (satosin(rt->rt_ifa->ifa_addr)->sin_addr.s_addr ==
+ sin->sin_addr.s_addr)
rt->rt_flags |= RTF_LOCAL;
- }
}
if (IN_MULTICAST(ntohl(sin->sin_addr.s_addr)))
rt->rt_flags |= RTF_MULTICAST;