Lines Matching refs:vr
136 #define SKEW_TIME_VR(vr) \ argument
137 SKEW_TIME((vr)->vvr_conf.vvc_pri, (vr)->vvr_master_adver_int)
138 #define MASTER_DOWN_INTERVAL_VR(vr) \ argument
139 MASTER_DOWN_INTERVAL((vr)->vvr_conf.vvc_pri, (vr)->vvr_master_adver_int)
336 vrrp_vr_t *vr; in vrrpd_lookup_vr_by_vrid() local
338 TAILQ_FOREACH(vr, &vrrp_vr_list, vvr_next) { in vrrpd_lookup_vr_by_vrid()
339 if (strcmp(vr->vvr_conf.vvc_link, ifname) == 0 && in vrrpd_lookup_vr_by_vrid()
340 vr->vvr_conf.vvc_vrid == vrid && in vrrpd_lookup_vr_by_vrid()
341 vr->vvr_conf.vvc_af == af) { in vrrpd_lookup_vr_by_vrid()
345 return (vr); in vrrpd_lookup_vr_by_vrid()
351 vrrp_vr_t *vr; in vrrpd_lookup_vr_by_name() local
353 TAILQ_FOREACH(vr, &vrrp_vr_list, vvr_next) { in vrrpd_lookup_vr_by_name()
354 if (strcmp(vr->vvr_conf.vvc_name, name) == 0) in vrrpd_lookup_vr_by_name()
357 return (vr); in vrrpd_lookup_vr_by_name()
872 vrrp_vr_t *vr; in vrrpd_cleanup() local
878 vr = TAILQ_FIRST(&vrrp_vr_list); in vrrpd_cleanup()
879 vrrpd_delete_vr(vr); in vrrpd_cleanup()
1962 vrrp_vr_t *vr; in vrrpd_reenable_all_vr() local
1966 TAILQ_FOREACH(vr, &vrrp_vr_list, vvr_next) { in vrrpd_reenable_all_vr()
1967 if (vr->vvr_conf.vvc_enabled) in vrrpd_reenable_all_vr()
1968 (void) vrrpd_enable_vr(vr); in vrrpd_reenable_all_vr()
1980 vrrp_vr_t *vr; in vrrpd_remove_if() local
1985 TAILQ_FOREACH(vr, &vrrp_vr_list, vvr_next) { in vrrpd_remove_if()
1986 if (vr->vvr_conf.vvc_enabled) in vrrpd_remove_if()
1987 vrrpd_disable_vr(vr, intf, primary_addr_gone); in vrrpd_remove_if()
2386 vrrp_vr_t *vr; in vrrpd_create_vr() local
2390 if ((vr = malloc(sizeof (vrrp_vr_t))) == NULL) { in vrrpd_create_vr()
2396 bzero(vr, sizeof (vrrp_vr_t)); in vrrpd_create_vr()
2397 vr->vvr_state = VRRP_STATE_NONE; in vrrpd_create_vr()
2398 vr->vvr_timer_id = -1; in vrrpd_create_vr()
2399 vrrpd_state_trans(VRRP_STATE_NONE, VRRP_STATE_INIT, vr); in vrrpd_create_vr()
2400 (void) memcpy(&vr->vvr_conf, conf, sizeof (vrrp_vr_conf_t)); in vrrpd_create_vr()
2401 vr->vvr_conf.vvc_enabled = _B_FALSE; in vrrpd_create_vr()
2402 TAILQ_INSERT_HEAD(&vrrp_vr_list, vr, vvr_next); in vrrpd_create_vr()
2407 vrrpd_delete_vr(vrrp_vr_t *vr) in vrrpd_delete_vr() argument
2409 vrrp_log(VRRP_DBG0, "vrrpd_delete_vr(%s)", vr->vvr_conf.vvc_name); in vrrpd_delete_vr()
2410 if (vr->vvr_conf.vvc_enabled) in vrrpd_delete_vr()
2411 vrrpd_disable_vr(vr, NULL, _B_FALSE); in vrrpd_delete_vr()
2412 assert(vr->vvr_state == VRRP_STATE_INIT); in vrrpd_delete_vr()
2413 vrrpd_state_trans(VRRP_STATE_INIT, VRRP_STATE_NONE, vr); in vrrpd_delete_vr()
2414 TAILQ_REMOVE(&vrrp_vr_list, vr, vvr_next); in vrrpd_delete_vr()
2415 (void) free(vr); in vrrpd_delete_vr()
2419 vrrpd_enable_vr(vrrp_vr_t *vr) in vrrpd_enable_vr() argument
2423 vrrp_log(VRRP_DBG0, "vrrpd_enable_vr(%s)", vr->vvr_conf.vvc_name); in vrrpd_enable_vr()
2425 assert(vr->vvr_conf.vvc_enabled); in vrrpd_enable_vr()
2431 if (vr->vvr_state != VRRP_STATE_INIT) in vrrpd_enable_vr()
2434 if ((rx_err = vrrpd_init_rxsock(vr)) == VRRP_SUCCESS) { in vrrpd_enable_vr()
2440 vrrpd_reselect_primary(vr->vvr_pif); in vrrpd_enable_vr()
2441 if (vr->vvr_pif->vvi_pip == NULL) { in vrrpd_enable_vr()
2444 vr->vvr_conf.vvc_name, vr->vvr_pif->vvi_ifname); in vrrpd_enable_vr()
2453 tx_err = vrrpd_init_txsock(vr); in vrrpd_enable_vr()
2463 vr->vvr_err = (rx_err == VRRP_SUCCESS) ? tx_err : rx_err; in vrrpd_enable_vr()
2467 if (vr->vvr_conf.vvc_pri == 255) in vrrpd_enable_vr()
2468 err = vrrpd_state_i2m(vr); in vrrpd_enable_vr()
2470 err = vrrpd_state_i2b(vr); in vrrpd_enable_vr()
2473 vr->vvr_err = err; in vrrpd_enable_vr()
2474 vr->vvr_pif->vvi_pip = NULL; in vrrpd_enable_vr()
2475 vrrpd_fini_txsock(vr); in vrrpd_enable_vr()
2476 vrrpd_fini_rxsock(vr); in vrrpd_enable_vr()
2488 vrrpd_disable_vr(vrrp_vr_t *vr, vrrp_intf_t *intf, boolean_t primary_addr_gone) in vrrpd_disable_vr() argument
2490 vrrp_log(VRRP_DBG0, "vrrpd_disable_vr(%s): %s%s", vr->vvr_conf.vvc_name, in vrrpd_disable_vr()
2500 if (!primary_addr_gone && (intf != NULL) && (intf != vr->vvr_pif) && in vrrpd_disable_vr()
2501 (intf != vr->vvr_vif)) { in vrrpd_disable_vr()
2510 if (primary_addr_gone && intf != vr->vvr_pif) in vrrpd_disable_vr()
2514 vr->vvr_conf.vvc_name); in vrrpd_disable_vr()
2516 if (vr->vvr_state == VRRP_STATE_MASTER) { in vrrpd_disable_vr()
2523 (void) vrrpd_send_adv(vr, _B_TRUE); in vrrpd_disable_vr()
2525 vrrpd_state_m2i(vr); in vrrpd_disable_vr()
2526 } else if (vr->vvr_state == VRRP_STATE_BACKUP) { in vrrpd_disable_vr()
2527 vrrpd_state_b2i(vr); in vrrpd_disable_vr()
2537 "is removed", vr->vvr_conf.vvc_name); in vrrpd_disable_vr()
2538 vr->vvr_err = VRRP_ENOPRIM; in vrrpd_disable_vr()
2544 vr->vvr_conf.vvc_name); in vrrpd_disable_vr()
2545 vr->vvr_err = VRRP_SUCCESS; in vrrpd_disable_vr()
2546 vrrpd_fini_txsock(vr); in vrrpd_disable_vr()
2547 vrrpd_fini_rxsock(vr); in vrrpd_disable_vr()
2548 } else if (intf == vr->vvr_pif) { in vrrpd_disable_vr()
2550 "%s removed", vr->vvr_conf.vvc_name, intf->vvi_ifname); in vrrpd_disable_vr()
2551 vr->vvr_err = VRRP_ENOPRIM; in vrrpd_disable_vr()
2552 vrrpd_fini_rxsock(vr); in vrrpd_disable_vr()
2553 } else if (intf == vr->vvr_vif) { in vrrpd_disable_vr()
2555 " removed", vr->vvr_conf.vvc_name, intf->vvi_ifname); in vrrpd_disable_vr()
2556 vr->vvr_err = VRRP_ENOVIRT; in vrrpd_disable_vr()
2557 vrrpd_fini_txsock(vr); in vrrpd_disable_vr()
2626 vrrp_vr_t *vr; in vrrpd_delete() local
2631 if ((vr = vrrpd_lookup_vr_by_name(vn)) == NULL) { in vrrpd_delete()
2636 err = vrrpd_updateconf(&vr->vvr_conf, VRRP_CONF_DELETE); in vrrpd_delete()
2639 "configuration for %s", vr->vvr_conf.vvc_name); in vrrpd_delete()
2643 vrrpd_delete_vr(vr); in vrrpd_delete()
2650 vrrp_vr_t *vr; in vrrpd_enable() local
2658 if ((vr = vrrpd_lookup_vr_by_name(vn)) == NULL) { in vrrpd_enable()
2666 conf = &vr->vvr_conf; in vrrpd_enable()
2691 conf->vvc_af, conf->vvc_link, NULL, NULL, vr->vvr_vnic, in vrrpd_enable()
2692 sizeof (vr->vvr_vnic)); in vrrpd_enable()
2708 vr->vvr_conf.vvc_enabled = _B_TRUE; in vrrpd_enable()
2709 if (updateconf && (err = vrrpd_updateconf(&vr->vvr_conf, in vrrpd_enable()
2712 "configuration for %s", vr->vvr_conf.vvc_name); in vrrpd_enable()
2723 (void) vrrpd_enable_vr(vr); in vrrpd_enable()
2727 vr->vvr_conf.vvc_enabled = _B_FALSE; in vrrpd_enable()
2728 vr->vvr_vnic[0] = '\0'; in vrrpd_enable()
2735 vrrp_vr_t *vr; in vrrpd_disable() local
2740 if ((vr = vrrpd_lookup_vr_by_name(vn)) == NULL) { in vrrpd_disable()
2748 if (!vr->vvr_conf.vvc_enabled) { in vrrpd_disable()
2753 vr->vvr_conf.vvc_enabled = _B_FALSE; in vrrpd_disable()
2754 err = vrrpd_updateconf(&vr->vvr_conf, VRRP_CONF_UPDATE); in vrrpd_disable()
2756 vr->vvr_conf.vvc_enabled = _B_TRUE; in vrrpd_disable()
2758 "configuration for %s", vr->vvr_conf.vvc_name); in vrrpd_disable()
2762 vrrpd_disable_vr(vr, NULL, _B_FALSE); in vrrpd_disable()
2763 vr->vvr_vnic[0] = '\0'; in vrrpd_disable()
2770 vrrp_vr_t *vr; in vrrpd_modify() local
2781 if ((vr = vrrpd_lookup_vr_by_name(conf->vvc_name)) == NULL) { in vrrpd_modify()
2797 pri = vr->vvr_conf.vvc_pri; in vrrpd_modify()
2808 accept = vr->vvr_conf.vvc_accept; in vrrpd_modify()
2818 if ((mask & VRRP_CONF_ACCEPT) && (vr->vvr_conf.vvc_accept != accept)) { in vrrpd_modify()
2819 err = vrrpd_set_noaccept(vr, !accept); in vrrpd_modify()
2833 (void) memcpy(&savconf, &vr->vvr_conf, sizeof (vrrp_vr_conf_t)); in vrrpd_modify()
2835 vr->vvr_conf.vvc_preempt = conf->vvc_preempt; in vrrpd_modify()
2838 vr->vvr_conf.vvc_accept = accept; in vrrpd_modify()
2841 vr->vvr_conf.vvc_pri = pri; in vrrpd_modify()
2844 vr->vvr_conf.vvc_adver_int = conf->vvc_adver_int; in vrrpd_modify()
2846 err = vrrpd_updateconf(&vr->vvr_conf, VRRP_CONF_UPDATE); in vrrpd_modify()
2851 (void) vrrpd_set_noaccept(vr, accept); in vrrpd_modify()
2852 (void) memcpy(&vr->vvr_conf, &savconf, sizeof (vrrp_vr_conf_t)); in vrrpd_modify()
2856 if ((mask & VRRP_CONF_PRIORITY) && (vr->vvr_state == VRRP_STATE_BACKUP)) in vrrpd_modify()
2857 vr->vvr_timeout = MASTER_DOWN_INTERVAL_VR(vr); in vrrpd_modify()
2859 if ((mask & VRRP_CONF_INTERVAL) && (vr->vvr_state == VRRP_STATE_MASTER)) in vrrpd_modify()
2860 vr->vvr_timeout = conf->vvc_adver_int; in vrrpd_modify()
2869 vrrp_vr_t *vr; in vrrpd_list() local
2876 TAILQ_FOREACH(vr, &vrrp_vr_list, vvr_next) { in vrrpd_list()
2877 if (vrid != VRRP_VRID_NONE && vr->vvr_conf.vvc_vrid != vrid) in vrrpd_list()
2881 vr->vvr_conf.vvc_link) == 0) { in vrrpd_list()
2886 vr->vvr_conf.vvc_af != af) in vrrpd_list()
2896 (void) strlcpy(p, vr->vvr_conf.vvc_name, VRRP_NAME_MAX); in vrrpd_list()
2897 p += (strlen(vr->vvr_conf.vvc_name) + 1); in vrrpd_list()
2911 vrrp_vr_t *vr; in vrrpd_query() local
2920 if ((vr = vrrpd_lookup_vr_by_name(vn)) == NULL) { in vrrpd_query()
2930 if (vr->vvr_state != VRRP_STATE_INIT) { in vrrpd_query()
2931 vif = vr->vvr_vif; in vrrpd_query()
2952 &(vr->vvr_conf), sizeof (vrrp_vr_conf_t)); in vrrpd_query()
2954 &(vr->vvr_sinfo), sizeof (vrrp_stateinfo_t)); in vrrpd_query()
2955 (void) strlcpy(infop->show_va.va_vnic, vr->vvr_vnic, MAXLINKNAMELEN); in vrrpd_query()
2957 timeval_delta(now, vr->vvr_sinfo.vs_st_time)); in vrrpd_query()
2959 if (vr->vvr_state == VRRP_STATE_INIT) { in vrrpd_query()
2972 &vr->vvr_pif->vvi_pip->vip_addr, sizeof (vrrp_addr_t)); in vrrpd_query()
2974 (void) memcpy(&infop->show_vp, &(vr->vvr_peer), sizeof (vrrp_peer_t)); in vrrpd_query()
2979 if (!VRRPADDR_UNSPECIFIED(vr->vvr_conf.vvc_af, in vrrpd_query()
2980 &(vr->vvr_peer.vp_addr))) { in vrrpd_query()
2982 timeval_delta(now, vr->vvr_peer.vp_time)); in vrrpd_query()
2985 if (vr->vvr_state == VRRP_STATE_BACKUP) { in vrrpd_query()
2987 MASTER_DOWN_INTERVAL_VR(vr); in vrrpd_query()
3002 vrrpd_build_vrrp(vrrp_vr_t *vr, uchar_t *buf, int buflen, boolean_t zero_pri) in vrrpd_build_vrrp() argument
3010 vrrp_intf_t *vif = vr->vvr_vif; in vrrpd_build_vrrp()
3018 vr->vvr_conf.vvc_name, zero_pri ? "zero" : "non-zero", in vrrpd_build_vrrp()
3019 vr->vvr_conf.vvc_adver_int); in vrrpd_build_vrrp()
3025 "not big enough %d", vr->vvr_conf.vvc_name, size); in vrrpd_build_vrrp()
3037 "address", vr->vvr_conf.vvc_name); in vrrpd_build_vrrp()
3042 vp->vp_vrid = vr->vvr_conf.vvc_vrid; in vrrpd_build_vrrp()
3043 vp->vp_prio = zero_pri ? VRRP_PRIO_ZERO : vr->vvr_conf.vvc_pri; in vrrpd_build_vrrp()
3045 rsvd_adver_int = MSEC2CENTISEC(vr->vvr_conf.vvc_adver_int) & 0x0fff; in vrrpd_build_vrrp()
3055 &vr->vvr_pif->vvi_pip->vip_addr.in4.sin_addr, in vrrpd_build_vrrp()
3059 &vr->vvr_pif->vvi_pip->vip_addr.in6.sin6_addr, in vrrpd_build_vrrp()
3070 vrrpd_send_adv_v4(vrrp_vr_t *vr, uchar_t *buf, size_t len, boolean_t zero_pri) in vrrpd_send_adv_v4() argument
3076 vrrp_log(VRRP_DBG1, "vrrpd_send_adv_v4(%s)", vr->vvr_conf.vvc_name); in vrrpd_send_adv_v4()
3078 if ((plen = vrrpd_build_vrrp(vr, buf + sizeof (struct ip), in vrrpd_send_adv_v4()
3091 ip->ip_src = vr->vvr_pif->vvi_pip->vip_addr.in4.sin_addr; in vrrpd_send_adv_v4()
3100 if ((len = sendto(vr->vvr_vif->vvi_sockfd, buf, plen, 0, in vrrpd_send_adv_v4()
3105 vr->vvr_conf.vvc_vrid, vr->vvr_vif->vvi_ifname, in vrrpd_send_adv_v4()
3106 af_str(vr->vvr_conf.vvc_af), strerror(errno), len, plen); in vrrpd_send_adv_v4()
3111 vr->vvr_conf.vvc_name); in vrrpd_send_adv_v4()
3116 vrrpd_send_adv_v6(vrrp_vr_t *vr, uchar_t *buf, size_t len, boolean_t zero_pri) in vrrpd_send_adv_v6() argument
3128 vrrp_log(VRRP_DBG1, "vrrpd_send_adv_v6(%s)", vr->vvr_conf.vvc_name); in vrrpd_send_adv_v6()
3130 if ((plen = vrrpd_build_vrrp(vr, buf, len, zero_pri)) == 0) in vrrpd_send_adv_v6()
3155 "failed: %s", vr->vvr_conf.vvc_name, strerror(errno)); in vrrpd_send_adv_v6()
3179 (void) bcopy(&vr->vvr_pif->vvi_pip->vip_addr.in6.sin6_addr, in vrrpd_send_adv_v6()
3185 pktinfop->ipi6_ifindex = vr->vvr_vif->vvi_ifindex; in vrrpd_send_adv_v6()
3198 if ((len = sendmsg(vr->vvr_vif->vvi_sockfd, in vrrpd_send_adv_v6()
3201 "%s expect %d sent %d", vr->vvr_conf.vvc_name, in vrrpd_send_adv_v6()
3208 vr->vvr_conf.vvc_name); in vrrpd_send_adv_v6()
3217 vrrpd_send_adv(vrrp_vr_t *vr, boolean_t zero_pri) in vrrpd_send_adv() argument
3222 vr->vvr_conf.vvc_name, zero_pri ? "zero" : "non_zero"); in vrrpd_send_adv()
3224 assert(vr->vvr_pif->vvi_pip != NULL); in vrrpd_send_adv()
3226 if (vr->vvr_pif->vvi_pip == NULL) { in vrrpd_send_adv()
3228 "address", vr->vvr_conf.vvc_name); in vrrpd_send_adv()
3232 if (vr->vvr_conf.vvc_af == AF_INET) { in vrrpd_send_adv()
3233 return (vrrpd_send_adv_v4(vr, (uchar_t *)buf, in vrrpd_send_adv()
3236 return (vrrpd_send_adv_v6(vr, (uchar_t *)buf, in vrrpd_send_adv()
3242 vrrpd_process_adv(vrrp_vr_t *vr, vrrp_addr_t *from, vrrp_pkt_t *vp) in vrrpd_process_adv() argument
3244 vrrp_vr_conf_t *conf = &vr->vvr_conf; in vrrpd_process_adv()
3251 VRRPADDR2STR(vr->vvr_conf.vvc_af, from, peer, INET6_ADDRSTRLEN, in vrrpd_process_adv()
3256 if (vr->vvr_state <= VRRP_STATE_INIT) { in vrrpd_process_adv()
3258 "ready", conf->vvc_name, vrrp_state2str(vr->vvr_state)); in vrrpd_process_adv()
3265 VRRPADDR2STR(vr->vvr_pif->vvi_af, &vr->vvr_pif->vvi_pip->vip_addr, in vrrpd_process_adv()
3269 vrrp_state2str(vr->vvr_state), conf->vvc_pri, peer, in vrrpd_process_adv()
3272 addr_cmp = ipaddr_cmp(vr->vvr_pif->vvi_af, from, in vrrpd_process_adv()
3273 &vr->vvr_pif->vvi_pip->vip_addr); in vrrpd_process_adv()
3291 (void) gettimeofday(&vr->vvr_peer_time, NULL); in vrrpd_process_adv()
3292 (void) memcpy(&vr->vvr_peer_addr, from, sizeof (vrrp_addr_t)); in vrrpd_process_adv()
3293 vr->vvr_peer_prio = vp->vp_prio; in vrrpd_process_adv()
3294 vr->vvr_peer_adver_int = peer_adver_int; in vrrpd_process_adv()
3296 if (vr->vvr_state == VRRP_STATE_BACKUP) { in vrrpd_process_adv()
3297 vr->vvr_master_adver_int = vr->vvr_peer_adver_int; in vrrpd_process_adv()
3302 vr->vvr_timer_id, NULL); in vrrpd_process_adv()
3305 vr->vvr_timeout = SKEW_TIME_VR(vr); in vrrpd_process_adv()
3307 vr->vvr_timeout = MASTER_DOWN_INTERVAL_VR(vr); in vrrpd_process_adv()
3309 if ((vr->vvr_timer_id = iu_schedule_timer_ms( in vrrpd_process_adv()
3310 vrrpd_timerq, vr->vvr_timeout, vrrp_b2m_timeout, in vrrpd_process_adv()
3311 vr)) == -1) { in vrrpd_process_adv()
3314 conf->vvc_name, vr->vvr_timeout); in vrrpd_process_adv()
3318 conf->vvc_name, vr->vvr_timeout); in vrrpd_process_adv()
3321 } else if (vr->vvr_state == VRRP_STATE_MASTER) { in vrrpd_process_adv()
3323 (void) vrrpd_send_adv(vr, _B_FALSE); in vrrpd_process_adv()
3325 vr->vvr_timer_id, NULL); in vrrpd_process_adv()
3326 if ((vr->vvr_timer_id = iu_schedule_timer_ms( in vrrpd_process_adv()
3327 vrrpd_timerq, vr->vvr_timeout, vrrp_adv_timeout, in vrrpd_process_adv()
3328 vr)) == -1) { in vrrpd_process_adv()
3331 conf->vvc_name, vr->vvr_timeout); in vrrpd_process_adv()
3335 conf->vvc_name, vr->vvr_timeout); in vrrpd_process_adv()
3339 (void) vrrpd_state_m2b(vr); in vrrpd_process_adv()
3350 vrrp_vr_t *vr; in vrrpd_process_vrrp() local
3413 if ((vr = vrrpd_lookup_vr_by_vrid(pif->vvi_ifname, vp->vp_vrid, in vrrpd_process_vrrp()
3415 vrrpd_process_adv(vr, from, vp); in vrrpd_process_vrrp()
3581 vrrpd_init_rxsock(vrrp_vr_t *vr) in vrrpd_init_rxsock() argument
3590 vrrp_log(VRRP_DBG1, "vrrpd_init_rxsock(%s)", vr->vvr_conf.vvc_name); in vrrpd_init_rxsock()
3595 if ((pif = vr->vvr_pif) != NULL) { in vrrpd_init_rxsock()
3597 vr->vvr_conf.vvc_name, pif->vvi_ifname); in vrrpd_init_rxsock()
3606 af = vr->vvr_conf.vvc_af; in vrrpd_init_rxsock()
3607 pif = vrrpd_lookup_if(vr->vvr_conf.vvc_link, af); in vrrpd_init_rxsock()
3610 "over %s/%s", vr->vvr_conf.vvc_name, in vrrpd_init_rxsock()
3611 vr->vvr_conf.vvc_link, af_str(af)); in vrrpd_init_rxsock()
3621 "failed %s", vr->vvr_conf.vvc_name, in vrrpd_init_rxsock()
3644 "join_group(%d) failed: %s", vr->vvr_conf.vvc_name, in vrrpd_init_rxsock()
3650 "join_group(%d) succeeded", vr->vvr_conf.vvc_name, in vrrpd_init_rxsock()
3667 vr->vvr_conf.vvc_name, strerror(errno)); in vrrpd_init_rxsock()
3679 vr->vvr_conf.vvc_name, strerror(errno)); in vrrpd_init_rxsock()
3689 vr->vvr_conf.vvc_name); in vrrpd_init_rxsock()
3695 "done %d", vr->vvr_conf.vvc_name, pif->vvi_ifname, in vrrpd_init_rxsock()
3701 vr->vvr_pif = pif; in vrrpd_init_rxsock()
3703 vrrpd_fini_rxsock(vr); in vrrpd_init_rxsock()
3715 vrrpd_fini_rxsock(vrrp_vr_t *vr) in vrrpd_fini_rxsock() argument
3717 vrrp_intf_t *pif = vr->vvr_pif; in vrrpd_fini_rxsock()
3719 vrrp_log(VRRP_DBG1, "vrrpd_fini_rxsock(%s)", vr->vvr_conf.vvc_name); in vrrpd_fini_rxsock()
3726 vr->vvr_conf.vvc_name, pif->vvi_ifname); in vrrpd_fini_rxsock()
3734 vr->vvr_conf.vvc_name, pif->vvi_ifname, pif->vvi_nvr); in vrrpd_fini_rxsock()
3736 vr->vvr_pif = NULL; in vrrpd_fini_rxsock()
3744 vrrpd_init_txsock(vrrp_vr_t *vr) in vrrpd_init_txsock() argument
3750 vrrp_log(VRRP_DBG1, "vrrpd_init_txsock(%s)", vr->vvr_conf.vvc_name); in vrrpd_init_txsock()
3752 if (vr->vvr_vif != NULL) { in vrrpd_init_txsock()
3754 vr->vvr_conf.vvc_name, vr->vvr_vif->vvi_ifname); in vrrpd_init_txsock()
3758 af = vr->vvr_conf.vvc_af; in vrrpd_init_txsock()
3759 if ((vif = vrrpd_lookup_if(vr->vvr_vnic, af)) == NULL) { in vrrpd_init_txsock()
3761 "%s/%s", vr->vvr_conf.vvc_name, vr->vvr_vnic, af_str(af)); in vrrpd_init_txsock()
3765 vr->vvr_vif = vif; in vrrpd_init_txsock()
3766 if (vr->vvr_conf.vvc_af == AF_INET) in vrrpd_init_txsock()
3767 err = vrrpd_init_txsock_v4(vr); in vrrpd_init_txsock()
3769 err = vrrpd_init_txsock_v6(vr); in vrrpd_init_txsock()
3778 if (!vr->vvr_conf.vvc_accept) in vrrpd_init_txsock()
3779 err = vrrpd_set_noaccept(vr, _B_TRUE); in vrrpd_init_txsock()
3785 vr->vvr_vif = NULL; in vrrpd_init_txsock()
3797 vrrpd_init_txsock_v4(vrrp_vr_t *vr) in vrrpd_init_txsock_v4() argument
3806 vif = vr->vvr_vif; in vrrpd_init_txsock_v4()
3807 assert(vr->vvr_conf.vvc_af == AF_INET); in vrrpd_init_txsock_v4()
3811 vr->vvr_conf.vvc_name, vif->vvi_ifname); in vrrpd_init_txsock_v4()
3815 "over %s", vr->vvr_conf.vvc_name, vif->vvi_ifname); in vrrpd_init_txsock_v4()
3822 "failed: %s", vr->vvr_conf.vvc_name, strerror(errno)); in vrrpd_init_txsock_v4()
3833 "failed: %s", vr->vvr_conf.vvc_name, strerror(errno)); in vrrpd_init_txsock_v4()
3844 "multicast_loop failed: %s", vr->vvr_conf.vvc_name, in vrrpd_init_txsock_v4()
3861 "failed: %s", vr->vvr_conf.vvc_name, abuf, strerror(errno)); in vrrpd_init_txsock_v4()
3865 "succeed", vr->vvr_conf.vvc_name, abuf); in vrrpd_init_txsock_v4()
3883 vrrpd_init_txsock_v6(vrrp_vr_t *vr) in vrrpd_init_txsock_v6() argument
3889 vif = vr->vvr_vif; in vrrpd_init_txsock_v6()
3890 assert(vr->vvr_conf.vvc_af == AF_INET6); in vrrpd_init_txsock_v6()
3894 vr->vvr_conf.vvc_name, vif->vvi_ifname); in vrrpd_init_txsock_v6()
3898 "over %s", vr->vvr_conf.vvc_name, vif->vvi_ifname); in vrrpd_init_txsock_v6()
3905 "failed: %s", vr->vvr_conf.vvc_name, strerror(errno)); in vrrpd_init_txsock_v6()
3916 "multicast_loop failed: %s", vr->vvr_conf.vvc_name, in vrrpd_init_txsock_v6()
3928 "multicast_hops %d failed: %s", vr->vvr_conf.vvc_name, in vrrpd_init_txsock_v6()
3940 "failed: %s", vr->vvr_conf.vvc_name, vif->vvi_ifindex, in vrrpd_init_txsock_v6()
3945 " succeed", vr->vvr_conf.vvc_name, vif->vvi_ifindex); in vrrpd_init_txsock_v6()
3962 vrrpd_fini_txsock(vrrp_vr_t *vr) in vrrpd_fini_txsock() argument
3964 vrrp_intf_t *vif = vr->vvr_vif; in vrrpd_fini_txsock()
3966 vrrp_log(VRRP_DBG1, "vrrpd_fini_txsock(%s)", vr->vvr_conf.vvc_name); in vrrpd_fini_txsock()
3969 if (!vr->vvr_conf.vvc_accept) in vrrpd_fini_txsock()
3970 (void) vrrpd_set_noaccept(vr, _B_FALSE); in vrrpd_fini_txsock()
3973 vr->vvr_vif = NULL; in vrrpd_fini_txsock()
4102 vrrpd_state_i2m(vrrp_vr_t *vr) in vrrpd_state_i2m() argument
4106 vrrp_log(VRRP_DBG1, "vrrpd_state_i2m(%s)", vr->vvr_conf.vvc_name); in vrrpd_state_i2m()
4108 vrrpd_state_trans(VRRP_STATE_INIT, VRRP_STATE_MASTER, vr); in vrrpd_state_i2m()
4109 if ((err = vrrpd_virtualip_update(vr, _B_FALSE)) != VRRP_SUCCESS) in vrrpd_state_i2m()
4112 (void) vrrpd_send_adv(vr, _B_FALSE); in vrrpd_state_i2m()
4114 vr->vvr_err = VRRP_SUCCESS; in vrrpd_state_i2m()
4115 vr->vvr_timeout = vr->vvr_conf.vvc_adver_int; in vrrpd_state_i2m()
4116 if ((vr->vvr_timer_id = iu_schedule_timer_ms(vrrpd_timerq, in vrrpd_state_i2m()
4117 vr->vvr_timeout, vrrp_adv_timeout, vr)) == -1) { in vrrpd_state_i2m()
4122 "vrrp_adv_timeout(%d)", vr->vvr_conf.vvc_name, in vrrpd_state_i2m()
4123 vr->vvr_timeout); in vrrpd_state_i2m()
4129 vrrpd_state_i2b(vrrp_vr_t *vr) in vrrpd_state_i2b() argument
4133 vrrp_log(VRRP_DBG1, "vrrpd_state_i2b(%s)", vr->vvr_conf.vvc_name); in vrrpd_state_i2b()
4135 vrrpd_state_trans(VRRP_STATE_INIT, VRRP_STATE_BACKUP, vr); in vrrpd_state_i2b()
4136 if ((err = vrrpd_virtualip_update(vr, _B_FALSE)) != VRRP_SUCCESS) in vrrpd_state_i2b()
4143 vr->vvr_err = VRRP_SUCCESS; in vrrpd_state_i2b()
4144 vr->vvr_master_adver_int = vr->vvr_conf.vvc_adver_int; in vrrpd_state_i2b()
4145 vr->vvr_timeout = MASTER_DOWN_INTERVAL_VR(vr); in vrrpd_state_i2b()
4146 if ((vr->vvr_timer_id = iu_schedule_timer_ms(vrrpd_timerq, in vrrpd_state_i2b()
4147 vr->vvr_timeout, vrrp_b2m_timeout, vr)) == -1) { in vrrpd_state_i2b()
4152 "vrrp_b2m_timeout(%d)", vr->vvr_conf.vvc_name, in vrrpd_state_i2b()
4153 vr->vvr_timeout); in vrrpd_state_i2b()
4159 vrrpd_state_m2i(vrrp_vr_t *vr) in vrrpd_state_m2i() argument
4161 vrrp_log(VRRP_DBG1, "vrrpd_state_m2i(%s)", vr->vvr_conf.vvc_name); in vrrpd_state_m2i()
4163 vrrpd_state_trans(VRRP_STATE_MASTER, VRRP_STATE_INIT, vr); in vrrpd_state_m2i()
4164 (void) vrrpd_virtualip_update(vr, _B_TRUE); in vrrpd_state_m2i()
4165 bzero(&vr->vvr_peer, sizeof (vrrp_peer_t)); in vrrpd_state_m2i()
4166 (void) iu_cancel_timer(vrrpd_timerq, vr->vvr_timer_id, NULL); in vrrpd_state_m2i()
4170 vrrpd_state_b2i(vrrp_vr_t *vr) in vrrpd_state_b2i() argument
4172 vrrp_log(VRRP_DBG1, "vrrpd_state_b2i(%s)", vr->vvr_conf.vvc_name); in vrrpd_state_b2i()
4174 bzero(&vr->vvr_peer, sizeof (vrrp_peer_t)); in vrrpd_state_b2i()
4175 (void) iu_cancel_timer(vrrpd_timerq, vr->vvr_timer_id, NULL); in vrrpd_state_b2i()
4176 vrrpd_state_trans(VRRP_STATE_BACKUP, VRRP_STATE_INIT, vr); in vrrpd_state_b2i()
4177 (void) vrrpd_virtualip_update(vr, _B_TRUE); in vrrpd_state_b2i()
4184 vrrp_vr_t *vr = (vrrp_vr_t *)arg; in vrrp_b2m_timeout() local
4186 vrrp_log(VRRP_DBG1, "vrrp_b2m_timeout(%s)", vr->vvr_conf.vvc_name); in vrrp_b2m_timeout()
4187 (void) vrrpd_state_b2m(vr); in vrrp_b2m_timeout()
4194 vrrp_vr_t *vr = (vrrp_vr_t *)arg; in vrrp_adv_timeout() local
4196 vrrp_log(VRRP_DBG1, "vrrp_adv_timeout(%s)", vr->vvr_conf.vvc_name); in vrrp_adv_timeout()
4198 (void) vrrpd_send_adv(vr, _B_FALSE); in vrrp_adv_timeout()
4199 if ((vr->vvr_timer_id = iu_schedule_timer_ms(vrrpd_timerq, in vrrp_adv_timeout()
4200 vr->vvr_timeout, vrrp_adv_timeout, vr)) == -1) { in vrrp_adv_timeout()
4202 vr->vvr_conf.vvc_name); in vrrp_adv_timeout()
4205 "vrrp_adv_timeout(%d)", vr->vvr_conf.vvc_name, in vrrp_adv_timeout()
4206 vr->vvr_timeout); in vrrp_adv_timeout()
4211 vrrpd_state_b2m(vrrp_vr_t *vr) in vrrpd_state_b2m() argument
4215 vrrp_log(VRRP_DBG1, "vrrpd_state_b2m(%s)", vr->vvr_conf.vvc_name); in vrrpd_state_b2m()
4217 vrrpd_state_trans(VRRP_STATE_BACKUP, VRRP_STATE_MASTER, vr); in vrrpd_state_b2m()
4218 if ((err = vrrpd_virtualip_update(vr, _B_FALSE)) != VRRP_SUCCESS) in vrrpd_state_b2m()
4220 (void) vrrpd_send_adv(vr, _B_FALSE); in vrrpd_state_b2m()
4222 vr->vvr_timeout = vr->vvr_conf.vvc_adver_int; in vrrpd_state_b2m()
4223 if ((vr->vvr_timer_id = iu_schedule_timer_ms(vrrpd_timerq, in vrrpd_state_b2m()
4224 vr->vvr_timeout, vrrp_adv_timeout, vr)) == -1) { in vrrpd_state_b2m()
4226 vr->vvr_conf.vvc_name); in vrrpd_state_b2m()
4230 "vrrp_adv_timeout(%d)", vr->vvr_conf.vvc_name, in vrrpd_state_b2m()
4231 vr->vvr_timeout); in vrrpd_state_b2m()
4237 vrrpd_state_m2b(vrrp_vr_t *vr) in vrrpd_state_m2b() argument
4241 vrrp_log(VRRP_DBG1, "vrrpd_state_m2b(%s)", vr->vvr_conf.vvc_name); in vrrpd_state_m2b()
4243 vrrpd_state_trans(VRRP_STATE_MASTER, VRRP_STATE_BACKUP, vr); in vrrpd_state_m2b()
4244 if ((err = vrrpd_virtualip_update(vr, _B_FALSE)) != VRRP_SUCCESS) in vrrpd_state_m2b()
4250 vr->vvr_master_adver_int = vr->vvr_peer_adver_int; in vrrpd_state_m2b()
4251 (void) iu_cancel_timer(vrrpd_timerq, vr->vvr_timer_id, NULL); in vrrpd_state_m2b()
4252 vr->vvr_timeout = MASTER_DOWN_INTERVAL_VR(vr); in vrrpd_state_m2b()
4253 if ((vr->vvr_timer_id = iu_schedule_timer_ms(vrrpd_timerq, in vrrpd_state_m2b()
4254 vr->vvr_timeout, vrrp_b2m_timeout, vr)) == -1) { in vrrpd_state_m2b()
4256 vr->vvr_conf.vvc_name); in vrrpd_state_m2b()
4259 "vrrp_b2m_timeout(%d)", vr->vvr_conf.vvc_name, in vrrpd_state_m2b()
4260 vr->vvr_timeout); in vrrpd_state_m2b()
4270 vrrpd_set_noaccept(vrrp_vr_t *vr, boolean_t on) in vrrpd_set_noaccept() argument
4272 vrrp_intf_t *vif = vr->vvr_vif; in vrrpd_set_noaccept()
4278 vr->vvr_conf.vvc_name, on ? "on" : "off"); in vrrpd_set_noaccept()
4287 vif->vvi_ifname, vrrp_state2str(vr->vvr_state)); in vrrpd_set_noaccept()
4380 vrrpd_virtualip_update(vrrp_vr_t *vr, boolean_t checkonly) in vrrpd_virtualip_update() argument
4383 vrrp_intf_t *vif = vr->vvr_vif; in vrrpd_virtualip_update()
4389 vr->vvr_conf.vvc_name, vrrp_state2str(vr->vvr_state), in vrrpd_virtualip_update()
4392 state = vr->vvr_state; in vrrpd_virtualip_update()
4424 vrrpd_state_trans(vrrp_state_t prev_s, vrrp_state_t s, vrrp_vr_t *vr) in vrrpd_state_trans() argument
4427 vr->vvr_conf.vvc_name, vrrp_state2str(prev_s), vrrp_state2str(s)); in vrrpd_state_trans()
4429 assert(vr->vvr_state == prev_s); in vrrpd_state_trans()
4430 vr->vvr_state = s; in vrrpd_state_trans()
4431 vr->vvr_prev_state = prev_s; in vrrpd_state_trans()
4432 (void) gettimeofday(&vr->vvr_st_time, NULL); in vrrpd_state_trans()
4433 (void) vrrpd_post_event(vr->vvr_conf.vvc_name, prev_s, s); in vrrpd_state_trans()