diff options
| author | David M. Syzdek <david@syzdek.net> | 2022-05-31 15:39:57 -0800 |
|---|---|---|
| committer | David M. Syzdek <david@syzdek.net> | 2022-05-31 15:39:57 -0800 |
| commit | aee914aa06acce16e5d5f01fcbfa298545f23026 (patch) | |
| tree | 2c748804911a1547b316e74b36d0d9176b949655 | |
| parent | 3d017222f8c5e600ec421891858bab1c11e6b8ca (diff) | |
| download | tinytac-aee914aa06acce16e5d5f01fcbfa298545f23026.tar.gz tinytac-aee914aa06acce16e5d5f01fcbfa298545f23026.tar.bz2 tinytac-aee914aa06acce16e5d5f01fcbfa298545f23026.tar.xz tinytac-aee914aa06acce16e5d5f01fcbfa298545f23026.zip | |
libtinytac: adding option TTAC_OPT_RANDOM
| -rw-r--r-- | include/tinytac.h | 11 | ||||
| -rw-r--r-- | lib/libtinytac/lmemory.c | 30 |
2 files changed, 37 insertions, 4 deletions
diff --git a/include/tinytac.h b/include/tinytac.h index b5897c7..ccb4121 100644 --- a/include/tinytac.h +++ b/include/tinytac.h | |||
| @@ -118,9 +118,9 @@ | |||
| 118 | #define TTAC_IPV4 0x00000002U | 118 | #define TTAC_IPV4 0x00000002U |
| 119 | #define TTAC_IPV6 0x00000004U | 119 | #define TTAC_IPV6 0x00000004U |
| 120 | // 0x00000008U UNUSED | 120 | // 0x00000008U UNUSED |
| 121 | // 0x00000010U UNUSED | 121 | #define TTAC_RND_RAND 0x00000010U ///< use rand() |
| 122 | // 0x00000020U UNUSED | 122 | #define TTAC_RND_RANDOM 0x00000020U ///< use random() |
| 123 | // 0x00000040U UNUSED | 123 | #define TTAC_RND_URANDOM 0x00000040U ///< use /dev/urandom |
| 124 | #define TTAC_SERVER 0x00000080U | 124 | #define TTAC_SERVER 0x00000080U |
| 125 | #define TTAC_ASCII 0x00000100U ///< allow ASCII authentication | 125 | #define TTAC_ASCII 0x00000100U ///< allow ASCII authentication |
| 126 | #define TTAC_PAP 0x00000200U ///< allow PAP authentication | 126 | #define TTAC_PAP 0x00000200U ///< allow PAP authentication |
| @@ -129,6 +129,7 @@ | |||
| 129 | #define TTAC_MSCHAPV2 0x00001000U ///< allow MSCHAPv2 authentication | 129 | #define TTAC_MSCHAPV2 0x00001000U ///< allow MSCHAPv2 authentication |
| 130 | #define TTAC_AUTHEN_TYPES (TTAC_ASCII | TTAC_PAP | TTAC_CHAP | TTAC_MSCHAP | TTAC_MSCHAPV2 ) | 130 | #define TTAC_AUTHEN_TYPES (TTAC_ASCII | TTAC_PAP | TTAC_CHAP | TTAC_MSCHAP | TTAC_MSCHAPV2 ) |
| 131 | #define TTAC_IP_UNSPEC (TTAC_IPV4 | TTAC_IPV6) | 131 | #define TTAC_IP_UNSPEC (TTAC_IPV4 | TTAC_IPV6) |
| 132 | #define TTAC_RND_METHODS (TTAC_RND_RAND | TTAC_RND_RANDOM | TTAC_RND_URANDOM) | ||
| 132 | 133 | ||
| 133 | 134 | ||
| 134 | #define TTAC_NO 0 | 135 | #define TTAC_NO 0 |
| @@ -139,6 +140,7 @@ | |||
| 139 | #define TTAC_OPT_DEBUG_LEVEL 1 | 140 | #define TTAC_OPT_DEBUG_LEVEL 1 |
| 140 | #define TTAC_OPT_DEBUG_IDENT 2 | 141 | #define TTAC_OPT_DEBUG_IDENT 2 |
| 141 | #define TTAC_OPT_DEBUG_SYSLOG 3 | 142 | #define TTAC_OPT_DEBUG_SYSLOG 3 |
| 143 | #define TTAC_OPT_RANDOM 4 | ||
| 142 | #define TTAC_OPT_NOINIT 5 | 144 | #define TTAC_OPT_NOINIT 5 |
| 143 | #define TTAC_OPT_IPV4 6 | 145 | #define TTAC_OPT_IPV4 6 |
| 144 | #define TTAC_OPT_IPV6 7 | 146 | #define TTAC_OPT_IPV6 7 |
| @@ -170,12 +172,13 @@ | |||
| 170 | #define TTAC_DFLT_DEBUG_SYSLOG TTAC_NO | 172 | #define TTAC_DFLT_DEBUG_SYSLOG TTAC_NO |
| 171 | #define TTAC_DFLT_HOSTS "localhost" | 173 | #define TTAC_DFLT_HOSTS "localhost" |
| 172 | #define TTAC_DFLT_SECRETS NULL | 174 | #define TTAC_DFLT_SECRETS NULL |
| 173 | #define TTAC_DFLT_OPTS 0 | 175 | #define TTAC_DFLT_OPTS ( TTAC_RND_URANDOM ) |
| 174 | #define TTAC_DFLT_OPTS_NEG 0 | 176 | #define TTAC_DFLT_OPTS_NEG 0 |
| 175 | #define TTAC_DFLT_PORT 49 | 177 | #define TTAC_DFLT_PORT 49 |
| 176 | #define TTAC_DFLT_TIMEOUT 10 | 178 | #define TTAC_DFLT_TIMEOUT 10 |
| 177 | #define TTAC_DFLT_NET_TIMEOUT_SEC 10 | 179 | #define TTAC_DFLT_NET_TIMEOUT_SEC 10 |
| 178 | #define TTAC_DFLT_NET_TIMEOUT_USEC 0 | 180 | #define TTAC_DFLT_NET_TIMEOUT_USEC 0 |
| 181 | #define TTAC_DFLT_RANDOM TTAC_RND_URANDOM | ||
| 179 | 182 | ||
| 180 | 183 | ||
| 181 | ////////////////// | 184 | ////////////////// |
diff --git a/lib/libtinytac/lmemory.c b/lib/libtinytac/lmemory.c index 3f332cb..ca1332b 100644 --- a/lib/libtinytac/lmemory.c +++ b/lib/libtinytac/lmemory.c | |||
| @@ -266,6 +266,19 @@ tinytac_get_option( | |||
| 266 | return(TTAC_ENOMEM); | 266 | return(TTAC_ENOMEM); |
| 267 | return(TTAC_SUCCESS); | 267 | return(TTAC_SUCCESS); |
| 268 | 268 | ||
| 269 | case TTAC_OPT_RANDOM: | ||
| 270 | optsp = ((tt)) ? &tt->opts : &tinytac_dflt.opts; | ||
| 271 | TinyTacDebug(TTAC_DEBUG_ARGS, " == %s( %s, TTAC_OPT_RANDOM, outvalue )", __func__, (((tt)) ? "tt" : "NULL")); | ||
| 272 | switch(*optsp & TTAC_RND_METHODS) | ||
| 273 | { | ||
| 274 | case TTAC_RND_RAND: TinyTacDebug(TTAC_DEBUG_ARGS, " <= outvalue: %s", TTAC_RND_RAND); break; | ||
| 275 | case TTAC_RND_RANDOM: TinyTacDebug(TTAC_DEBUG_ARGS, " <= outvalue: %s", TTAC_RND_RANDOM); break; | ||
| 276 | case TTAC_RND_URANDOM: TinyTacDebug(TTAC_DEBUG_ARGS, " <= outvalue: %s", TTAC_RND_URANDOM); break; | ||
| 277 | default: TinyTacDebug(TTAC_DEBUG_ARGS, " <= outvalue: %u", (*optsp & TTAC_RND_METHODS)); break; | ||
| 278 | }; | ||
| 279 | *((int *)outvalue) = *optsp & TTAC_RND_METHODS; | ||
| 280 | return(TTAC_SUCCESS); | ||
| 281 | |||
| 269 | default: | 282 | default: |
| 270 | break; | 283 | break; |
| 271 | }; | 284 | }; |
| @@ -407,6 +420,23 @@ tinytac_set_option( | |||
| 407 | ival = ((invalue)) ? *((const int *)invalue) : TTAC_YES; | 420 | ival = ((invalue)) ? *((const int *)invalue) : TTAC_YES; |
| 408 | return(tinytac_set_option_flag(tt, TTAC_NOINIT, &ival)); | 421 | return(tinytac_set_option_flag(tt, TTAC_NOINIT, &ival)); |
| 409 | 422 | ||
| 423 | case TTAC_OPT_RANDOM: | ||
| 424 | TinyTacDebug( TTAC_DEBUG_ARGS, " == %s( %s, TTAC_OPT_RANDOM, invalue )", __func__, (((tt)) ? "tt" : "NULL") ); | ||
| 425 | idflt = ((tt)) ? tinytac_dflt.opts : TTAC_DFLT_RANDOM; | ||
| 426 | ival = ((invalue)) ? *((const int *)invalue) : (idflt & TTAC_RND_METHODS); | ||
| 427 | switch(ival) | ||
| 428 | { case TTAC_RND_RAND: TinyTacDebug(TTAC_DEBUG_ARGS, " <= invalue: %s", "TTAC_RND_RAND"); break; | ||
| 429 | case TTAC_RND_RANDOM: TinyTacDebug(TTAC_DEBUG_ARGS, " <= invalue: %s", "TTAC_RND_RANDOM"); break; | ||
| 430 | case TTAC_RND_URANDOM: TinyTacDebug(TTAC_DEBUG_ARGS, " <= invalue: %s", "TTAC_RND_URANDOM"); break; | ||
| 431 | default: TinyTacDebug(TTAC_DEBUG_ARGS, " <= invalue: %i", *((const int *)invalue)); return(TTAC_EOPTVAL); | ||
| 432 | }; | ||
| 433 | tt = ((tt)) ? tt : &tinytac_dflt; | ||
| 434 | tt->opts &= ~(TTAC_RND_METHODS); | ||
| 435 | tt->opts_neg &= ~(TTAC_RND_METHODS); | ||
| 436 | tt->opts |= ival; | ||
| 437 | tt->opts_neg |= ~ival & TTAC_RND_METHODS; | ||
| 438 | return(TTAC_SUCCESS); | ||
| 439 | |||
| 410 | case TTAC_OPT_TIMEOUT: | 440 | case TTAC_OPT_TIMEOUT: |
| 411 | TinyTacDebug(TTAC_DEBUG_ARGS, " == %s( %s, TTAC_OPT_TIMEOUT, invalue )", __func__, (((tt)) ? "tt" : "NULL") ); | 441 | TinyTacDebug(TTAC_DEBUG_ARGS, " == %s( %s, TTAC_OPT_TIMEOUT, invalue )", __func__, (((tt)) ? "tt" : "NULL") ); |
| 412 | idflt = ((tt)) ? tinytac_dflt.timeout : TTAC_DFLT_TIMEOUT; | 442 | idflt = ((tt)) ? tinytac_dflt.timeout : TTAC_DFLT_TIMEOUT; |
