aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDavid M. Syzdek <david@syzdek.net>2022-05-31 15:39:57 -0800
committerDavid M. Syzdek <david@syzdek.net>2022-05-31 15:39:57 -0800
commitaee914aa06acce16e5d5f01fcbfa298545f23026 (patch)
tree2c748804911a1547b316e74b36d0d9176b949655
parent3d017222f8c5e600ec421891858bab1c11e6b8ca (diff)
downloadtinytac-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.h11
-rw-r--r--lib/libtinytac/lmemory.c30
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;