static void vrrp_vip_handler(vector_t *strvec) { vrrp_t *vrrp = LIST_TAIL_DATA(vrrp_data->vrrp); char *buf; char *str = NULL; vector_t *vec = NULL; int address_family; buf = (char *) MALLOC(MAXBUF); while (read_line(buf, MAXBUF)) { address_family = AF_UNSPEC; vec = alloc_strvec(buf); if (vec) { str = vector_slot(vec, 0); if (!strcmp(str, EOB)) { free_strvec(vec); break; } if (vector_size(vec)) { alloc_vrrp_vip(vec); if (!LIST_ISEMPTY(vrrp->vip)) address_family = IP_FAMILY((ip_address_t*)LIST_TAIL_DATA(vrrp->vip)); } if (address_family != AF_UNSPEC) { if (vrrp->family == AF_UNSPEC) vrrp->family = address_family; else if (address_family != vrrp->family) { log_message(LOG_INFO, "(%s): address family must match VRRP instance [%s] - ignoring", vrrp->iname, buf); free_list_element(vrrp->vip, LIST_TAIL_DATA(vrrp->vip)); } } free_strvec(vec); } memset(buf, 0, MAXBUF); } FREE(buf); }
static void vrrp_vip_handler(vector_t *strvec) { vrrp_t *vrrp = LIST_TAIL_DATA(vrrp_data->vrrp); char *buf; char *str = NULL; vector_t *vec = NULL; int nbvip = 0; buf = (char *) MALLOC(MAXBUF); while (read_line(buf, MAXBUF)) { vec = alloc_strvec(buf); if (vec) { str = vector_slot(vec, 0); if (!strcmp(str, EOB)) { free_strvec(vec); break; } if (vector_size(vec)) { nbvip++; if (nbvip > VRRP_MAX_VIP) { log_message(LOG_INFO, "VRRP_Instance(%s) " "trunc to the first %d VIPs.", vrrp->iname, VRRP_MAX_VIP); log_message(LOG_INFO, " => Declare others VIPs into" " the excluded vip block"); } else alloc_vrrp_vip(vec); } free_strvec(vec); } memset(buf, 0, MAXBUF); } FREE(buf); }