Changeset View
Changeset View
Standalone View
Standalone View
head/sys/netinet/ip_carp.c
Show First 20 Lines • Show All 1,399 Lines • ▼ Show 20 Lines | case AF_INET6: | ||||
bzero(&in6, sizeof(in6)); | bzero(&in6, sizeof(in6)); | ||||
in6.s6_addr16[0] = htons(0xff02); | in6.s6_addr16[0] = htons(0xff02); | ||||
in6.s6_addr8[15] = 0x12; | in6.s6_addr8[15] = 0x12; | ||||
if ((error = in6_setscope(&in6, ifp, NULL)) != 0) { | if ((error = in6_setscope(&in6, ifp, NULL)) != 0) { | ||||
free(im6o->im6o_membership, M_CARP); | free(im6o->im6o_membership, M_CARP); | ||||
break; | break; | ||||
} | } | ||||
in6m = NULL; | in6m = NULL; | ||||
if ((error = in6_mc_join(ifp, &in6, NULL, &in6m, 0)) != 0) { | if ((error = in6_joingroup(ifp, &in6, NULL, &in6m, 0)) != 0) { | ||||
free(im6o->im6o_membership, M_CARP); | free(im6o->im6o_membership, M_CARP); | ||||
break; | break; | ||||
} | } | ||||
im6o->im6o_membership[0] = in6m; | im6o->im6o_membership[0] = in6m; | ||||
im6o->im6o_num_memberships++; | im6o->im6o_num_memberships++; | ||||
/* Join solicited multicast address. */ | /* Join solicited multicast address. */ | ||||
bzero(&in6, sizeof(in6)); | bzero(&in6, sizeof(in6)); | ||||
in6.s6_addr16[0] = htons(0xff02); | in6.s6_addr16[0] = htons(0xff02); | ||||
in6.s6_addr32[1] = 0; | in6.s6_addr32[1] = 0; | ||||
in6.s6_addr32[2] = htonl(1); | in6.s6_addr32[2] = htonl(1); | ||||
in6.s6_addr32[3] = 0; | in6.s6_addr32[3] = 0; | ||||
in6.s6_addr8[12] = 0xff; | in6.s6_addr8[12] = 0xff; | ||||
if ((error = in6_setscope(&in6, ifp, NULL)) != 0) { | if ((error = in6_setscope(&in6, ifp, NULL)) != 0) { | ||||
in6_mc_leave(im6o->im6o_membership[0], NULL); | in6_leavegroup(im6o->im6o_membership[0], NULL); | ||||
free(im6o->im6o_membership, M_CARP); | free(im6o->im6o_membership, M_CARP); | ||||
break; | break; | ||||
} | } | ||||
in6m = NULL; | in6m = NULL; | ||||
if ((error = in6_mc_join(ifp, &in6, NULL, &in6m, 0)) != 0) { | if ((error = in6_joingroup(ifp, &in6, NULL, &in6m, 0)) != 0) { | ||||
in6_mc_leave(im6o->im6o_membership[0], NULL); | in6_leavegroup(im6o->im6o_membership[0], NULL); | ||||
free(im6o->im6o_membership, M_CARP); | free(im6o->im6o_membership, M_CARP); | ||||
break; | break; | ||||
} | } | ||||
im6o->im6o_membership[1] = in6m; | im6o->im6o_membership[1] = in6m; | ||||
im6o->im6o_num_memberships++; | im6o->im6o_num_memberships++; | ||||
break; | break; | ||||
} | } | ||||
#endif | #endif | ||||
Show All 26 Lines | case AF_INET: | ||||
} | } | ||||
break; | break; | ||||
#endif | #endif | ||||
#ifdef INET6 | #ifdef INET6 | ||||
case AF_INET6: | case AF_INET6: | ||||
if (cif->cif_naddrs6 == 0) { | if (cif->cif_naddrs6 == 0) { | ||||
struct ip6_moptions *im6o = &cif->cif_im6o; | struct ip6_moptions *im6o = &cif->cif_im6o; | ||||
in6_mc_leave(im6o->im6o_membership[0], NULL); | in6_leavegroup(im6o->im6o_membership[0], NULL); | ||||
in6_mc_leave(im6o->im6o_membership[1], NULL); | in6_leavegroup(im6o->im6o_membership[1], NULL); | ||||
KASSERT(im6o->im6o_mfilters == NULL, | KASSERT(im6o->im6o_mfilters == NULL, | ||||
("%s: im6o_mfilters != NULL", __func__)); | ("%s: im6o_mfilters != NULL", __func__)); | ||||
free(im6o->im6o_membership, M_CARP); | free(im6o->im6o_membership, M_CARP); | ||||
im6o->im6o_membership = NULL; | im6o->im6o_membership = NULL; | ||||
} | } | ||||
break; | break; | ||||
#endif | #endif | ||||
} | } | ||||
▲ Show 20 Lines • Show All 756 Lines • Show Last 20 Lines |