Changeset db62c7
- Timestamp:
- 02/05/07 00:12:08 (6 years ago)
- Branches:
- master, iodine-0.4, iodine-0.5, iodine-0.6
- Children:
- cb66fd
- Parents:
- da636b
- git-author:
- Bjorn Andersson <flex@…> (02/05/07 00:12:08)
- git-committer:
- Bjorn Andersson <flex@…> (02/05/07 00:12:08)
- Location:
- src
- Files:
-
- 5 edited
-
dns.c (modified) (1 diff)
-
dns.h (modified) (1 diff)
-
encoding.c (modified) (3 diffs)
-
encoding.h (modified) (1 diff)
-
iodine.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/dns.c
rda636b rdb62c7 198 198 199 199 int 200 dns_build_hostname(char *buf, size_t buflen, char *data, size_t datalen, char *topdomain) 200 dns_build_hostname(char *buf, size_t buflen, 201 const char *data, const size_t datalen, 202 const char *topdomain) 201 203 { 202 204 int avail; -
src/dns.h
rb45dc2 rdb62c7 36 36 int dns_decode(char *, size_t, struct query *, qr_t, char *, size_t); 37 37 38 int dns_build_hostname(char *, size_t, c har *, size_t,char *);38 int dns_build_hostname(char *, size_t, const char *, const size_t, const char *); 39 39 40 40 void dnsd_send(int, struct query*, char *, int); -
src/encoding.c
rda636b rdb62c7 35 35 /* Eat 5 bytes from src, write 8 bytes to dest */ 36 36 static void 37 encode_chunk(char *dest, c har *src)37 encode_chunk(char *dest, const char *src) 38 38 { 39 39 unsigned char c; … … 103 103 104 104 int 105 encode_data(c har *buf, int len, int space, char *dest)105 encode_data(const char *buf, const size_t len, int space, char *dest) 106 106 { 107 107 int final; … … 113 113 char encoded[255]; 114 114 char padding[5]; 115 const char *dp; 115 116 char *pp; 116 char *dp;117 117 char *ep; 118 118 -
src/encoding.h
rb45dc2 rdb62c7 18 18 #define _ENCODING_H_ 19 19 20 int encode_data(c har *, int, int, char *);20 int encode_data(const char *, const size_t, int, char *); 21 21 int decode_data(char *, int, const char *, char *); 22 22 -
src/iodine.c
rda636b rdb62c7 66 66 67 67 static void 68 send_packet(int fd, char cmd, const char *data, const size_t datalen) 69 { 70 char packet[4096]; 71 struct query q; 72 char buf[4096]; 73 size_t len; 74 75 q.id = rand_seed; 76 q.type = T_NULL; 77 78 buf[0] = cmd; 79 80 len = dns_build_hostname(buf + 1, sizeof(buf) - 1, data, datalen, topdomain); 81 len = dns_encode(packet, sizeof(packet), &q, QR_QUERY, buf, strlen(buf)); 82 83 sendto(fd, packet, len, 0, (struct sockaddr*)&peer, sizeof(peer)); 84 } 85 86 static void 68 87 dns_send_chunk(int fd) 69 88 { 70 char packet[ 512];89 char packet[4096]; 71 90 struct query q; 72 char buf[ 256];91 char buf[4096]; 73 92 int avail; 74 93 char *p; … … 189 208 struct timeval tv; 190 209 fd_set fds; 210 int rv; 191 211 int i; 192 int rv;193 212 194 213 rv = 0; … … 204 223 205 224 i = select(MAX(tun_fd, dns_fd) + 1, &fds, NULL, NULL, &tv); 206 207 if (running == 0 || i < 0) { 208 rv = 1; 209 break; 210 } 211 225 226 if (running == 0) 227 break; 228 229 if (i < 0) 230 err(1, "select"); 231 212 232 if (i == 0) /* timeout */ 213 233 send_ping(dns_fd); 214 else { 215 if (FD_ISSET(tun_fd, &fds)) {234 else { 235 if (FD_ISSET(tun_fd, &fds)) { 216 236 if (tunnel_tun(tun_fd, dns_fd) <= 0) 217 237 continue; 218 238 } 219 if (FD_ISSET(dns_fd, &fds)) {239 if (FD_ISSET(dns_fd, &fds)) { 220 240 if (tunnel_dns(tun_fd, dns_fd) <= 0) 221 241 continue; … … 230 250 send_login(int fd, char *login, int len) 231 251 { 232 char packet[512];233 struct query q;234 char buf[256];235 252 char data[18]; 236 237 q.id = rand_seed;238 q.type = T_NULL;239 253 240 254 memset(data, 0, sizeof(data)); … … 246 260 rand_seed++; 247 261 248 buf[0] = 'L'; 249 len = dns_build_hostname(buf + 1, sizeof(buf) - 1, data, sizeof(data), topdomain); 250 len = dns_encode(packet, sizeof(packet), &q, QR_QUERY, buf, strlen(buf)); 251 252 sendto(fd, packet, len, 0, (struct sockaddr*)&peer, sizeof(peer)); 262 send_packet(fd, 'L', data, sizeof(data)); 253 263 } 254 264 … … 256 266 send_ping(int fd) 257 267 { 258 259 char packet[512];260 struct query q;261 char buf[256];262 268 char data[2]; 263 int len;264 269 265 270 if (dns_sending()) { … … 269 274 } 270 275 271 q.id = rand_seed;272 q.type = T_NULL;273 274 276 data[0] = (rand_seed >> 8) & 0xff; 275 277 data[1] = (rand_seed >> 0) & 0xff; … … 277 279 rand_seed++; 278 280 279 buf[0] = 'P'; 280 len = dns_build_hostname(buf + 1, sizeof(buf) - 1, data, sizeof(data), topdomain); 281 len = dns_encode(packet, sizeof(packet), &q, QR_QUERY, buf, strlen(buf)); 282 283 sendto(fd, packet, len, 0, (struct sockaddr*)&peer, sizeof(peer)); 281 send_packet(fd, 'P', data, sizeof(data)); 284 282 } 285 283 … … 287 285 send_version(int fd, uint32_t version) 288 286 { 289 char packet[512];290 struct query q;291 char buf[256];292 287 char data[6]; 293 int len;294 295 q.id = rand_seed;296 q.type = T_NULL;297 288 298 289 data[0] = (version >> 24) & 0xff; … … 306 297 rand_seed++; 307 298 308 buf[0] = 'V'; 309 len = dns_build_hostname(buf + 1, sizeof(buf) - 1, data, sizeof(data), topdomain); 310 len = dns_encode(packet, sizeof(packet), &q, QR_QUERY, buf, strlen(buf)); 311 312 sendto(fd, packet, len, 0, (struct sockaddr*)&peer, sizeof(peer)); 299 send_packet(fd, 'V', data, sizeof(data)); 313 300 } 314 301 … … 353 340 memcpy(&seed, in + 4, 4); 354 341 seed = ntohl(seed); 355 printf(" Version ok, both running 0x%08x\n", VERSION);342 printf("version ok, both running 0x%08x\n", VERSION); 356 343 break; 357 344 } else { 358 printf(" Version ok but did not receive proper login challenge\n");345 printf("version ok but did not receive proper login challenge\n"); 359 346 } 360 347 } else { 361 348 memcpy(&version, in + 4, 4); 362 349 version = ntohl(version); 363 printf("You run 0x%08x, server runs 0x%08x. Giving up\n", VERSION, version); 364 return 1; 350 errx(1, "you run 0x%08x, server runs 0x%08x. giving up\n", 351 VERSION, version); 352 /* NOTREACHED */ 365 353 } 366 354 }
Note: See TracChangeset
for help on using the changeset viewer.
