diff options
| author | David M. Syzdek <david@syzdek.net> | 2022-03-17 11:34:25 -0800 |
|---|---|---|
| committer | David M. Syzdek <david@syzdek.net> | 2022-03-17 11:34:25 -0800 |
| commit | cc33e76f75b867ad11696938663f981fbcb1fcb2 (patch) | |
| tree | 5583a96ca234f0a01946e0080e2328716e69ea3c | |
| parent | 1be58ad1d306cdca67062c6b4c42df072cdaa3e9 (diff) | |
| download | tinyrad-cc33e76f75b867ad11696938663f981fbcb1fcb2.tar.gz tinyrad-cc33e76f75b867ad11696938663f981fbcb1fcb2.tar.bz2 tinyrad-cc33e76f75b867ad11696938663f981fbcb1fcb2.tar.xz tinyrad-cc33e76f75b867ad11696938663f981fbcb1fcb2.zip | |
libtinyrad: adding TRAD_BUILTIN_DICT
| -rw-r--r-- | include/tinyrad.h | 1 | ||||
| -rw-r--r-- | lib/libtinyrad/lconf.c | 15 | ||||
| -rw-r--r-- | lib/libtinyrad/ldict.c | 12 | ||||
| -rw-r--r-- | lib/libtinyrad/lmemory.c | 7 |
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); |
