Exemplo n.º 1
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.º 2
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);
}