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