示例#1
0
static mrb_value
mrb_ipvs_service_del_dest(mrb_state *mrb, mrb_value self){
  struct mrb_ipvs_entry *ie;
  mrb_value arg;
  mrb_get_args(mrb, "o", &arg);
  if(!(DATA_TYPE(arg) == &mrb_ipvs_dest_type)) mrb_raise(mrb, E_ARGUMENT_ERROR, "invalid argument");
  ie = DATA_PTR(arg);
  ipvs_del_dest(DATA_PTR(self), &ie->dest);
  return mrb_nil_value();
}
示例#2
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));
}
示例#3
0
/* ------------------------------------------------------------ */
int ipvsfuncs_del_dest(ipvs_service_t *svc, ipvs_dest_t *dest) {
	int ret;

    gchar *s1 = g_strdup_printf("%s:%d proto=%d fwmark=%d", INETTXTADDR(svc->addr.ip), ntohs(svc->port),
                                svc->protocol, svc->fwmark);
    gchar *s2 = g_strdup_printf("%s:%d proto=%d fwmark=%d", INETTXTADDR(dest->addr.ip), ntohs(dest->port),
                                svc->protocol, svc->fwmark);

    LOGDEBUG(" * del_dest: [%s :: %s]", s1, s2);


	ret = ipvs_del_dest(svc, dest);
	if (ret) {
        LOGDEBUG(" * ERROR del_dest: [%s :: %s] [%s]", s1, s2, ipvs_strerror(errno));
        free(s1); 
        free(s2);
		return -1;
	}
    free(s1); 
    free(s2);

	return 0;
}