nonworking read of dns reply

This commit is contained in:
Erik Ekman 2006-06-05 15:13:30 +00:00
parent e1c0a595df
commit 43787fae12
3 changed files with 29 additions and 6 deletions

21
dns.c
View file

@ -33,6 +33,7 @@
static int host2dns(const char *, char *, int);
struct sockaddr_in peer;
char topdomain[256];
int
open_dns()
@ -87,9 +88,9 @@ dns_set_peer(const char *host)
}
void
dns_ping()
dns_ping(int dns_fd)
{
dns_query(dns_fd, "kryo.se", 1);
}
void
@ -128,6 +129,22 @@ dns_query(int fd, char *host, int type)
sendto(fd, buf, len+1, 0, (struct sockaddr*)&peer, peerlen);
}
int
dns_read(int fd, char *buf, int len)
{
int r;
int fromlen;
struct sockaddr_in from;
r = recvfrom(fd, buf, len, 0, (struct sockaddr*)&from, &fromlen);
if (r < 0) {
perror("recvfrom");
}
printf("Read %d bytes DNS reply\n", r);
return r;
}
static int
host2dns(const char *host, char *buffer, int size)
{

3
dns.h
View file

@ -25,8 +25,9 @@ int open_dns();
void close_dns(int);
void dns_set_peer(const char *);
void dns_ping();
void dns_ping(int);
void dns_query(int, char *, int);
int dns_read(int, char *, int);
#endif /* _DNS_H_ */

View file

@ -18,6 +18,8 @@
#include <stdint.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <err.h>
#include "tun.h"
@ -38,7 +40,11 @@ tunnel(int tun_fd, int dns_fd)
int i;
fd_set fds;
struct timeval tv;
char buf[1024];
int buflen;
int read;
buflen = 1024;
while (running) {
tv.tv_sec = 1;
tv.tv_usec = 0;
@ -55,13 +61,13 @@ tunnel(int tun_fd, int dns_fd)
}
if(i == 0) {
dns_ping();
dns_ping(dns_fd);
} else {
if(FD_ISSET(tun_fd, &fds)) {
}
if(FD_ISSET(dns_fd, &fds)) {
read = dns_read(dns_fd, buf, buflen);
}
}
}
@ -81,7 +87,6 @@ main()
signal(SIGINT, sigint);
dns_set_peer("192.168.11.101");
dns_query(dns_fd, "kryo.se", 1);
tunnel(tun_fd, dns_fd);