예제 #1
0
/* ------------------------------------------------------------ */
int ipvsfuncs_update_service(ipvs_service_t *svc) {
	int ret;

    LOGDEBUG("update_service: [%s:%d proto=%d fwmark=%d]", INETTXTADDR(svc->addr.ip), 
             ntohs(svc->port), svc->protocol, svc->fwmark);

	ret = ipvs_update_service(svc);
	if (ret) {
		LOGDEBUG("ERROR update_service: [%s:%d proto=%d fwmark=%d] [%s]", INETTXTADDR(svc->addr.ip), 
                 ntohs(svc->port), svc->protocol, svc->fwmark, ipvs_strerror(errno));
		return -1;
	}

	return 0;
}
예제 #2
0
파일: ipvswrapper.c 프로젝트: Addision/LVS
/* Send user rules to IPVS module */
static void
ipvs_talk(int cmd)
{
	int result = -1;

	switch (cmd) {
		case IP_VS_SO_SET_STARTDAEMON:
			result = ipvs_start_daemon(daemonrule);
			break;
		case IP_VS_SO_SET_STOPDAEMON:
			result = ipvs_stop_daemon(daemonrule);
			break;
		case IP_VS_SO_SET_ADD:
			result = ipvs_add_service(srule);
			break;
		case IP_VS_SO_SET_DEL:
			result = ipvs_del_service(srule);
			break;
		case IP_VS_SO_SET_EDIT:
			result = ipvs_update_service(srule);
			break;
		case IP_VS_SO_SET_ZERO:
			result = ipvs_zero_service(srule);
			break;
		case IP_VS_SO_SET_ADDLADDR:
			result = ipvs_add_laddr(srule, laddr_rule);
			break;
		case IP_VS_SO_SET_DELLADDR:
			result = ipvs_del_laddr(srule, laddr_rule);
			break;
		case IP_VS_SO_SET_ADDDEST:
			result = ipvs_add_dest(srule, drule);
			break;
		case IP_VS_SO_SET_DELDEST:
			result = ipvs_del_dest(srule, drule);
			break;
		case IP_VS_SO_SET_EDITDEST:
			if ((result = ipvs_update_dest(srule, drule)) &&
			    (errno == ENOENT))
				result = ipvs_add_dest(srule, drule);
			break;
	}

	if (result)
		log_message(LOG_INFO, "IPVS: %s", ipvs_strerror(errno));
}