better handling of interface name parameter

changes/54/3254/1
Richard Fuchs 12 years ago
parent d31db7873c
commit ff149a50cb

@ -41,7 +41,7 @@ u_char dhmac[ETHER_ADDR_LEN] = { 0 };
u_char dmac[ETHER_ADDR_LEN]; u_char dmac[ETHER_ADDR_LEN];
char dhmac_fname[20]; char dhmac_fname[20];
char iface_name[30] = { 0 }; char *iface_name = "eth0";
char ip_str[128]; char ip_str[128];
u_int8_t dhmac_flag = 0; u_int8_t dhmac_flag = 0;
u_int32_t server_id = { 0 }, option50_ip = { 0 }; u_int32_t server_id = { 0 }, option50_ip = { 0 };
@ -187,12 +187,7 @@ int main(int argc, char *argv[])
break; break;
case 'i': case 'i':
iface = if_nametoindex(optarg); iface_name = optarg;
if(iface == 0) {
fprintf(stdout, "Interface doesnot exist\n");
exit(2);
}
strncpy(iface_name, optarg, 29);
break; break;
case 'v': case 'v':
@ -341,6 +336,11 @@ int main(int argc, char *argv[])
print_help(argv[0]); print_help(argv[0]);
exit(2); exit(2);
} }
iface = if_nametoindex(iface_name);
if(iface == 0) {
fprintf(stdout, "Interface %s does not exist\n", iface_name);
exit(2);
}
/* Opens the PF_PACKET socket */ /* Opens the PF_PACKET socket */
if(open_socket() < 0) { if(open_socket() < 0) {
if (nagios_flag) if (nagios_flag)

@ -68,9 +68,6 @@ int set_promisc()
{ {
int status; int status;
struct ifreq ifr; struct ifreq ifr;
if(!strlen(iface_name)) {
strcpy(iface_name, "eth0");
}
strcpy(ifr.ifr_name, iface_name); strcpy(ifr.ifr_name, iface_name);
ifr.ifr_flags = (IFF_PROMISC | IFF_UP); ifr.ifr_flags = (IFF_PROMISC | IFF_UP);
status = ioctl(sock_packet, SIOCSIFFLAGS, &ifr); status = ioctl(sock_packet, SIOCSIFFLAGS, &ifr);
@ -109,9 +106,6 @@ u_int32_t get_interface_address()
int status; int status;
struct ifreq ifr; struct ifreq ifr;
if(!strlen(iface_name)) {
strcpy(iface_name, "eth0");
}
strcpy(ifr.ifr_name, iface_name); strcpy(ifr.ifr_name, iface_name);
ifr.ifr_addr.sa_family = AF_INET; ifr.ifr_addr.sa_family = AF_INET;
status = ioctl(sock_packet, SIOCGIFADDR, &ifr); status = ioctl(sock_packet, SIOCGIFADDR, &ifr);

@ -351,7 +351,7 @@ extern u_char dhmac[ETHER_ADDR_LEN];
extern u_char dmac[ETHER_ADDR_LEN]; extern u_char dmac[ETHER_ADDR_LEN];
extern char dhmac_fname[20]; extern char dhmac_fname[20];
extern char iface_name[30]; extern char *iface_name;
extern char ip_str[128]; extern char ip_str[128];
extern u_int32_t server_id, option50_ip; extern u_int32_t server_id, option50_ip;
extern u_int8_t dhcp_release_flag; extern u_int8_t dhcp_release_flag;

Loading…
Cancel
Save