int call_getopt(int argc, char **argv){ int c=0; int i=0; int option_index = 0; static struct option long_options[] = { {"serverip", required_argument,0,'s'}, {"requestedip", required_argument,0,'r'}, {"timeout", required_argument,0,'t'}, {"interface", required_argument,0,'i'}, {"mac", required_argument,0,'m'}, {"unicast", no_argument, 0,'u'}, {"verbose", no_argument, 0,'v'}, {"version", no_argument, 0,'V'}, {"help", no_argument, 0,'h'}, {0,0,0,0} }; while(1){ c=getopt_long(argc,argv,"+hVvt:s:r:t:i:m:u",long_options,&option_index); i++; if(c==-1||c==EOF||c==1) break; switch(c){ case 'w': case 'r': case 't': case 'i': i++; break; default: break; } switch(c){ case 's': /* DHCP server address */ resolve_host(optarg,&dhcp_ip); add_requested_server(dhcp_ip); break; case 'r': /* address we are requested from DHCP servers */ resolve_host(optarg,&requested_address); request_specific_address=TRUE; break; case 't': /* timeout */ /* if(is_intnonneg(optarg)) */ if(atoi(optarg)>0) dhcpoffer_timeout=atoi(optarg); /* else usage("Time interval must be a nonnegative integer\n"); */ break; case 'm': /* MAC address */ if((user_specified_mac=mac_aton(optarg)) == NULL) usage("Cannot parse MAC address.\n"); if(verbose) print_hardware_address(user_specified_mac); break; case 'i': /* interface name */ strncpy(network_interface_name,optarg,sizeof(network_interface_name)-1); network_interface_name[sizeof(network_interface_name)-1]='\x0'; break; case 'u': /* unicast testing */ unicast=1; break; case 'V': /* version */ print_revision(progname, NP_VERSION); exit(STATE_OK); case 'h': /* help */ print_help(); exit(STATE_OK); case 'v': /* verbose */ verbose=1; break; case '?': /* help */ usage5 (); break; default: break; } } return i; }
int call_getopt(int argc, char **argv){ int c=0; int i=0; struct in_addr ipaddress; #ifdef HAVE_GETOPT_H int option_index = 0; static struct option long_options[] = { {"serverip", required_argument,0,'s'}, {"requestedip", required_argument,0,'r'}, {"timeout", required_argument,0,'t'}, {"interface", required_argument,0,'i'}, {"verbose", no_argument, 0,'v'}, {"version", no_argument, 0,'V'}, {"help", no_argument, 0,'h'}, {0,0,0,0} }; #endif while(1){ #ifdef HAVE_GETOPT_H c=getopt_long(argc,argv,"+hVvt:s:r:t:i:",long_options,&option_index); #else c=getopt(argc,argv,"+?hVvt:s:r:t:i:"); #endif i++; if(c==-1||c==EOF||c==1) break; switch(c){ case 'w': case 'r': case 't': case 'i': i++; break; default: break; } switch(c){ case 's': /* DHCP server address */ if(inet_aton(optarg,&ipaddress)) add_requested_server(ipaddress); /* else usage("Invalid server IP address\n"); */ 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"); */ break; case 't': /* timeout */ /* if(is_intnonneg(optarg)) */ if(atoi(optarg)>0) dhcpoffer_timeout=atoi(optarg); /* else usage("Time interval must be a nonnegative integer\n"); */ break; case 'i': /* interface name */ strncpy(network_interface_name,optarg,sizeof(network_interface_name)-1); network_interface_name[sizeof(network_interface_name)-1]='\x0'; break; case 'V': /* version */ /*print_revision(progname,"$Revision: 1.4 $");*/ exit(STATE_OK); case 'h': /* help */ print_help(); exit(STATE_OK); case '?': /* help */ /*usage("Invalid argument\n");*/ break; default: break; } } return i; }