Update of /cvsroot/dhcp-agent/dhcp-agent
In directory usw-pr-cvs1:/tmp/cvs-serv13997
Modified Files:
dhcp-sniff.c
Log Message:
dhcpsniff now looks for availabel interfaces
Index: dhcp-sniff.c
===================================================================
RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-sniff.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** dhcp-sniff.c 22 Jun 2002 01:47:57 -0000 1.11
--- dhcp-sniff.c 22 Jun 2002 02:12:03 -0000 1.12
***************
*** 46,50 ****
{
int c;
! char *interface_name = "eth0";
rawnet_t *net;
int retval;
--- 46,50 ----
{
int c;
! char *interface_name = NULL;
rawnet_t *net;
int retval;
***************
*** 52,55 ****
--- 52,56 ----
char filter_buff[GENERIC_BUFFSIZE];
print_packet p_packet = print_dhcp_packet_verbose;
+ list_t *available_interfaces;
#if !defined(HAVE_PROGNAME)
***************
*** 79,82 ****
--- 80,98 ----
}
+ if(interface_name == NULL) {
+
+ /* get the first available on. */
+ available_interfaces = interface_get_active_interfaces();
+
+ if(available_interfaces != NULL) {
+
+ interface_name = strdup(available_interfaces->data);
+ purge_list(available_interfaces, NULL);
+
+ } else {
+ fatal_error("%s: could not find suitable interface.", getprogname());
+ }
+ }
+
/* Get port numbers from services db. */
***************
*** 84,92 ****
sport = port_for_service("bootpc", "udp");
! if(dport == -1 || sport == -1)
! fatal_error("could not lookup dhcp services in service db: %s", strerror(errno));
! dport = ntohs(dport);
! sport = ntohs(sport);
snprintf(filter_buff, sizeof(filter_buff), "arp or icmp or (udp and (port %d or port %d))", dport, sport);
--- 100,113 ----
sport = port_for_service("bootpc", "udp");
! if(dport == -1 || sport == -1) {
! dport = BOOTP_CLIENT;
! sport = BOOTP_SERVER;
!
! } else {
!
! dport = ntohs(dport);
! sport = ntohs(sport);
! }
snprintf(filter_buff, sizeof(filter_buff), "arp or icmp or (udp and (port %d or port %d))", dport, sport);
|