[BACK]Return to mld6.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / netinet6

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/netinet6/mld6.c between version 1.59.2.1 and 1.59.2.3

version 1.59.2.1, 2014/12/29 17:33:49 version 1.59.2.3, 2015/11/18 08:33:08
Line 188  mld_init(void)
Line 188  mld_init(void)
         ip6_opts.ip6po_hbh = hbh;          ip6_opts.ip6po_hbh = hbh;
         /* We will specify the hoplimit by a multicast option. */          /* We will specify the hoplimit by a multicast option. */
         ip6_opts.ip6po_hlim = -1;          ip6_opts.ip6po_hlim = -1;
           ip6_opts.ip6po_prefer_tempaddr = IP6PO_TEMPADDR_NOTPREFER;
 }  }
   
 static void  static void
Line 655  in6_addmulti(struct in6_addr *maddr6, st
Line 656  in6_addmulti(struct in6_addr *maddr6, st
                 in6m->in6m_ifp = ifp;                  in6m->in6m_ifp = ifp;
                 in6m->in6m_refcount = 1;                  in6m->in6m_refcount = 1;
                 in6m->in6m_timer = IN6M_TIMER_UNDEF;                  in6m->in6m_timer = IN6M_TIMER_UNDEF;
                   callout_init(&in6m->in6m_timer_ch, CALLOUT_MPSAFE);
                   callout_setfunc(&in6m->in6m_timer_ch, mld_timeo, in6m);
   
                 IFP_TO_IA6(ifp, ia);                  IFP_TO_IA6(ifp, ia);
                 if (ia == NULL) {                  if (ia == NULL) {
                           callout_destroy(&in6m->in6m_timer_ch);
                         free(in6m, M_IPMADDR);                          free(in6m, M_IPMADDR);
                         splx(s);                          splx(s);
                         *errorp = EADDRNOTAVAIL; /* appropriate? */                          *errorp = EADDRNOTAVAIL; /* appropriate? */
Line 673  in6_addmulti(struct in6_addr *maddr6, st
Line 678  in6_addmulti(struct in6_addr *maddr6, st
                 sockaddr_in6_init(&sin6, maddr6, 0, 0, 0);                  sockaddr_in6_init(&sin6, maddr6, 0, 0, 0);
                 *errorp = if_mcast_op(ifp, SIOCADDMULTI, sin6tosa(&sin6));                  *errorp = if_mcast_op(ifp, SIOCADDMULTI, sin6tosa(&sin6));
                 if (*errorp) {                  if (*errorp) {
                           callout_destroy(&in6m->in6m_timer_ch);
                         LIST_REMOVE(in6m, in6m_entry);                          LIST_REMOVE(in6m, in6m_entry);
                         free(in6m, M_IPMADDR);                          free(in6m, M_IPMADDR);
                         IFAFREE(&ia->ia_ifa);                          IFAFREE(&ia->ia_ifa);
Line 680  in6_addmulti(struct in6_addr *maddr6, st
Line 686  in6_addmulti(struct in6_addr *maddr6, st
                         return (NULL);                          return (NULL);
                 }                  }
   
                 callout_init(&in6m->in6m_timer_ch, CALLOUT_MPSAFE);  
                 callout_setfunc(&in6m->in6m_timer_ch, mld_timeo, in6m);  
                 in6m->in6m_timer = timer;                  in6m->in6m_timer = timer;
                 if (in6m->in6m_timer > 0) {                  if (in6m->in6m_timer > 0) {
                         in6m->in6m_state = MLD_REPORTPENDING;                          in6m->in6m_state = MLD_REPORTPENDING;

Legend:
Removed from v.1.59.2.1  
changed lines
  Added in v.1.59.2.3

CVSweb <webmaster@jp.NetBSD.org>