aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--doc/mans/tinyrad_options.3.in6
-rw-r--r--include/tinyrad.h1
-rw-r--r--lib/libtinyrad/libtinyrad.h2
-rw-r--r--lib/libtinyrad/lmemory.c20
4 files changed, 22 insertions, 7 deletions
diff --git a/doc/mans/tinyrad_options.3.in b/doc/mans/tinyrad_options.3.in
index 701d89e..a5b83f5 100644
--- a/doc/mans/tinyrad_options.3.in
+++ b/doc/mans/tinyrad_options.3.in
@@ -111,6 +111,12 @@ Sets/gets timeout for socket/network operations. \fIinvalue\fR must be a
111\fBstruct timeval *\fR. 111\fBstruct timeval *\fR.
112 112
113.TP 113.TP
114.B TRAD_OPT_SCHEME
115Retrieves the configured scheme of the client library. \fIoutvalue\fR must be
116a \fBint *\fR. Valid schemes are \fBTRAD_RADIUS\fR, \fBTRAD_RADIUS_ACCT\fR,
117\fBTRAD_RADIUS_DYNAUTH\fR, and \fBTRAD_RADSEC\fR. This is a read-only option.
118
119.TP
114.B TRAD_OPT_SOCKET_BIND_ADDRESSES 120.B TRAD_OPT_SOCKET_BIND_ADDRESSES
115Sets/gets a space-separated list of IP Addresses used to bind the local socket 121Sets/gets a space-separated list of IP Addresses used to bind the local socket
116when connecting to a remote server. Only one valid IPv4 address and/or one 122when connecting to a remote server. Only one valid IPv4 address and/or one
diff --git a/include/tinyrad.h b/include/tinyrad.h
index bc17b3e..3afb9cb 100644
--- a/include/tinyrad.h
+++ b/include/tinyrad.h
@@ -143,6 +143,7 @@
143#define TRAD_OPT_TIMEOUT 9 143#define TRAD_OPT_TIMEOUT 9
144#define TRAD_OPT_DEBUG_IDENT 10 144#define TRAD_OPT_DEBUG_IDENT 10
145#define TRAD_OPT_DEBUG_SYSLOG 11 145#define TRAD_OPT_DEBUG_SYSLOG 11
146#define TRAD_OPT_SCHEME 12
146 147
147// library debug levels 148// library debug levels
148#define TRAD_DEBUG_NONE 0 149#define TRAD_DEBUG_NONE 0
diff --git a/lib/libtinyrad/libtinyrad.h b/lib/libtinyrad/libtinyrad.h
index bfb4a92..301efb8 100644
--- a/lib/libtinyrad/libtinyrad.h
+++ b/lib/libtinyrad/libtinyrad.h
@@ -94,6 +94,8 @@ struct _tinyrad
94 struct sockaddr_in6 * bind_sa6; 94 struct sockaddr_in6 * bind_sa6;
95 struct timeval * net_timeout; 95 struct timeval * net_timeout;
96 uint32_t authenticator; 96 uint32_t authenticator;
97 uint32_t pad32;
98 unsigned scheme;
97 unsigned opts; 99 unsigned opts;
98 int s; 100 int s;
99 int timeout; 101 int timeout;
diff --git a/lib/libtinyrad/lmemory.c b/lib/libtinyrad/lmemory.c
index b7d08ca..ec37044 100644
--- a/lib/libtinyrad/lmemory.c
+++ b/lib/libtinyrad/lmemory.c
@@ -206,6 +206,12 @@ tinyrad_get_option(
206 ((struct timeval *)outvalue)->tv_usec = tr->net_timeout->tv_usec; 206 ((struct timeval *)outvalue)->tv_usec = tr->net_timeout->tv_usec;
207 break; 207 break;
208 208
209 case TRAD_OPT_SCHEME:
210 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SCHEME, outvalue )", __FUNCTION__);
211 TinyRadDebug(TRAD_DEBUG_ARGS, " <= outvalue: %i", tr->scheme);
212 *((int *)outvalue) = tr->scheme;
213 break;
214
209 case TRAD_OPT_SOCKET_BIND_ADDRESSES: 215 case TRAD_OPT_SOCKET_BIND_ADDRESSES:
210 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SOCKET_BIND_ADDRESSES, outvalue )", __FUNCTION__); 216 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SOCKET_BIND_ADDRESSES, outvalue )", __FUNCTION__);
211 inet_ntop(AF_INET, &tr->bind_sa->sin_addr, bind_buff, sizeof(struct sockaddr_in)); 217 inet_ntop(AF_INET, &tr->bind_sa->sin_addr, bind_buff, sizeof(struct sockaddr_in));
@@ -324,12 +330,7 @@ tinyrad_initialize(
324 tr->authenticator = u32; 330 tr->authenticator = u32;
325 331
326 // parses URL 332 // parses URL
327 if ((rc = tinyrad_urldesc_parse(url, &tr->trud)) != TRAD_SUCCESS) 333 if ((rc = tinyrad_set_option(tr, TRAD_OPT_URI, url)) != TRAD_SUCCESS)
328 {
329 tinyrad_destroy(tr);
330 return(rc);
331 };
332 if ((rc = tinyrad_urldesc_resolve(tr->trud, (uint32_t)opts)) != TRAD_SUCCESS)
333 { 334 {
334 tinyrad_destroy(tr); 335 tinyrad_destroy(tr);
335 return(rc); 336 return(rc);
@@ -432,6 +433,10 @@ tinyrad_set_option(
432 memcpy(tr->net_timeout, ((const struct timeval *)invalue), sizeof(struct timeval)); 433 memcpy(tr->net_timeout, ((const struct timeval *)invalue), sizeof(struct timeval));
433 break; 434 break;
434 435
436 case TRAD_OPT_SCHEME:
437 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SCHEME, invalue )", __FUNCTION__);
438 return(TRAD_EOPTERR);
439
435 case TRAD_OPT_SOCKET_BIND_ADDRESSES: 440 case TRAD_OPT_SOCKET_BIND_ADDRESSES:
436 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SOCKET_BIND_ADDRESSES, invalue )", __FUNCTION__); 441 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SOCKET_BIND_ADDRESSES, invalue )", __FUNCTION__);
437 if (tr->s != -1) 442 if (tr->s != -1)
@@ -455,7 +460,8 @@ tinyrad_set_option(
455 return(rc); 460 return(rc);
456 }; 461 };
457 tinyrad_urldesc_free(tr->trud); 462 tinyrad_urldesc_free(tr->trud);
458 tr->trud = trud; 463 tr->scheme = tinyrad_urldesc_scheme(trud);
464 tr->trud = trud;
459 break; 465 break;
460 466
461 default: 467 default: