diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/check_radius.c | 55 |
1 files changed, 45 insertions, 10 deletions
diff --git a/plugins/check_radius.c b/plugins/check_radius.c index 4b340c3..32af91f 100644 --- a/plugins/check_radius.c +++ b/plugins/check_radius.c | |||
@@ -43,12 +43,35 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; | |||
43 | #include "utils.h" | 43 | #include "utils.h" |
44 | #include "netutils.h" | 44 | #include "netutils.h" |
45 | 45 | ||
46 | #ifdef HAVE_LIBRADIUSCLIENT_NG | ||
47 | #include <radiusclient-ng.h> | ||
48 | rc_handle *rch = NULL; | ||
49 | #else | ||
46 | #include <radiusclient.h> | 50 | #include <radiusclient.h> |
51 | #endif | ||
47 | 52 | ||
48 | int process_arguments (int, char **); | 53 | int process_arguments (int, char **); |
49 | void print_help (void); | 54 | void print_help (void); |
50 | void print_usage (void); | 55 | void print_usage (void); |
51 | 56 | ||
57 | /* libradiusclient(-ng) wrapper functions */ | ||
58 | #ifdef HAVE_LIBRADIUSCLIENT_NG | ||
59 | #define my_rc_conf_str(a) rc_conf_str(rch,a) | ||
60 | #define my_rc_send_server(a,b) rc_send_server(rch,a,b) | ||
61 | #define my_rc_buildreq(a,b,c,d,e,f) rc_buildreq(rch,a,b,c,d,e,f) | ||
62 | #define my_rc_own_ipaddress() rc_own_ipaddress(rch) | ||
63 | #define my_rc_avpair_add(a,b,c,d) rc_avpair_add(rch,a,b,c,-1,d) | ||
64 | #define my_rc_read_dictionary(a) rc_read_dictionary(rch, a) | ||
65 | #else | ||
66 | #define my_rc_conf_str(a) rc_conf_str(a) | ||
67 | #define my_rc_send_server(a,b) rc_send_server(a, b) | ||
68 | #define my_rc_buildreq(a,b,c,d,e,f) rc_buildreq(a,b,c,d,e,f) | ||
69 | #define my_rc_own_ipaddress() rc_own_ipaddress() | ||
70 | #define my_rc_avpair_add(a,b,c,d) rc_avpair_add(a, b, c, d) | ||
71 | #define my_rc_read_dictionary(a) rc_read_dictionary(a) | ||
72 | #endif | ||
73 | int my_rc_read_config(char *); | ||
74 | |||
52 | char *server = NULL; | 75 | char *server = NULL; |
53 | char *username = NULL; | 76 | char *username = NULL; |
54 | char *password = NULL; | 77 | char *password = NULL; |
@@ -133,33 +156,33 @@ main (int argc, char **argv) | |||
133 | usage4 (_("Could not parse arguments")); | 156 | usage4 (_("Could not parse arguments")); |
134 | 157 | ||
135 | str = strdup ("dictionary"); | 158 | str = strdup ("dictionary"); |
136 | if ((config_file && rc_read_config (config_file)) || | 159 | if ((config_file && my_rc_read_config (config_file)) || |
137 | rc_read_dictionary (rc_conf_str (str))) | 160 | my_rc_read_dictionary (my_rc_conf_str (str))) |
138 | die (STATE_UNKNOWN, _("Config file error")); | 161 | die (STATE_UNKNOWN, _("Config file error")); |
139 | 162 | ||
140 | service = PW_AUTHENTICATE_ONLY; | 163 | service = PW_AUTHENTICATE_ONLY; |
141 | 164 | ||
142 | memset (&data, 0, sizeof(data)); | 165 | memset (&data, 0, sizeof(data)); |
143 | if (!(rc_avpair_add (&data.send_pairs, PW_SERVICE_TYPE, &service, 0) && | 166 | if (!(my_rc_avpair_add (&data.send_pairs, PW_SERVICE_TYPE, &service, 0) && |
144 | rc_avpair_add (&data.send_pairs, PW_USER_NAME, username, 0) && | 167 | my_rc_avpair_add (&data.send_pairs, PW_USER_NAME, username, 0) && |
145 | rc_avpair_add (&data.send_pairs, PW_USER_PASSWORD, password, 0) && | 168 | my_rc_avpair_add (&data.send_pairs, PW_USER_PASSWORD, password, 0) && |
146 | (nasid==NULL || rc_avpair_add (&data.send_pairs, PW_NAS_IDENTIFIER, nasid, 0)))) | 169 | (nasid==NULL || my_rc_avpair_add (&data.send_pairs, PW_NAS_IDENTIFIER, nasid, 0)))) |
147 | die (STATE_UNKNOWN, _("Out of Memory?")); | 170 | die (STATE_UNKNOWN, _("Out of Memory?")); |
148 | 171 | ||
149 | /* | 172 | /* |
150 | * Fill in NAS-IP-Address | 173 | * Fill in NAS-IP-Address |
151 | */ | 174 | */ |
152 | 175 | ||
153 | if ((client_id = rc_own_ipaddress ()) == 0) | 176 | if ((client_id = my_rc_own_ipaddress ()) == 0) |
154 | return (ERROR_RC); | 177 | return (ERROR_RC); |
155 | 178 | ||
156 | if (rc_avpair_add (&(data.send_pairs), PW_NAS_IP_ADDRESS, &client_id, 0) == | 179 | if (my_rc_avpair_add (&(data.send_pairs), PW_NAS_IP_ADDRESS, &client_id, 0) == |
157 | NULL) return (ERROR_RC); | 180 | NULL) return (ERROR_RC); |
158 | 181 | ||
159 | rc_buildreq (&data, PW_ACCESS_REQUEST, server, port, (int)timeout_interval, | 182 | my_rc_buildreq (&data, PW_ACCESS_REQUEST, server, port, (int)timeout_interval, |
160 | retries); | 183 | retries); |
161 | 184 | ||
162 | result = rc_send_server (&data, msg); | 185 | result = my_rc_send_server (&data, msg); |
163 | rc_avpair_free (data.send_pairs); | 186 | rc_avpair_free (data.send_pairs); |
164 | if (data.receive_pairs) | 187 | if (data.receive_pairs) |
165 | rc_avpair_free (data.receive_pairs); | 188 | rc_avpair_free (data.receive_pairs); |
@@ -350,3 +373,15 @@ print_usage (void) | |||
350 | printf ("%s -H host -F config_file -u username -p password [-n nas-id] [-P port]\n\ | 373 | printf ("%s -H host -F config_file -u username -p password [-n nas-id] [-P port]\n\ |
351 | [-t timeout] [-r retries] [-e expect]\n", progname); | 374 | [-t timeout] [-r retries] [-e expect]\n", progname); |
352 | } | 375 | } |
376 | |||
377 | |||
378 | |||
379 | int my_rc_read_config(char * a) | ||
380 | { | ||
381 | #ifdef HAVE_LIBRADIUSCLIENT_NG | ||
382 | rch = rc_read_config(a); | ||
383 | return (rch == NULL) ? 1 : 0; | ||
384 | #else | ||
385 | return rc_read_config(a); | ||
386 | #endif | ||
387 | } | ||