ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/src/vpn_dns.C
(Generate patch)

Comparing gvpe/src/vpn_dns.C (file contents):
Revision 1.32 by pcg, Tue Mar 15 18:15:39 2005 UTC vs.
Revision 1.33 by pcg, Tue Mar 15 19:23:33 2005 UTC

47#include "vpn.h" 47#include "vpn.h"
48 48
49#define MAX_POLL_INTERVAL 5. // how often to poll minimally when the server has no data 49#define MAX_POLL_INTERVAL 5. // how often to poll minimally when the server has no data
50#define ACTIVITY_INTERVAL 5. 50#define ACTIVITY_INTERVAL 5.
51 51
52#define TIMEOUT_FACTOR 4. 52#define TIMEOUT_FACTOR 8.
53 53
54#define INITIAL_TIMEOUT 0.1 // retry timeouts 54#define INITIAL_TIMEOUT 0.1 // retry timeouts
55#define INITIAL_SYN_TIMEOUT 10. // retry timeout for initial syn 55#define INITIAL_SYN_TIMEOUT 10. // retry timeout for initial syn
56 56
57#define MIN_SEND_INTERVAL 0.001 // wait at least this time between sending requests 57#define MIN_SEND_INTERVAL 0.001 // wait at least this time between sending requests
60#define LATENCY_FACTOR 0.5 // RTT * LATENCY_FACTOR == sending rate 60#define LATENCY_FACTOR 0.5 // RTT * LATENCY_FACTOR == sending rate
61#define MAX_OUTSTANDING 100 // max. outstanding requests 61#define MAX_OUTSTANDING 100 // max. outstanding requests
62#define MAX_WINDOW 1000 // max. for MAX_OUTSTANDING, and backlog 62#define MAX_WINDOW 1000 // max. for MAX_OUTSTANDING, and backlog
63#define MAX_BACKLOG (32*1024) // size of gvpe protocol backlog (bytes), must be > MAXSIZE 63#define MAX_BACKLOG (32*1024) // size of gvpe protocol backlog (bytes), must be > MAXSIZE
64 64
65#define MAX_DOMAIN_SIZE 240 // 255 is legal limit, but bind doesn't compress well 65#define MAX_DOMAIN_SIZE 220 // 255 is legal limit, but bind doesn't compress well
66// 240 leaves about 4 bytes of server reply data 66// 240 leaves about 4 bytes of server reply data
67// every two request bytes less give room for one reply byte 67// every request byte less give room for two reply bytes
68 68
69#define SEQNO_MASK 0x3fff 69#define SEQNO_MASK 0x3fff
70#define SEQNO_EQ(a,b) ( 0 == ( ((a) ^ (b)) & SEQNO_MASK) ) 70#define SEQNO_EQ(a,b) ( 0 == ( ((a) ^ (b)) & SEQNO_MASK) )
71 71
72#define MAX_LBL_SIZE 63 72#define MAX_LBL_SIZE 63
793 } 793 }
794 794
795 while (vpn_packet *pkt = rcvdq.get ()) 795 while (vpn_packet *pkt = rcvdq.get ())
796 { 796 {
797 sockinfo si; 797 sockinfo si;
798 si.host = 0x01010101; si.port = htons (c->conf->id); si.prot = PROT_DNSv4; 798 si.host = htonl (c->conf->id); si.port = 0; si.prot = PROT_DNSv4;
799 799
800 vpn->recv_vpn_packet (pkt, si); 800 vpn->recv_vpn_packet (pkt, si);
801 801
802 delete pkt; 802 delete pkt;
803 } 803 }
1180} 1180}
1181 1181
1182bool 1182bool
1183vpn::send_dnsv4_packet (vpn_packet *pkt, const sockinfo &si, int tos) 1183vpn::send_dnsv4_packet (vpn_packet *pkt, const sockinfo &si, int tos)
1184{ 1184{
1185 int client = ntohs (si.port); 1185 int client = ntohl (si.host);
1186 1186
1187 assert (0 < client && client <= conns.size ()); 1187 assert (0 < client && client <= conns.size ());
1188 1188
1189 connection *c = conns [client - 1]; 1189 connection *c = conns [client - 1];
1190 1190
1229 { 1229 {
1230 send = r; 1230 send = r;
1231 1231
1232 r->retry++; 1232 r->retry++;
1233 r->timeout = NOW + (r->retry * min_latency * TIMEOUT_FACTOR); 1233 r->timeout = NOW + (r->retry * min_latency * TIMEOUT_FACTOR);
1234 printf ("TO %d %f\n", r->retry, r->timeout - NOW);//D
1234 1235
1235 // the following code changes the query section a bit, forcing 1236 // the following code changes the query section a bit, forcing
1236 // the forwarder to generate a new request 1237 // the forwarder to generate a new request
1237 if (r->stdhdr) 1238 if (r->stdhdr)
1238 { 1239 {
1286 } 1287 }
1287 1288
1288 if (send) 1289 if (send)
1289 { 1290 {
1290 last_sent = NOW; 1291 last_sent = NOW;
1291 if (rand () & 15 != 0)//D
1292 sendto (vpn->dnsv4_fd, 1292 sendto (vpn->dnsv4_fd,
1293 send->pkt->at (0), send->pkt->len, 0, 1293 send->pkt->at (0), send->pkt->len, 0,
1294 vpn->dns_forwarder.sav4 (), vpn->dns_forwarder.salenv4 ()); 1294 vpn->dns_forwarder.sav4 (), vpn->dns_forwarder.salenv4 ());
1295 } 1295 }
1296 1296

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines