www.pudn.com > ipparse.rar > ipparse.cpp


/* ldev.c 
   Martin Casado 
    
   To compile: 
   >gcc ldev.c -lpcap 
 
   Looks for an interface, and lists the network ip 
   and mask associated with that interface. 
*/ 
#include  
#include  
#include   /* GIMME a libpcap plz! */ 
#include  
#include  
#include  
#include  
 
 
int main(int argc, char **argv) 
{ 
  char *dev; /* name of the device to use */  
  char *net; /* dot notation of the network address */ 
  char *mask;/* dot notation of the network mask    */ 
  int ret;   /* return code */ 
  char errbuf[PCAP_ERRBUF_SIZE]; 
  bpf_u_int32 netp; /* ip          */ 
  bpf_u_int32 maskp;/* subnet mask */ 
  struct in_addr addr; 
 
  /* ask pcap to find a valid device for use to sniff on */ 
  dev = pcap_lookupdev(errbuf); 
 
  /* error checking */ 
  if(dev == NULL) 
  { 
   printf("%s\n",errbuf); 
   exit(1); 
  } 
 
  /* print out device name */ 
  printf("DEV: %s\n",dev); 
 
  /* ask pcap for the network address and mask of the device */ 
  ret = pcap_lookupnet(dev,&netp,&maskp,errbuf); 
 
  if(ret == -1) 
  { 
   printf("%s\n",errbuf); 
   exit(1); 
  } 
 
  /* get the network address in a human readable form */ 
  addr.s_addr = netp; 
  net = inet_ntoa(addr); 
 
  if(net == NULL)/* thanks Scott :-P */ 
  { 
    perror("inet_ntoa"); 
    exit(1); 
  } 
 
  printf("NET: %s\n",net); 
 
  /* do the same as above for the device's mask */ 
  addr.s_addr = maskp; 
  mask = inet_ntoa(addr); 
   
  if(mask == NULL) 
  { 
    perror("inet_ntoa"); 
    exit(1); 
  } 
   
  printf("MASK: %s\n",mask); 
 
  return 0; 
}