[Nagiosplug-checkins] SF.net SVN: nagiosplug: [1766] nagiosplug/trunk
hweiss at users.sourceforge.net
hweiss at users.sourceforge.net
Thu Jul 26 19:32:37 CEST 2007
Revision: 1766
http://nagiosplug.svn.sourceforge.net/nagiosplug/?rev=1766&view=rev
Author: hweiss
Date: 2007-07-26 10:32:37 -0700 (Thu, 26 Jul 2007)
Log Message:
-----------
The "--serverip" and "--requestedip" options now accept host names, too.
This doesn't quite fit the option names and so far I haven't changed the
"--help" output which currently only talks about IP addresses. However,
I don't see why resolving host names should not be supported.
Also note that for the moment, I added a quick'n'dirty resolve_host()
function which should really go into netutils.c. I just wanted to think
about its interface a bit more before providing such a function globally.
Modified Paths:
--------------
nagiosplug/trunk/NEWS
nagiosplug/trunk/plugins-root/check_dhcp.c
Modified: nagiosplug/trunk/NEWS
===================================================================
--- nagiosplug/trunk/NEWS 2007-07-26 12:38:53 UTC (rev 1765)
+++ nagiosplug/trunk/NEWS 2007-07-26 17:32:37 UTC (rev 1766)
@@ -13,6 +13,7 @@
to check DHCP servers on remote networks
New check_dhcp -m/--mac option which allows for specifying the MAC
address to use in the DHCP request
+ The check_dhcp -r and -s options now accept host names, too
1.4.9 4th June 2006
Inclusion of contrib/check_cluster2 as check_cluster with some improvements
Modified: nagiosplug/trunk/plugins-root/check_dhcp.c
===================================================================
--- nagiosplug/trunk/plugins-root/check_dhcp.c 2007-07-26 12:38:53 UTC (rev 1765)
+++ nagiosplug/trunk/plugins-root/check_dhcp.c 2007-07-26 17:32:37 UTC (rev 1766)
@@ -243,6 +243,7 @@
void print_usage(void);
void print_help(void);
+void resolve_host(const char *in,struct in_addr *out);
unsigned char *mac_aton(const char *);
void print_hardware_address(const unsigned char *);
int get_hardware_address(int,char *);
@@ -1089,7 +1090,6 @@
int call_getopt(int argc, char **argv){
int c=0;
int i=0;
- struct in_addr ipaddress;
int option_index = 0;
static struct option long_options[] =
@@ -1128,27 +1128,13 @@
switch(c){
case 's': /* DHCP server address */
- if(inet_aton(optarg,&ipaddress)){
- add_requested_server(ipaddress);
- inet_aton(optarg, &dhcp_ip);
- if (verbose)
- printf("querying %s\n",inet_ntoa(dhcp_ip));
- }
- /*
- else
- usage("Invalid server IP address\n");
- */
+ resolve_host(optarg,&dhcp_ip);
+ add_requested_server(dhcp_ip);
break;
case 'r': /* address we are requested from DHCP servers */
- if(inet_aton(optarg,&ipaddress)){
- requested_address=ipaddress;
- request_specific_address=TRUE;
- }
- /*
- else
- usage("Invalid requested IP address\n");
- */
+ resolve_host(optarg,&requested_address);
+ request_specific_address=TRUE;
break;
case 't': /* timeout */
@@ -1352,6 +1338,20 @@
#endif
+/* resolve host name or die (TODO: move this to netutils.c!) */
+void resolve_host(const char *in,struct in_addr *out){
+ struct addrinfo hints, *ai;
+
+ memset(&hints,0,sizeof(hints));
+ hints.ai_family=PF_INET;
+ if (getaddrinfo(in,NULL,&hints,&ai) != 0)
+ usage_va(_("Invalid hostname/address - %s"),optarg);
+
+ memcpy(out,&((struct sockaddr_in *)ai->ai_addr)->sin_addr,sizeof(*out));
+ freeaddrinfo(ai);
+ }
+
+
/* parse MAC address string, return 6 bytes (unterminated) or NULL */
unsigned char *mac_aton(const char *string){
static unsigned char result[6];
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list