void alloc_track_script(list track_list, vector strvec) { vrrp_script *vsc = NULL; tracked_sc *tsc = NULL; int weight = 0; char *tracked = VECTOR_SLOT(strvec, 0); vsc = find_script_by_name(tracked); /* Ignoring if no interface found */ if (!vsc) { log_message(LOG_INFO, " %s no match, ignoring...", tracked); return; } /* default weight */ weight = vsc->weight; if (VECTOR_SIZE(strvec) >= 3 && !strcmp(VECTOR_SLOT(strvec, 1), "weight")) { weight = atoi(VECTOR_SLOT(strvec, 2)); if (weight < -254 || weight > 254) { weight = vsc->weight; log_message(LOG_INFO, " %s: weight must be between [-254..254]" " inclusive, ignoring...", tracked); } } tsc = (tracked_sc *) MALLOC(sizeof (tracked_sc)); tsc->scr = vsc; tsc->weight = weight; vsc->inuse++; list_add(track_list, tsc); }
void alloc_track_script(list track_list, vector_t *strvec, const char *vrrp_iname) { vrrp_script_t *vsc = NULL; tracked_sc_t *tsc = NULL; int weight = 0; char *tracked = strvec_slot(strvec, 0); vsc = find_script_by_name(tracked); /* Ignoring if no script found */ if (!vsc) { log_message(LOG_INFO, "(%s): track script %s not found, ignoring...", vrrp_iname, tracked); return; } /* default weight */ weight = vsc->weight; if (vector_size(strvec) >= 3 && !strcmp(strvec_slot(strvec, 1), "weight")) { weight = atoi(strvec_slot(strvec, 2)); if (weight < -254 || weight > 254) { weight = vsc->weight; log_message(LOG_INFO, "(%s): track script %s: weight must be between [-254..254]" " inclusive, ignoring...", vrrp_iname, tracked); } } tsc = (tracked_sc_t *) MALLOC(sizeof(tracked_sc_t)); tsc->scr = vsc; tsc->weight = weight; vsc->inuse++; list_add(track_list, tsc); }