/* ------------------------------------------------------------ */ 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; }
/* 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)); }