diff options
Diffstat (limited to 'freebsd/sys/netinet/sctp_bsd_addr.c')
-rw-r--r-- | freebsd/sys/netinet/sctp_bsd_addr.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/freebsd/sys/netinet/sctp_bsd_addr.c b/freebsd/sys/netinet/sctp_bsd_addr.c index 0f0ddd89..962fae37 100644 --- a/freebsd/sys/netinet/sctp_bsd_addr.c +++ b/freebsd/sys/netinet/sctp_bsd_addr.c @@ -210,11 +210,13 @@ sctp_init_ifns_for_vrf(int vrfid) IFNET_RLOCK(); CK_STAILQ_FOREACH(ifn, &MODULE_GLOBAL(ifnet), if_link) { + struct epoch_tracker et; + if (sctp_is_desired_interface_type(ifn) == 0) { /* non desired type */ continue; } - IF_ADDR_RLOCK(ifn); + NET_EPOCH_ENTER(et); CK_STAILQ_FOREACH(ifa, &ifn->if_addrhead, ifa_link) { if (ifa->ifa_addr == NULL) { continue; @@ -267,7 +269,7 @@ sctp_init_ifns_for_vrf(int vrfid) sctp_ifa->localifa_flags &= ~SCTP_ADDR_DEFER_USE; } } - IF_ADDR_RUNLOCK(ifn); + NET_EPOCH_EXIT(et); } IFNET_RUNLOCK(); } |