/* file: ldev.c
* data: Thu June 10
* Simple single packet capture program
*/
#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>
#include <arpa/inet.h>
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/if_ether.h>
int main(int argc, char *argv[])
{
const char *dev;
char *net;
char *mask;
int ret;
char errbuf[PCAP_ERRBUF_SIZE];
bpf_u_int32 netp; // ip
bpf_u_int32 maskp; //subnet mask
struct in_addr addr; //
dev = pcap_lookupdev(errbuf); // ask pacp to find a valid device for use to sniff on
if(dev == NULL)
{
printf("%s\n",errbuf);
exit(1);
}
printf("DEV: %s\n",dev);
ret = pcap_lookupnet(dev ,&netp, &maskp, errbuf); // ask pcap for the network address and mask of the device
if(ret == -1)
{
printf("%s\n",errbuf);
exit(1);
}
addr.s_addr = netp; // get the network address in a human readable form
net = inet_ntoa(addr);
if(net == NULL)
{
perror("inet_ntoa");
exit(1);
}
printf("NET: %s\n",net);
addr.s_addr = maskp;
mask = inet_ntoa(addr);
if(mask == NULL)
{
perror("inet_ntoa");
exit(1);
}
printf("MASK:%s\n",mask);
return 0;
}