#endif
static struct router_info *
- find_rti __P((struct ifnet *ifp));
+ find_rti(struct ifnet *ifp);
static struct igmpstat igmpstat;
static struct mbuf *router_alert;
static struct router_info *Head;
-static void igmp_sendpkt __P((struct in_multi *, int, unsigned long));
+static void igmp_sendpkt(struct in_multi *, int, unsigned long);
void
igmp_init()
}
static struct router_info *
-find_rti(ifp)
- struct ifnet *ifp;
+find_rti(
+ struct ifnet *ifp)
{
- register struct router_info *rti = Head;
+ struct router_info *rti = Head;
#if IGMP_DEBUG
}
void
-igmp_input(m, iphlen)
- register struct mbuf *m;
- register int iphlen;
+igmp_input(
+ struct mbuf *m,
+ int iphlen)
{
- register struct igmp *igmp;
- register struct ip *ip;
- register int igmplen;
- register struct ifnet *ifp = m->m_pkthdr.rcvif;
- register int minlen;
- register struct in_multi *inm;
- register struct in_ifaddr *ia;
+ struct igmp *igmp;
+ struct ip *ip;
+ int igmplen;
+ struct ifnet *ifp = m->m_pkthdr.rcvif;
+ int minlen;
+ struct in_multi *inm;
+ struct in_ifaddr *ia;
struct in_multistep step;
struct router_info *rti;
* - Use the value specified in the query message as
* the maximum timeout.
*/
+ lck_mtx_lock(rt_mtx);
IN_FIRST_MULTI(step, inm);
while (inm != NULL) {
if (inm->inm_ifp == ifp &&
}
IN_NEXT_MULTI(step, inm);
}
+ lck_mtx_unlock(rt_mtx);
break;
* If we belong to the group being reported, stop
* our timer for that group.
*/
+ ifnet_lock_shared(ifp);
IN_LOOKUP_MULTI(igmp->igmp_group, ifp, inm);
+ ifnet_lock_done(ifp);
if (inm != NULL) {
inm->inm_timer = 0;
igmp_joingroup(inm)
struct in_multi *inm;
{
- int s = splnet();
if (inm->inm_addr.s_addr == igmp_all_hosts_group
|| inm->inm_ifp->if_flags & IFF_LOOPBACK) {
igmp_timers_are_running = 1;
}
return 0;
- splx(s);
}
void
void
igmp_fasttimo()
{
- register struct in_multi *inm;
+ struct in_multi *inm;
struct in_multistep step;
- int s;
/*
* Quick check to see if any work needs to be done, in order
if (!igmp_timers_are_running)
return;
- s = splnet();
igmp_timers_are_running = 0;
IN_FIRST_MULTI(step, inm);
while (inm != NULL) {
}
IN_NEXT_MULTI(step, inm);
}
- splx(s);
}
void
igmp_slowtimo()
{
- int s = splnet();
- register struct router_info *rti = Head;
+ struct router_info *rti = Head;
#if IGMP_DEBUG
printf("[igmp.c,_slowtimo] -- > entering \n");
#if IGMP_DEBUG
printf("[igmp.c,_slowtimo] -- > exiting \n");
#endif
- splx(s);
}
static struct route igmprt;