/*! * @file address.c * @author HiSEON (ikseon@nepirity.com) * * @internal * Created: 2018년 03월 20일 * Copyright: Copyright (c) 2018, Kang IkSeon */ #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <pcap.h> int main(void) { pcap_if_t *alldevs; pcap_if_t *d; struct pcap_addr *a; int i = 0; int no; char errbuf[PCAP_ERRBUF_SIZE]; if (pcap_findalldevs(&alldevs, errbuf) < 0) { printf("pcap_findalldevs error\n"); return 1; } for (d=alldevs; d; d=d->next) { printf("%d : %s\n", ++i, d->name); } printf("number : "); scanf("%d", &no); if (!(no > 0 && no <= i)) { printf("number error\n"); return 1; } for (d=alldevs, i=0; d; d=d->next) { if (no == ++i) break; } printf("name : %s\n", d->name); if (d->description) printf("description : %s\n", d->description); for (a = d->addresses; a; a=a->next) { struct sockaddr_in *in_addr = (struct sockaddr_in *)a->addr; switch (a->addr->sa_family) { case AF_INET: printf("address : %s\n", inet_ntoa(in_addr->sin_addr)); break; } } pcap_freealldevs(alldevs); return 0; }