Exemplo n.º 1
0
/* ------------------------------------------------------------ */
void ipvsfuncs_reinitialize(void) {
    int ret;

    ipvs_close();
	ret = ipvs_init();
	if (ret) {
		LOGERROR("%s\n", ipvs_strerror(errno));
		if (ipvsfuncs_modprobe_ipvs() || ipvs_init()) {
			LOGERROR("Can't initialize ipvs [%s]", ipvs_strerror(errno));
			exit(1);
		}
	}
}
Exemplo n.º 2
0
void mrb_mruby_ipvs_gem_init(mrb_state *mrb) {
  /* Initialize IPVS module */
  if (ipvs_init()) {
    if (_modprobe_ipvs() || ipvs_init()) {
      mrb_raise(mrb, E_RUNTIME_ERROR,
          "Can't initialize ipvs.\n"
          "Are you sure that IP Virtual Server is \n"
          "built in the kernel or as module?\n");
    }
  }
  struct RClass* _class_ipvs;
  struct RClass* _class_ipvs_service;
  struct RClass* _class_ipvs_dest;

  _class_ipvs = mrb_define_class(mrb, "IPVS", mrb->object_class);

  _class_ipvs_service = mrb_define_class_under(mrb, _class_ipvs, "Service", mrb->object_class);
  mrb_define_method(mrb, _class_ipvs_service, "initialize", mrb_ipvs_service_init, ARGS_REQ(1));
  mrb_define_method(mrb, _class_ipvs_service, "initialize_copy", mrb_ipvs_service_init_copy, ARGS_REQ(1) | ARGS_OPT(6));
  mrb_define_method(mrb, _class_ipvs_service, "add_service", mrb_ipvs_service_add, ARGS_NONE());
  mrb_define_method(mrb, _class_ipvs_service, "del_service", mrb_ipvs_service_del, ARGS_NONE());
  mrb_define_method(mrb, _class_ipvs_service, "add_dest", mrb_ipvs_service_add_dest, ARGS_REQ(1));
  mrb_define_method(mrb, _class_ipvs_service, "del_dest", mrb_ipvs_service_del_dest, ARGS_REQ(1));
  mrb_define_method(mrb, _class_ipvs_service, "addr", mrb_ipvs_service_get_addr, ARGS_NONE());
  mrb_define_method(mrb, _class_ipvs_service, "port", mrb_ipvs_service_get_port, ARGS_NONE());
  mrb_define_method(mrb, _class_ipvs_service, "proto", mrb_ipvs_service_get_proto, ARGS_NONE());
  mrb_define_method(mrb, _class_ipvs_service, "sched_name", mrb_ipvs_service_get_sched_name, ARGS_NONE());
//  mrb_define_method(mrb, _class_ipvs_service, "timeout", mrb_ipvs_service_get_timeout, ARGS_NONE());
//  mrb_define_method(mrb, _class_ipvs_service, "netmask", mrb_ipvs_service_get_netmask, ARGS_NONE());
//  mrb_define_method(mrb, _class_ipvs_service, "ops", mrb_ipvs_service_get_ops, ARGS_NONE());

  _class_ipvs_dest = mrb_define_class_under(mrb, _class_ipvs, "Dest", mrb->object_class);
  mrb_define_method(mrb, _class_ipvs_dest, "initialize", mrb_ipvs_dest_init, ARGS_REQ(1));
  mrb_define_method(mrb, _class_ipvs_dest, "addr", mrb_ipvs_service_get_addr, ARGS_NONE());
  mrb_define_method(mrb, _class_ipvs_dest, "port", mrb_ipvs_service_get_port, ARGS_NONE());
  mrb_define_method(mrb, _class_ipvs_dest, "weight", mrb_ipvs_dest_get_weight, ARGS_NONE());
  mrb_define_method(mrb, _class_ipvs_dest, "weight=", mrb_ipvs_dest_set_weight, ARGS_NONE());

  /* TODO:
     - fwmark
     - ipv6
     - get_dests
     - get_services
   * */

}
Exemplo n.º 3
0
void mrb_mruby_ipvs_gem_init(mrb_state *mrb) {
  struct RClass *_class_ipvs;

  /* Initialize IPVS module */
  if (ipvs_init()) {
    if (_modprobe_ipvs() || ipvs_init()) {
      mrb_raise(mrb, E_RUNTIME_ERROR,
                "Can't initialize ipvs.\n"
                "Are you sure that IP Virtual Server is \n"
                "built in the kernel or as module?\n");
    }
  }

  _class_ipvs = mrb_define_class(mrb, "IPVS", mrb->object_class);
  mrb_ipvs_service_class_init(mrb, _class_ipvs);
  mrb_ipvs_dest_class_init(mrb, _class_ipvs);
  mrb_ipvs_sync_daemon_class_init(mrb, _class_ipvs);
}
Exemplo n.º 4
0
/* Initialization helpers */
int
ipvs_start(void)
{
    log_message(LOG_DEBUG, "Initializing ipvs 2.6");
    /* Initialize IPVS module */
    if (ipvs_init()) {
        if (modprobe_ipvs() || ipvs_init()) {
            log_message(LOG_INFO, "IPVS: Can't initialize ipvs: %s",
                        ipvs_strerror(errno));
            return IPVS_ERROR;
        }
    }

    /* Allocate global user rules */
    srule = (struct ip_vs_service_user *) MALLOC(sizeof (struct ip_vs_service_user));
    drule = (struct ip_vs_dest_user *) MALLOC(sizeof (struct ip_vs_dest_user));
    daemonrule = (struct ip_vs_daemon_user *) MALLOC(sizeof (struct ip_vs_daemon_user));
    return IPVS_SUCCESS;
}
Exemplo n.º 5
0
/* Initialization helpers */
int
ipvs_start(void)
{
    log_message(LOG_DEBUG, "Initializing ipvs 2.4");
    /* Init IPVS kernel channel */
    if (ipvs_init()) {
        /* try to insmod the ip_vs module if ipvs_init failed */
        if (modprobe_ipvs() || ipvs_init()) {
            log_message(LOG_INFO,
                        "IPVS : Can't initialize ipvs: %s",
                        ipvs_strerror(errno));
            return IPVS_ERROR;
        }
    }

    /* Allocate global user rules */
    urule = (struct ip_vs_rule_user *) MALLOC(sizeof (struct ip_vs_rule_user));
    return IPVS_SUCCESS;
}
Exemplo n.º 6
0
/* ------------------------------------------------------------ */
void ipvsfuncs_initialize(void) {
    int ret;

	ret = ipvs_init();
	if (ret) {
		LOGERROR("%s\n", ipvs_strerror(errno));
		if (ipvsfuncs_modprobe_ipvs() || ipvs_init()) {
			LOGERROR("Can't initialize ipvs [%s]", ipvs_strerror(errno));
			exit(1);
		}
	}
    
	ret = ipvs_getinfo();
	if (ret) {
		LOGINFO("%s", ipvs_strerror(errno));
        exit(1);
	} else {
		LOGINFO("ipvs version: %d", ipvs_version());
	}
}