Show bidi.c syntax highlighted
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/poll.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
char *names[1024];
int numfds;
struct pollfd pfd[1024];
void rcvd_packet(int index, unsigned char *buf, int len)
{
int i;
int dmp;
printf("%s: %i\n", names[index], len);
dmp = (len + 15) >> 4;
if (dmp > 8)
dmp = 8;
for (i=0;i<dmp;i++) {
int j;
for (j=0;j<16;j++)
printf("%.2x ", buf[(i<<4)|j]);
printf("\n");
}
printf("\n");
}
void loop()
{
while (1) {
int i;
if (poll(pfd, numfds, -1) < 0) {
perror("poll");
break;
}
for (i=0;i<numfds;i++) {
unsigned char buf[2048];
int j;
int len;
if (!(pfd[i].revents & POLLIN))
continue;
if ((len = read(pfd[i].fd, buf, 2048)) < 0)
continue;
rcvd_packet(i, buf, len);
for (j=0;j<numfds;j++)
if (i != j)
write(pfd[j].fd, buf, len);
}
}
}
void openfds(int argc, char *argv[])
{
int i;
numfds = 0;
for (i=1;i<argc;i++) {
int fd;
if ((fd = open(argv[i], O_RDWR)) < 0) {
perror("open");
continue;
}
names[numfds] = argv[i];
pfd[numfds].fd = fd;
pfd[numfds].events = POLLIN;
numfds++;
}
}
int main(int argc, char *argv[])
{
openfds(argc, argv);
loop();
return 0;
}
See more files for this project here
OpenAP is the complete distribution of open-source software that is required to produce a fully 802.11b compliant wireless access point. OpenAP is also a platform on which developers and hobbyists may realize their ideas. Since the build environment and s
Project homepage:
http://savannah.nongnu.org/projects/openap
Programming language(s): Assembly,C
License: gpl2
Makefile
README
bidi.c
tap.c