Lines Matching defs:srv

543 ilbd_hc_kill_probe(ilbd_hc_srv_t *srv)
549 if (port_dissociate(srv->shc_ev_port, PORT_SOURCE_FD,
550 srv->shc_child_fd) != 0) {
553 (void) close(srv->shc_child_fd);
554 free(srv->shc_ev);
555 srv->shc_ev = NULL;
558 if (kill(srv->shc_child_pid, SIGKILL) != 0) {
560 srv->shc_hc_rule->hcr_rule->irl_name,
561 srv->shc_sg_srv->sgs_srvID, strerror(errno));
564 if (waitpid(srv->shc_child_pid, NULL, 0) != srv->shc_child_pid) {
566 srv->shc_hc_rule->hcr_rule->irl_name,
567 srv->shc_sg_srv->sgs_srvID);
569 srv->shc_child_pid = 0;
579 ilbd_mark_server_disabled(ilbd_hc_srv_t *srv)
581 srv->shc_status = ILB_HCS_DISABLED;
584 if (ilbd_k_Xable_server(&srv->shc_sg_srv->sgs_addr,
585 srv->shc_hc_rule->hcr_rule->irl_name,
589 srv->shc_hc_rule->hcr_rule->irl_name,
590 srv->shc_sg_srv->sgs_srvID);
598 ilbd_set_fail_state(ilbd_hc_srv_t *srv)
600 if (++srv->shc_fail_cnt < srv->shc_hc->ihc_count) {
602 ilbd_hc_probe_timer(ilbd_hc_timer_q, srv);
607 srv->shc_hc_rule->hcr_rule->irl_name, srv->shc_sg_srv->sgs_srvID,
608 srv->shc_fail_cnt);
614 if (srv->shc_hc->ihc_test_type == ILBD_HC_PING ||
615 srv->shc_state == ilbd_hc_def_pinging) {
616 srv->shc_status = ILB_HCS_UNREACH;
618 srv->shc_status = ILB_HCS_DEAD;
622 if (ilbd_k_Xable_server(&srv->shc_sg_srv->sgs_addr,
623 srv->shc_hc_rule->hcr_rule->irl_name, stat_declare_srv_dead) !=
627 srv->shc_hc_rule->hcr_rule->irl_name,
628 srv->shc_sg_srv->sgs_srvID);
632 if (ilbd_hc_restart_timer(srv->shc_hc, srv) != ILB_STATUS_OK) {
635 srv->shc_hc_rule->hcr_rule->irl_name,
636 srv->shc_sg_srv->sgs_srvID);
637 srv->shc_status = ILB_HCS_DISABLED;
649 ilbd_hc_srv_t *srv = (ilbd_hc_srv_t *)arg;
651 ilbd_hc_kill_probe(srv);
652 ilbd_set_fail_state(srv);
662 ilbd_hc_srv_t *srv = (ilbd_hc_srv_t *)arg;
668 if (!ilbd_run_probe(srv)) {
674 if (ilbd_hc_restart_timer(srv->shc_hc, srv) != ILB_STATUS_OK) {
677 srv->shc_hc_rule->hcr_rule->irl_name,
678 srv->shc_sg_srv->sgs_srvID);
679 ilbd_mark_server_disabled(srv);
688 if ((srv->shc_tid = iu_schedule_timer(ilbd_hc_timer_q,
689 srv->shc_hc->ihc_timeout, ilbd_hc_kill_timer, srv)) == -1) {
692 srv->shc_hc_rule->hcr_rule->irl_name,
693 srv->shc_sg_srv->sgs_srvID);
694 ilbd_mark_server_disabled(srv);
701 ilbd_hc_restart_timer(ilbd_hc_t *hc, ilbd_hc_srv_t *srv)
714 srv->shc_state = ilbd_hc_def_pinging;
716 srv->shc_state = ilbd_hc_probing;
717 srv->shc_tid = iu_schedule_timer(ilbd_hc_timer_q, timeout,
718 ilbd_hc_probe_timer, srv);
720 if (srv->shc_tid == -1)
722 srv->shc_lasttime = time(NULL);
723 srv->shc_nexttime = time(NULL) + timeout;
732 const ilb_sg_srv_t *srv, int ev_port)
741 new_srv->shc_sg_srv = srv;
748 ILB_IS_SRV_ENABLED(srv->sgs_flags)) {
764 #define HC_CANCEL_TIMER(srv) \
768 if ((srv)->shc_tid != -1) { \
769 ret = iu_cancel_timer(ilbd_hc_timer_q, (srv)->shc_tid, &arg); \
770 (srv)->shc_tid = -1; \
772 assert(arg == (srv)); \
779 ilbd_hc_srv_rem(ilbd_hc_rule_t *hc_rule, const ilb_sg_srv_t *srv)
785 if (tmp_srv->shc_sg_srv == srv) {
801 ilbd_hc_srv_t *srv;
803 while ((srv = list_remove_head(&hc_rule->hcr_servers)) != NULL) {
804 HC_CANCEL_TIMER(srv);
805 if (srv->shc_child_pid != 0)
806 ilbd_hc_kill_probe(srv);
807 free(srv);
919 ilbd_hc_add_server(const ilbd_rule_t *rule, const ilb_sg_srv_t *srv,
927 return (ilbd_hc_srv_add(hc, hc_rule, srv, ev_port));
932 ilbd_hc_del_server(const ilbd_rule_t *rule, const ilb_sg_srv_t *srv)
939 return (ilbd_hc_srv_rem(hc_rule, srv));
944 ilbd_hc_toggle_server(const ilbd_rule_t *rule, const ilb_sg_srv_t *srv,
956 if (tmp_srv->shc_sg_srv != srv) {
988 ilbd_hc_enable_server(const ilbd_rule_t *rule, const ilb_sg_srv_t *srv)
990 return (ilbd_hc_toggle_server(rule, srv, B_TRUE));
994 ilbd_hc_disable_server(const ilbd_rule_t *rule, const ilb_sg_srv_t *srv)
996 return (ilbd_hc_toggle_server(rule, srv, B_FALSE));
1109 create_argv(ilbd_hc_srv_t *srv, char *argv[])
1118 rule = srv->shc_hc_rule->hcr_rule;
1119 sg_srv = srv->shc_sg_srv;
1121 if (srv->shc_state == ilbd_hc_def_pinging) {
1125 switch (srv->shc_hc->ihc_test_type) {
1127 if ((argv[0] = strdup(srv->shc_hc->ihc_test)) == NULL)
1238 (void) sprintf(buf, "%d", srv->shc_hc->ihc_timeout);
1264 ilbd_run_probe(ilbd_hc_srv_t *srv)
1337 if (!create_argv(srv, child_argv)) {
1348 if (srv->shc_state == ilbd_hc_def_pinging ||
1349 srv->shc_hc->ihc_test_type != ILBD_HC_USER) {
1352 probe_name = srv->shc_hc->ihc_test;
1357 srv->shc_hc->ihc_test, srv->shc_sg_srv->sgs_srvID,
1363 srv->shc_child_pid = pid;
1364 srv->shc_child_fd = fds[0];
1365 srv->shc_ev = probe_ev;
1368 probe_ev->ihp_srv = srv;
1370 if (port_associate(srv->shc_ev_port, PORT_SOURCE_FD, fds[0],
1373 * Need to kill the child. It will free the srv->shc_ev,
1376 ilbd_hc_kill_probe(srv);
1428 ilbd_hc_srv_t *srv;
1432 srv = ev->ihp_srv;
1437 srv->shc_ev = NULL;
1438 srv->shc_child_pid = 0;
1439 HC_CANCEL_TIMER(srv);
1440 ilbd_set_fail_state(srv);
1466 ilbd_hc_srv_t *srv;
1471 srv = ev->ihp_srv;
1487 srv->shc_ev = NULL;
1488 srv->shc_child_pid = 0;
1489 HC_CANCEL_TIMER(srv);
1501 ilbd_set_fail_state(srv);
1507 if (srv->shc_rtt == 0) {
1508 srv->shc_rtt = rtt;
1510 srv->shc_rtt = 3 * ((srv)->shc_rtt >> 2) +
1517 switch (srv->shc_state) {
1519 srv->shc_state = ilbd_hc_probing;
1522 ilbd_hc_probe_timer(ilbd_hc_timer_q, srv);
1525 srv->shc_fail_cnt = 0;
1528 if (srv->shc_status == ILB_HCS_UNREACH ||
1529 srv->shc_status == ILB_HCS_DEAD) {
1535 if (ilbd_k_Xable_server(&srv->shc_sg_srv->sgs_addr,
1536 srv->shc_hc_rule->hcr_rule->irl_name,
1540 srv->shc_hc_rule->hcr_rule->irl_name,
1541 srv->shc_sg_srv->sgs_srvID);
1543 srv->shc_status = ILB_HCS_ALIVE;
1546 srv->shc_status = ILB_HCS_ALIVE;
1548 if (ilbd_hc_restart_timer(srv->shc_hc, srv) != ILB_STATUS_OK) {
1550 __func__, srv->shc_hc_rule->hcr_rule->irl_name,
1551 srv->shc_sg_srv->sgs_srvID);
1552 ilbd_mark_server_disabled(srv);