#include <freeradius-devel/server/tmpl_dcursor.h>
#include <freeradius-devel/server/client.h>
#include <freeradius-devel/unlang/call.h>
+
+#include <freeradius-devel/util/atexit.h>
#include <freeradius-devel/util/dlist.h>
#include <freeradius-devel/util/proto.h>
#include <freeradius-devel/util/value.h>
goto success;
}
-int tmpl_global_init(void)
+static int _tmpl_global_free(UNUSED void *uctx)
+{
+ fr_dict_autofree(tmpl_dict);
+
+ fr_dict_unknown_free(&tmpl_attr_unspec);
+
+ return 0;
+}
+
+static int _tmpl_global_init(UNUSED void *uctx)
{
fr_dict_attr_t *da;
return 0;
}
-void tmpl_global_free(void)
+int tmpl_global_init(void)
{
- fr_dict_autofree(tmpl_dict);
+ int ret;
- fr_dict_unknown_free(&tmpl_attr_unspec);
+ fr_atexit_global_once_ret(&ret, _tmpl_global_init, _tmpl_global_free, NULL);
+
+ return 0;
}