Lines Matching refs:in6m

117 mld6_start_listening(struct in6_multi *in6m)  in mld6_start_listening()  argument
130 all_nodes.s6_addr16[1] = htons(in6m->in6m_ifidx); in mld6_start_listening()
131 if (IN6_ARE_ADDR_EQUAL(&in6m->in6m_addr, &all_nodes) || in mld6_start_listening()
132 __IPV6_ADDR_MC_SCOPE(&in6m->in6m_addr) < in mld6_start_listening()
134 in6m->in6m_timer = 0; in mld6_start_listening()
135 in6m->in6m_state = MLD_OTHERLISTENER; in mld6_start_listening()
137 mld6_sendpkt(in6m, MLD_LISTENER_REPORT, NULL); in mld6_start_listening()
138 in6m->in6m_timer = in mld6_start_listening()
141 in6m->in6m_state = MLD_IREPORTEDLAST; in mld6_start_listening()
152 mld6_stop_listening(struct in6_multi *in6m) in mld6_stop_listening() argument
158 all_nodes.s6_addr16[1] = htons(in6m->in6m_ifidx); in mld6_stop_listening()
160 all_routers.s6_addr16[1] = htons(in6m->in6m_ifidx); in mld6_stop_listening()
162 if (in6m->in6m_state == MLD_IREPORTEDLAST && in mld6_stop_listening()
163 (!IN6_ARE_ADDR_EQUAL(&in6m->in6m_addr, &all_nodes)) && in mld6_stop_listening()
164 __IPV6_ADDR_MC_SCOPE(&in6m->in6m_addr) > in mld6_stop_listening()
166 mld6_sendpkt(in6m, MLD_LISTENER_DONE, &all_routers); in mld6_stop_listening()
175 struct in6_multi *in6m; in mld6_input() local
262 in6m = ifmatoin6m(ifma); in mld6_input()
263 if (IN6_ARE_ADDR_EQUAL(&in6m->in6m_addr, &all_nodes) || in mld6_input()
264 __IPV6_ADDR_MC_SCOPE(&in6m->in6m_addr) < in mld6_input()
270 &in6m->in6m_addr)) in mld6_input()
274 mld6_sendpkt(in6m, MLD_LISTENER_REPORT, in mld6_input()
276 in6m->in6m_timer = 0; /* reset timer */ in mld6_input()
277 in6m->in6m_state = MLD_IREPORTEDLAST; in mld6_input()
278 } else if (in6m->in6m_timer == 0 || /* idle */ in mld6_input()
279 in6m->in6m_timer > timer) { in mld6_input()
280 in6m->in6m_timer = in mld6_input()
313 IN6_LOOKUP_MULTI(mldh->mld_addr, ifp, in6m); in mld6_input()
314 if (in6m) { in mld6_input()
315 in6m->in6m_timer = 0; /* transit to idle state */ in mld6_input()
316 in6m->in6m_state = MLD_OTHERLISTENER; /* clear flag */ in mld6_input()
376 struct in6_multi *in6m; in mld6_checktimer() local
385 in6m = ifmatoin6m(ifma); in mld6_checktimer()
386 if (in6m->in6m_timer == 0) { in mld6_checktimer()
388 } else if (--in6m->in6m_timer == 0) { in mld6_checktimer()
389 mld6_sendpkt(in6m, MLD_LISTENER_REPORT, NULL); in mld6_checktimer()
390 in6m->in6m_state = MLD_IREPORTEDLAST; in mld6_checktimer()
400 mld6_sendpkt(struct in6_multi *in6m, int type, const struct in6_addr *dst) in mld6_sendpkt() argument
410 ifp = if_get(in6m->in6m_ifidx); in mld6_sendpkt()
461 ip6->ip6_dst = dst ? *dst : in6m->in6m_addr; in mld6_sendpkt()
472 mldh->mld_addr = in6m->in6m_addr; in mld6_sendpkt()