Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
}