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