diff options
Diffstat (limited to 'lib/libtinytac/lmemory.c')
| -rw-r--r-- | lib/libtinytac/lmemory.c | 57 |
1 files changed, 46 insertions, 11 deletions
diff --git a/lib/libtinytac/lmemory.c b/lib/libtinytac/lmemory.c index 8f35104..4d5a08a 100644 --- a/lib/libtinytac/lmemory.c +++ b/lib/libtinytac/lmemory.c | |||
| @@ -155,6 +155,29 @@ const char * tinytac_dflt_hosts = TTAC_DFLT_HOSTS; | |||
| 155 | #pragma mark TinyTac functions | 155 | #pragma mark TinyTac functions |
| 156 | 156 | ||
| 157 | int | 157 | int |
| 158 | tinytac_defaults( | ||
| 159 | TinyTac * tt ) | ||
| 160 | { | ||
| 161 | int rc; | ||
| 162 | |||
| 163 | if ((rc = tinytac_set_option(tt, TTAC_OPT_AUTHEN_ASCII, NULL)) != TTAC_SUCCESS) return(rc); | ||
| 164 | if ((rc = tinytac_set_option(tt, TTAC_OPT_AUTHEN_PAP, NULL)) != TTAC_SUCCESS) return(rc); | ||
| 165 | if ((rc = tinytac_set_option(tt, TTAC_OPT_AUTHEN_CHAP, NULL)) != TTAC_SUCCESS) return(rc); | ||
| 166 | if ((rc = tinytac_set_option(tt, TTAC_OPT_AUTHEN_MSCHAP, NULL)) != TTAC_SUCCESS) return(rc); | ||
| 167 | if ((rc = tinytac_set_option(tt, TTAC_OPT_AUTHEN_MSCHAPV2, NULL)) != TTAC_SUCCESS) return(rc); | ||
| 168 | if ((rc = tinytac_set_option(tt, TTAC_OPT_HOSTS, NULL)) != TTAC_SUCCESS) return(rc); | ||
| 169 | if ((rc = tinytac_set_option(tt, TTAC_OPT_IPV4, NULL)) != TTAC_SUCCESS) return(rc); | ||
| 170 | if ((rc = tinytac_set_option(tt, TTAC_OPT_IPV6, NULL)) != TTAC_SUCCESS) return(rc); | ||
| 171 | if ((rc = tinytac_set_option(tt, TTAC_OPT_KEY, NULL)) != TTAC_SUCCESS) return(rc); | ||
| 172 | if ((rc = tinytac_set_option(tt, TTAC_OPT_NETWORK_TIMEOUT, NULL)) != TTAC_SUCCESS) return(rc); | ||
| 173 | if ((rc = tinytac_set_option(tt, TTAC_OPT_RANDOM, NULL)) != TTAC_SUCCESS) return(rc); | ||
| 174 | if ((rc = tinytac_set_option(tt, TTAC_OPT_TIMEOUT, NULL)) != TTAC_SUCCESS) return(rc); | ||
| 175 | |||
| 176 | return(TTAC_SUCCESS); | ||
| 177 | } | ||
| 178 | |||
| 179 | |||
| 180 | int | ||
| 158 | tinytac_get_option( | 181 | tinytac_get_option( |
| 159 | TinyTac * tt, | 182 | TinyTac * tt, |
| 160 | int option, | 183 | int option, |
| @@ -168,8 +191,9 @@ tinytac_get_option( | |||
| 168 | 191 | ||
| 169 | assert(outvalue != NULL); | 192 | assert(outvalue != NULL); |
| 170 | 193 | ||
| 171 | if ((rc = tinytac_conf(0)) != TTAC_SUCCESS) | 194 | if (option != TTAC_OPT_NOINIT) |
| 172 | return(rc); | 195 | if ((rc = tinytac_conf(((tt)) ? tt->opts : 0)) != TTAC_SUCCESS) |
| 196 | return(rc); | ||
| 173 | 197 | ||
| 174 | // get global options | 198 | // get global options |
| 175 | switch(option) | 199 | switch(option) |
| @@ -271,19 +295,29 @@ tinytac_initialize( | |||
| 271 | 295 | ||
| 272 | assert(ttp != NULL); | 296 | assert(ttp != NULL); |
| 273 | 297 | ||
| 274 | if ((rc = tinytac_conf(0)) != TTAC_SUCCESS) | 298 | if ((rc = tinytac_conf(opts)) != TTAC_SUCCESS) |
| 275 | return(rc); | 299 | return(rc); |
| 276 | 300 | ||
| 277 | if ((tt = tinytac_obj_alloc(sizeof(TinyTac), (void(*)(void*))&tinytac_tinytac_free)) == NULL) | 301 | if ((tt = tinytac_obj_alloc(sizeof(TinyTac), (void(*)(void*))&tinytac_tinytac_free)) == NULL) |
| 278 | return(TTAC_ENOMEM); | 302 | return(TTAC_ENOMEM); |
| 279 | 303 | ||
| 280 | // adjust options | 304 | // apply default options |
| 281 | tt->opts = opts; | 305 | if ((rc = tinytac_defaults(tt)) != TTAC_SUCCESS) |
| 282 | if (!(tt->opts & TTAC_IP_UNSPEC)) | 306 | { |
| 283 | tt->opts |= TTAC_IP_UNSPEC; | 307 | tinytac_tinytac_free(tt); |
| 284 | if (!(tt->opts & TTAC_AUTHEN_TYPES)) | 308 | return(rc); |
| 285 | tt->opts |= TTAC_AUTHEN_TYPES; | 309 | }; |
| 310 | |||
| 311 | // clear default options if overriden by user | ||
| 312 | if ((opts & TTAC_IP_UNSPEC)) | ||
| 313 | tt->opts &= ~TTAC_IP_UNSPEC; | ||
| 314 | if ((opts & TTAC_AUTHEN_TYPES)) | ||
| 315 | tt->opts &= ~TTAC_AUTHEN_TYPES; | ||
| 316 | if ((opts & TTAC_RND_METHODS)) | ||
| 317 | tt->opts &= ~TTAC_RND_METHODS; | ||
| 286 | 318 | ||
| 319 | // apply user options | ||
| 320 | tt->opts |= opts; | ||
| 287 | if ((rc = tinytac_set_option(tt, TTAC_OPT_HOSTS, hosts)) != TTAC_SUCCESS) | 321 | if ((rc = tinytac_set_option(tt, TTAC_OPT_HOSTS, hosts)) != TTAC_SUCCESS) |
| 288 | { | 322 | { |
| 289 | tinytac_tinytac_free(tt); | 323 | tinytac_tinytac_free(tt); |
| @@ -317,8 +351,9 @@ tinytac_set_option( | |||
| 317 | 351 | ||
| 318 | assert(invalue != NULL); | 352 | assert(invalue != NULL); |
| 319 | 353 | ||
| 320 | if ((rc = tinytac_conf(0)) != TTAC_SUCCESS) | 354 | if (option != TTAC_OPT_NOINIT) |
| 321 | return(rc); | 355 | if ((rc = tinytac_conf(((tt)) ? tt->opts : 0)) != TTAC_SUCCESS) |
| 356 | return(rc); | ||
| 322 | 357 | ||
| 323 | switch(option) | 358 | switch(option) |
| 324 | { | 359 | { |
