version 1.1.2.11, 2013/06/26 16:22:12
|
version 1.4.12.1, 2016/08/11 16:18:15
|
Line 1
|
Line 1
|
|
#ifdef __linux__ |
|
int main() |
|
{ |
|
return 0; |
|
} |
|
#else |
|
|
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
#include <fcntl.h> |
#include <fcntl.h> |
Line 61 static void *
|
Line 68 static void *
|
ShowPkt(void *buffer) |
ShowPkt(void *buffer) |
{ |
{ |
char Proto = 0, szStr[BUFSIZ], szLine[BUFSIZ], szWrk[BUFSIZ], szShow[USHRT_MAX] = { 0 }; |
char Proto = 0, szStr[BUFSIZ], szLine[BUFSIZ], szWrk[BUFSIZ], szShow[USHRT_MAX] = { 0 }; |
struct bpf_hdr *bpf = buffer; |
|
#ifdef __FreeBSD__ |
#ifdef __FreeBSD__ |
struct bpf_zbuf_header *bzh = buffer; |
struct bpf_zbuf_header *bzh = buffer; |
struct icmphdr *icmp; |
struct icmphdr *icmp; |
Line 78 ShowPkt(void *buffer)
|
Line 84 ShowPkt(void *buffer)
|
|
|
assert(buffer); |
assert(buffer); |
|
|
snprintf(szLine, BUFSIZ, "#Packet length: %d\n>>> Ethernet ...\n", bpf->bh_datalen); | eth = (struct ether_header *) buffer; |
strlcat(szShow, szLine, USHRT_MAX); | |
eth = (struct ether_header *) (buffer + bpf->bh_hdrlen); | |
|
|
switch (ntohs(eth->ether_type)) { |
switch (ntohs(eth->ether_type)) { |
case ETHERTYPE_ARP: |
case ETHERTYPE_ARP: |
Line 251 main(int argc, char **argv)
|
Line 255 main(int argc, char **argv)
|
u_int n, count = (u_int) -1; |
u_int n, count = (u_int) -1; |
register int i; |
register int i; |
int dev, fd, ret, siz = 0; |
int dev, fd, ret, siz = 0; |
char szStr[BUFSIZ], szMap[MAXPATHLEN] = { 0 }, *buffer = NULL; | char szStr[BUFSIZ], szEA[STRSIZ], szMap[MAXPATHLEN] = { 0 }, *buffer = NULL; |
struct ifreq ifr; |
struct ifreq ifr; |
struct pollfd pfd = { 0 }; |
struct pollfd pfd = { 0 }; |
pthread_t tid; |
pthread_t tid; |
char ch, mode = 'R'; |
char ch, mode = 'R'; |
struct timespec ts_start, ts_end; |
struct timespec ts_start, ts_end; |
void *bz = NULL; |
void *bz = NULL; |
|
ether_addr_t ea; |
|
|
while ((ch = getopt(argc, argv, "hvwzs:p:f:")) != -1) |
while ((ch = getopt(argc, argv, "hvwzs:p:f:")) != -1) |
switch (ch) { |
switch (ch) { |
Line 293 main(int argc, char **argv)
|
Line 298 main(int argc, char **argv)
|
else |
else |
strlcpy(szStr, *argv, sizeof szStr); |
strlcpy(szStr, *argv, sizeof szStr); |
|
|
|
printf("io_getmaciface(%s) -> %d\n", szStr, io_getmaciface(szStr, &ea)); |
|
e_ether_ntoa(&ea, szEA, sizeof szEA); |
|
printf("ethernet address is %s\n", szEA); |
|
|
#ifdef __FreeBSD__ |
#ifdef __FreeBSD__ |
dev = io_etherOpen(szStr, O_RDWR | O_NONBLOCK, 42, (u_int*) &siz, (flg) ? &bz : NULL); | dev = io_etherOpen(szStr, O_RDWR | O_NONBLOCK, 42, 0, (u_int*) &siz, (flg) ? &bz : NULL); |
if (dev == -1) |
if (dev == -1) |
dev = io_etherOpen(szStr, O_RDWR | O_NONBLOCK, 42, (u_int*) &siz, NULL); | dev = io_etherOpen(szStr, O_RDWR | O_NONBLOCK, 42, 0, (u_int*) &siz, NULL); |
#else |
#else |
dev = io_etherOpen(szStr, O_RDWR, 42, (u_int*) &siz, NULL); | dev = io_etherOpen(szStr, O_RDWR, 42, 0, (u_int*) &siz, NULL); |
#endif |
#endif |
if (dev == -1) { |
if (dev == -1) { |
printf("Error:: #%d - %s\n", io_GetErrno(), io_GetError()); |
printf("Error:: #%d - %s\n", io_GetErrno(), io_GetError()); |
Line 373 main(int argc, char **argv)
|
Line 382 main(int argc, char **argv)
|
printf("0.%09lu per/iteration\n", ts_end.tv_sec + ts_end.tv_nsec / i); |
printf("0.%09lu per/iteration\n", ts_end.tv_sec + ts_end.tv_nsec / i); |
return 0; |
return 0; |
} |
} |
|
|
|
#endif |