aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDavid M. Syzdek <david@syzdek.net>2022-03-17 11:34:25 -0800
committerDavid M. Syzdek <david@syzdek.net>2022-03-17 11:34:25 -0800
commitcc33e76f75b867ad11696938663f981fbcb1fcb2 (patch)
tree5583a96ca234f0a01946e0080e2328716e69ea3c
parent1be58ad1d306cdca67062c6b4c42df072cdaa3e9 (diff)
downloadtinyrad-cc33e76f75b867ad11696938663f981fbcb1fcb2.tar.gz
tinyrad-cc33e76f75b867ad11696938663f981fbcb1fcb2.tar.bz2
tinyrad-cc33e76f75b867ad11696938663f981fbcb1fcb2.tar.xz
tinyrad-cc33e76f75b867ad11696938663f981fbcb1fcb2.zip
libtinyrad: adding TRAD_BUILTIN_DICT
-rw-r--r--include/tinyrad.h1
-rw-r--r--lib/libtinyrad/lconf.c15
-rw-r--r--lib/libtinyrad/ldict.c12
-rw-r--r--lib/libtinyrad/lmemory.c7
4 files changed, 28 insertions, 7 deletions
diff --git a/include/tinyrad.h b/include/tinyrad.h
index b9cefec..847faf9 100644
--- a/include/tinyrad.h
+++ b/include/tinyrad.h
@@ -184,6 +184,7 @@
184// library user options 184// library user options
185#define TRAD_OPTS_USER 0x000FFFFFU 185#define TRAD_OPTS_USER 0x000FFFFFU
186#define TRAD_NOINIT 0x00000001U 186#define TRAD_NOINIT 0x00000001U
187#define TRAD_BUILTIN_DICT 0x00000002U
187#define TRAD_IPV4 0x00000004U 188#define TRAD_IPV4 0x00000004U
188#define TRAD_IPV6 0x00000008U 189#define TRAD_IPV6 0x00000008U
189#define TRAD_IP_UNSPEC (TRAD_IPV4 | TRAD_IPV6) 190#define TRAD_IP_UNSPEC (TRAD_IPV4 | TRAD_IPV6)
diff --git a/lib/libtinyrad/lconf.c b/lib/libtinyrad/lconf.c
index 5d70fe5..0bb14b9 100644
--- a/lib/libtinyrad/lconf.c
+++ b/lib/libtinyrad/lconf.c
@@ -246,6 +246,21 @@ tinyrad_conf_opt(
246 return(tinyrad_set_option(tr, TRAD_OPT_SOCKET_BIND_ADDRESSES, value)); 246 return(tinyrad_set_option(tr, TRAD_OPT_SOCKET_BIND_ADDRESSES, value));
247 }; 247 };
248 248
249 if (!(strcasecmp(name, "builtin_dictionary")))
250 {
251 if ( (!(dict)) || (( (dict->opts | dict->opts_neg) & TRAD_BUILTIN_DICT )) )
252 return(TRAD_SUCCESS);
253 if ( ((dict->opts | dict->opts_neg) & TRAD_BUILTIN_DICT) != 0 )
254 return(TRAD_SUCCESS);
255 if (!(value))
256 dict->opts |= TRAD_BUILTIN_DICT;
257 else if (!(strcasecmp(value, "yes")))
258 dict->opts |= TRAD_BUILTIN_DICT;
259 else if (!(strcasecmp(value, "no")))
260 dict->opts_neg |= TRAD_BUILTIN_DICT;
261 return(TRAD_SUCCESS);
262 };
263
249 if (!(strcasecmp(name, "network_timeout"))) 264 if (!(strcasecmp(name, "network_timeout")))
250 { 265 {
251 if ( (!(tr)) || ((tr->net_timeout)) || (!(value)) ) 266 if ( (!(tr)) || ((tr->net_timeout)) || (!(value)) )
diff --git a/lib/libtinyrad/ldict.c b/lib/libtinyrad/ldict.c
index 0b0fce0..433b66c 100644
--- a/lib/libtinyrad/ldict.c
+++ b/lib/libtinyrad/ldict.c
@@ -837,13 +837,23 @@ tinyrad_dict_initialize(
837 // initializes read-only flag 837 // initializes read-only flag
838 atomic_init(&dict->readonly, TRAD_NO); 838 atomic_init(&dict->readonly, TRAD_NO);
839 839
840 // load defaults 840 // load configuration
841 if ((rc = tinyrad_conf(NULL, dict, opts)) != TRAD_SUCCESS) 841 if ((rc = tinyrad_conf(NULL, dict, opts)) != TRAD_SUCCESS)
842 { 842 {
843 tinyrad_dict_free(dict); 843 tinyrad_dict_free(dict);
844 return(rc); 844 return(rc);
845 }; 845 };
846 846
847 // load builtin dictionary
848 if ((dict->opts & TRAD_BUILTIN_DICT) == TRAD_BUILTIN_DICT)
849 {
850 if ((rc = tinyrad_dict_defaults(dict, NULL)) != TRAD_SUCCESS)
851 {
852 tinyrad_dict_free(dict);
853 return(rc);
854 };
855 };
856
847 *dictp = tinyrad_obj_retain(&dict->obj); 857 *dictp = tinyrad_obj_retain(&dict->obj);
848 858
849 return(TRAD_SUCCESS); 859 return(TRAD_SUCCESS);
diff --git a/lib/libtinyrad/lmemory.c b/lib/libtinyrad/lmemory.c
index 1e7bc20..17b6cbc 100644
--- a/lib/libtinyrad/lmemory.c
+++ b/lib/libtinyrad/lmemory.c
@@ -307,12 +307,7 @@ tinyrad_initialize(
307 // retain or initialize dictionary 307 // retain or initialize dictionary
308 if ((tr->dict = tinyrad_obj_retain(&dict->obj)) == NULL) 308 if ((tr->dict = tinyrad_obj_retain(&dict->obj)) == NULL)
309 { 309 {
310 if ((rc = tinyrad_dict_initialize(&tr->dict, TRAD_NOINIT)) != TRAD_SUCCESS) 310 if ((rc = tinyrad_dict_initialize(&tr->dict, (TRAD_NOINIT|TRAD_BUILTIN_DICT))) != TRAD_SUCCESS)
311 {
312 tinyrad_tiyrad_free(tr);
313 return(rc);
314 };
315 if ((rc = tinyrad_dict_defaults(tr->dict, NULL)) != TRAD_SUCCESS)
316 { 311 {
317 tinyrad_tiyrad_free(tr); 312 tinyrad_tiyrad_free(tr);
318 return(rc); 313 return(rc);