14532 return (err);
14533 }
14534
14535 err = (isv6 ? ipif_up_done_v6(ipif) : ipif_up_done(ipif));
14536 if (err == 0 && ill->ill_move_ipif != NULL) {
14537 ipif = ill->ill_move_ipif;
14538 ill->ill_move_ipif = NULL;
14539 return (ipif_up(ipif, q, mp));
14540 }
14541 return (err);
14542 }
14543
14544 /*
14545 * Add any IREs tied to the ill. For now this is just an IRE_MULTICAST.
14546 * The identical set of IREs need to be removed in ill_delete_ires().
14547 */
14548 int
14549 ill_add_ires(ill_t *ill)
14550 {
14551 ire_t *ire;
14552 in6_addr_t dummy6 = {(uint32_t)V6_MCAST, 0, 0, 1};
14553 in_addr_t dummy4 = htonl(INADDR_ALLHOSTS_GROUP);
14554
14555 if (ill->ill_ire_multicast != NULL)
14556 return (0);
14557
14558 /*
14559 * provide some dummy ire_addr for creating the ire.
14560 */
14561 if (ill->ill_isv6) {
14562 ire = ire_create_v6(&dummy6, 0, 0, IRE_MULTICAST, ill,
14563 ALL_ZONES, RTF_UP, NULL, ill->ill_ipst);
14564 } else {
14565 ire = ire_create((uchar_t *)&dummy4, 0, 0, IRE_MULTICAST, ill,
14566 ALL_ZONES, RTF_UP, NULL, ill->ill_ipst);
14567 }
14568 if (ire == NULL)
14569 return (ENOMEM);
14570
14571 ill->ill_ire_multicast = ire;
14572 return (0);
|
14532 return (err);
14533 }
14534
14535 err = (isv6 ? ipif_up_done_v6(ipif) : ipif_up_done(ipif));
14536 if (err == 0 && ill->ill_move_ipif != NULL) {
14537 ipif = ill->ill_move_ipif;
14538 ill->ill_move_ipif = NULL;
14539 return (ipif_up(ipif, q, mp));
14540 }
14541 return (err);
14542 }
14543
14544 /*
14545 * Add any IREs tied to the ill. For now this is just an IRE_MULTICAST.
14546 * The identical set of IREs need to be removed in ill_delete_ires().
14547 */
14548 int
14549 ill_add_ires(ill_t *ill)
14550 {
14551 ire_t *ire;
14552 in6_addr_t dummy6 = {{{(uint32_t)V6_MCAST, 0, 0, 1}}};
14553 in_addr_t dummy4 = htonl(INADDR_ALLHOSTS_GROUP);
14554
14555 if (ill->ill_ire_multicast != NULL)
14556 return (0);
14557
14558 /*
14559 * provide some dummy ire_addr for creating the ire.
14560 */
14561 if (ill->ill_isv6) {
14562 ire = ire_create_v6(&dummy6, 0, 0, IRE_MULTICAST, ill,
14563 ALL_ZONES, RTF_UP, NULL, ill->ill_ipst);
14564 } else {
14565 ire = ire_create((uchar_t *)&dummy4, 0, 0, IRE_MULTICAST, ill,
14566 ALL_ZONES, RTF_UP, NULL, ill->ill_ipst);
14567 }
14568 if (ire == NULL)
14569 return (ENOMEM);
14570
14571 ill->ill_ire_multicast = ire;
14572 return (0);
|