diff options
Diffstat (limited to 'plugins/check_radius.c')
| -rw-r--r-- | plugins/check_radius.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/plugins/check_radius.c b/plugins/check_radius.c index 518f1588..b3b8c829 100644 --- a/plugins/check_radius.c +++ b/plugins/check_radius.c | |||
| @@ -62,14 +62,12 @@ void print_usage (void); | |||
| 62 | #else | 62 | #else |
| 63 | #define my_rc_buildreq(a,b,c,d,e,f) rc_buildreq(rch,a,b,c,d,e,f) | 63 | #define my_rc_buildreq(a,b,c,d,e,f) rc_buildreq(rch,a,b,c,d,e,f) |
| 64 | #endif | 64 | #endif |
| 65 | #define my_rc_own_ipaddress() rc_own_ipaddress(rch) | ||
| 66 | #define my_rc_avpair_add(a,b,c,d) rc_avpair_add(rch,a,b,c,-1,d) | 65 | #define my_rc_avpair_add(a,b,c,d) rc_avpair_add(rch,a,b,c,-1,d) |
| 67 | #define my_rc_read_dictionary(a) rc_read_dictionary(rch, a) | 66 | #define my_rc_read_dictionary(a) rc_read_dictionary(rch, a) |
| 68 | #else | 67 | #else |
| 69 | #define my_rc_conf_str(a) rc_conf_str(a) | 68 | #define my_rc_conf_str(a) rc_conf_str(a) |
| 70 | #define my_rc_send_server(a,b) rc_send_server(a, b) | 69 | #define my_rc_send_server(a,b) rc_send_server(a, b) |
| 71 | #define my_rc_buildreq(a,b,c,d,e,f) rc_buildreq(a,b,c,d,e,f) | 70 | #define my_rc_buildreq(a,b,c,d,e,f) rc_buildreq(a,b,c,d,e,f) |
| 72 | #define my_rc_own_ipaddress() rc_own_ipaddress() | ||
| 73 | #define my_rc_avpair_add(a,b,c,d) rc_avpair_add(a, b, c, d) | 71 | #define my_rc_avpair_add(a,b,c,d) rc_avpair_add(a, b, c, d) |
| 74 | #define my_rc_read_dictionary(a) rc_read_dictionary(a) | 72 | #define my_rc_read_dictionary(a) rc_read_dictionary(a) |
| 75 | #endif | 73 | #endif |
| @@ -155,6 +153,8 @@ Please note that all tags must be lowercase to use the DocBook XML DTD. | |||
| 155 | int | 153 | int |
| 156 | main (int argc, char **argv) | 154 | main (int argc, char **argv) |
| 157 | { | 155 | { |
| 156 | struct sockaddr_storage ss; | ||
| 157 | char name[HOST_NAME_MAX]; | ||
| 158 | char msg[BUFFER_LEN]; | 158 | char msg[BUFFER_LEN]; |
| 159 | SEND_DATA data; | 159 | SEND_DATA data; |
| 160 | int result = STATE_UNKNOWN; | 160 | int result = STATE_UNKNOWN; |
| @@ -190,15 +190,14 @@ main (int argc, char **argv) | |||
| 190 | die (STATE_UNKNOWN, _("Invalid NAS-Identifier\n")); | 190 | die (STATE_UNKNOWN, _("Invalid NAS-Identifier\n")); |
| 191 | } | 191 | } |
| 192 | 192 | ||
| 193 | if (nasipaddress != NULL) { | 193 | if (nasipaddress == NULL) { |
| 194 | if (rc_good_ipaddr (nasipaddress)) | 194 | if (gethostname (name, sizeof(name)) != 0) |
| 195 | die (STATE_UNKNOWN, _("Invalid NAS-IP-Address\n")); | 195 | die (STATE_UNKNOWN, _("gethostname() failed!\n")); |
| 196 | if ((client_id = rc_get_ipaddr(nasipaddress)) == 0) | 196 | nasipaddress = name; |
| 197 | die (STATE_UNKNOWN, _("Invalid NAS-IP-Address\n")); | ||
| 198 | } else { | ||
| 199 | if ((client_id = my_rc_own_ipaddress ()) == 0) | ||
| 200 | die (STATE_UNKNOWN, _("Can't find local IP for NAS-IP-Address\n")); | ||
| 201 | } | 197 | } |
| 198 | if (!dns_lookup (nasipaddress, &ss, AF_INET)) /* TODO: Support IPv6. */ | ||
| 199 | die (STATE_UNKNOWN, _("Invalid NAS-IP-Address\n")); | ||
| 200 | client_id = ntohl (((struct sockaddr_in *)&ss)->sin_addr.s_addr); | ||
| 202 | if (my_rc_avpair_add (&(data.send_pairs), PW_NAS_IP_ADDRESS, &client_id, 0) == NULL) | 201 | if (my_rc_avpair_add (&(data.send_pairs), PW_NAS_IP_ADDRESS, &client_id, 0) == NULL) |
| 203 | die (STATE_UNKNOWN, _("Invalid NAS-IP-Address\n")); | 202 | die (STATE_UNKNOWN, _("Invalid NAS-IP-Address\n")); |
| 204 | 203 | ||
