]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add mruby Pair class
authorNick Porter <nick@portercomputing.co.uk>
Mon, 9 Jun 2025 15:40:39 +0000 (16:40 +0100)
committerNick Porter <nick@portercomputing.co.uk>
Mon, 9 Jun 2025 15:41:08 +0000 (16:41 +0100)
For leaf pairs

src/modules/rlm_mruby/mruby.c
src/modules/rlm_mruby/rlm_mruby.c
src/modules/rlm_mruby/rlm_mruby.h

index 9344f298ad19db7073529e44266357404c0921aa..2acf107b153d856bdc25c2c595aa4dadccfc5d68 100644 (file)
@@ -195,3 +195,14 @@ struct RClass *mruby_pair_list_class(mrb_state *mrb, struct RClass *parent)
        return pair_list;
 }
 
+struct RClass *mruby_pair_class(mrb_state *mrb, struct RClass *parent)
+{
+       struct RClass *pair;
+
+       pair = mrb_define_class_under(mrb, parent, "Pair", mrb->object_class);
+       MRB_SET_INSTANCE_TT(pair, MRB_TT_DATA);
+
+       mrb_define_method(mrb, pair, "initialize", mruby_pair_init, MRB_ARGS_ARG(5,1));
+
+       return pair;
+}
index 317395a2e2b2cfb73ad9a561bc85d831add6c05f..fe51726c4ad3f170ab5fd8ee3d70c1075da18aa2 100644 (file)
@@ -202,6 +202,8 @@ static int mod_instantiate(module_inst_ctx_t const *mctx)
        inst->mruby_request = mruby_request_class(mrb, inst->mruby_module);
 
        inst->mruby_pair_list = mruby_pair_list_class(mrb, inst->mruby_module);
+       inst->mruby_pair = mruby_pair_class(mrb, inst->mruby_module);
+
        inst->mruby_ptr = mrb_define_class_under(mrb, inst->mruby_module, "Ptr", mrb->object_class);
        MRB_SET_INSTANCE_TT(inst->mruby_ptr, MRB_TT_DATA);
 
index 51c5586a87bf04a2adf2ecb86d9bd9bd54d4b7ee..161dc1b0d6b84cd26bf83e4df328565c27586453 100644 (file)
@@ -51,11 +51,13 @@ typedef struct {
        struct RClass *mruby_request;
        struct RClass *mruby_ptr;
        struct RClass *mruby_pair_list;
+       struct RClass *mruby_pair;
        mrb_value mrubyconf_hash;
 } rlm_mruby_t;
 
 struct RClass *mruby_request_class(mrb_state *mrb, struct RClass *parent);
 struct RClass *mruby_pair_list_class(mrb_state *mrb, struct RClass *parent);
+struct RClass *mruby_pair_class(mrb_state *mrb, struct RClass *parent);
 mrb_value mruby_inst_object(mrb_state *mrb, struct RClass *klass, rlm_mruby_t const *inst);
 mrb_value mruby_request_object(mrb_state *mrb, struct RClass *klass, request_t *request);
 mrb_value mruby_value_pair_object(mrb_state *mrb, struct RClass *klass, fr_pair_t *vp);