diff options
| author | David M. Syzdek <david@syzdek.net> | 2022-03-21 20:31:56 -0800 |
|---|---|---|
| committer | David M. Syzdek <david@syzdek.net> | 2022-03-21 20:31:56 -0800 |
| commit | 0abda6c007f7813c2cae2eefcdf18fe53a47946c (patch) | |
| tree | 2ca624150e8406e68184a89b974b06ebaacf1770 /lib | |
| parent | ccec8d8de66189afbc3400e550ff8c5afe3bb734 (diff) | |
| download | tinyrad-0abda6c007f7813c2cae2eefcdf18fe53a47946c.tar.gz tinyrad-0abda6c007f7813c2cae2eefcdf18fe53a47946c.tar.bz2 tinyrad-0abda6c007f7813c2cae2eefcdf18fe53a47946c.tar.xz tinyrad-0abda6c007f7813c2cae2eefcdf18fe53a47946c.zip | |
libtinyrad: adding tinyrad_tiyrad_defaults()
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/libtinyrad/lmemory.c | 83 |
1 files changed, 49 insertions, 34 deletions
diff --git a/lib/libtinyrad/lmemory.c b/lib/libtinyrad/lmemory.c index 018db0c..0c074b0 100644 --- a/lib/libtinyrad/lmemory.c +++ b/lib/libtinyrad/lmemory.c | |||
| @@ -87,6 +87,12 @@ tinyrad_set_option_socket_bind_addresses( | |||
| 87 | const char * invalue ); | 87 | const char * invalue ); |
| 88 | 88 | ||
| 89 | 89 | ||
| 90 | int | ||
| 91 | tinyrad_tiyrad_defaults( | ||
| 92 | TinyRad * tr, | ||
| 93 | unsigned opts ); | ||
| 94 | |||
| 95 | |||
| 90 | void | 96 | void |
| 91 | tinyrad_tiyrad_free( | 97 | tinyrad_tiyrad_free( |
| 92 | TinyRad * tr ); | 98 | TinyRad * tr ); |
| @@ -114,6 +120,45 @@ tinyrad_verify_is_obj( | |||
| 114 | //-------------------// | 120 | //-------------------// |
| 115 | #pragma mark TinyRad functions | 121 | #pragma mark TinyRad functions |
| 116 | 122 | ||
| 123 | int | ||
| 124 | tinyrad_tiyrad_defaults( | ||
| 125 | TinyRad * tr, | ||
| 126 | unsigned opts ) | ||
| 127 | { | ||
| 128 | int rc; | ||
| 129 | |||
| 130 | assert(tr != NULL); | ||
| 131 | |||
| 132 | // sets default URI | ||
| 133 | if (!(tr->trud)) | ||
| 134 | if ((rc = tinyrad_set_option(tr, TRAD_OPT_URI, TRAD_DFLT_URI)) != TRAD_SUCCESS) | ||
| 135 | return(rc); | ||
| 136 | |||
| 137 | // sets default bind addresses | ||
| 138 | if ( (!(tr->bind_sa)) || (!(tr->bind_sa6)) ) | ||
| 139 | if ((rc = tinyrad_set_option_socket_bind_addresses(tr, NULL)) != TRAD_SUCCESS) | ||
| 140 | return(rc); | ||
| 141 | |||
| 142 | // sets default network timeout | ||
| 143 | if (!(tr->net_timeout)) | ||
| 144 | { | ||
| 145 | if ((tr->net_timeout = malloc(sizeof(struct timeval))) == NULL) | ||
| 146 | return(TRAD_ENOMEM); | ||
| 147 | memset(tr->net_timeout, 0, sizeof(struct timeval)); | ||
| 148 | tr->net_timeout->tv_sec = TRAD_DFLT_NET_TIMEOUT_SEC; | ||
| 149 | tr->net_timeout->tv_usec = TRAD_DFLT_NET_TIMEOUT_USEC; | ||
| 150 | }; | ||
| 151 | |||
| 152 | // sets default timeout | ||
| 153 | if (tr->timeout == -1) | ||
| 154 | tr->timeout = TRAD_DFLT_TIMEOUT; | ||
| 155 | |||
| 156 | tr->opts |= opts; | ||
| 157 | |||
| 158 | return(TRAD_SUCCESS); | ||
| 159 | } | ||
| 160 | |||
| 161 | |||
| 117 | /// destroy Tiny RADIUS reference | 162 | /// destroy Tiny RADIUS reference |
| 118 | /// | 163 | /// |
| 119 | /// @param[in] tr dictionary reference | 164 | /// @param[in] tr dictionary reference |
| @@ -357,43 +402,13 @@ tinyrad_initialize( | |||
| 357 | tinyrad_dict_set_option(tr->dict, TRAD_DICT_OPT_READONLY, &opt); | 402 | tinyrad_dict_set_option(tr->dict, TRAD_DICT_OPT_READONLY, &opt); |
| 358 | }; | 403 | }; |
| 359 | 404 | ||
| 360 | // sets default URI | 405 | // apply defaults |
| 361 | if (!(tr->trud)) | 406 | if ((rc = tinyrad_tiyrad_defaults(tr, opts)) != TRAD_SUCCESS) |
| 362 | { | ||
| 363 | if ((rc = tinyrad_set_option(tr, TRAD_OPT_URI, TRAD_DFLT_URI)) != TRAD_SUCCESS) | ||
| 364 | { | ||
| 365 | tinyrad_tiyrad_free(tr); | ||
| 366 | return(rc); | ||
| 367 | }; | ||
| 368 | }; | ||
| 369 | |||
| 370 | // sets default bind addresses | ||
| 371 | if ( (!(tr->bind_sa)) || (!(tr->bind_sa6)) ) | ||
| 372 | { | ||
| 373 | if ((rc = tinyrad_set_option_socket_bind_addresses(tr, NULL)) != TRAD_SUCCESS) | ||
| 374 | { | ||
| 375 | tinyrad_tiyrad_free(tr); | ||
| 376 | return(rc); | ||
| 377 | }; | ||
| 378 | }; | ||
| 379 | |||
| 380 | // sets default network timeout | ||
| 381 | if (!(tr->net_timeout)) | ||
| 382 | { | 407 | { |
| 383 | if ((tr->net_timeout = malloc(sizeof(struct timeval))) == NULL) | 408 | tinyrad_tiyrad_free(tr); |
| 384 | { | 409 | return(rc); |
| 385 | tinyrad_tiyrad_free(tr); | ||
| 386 | return(TRAD_ENOMEM); | ||
| 387 | }; | ||
| 388 | memset(tr->net_timeout, 0, sizeof(struct timeval)); | ||
| 389 | tr->net_timeout->tv_sec = TRAD_DFLT_NET_TIMEOUT_SEC; | ||
| 390 | tr->net_timeout->tv_usec = TRAD_DFLT_NET_TIMEOUT_USEC; | ||
| 391 | }; | 410 | }; |
| 392 | 411 | ||
| 393 | // sets default timeout | ||
| 394 | if (tr->timeout == -1) | ||
| 395 | tr->timeout = TRAD_DFLT_TIMEOUT; | ||
| 396 | |||
| 397 | // generates initial authenticator | 412 | // generates initial authenticator |
| 398 | if ((fd = open("/dev/urandom", O_RDONLY)) != -1) | 413 | if ((fd = open("/dev/urandom", O_RDONLY)) != -1) |
| 399 | { | 414 | { |
