static void notify_up_handler(vector_t *strvec) { virtual_server_t *vs = LIST_TAIL_DATA(check_data->vs); real_server_t *rs = LIST_TAIL_DATA(vs->rs); rs->notify_up = set_value(strvec); }
static void inhibit_handler(vector_t *strvec) { virtual_server_t *vs = LIST_TAIL_DATA(check_data->vs); real_server_t *rs = LIST_TAIL_DATA(vs->rs); rs->inhibit = 1; }
static void lthreshold_handler(vector_t *strvec) { virtual_server_t *vs = LIST_TAIL_DATA(check_data->vs); real_server_t *rs = LIST_TAIL_DATA(vs->rs); rs->l_threshold = atoi(vector_slot(strvec, 1)); }
static void lthreshold_handler(vector strvec) { virtual_server *vs = LIST_TAIL_DATA(check_data->vs); real_server *rs = LIST_TAIL_DATA(vs->rs); rs->l_threshold = atoi(VECTOR_SLOT(strvec, 1)); }
static void weight_handler(vector_t *strvec) { virtual_server_t *vs = LIST_TAIL_DATA(check_data->vs); real_server_t *rs = LIST_TAIL_DATA(vs->rs); rs->weight = atoi(vector_slot(strvec, 1)); rs->iweight = rs->weight; }
/* Set dst */ void checker_set_dst(struct sockaddr_storage *dst) { virtual_server_t *vs = LIST_TAIL_DATA(check_data->vs); real_server_t *rs = LIST_TAIL_DATA(vs->rs); *dst = rs->addr; }
static void weight_handler(vector strvec) { virtual_server *vs = LIST_TAIL_DATA(check_data->vs); real_server *rs = LIST_TAIL_DATA(vs->rs); rs->weight = atoi(VECTOR_SLOT(strvec, 1)); rs->iweight = rs->weight; }
static void vrrp_notify_handler(vector_t *strvec) { vrrp_t *vrrp = LIST_TAIL_DATA(vrrp_data->vrrp); vrrp->script = set_value(strvec); vrrp->notify_exec = 1; }
static void vrrp_vmac_xmit_base_handler(vector_t *strvec) { vrrp_t *vrrp = LIST_TAIL_DATA(vrrp_data->vrrp); __set_bit(VRRP_VMAC_XMITBASE_BIT, &vrrp->vmac_flags); }
static void vrrp_gnotify_handler(vector_t *strvec) { vrrp_sgroup_t *vgroup = LIST_TAIL_DATA(vrrp_data->vrrp_sync_group); vgroup->script = set_value(strvec); vgroup->notify_exec = 1; }
static void vrrp_vmac_xmit_base_handler(vector_t *strvec) { vrrp_t *vrrp = LIST_TAIL_DATA(vrrp_data->vrrp); if (vrrp->vmac_flags & VRRP_VMAC_FL_SET) vrrp->vmac_flags |= VRRP_VMAC_FL_XMITBASE; }
static void vrrp_vmac_handler(vector_t *strvec) { vrrp_t *vrrp = LIST_TAIL_DATA(vrrp_data->vrrp); vrrp->vmac |= 1; if (!vrrp->saddr) vrrp->saddr = IF_ADDR(vrrp->ifp); if (vector_size(strvec) == 2) { strncpy(vrrp->vmac_ifname, vector_slot(strvec, 1), IFNAMSIZ - 1); } else if (vrrp->vrid) { snprintf(vrrp->vmac_ifname, IFNAMSIZ, "vrrp.%d", vrrp->vrid); } if (strlen(vrrp->vmac_ifname)) { log_message(LOG_INFO, "vmac_ifname=%s for vrrp_instace %s" , vrrp->vmac_ifname , vrrp->iname); } if (vrrp->ifp && !(vrrp->vmac & 2)) { unsigned int base_ifindex = vrrp->ifp->base_ifindex; netlink_link_add_vmac(vrrp); /* restore base ifindex (deleted when adding VMAC) */ vrrp->ifp->base_ifindex = base_ifindex; } /* flag interface as a VMAC interface */ vrrp->ifp->vmac = 1; }
static void vrrp_notify_master_handler(vector strvec) { vrrp_rt *vrrp = LIST_TAIL_DATA(vrrp_data->vrrp); vrrp->script_master = set_value(strvec); vrrp->notify_exec = 1; }
static void laddr_gname_handler(vector_t *strvec) { virtual_server_t *vs = LIST_TAIL_DATA(check_data->vs); vs->local_addr_gname = set_value(strvec); }
static void bfd_nbrip_handler(vector_t *strvec) { bfd_t *bfd; struct sockaddr_storage nbr_addr; assert(strvec); assert(bfd_data); bfd = LIST_TAIL_DATA(bfd_data->bfd); assert(bfd); if (!strcmp(vector_slot(strvec, 1), "neighbour_ip")) neighbor_str = "neighbour"; if (inet_stosockaddr(strvec_slot(strvec, 1), BFD_CONTROL_PORT, &nbr_addr)) { report_config_error(CONFIG_GENERAL_ERROR, "Configuration error: BFD instance %s has" " malformed %s address %s, ignoring instance", bfd->iname, neighbor_str, FMT_STR_VSLOT(strvec, 1)); list_del(bfd_data->bfd, bfd); skip_block(false); return; } else if (find_bfd_by_addr(&nbr_addr)) { report_config_error(CONFIG_GENERAL_ERROR, "Configuration error: BFD instance %s has" " duplicate %s address %s, ignoring instance", bfd->iname, neighbor_str, FMT_STR_VSLOT(strvec, 1)); list_del(bfd_data->bfd, bfd); skip_block(false); return; } else bfd->nbr_addr = nbr_addr; }
static void bfd_idletx_handler(vector_t *strvec) { bfd_t *bfd; unsigned value; assert(strvec); assert(bfd_data); bfd = LIST_TAIL_DATA(bfd_data->bfd); assert(bfd); if (!read_unsigned_strvec(strvec, 1, &value,BFD_IDLETX_MIN, BFD_IDLETX_MAX, false)) report_config_error(CONFIG_GENERAL_ERROR, "Configuration error: BFD instance %s" " idle_tx value %s is not valid (must be in range" " [%u-%u]), ignoring", bfd->iname, FMT_STR_VSLOT(strvec, 1), BFD_IDLETX_MIN, BFD_IDLETX_MAX); else bfd->local_idle_tx_intv = value * 1000U; if (value > BFD_IDLETX_MAX_SENSIBLE) log_message(LOG_INFO, "Configuration warning: BFD instance %s" " idle_tx value %u is larger than max sensible (%u)", bfd->iname, value, BFD_IDLETX_MAX_SENSIBLE); }
static void alpha_handler(vector_t *strvec) { virtual_server_t *vs = LIST_TAIL_DATA(check_data->vs); vs->alpha = 1; vs->quorum_state = DOWN; }
static void vs_end_handler(void) { virtual_server_t *vs = LIST_TAIL_DATA(check_data->vs); if (! vs->af) vs->af = AF_INET; }
static void proto_handler(vector_t *strvec) { virtual_server_t *vs = LIST_TAIL_DATA(check_data->vs); char *str = vector_slot(strvec, 1); vs->service_type = (!strcmp(str, "TCP")) ? IPPROTO_TCP : IPPROTO_UDP; }
static void vrrp_accept_handler(vector_t *strvec) { vrrp_t *vrrp = LIST_TAIL_DATA(vrrp_data->vrrp); vrrp->accept = true; }
static void vrrp_garp_refresh_rep_handler(vector_t *strvec) { vrrp_t *vrrp = LIST_TAIL_DATA(vrrp_data->vrrp); vrrp->garp_refresh_rep = atoi(vector_slot(strvec, 1)); if (vrrp->garp_refresh_rep < 1) vrrp->garp_refresh_rep = 1; }
static void vrrp_vscript_fall_handler(vector strvec) { vrrp_script *vscript = LIST_TAIL_DATA(vrrp_data->vrrp_script); vscript->fall = atoi(VECTOR_SLOT(strvec, 1)); if (vscript->fall < 1) vscript->fall = 1; }
static void delay_handler(vector_t *strvec) { virtual_server_t *vs = LIST_TAIL_DATA(check_data->vs); vs->delay_loop = atoi(vector_slot(strvec, 1)) * TIMER_HZ; if (vs->delay_loop < TIMER_HZ) vs->delay_loop = TIMER_HZ; }
static void vrrp_vscript_fall_handler(vector_t *strvec) { vrrp_script_t *vscript = LIST_TAIL_DATA(vrrp_data->vrrp_script); vscript->fall = atoi(vector_slot(strvec, 1)); if (vscript->fall < 1) vscript->fall = 1; }
static void vrrp_vscript_timeout_handler(vector_t *strvec) { vrrp_script_t *vscript = LIST_TAIL_DATA(vrrp_data->vrrp_script); vscript->timeout = atoi(vector_slot(strvec, 1)) * TIMER_HZ; if (vscript->timeout < TIMER_HZ) vscript->timeout = TIMER_HZ; }
static void vrrp_vscript_interval_handler(vector_t *strvec) { vrrp_script_t *vscript = LIST_TAIL_DATA(vrrp_data->vrrp_script); vscript->interval = atoi(vector_slot(strvec, 1)) * TIMER_HZ; if (vscript->interval < TIMER_HZ) vscript->interval = TIMER_HZ; }
static void vrrp_garp_delay_handler(vector_t *strvec) { vrrp_t *vrrp = LIST_TAIL_DATA(vrrp_data->vrrp); vrrp->garp_delay = atoi(vector_slot(strvec, 1)) * TIMER_HZ; if (vrrp->garp_delay < TIMER_HZ) vrrp->garp_delay = TIMER_HZ; }
static void vrrp_native_ipv6_handler(vector_t *strvec) { vrrp_t *vrrp = LIST_TAIL_DATA(vrrp_data->vrrp); vrrp->family = AF_INET6; if (vrrp->auth_type != VRRP_AUTH_NONE) vrrp->auth_type = VRRP_AUTH_NONE; }
static void pgr_handler(vector_t *strvec) { virtual_server_t *vs = LIST_TAIL_DATA(check_data->vs); if (vs->addr.ss_family == AF_INET6) vs->granularity_persistence = atoi(vector_slot(strvec, 1)); else inet_ston(vector_slot(strvec, 1), &vs->granularity_persistence); }
static void ssvri_handler(vector_t *strvec) { virtual_server_t *vs = LIST_TAIL_DATA(check_data->vs); if (vs->s_svr) { vs->s_svr->inhibit = 1; } else { log_message(LOG_ERR, "Ignoring sorry_server_inhibit used before or without sorry_server"); } }