Changeset db62c7


Ignore:
Timestamp:
02/05/07 00:12:08 (6 years ago)
Author:
Bjorn Andersson <flex@…>
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)
Message:

extracted common code from send_* in iodine.c

Location:
src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • src/dns.c

    rda636b rdb62c7  
    198198 
    199199int 
    200 dns_build_hostname(char *buf, size_t buflen, char *data, size_t datalen, char *topdomain) 
     200dns_build_hostname(char *buf, size_t buflen,  
     201                                   const char *data, const size_t datalen,  
     202                                   const char *topdomain) 
    201203{ 
    202204        int avail; 
  • src/dns.h

    rb45dc2 rdb62c7  
    3636int dns_decode(char *, size_t, struct query *, qr_t, char *, size_t); 
    3737         
    38 int dns_build_hostname(char *, size_t, char *, size_t, char *); 
     38int dns_build_hostname(char *, size_t, const char *, const size_t, const char *); 
    3939 
    4040void dnsd_send(int, struct query*, char *, int); 
  • src/encoding.c

    rda636b rdb62c7  
    3535/* Eat 5 bytes from src, write 8 bytes to dest */ 
    3636static void 
    37 encode_chunk(char *dest, char *src) 
     37encode_chunk(char *dest, const char *src) 
    3838{ 
    3939        unsigned char c; 
     
    103103 
    104104int 
    105 encode_data(char *buf, int len, int space, char *dest) 
     105encode_data(const char *buf, const size_t len, int space, char *dest) 
    106106{ 
    107107        int final; 
     
    113113        char encoded[255]; 
    114114        char padding[5]; 
     115        const char *dp; 
    115116        char *pp; 
    116         char *dp; 
    117117        char *ep; 
    118118 
  • src/encoding.h

    rb45dc2 rdb62c7  
    1818#define _ENCODING_H_ 
    1919 
    20 int encode_data(char *, int, int, char *); 
     20int encode_data(const char *, const size_t, int, char *); 
    2121int decode_data(char *, int, const char *, char *); 
    2222 
  • src/iodine.c

    rda636b rdb62c7  
    6666 
    6767static void 
     68send_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 
     86static void 
    6887dns_send_chunk(int fd) 
    6988{ 
    70         char packet[512]; 
     89        char packet[4096]; 
    7190        struct query q; 
    72         char buf[256]; 
     91        char buf[4096]; 
    7392        int avail; 
    7493        char *p; 
     
    189208        struct timeval tv; 
    190209        fd_set fds; 
     210        int rv; 
    191211        int i; 
    192         int rv; 
    193212 
    194213        rv = 0; 
     
    204223 
    205224                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 
    212232                if (i == 0) /* timeout */ 
    213233                        send_ping(dns_fd); 
    214                 else {   
    215                         if(FD_ISSET(tun_fd, &fds)) { 
     234                else { 
     235                        if (FD_ISSET(tun_fd, &fds)) { 
    216236                                if (tunnel_tun(tun_fd, dns_fd) <= 0) 
    217237                                        continue; 
    218238                        } 
    219                         if(FD_ISSET(dns_fd, &fds)) { 
     239                        if (FD_ISSET(dns_fd, &fds)) { 
    220240                                if (tunnel_dns(tun_fd, dns_fd) <= 0) 
    221241                                        continue; 
     
    230250send_login(int fd, char *login, int len) 
    231251{ 
    232         char packet[512]; 
    233         struct query q; 
    234         char buf[256]; 
    235252        char data[18]; 
    236  
    237         q.id = rand_seed; 
    238         q.type = T_NULL; 
    239253 
    240254        memset(data, 0, sizeof(data)); 
     
    246260        rand_seed++; 
    247261 
    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)); 
    253263} 
    254264 
     
    256266send_ping(int fd) 
    257267{ 
    258          
    259         char packet[512]; 
    260         struct query q; 
    261         char buf[256]; 
    262268        char data[2]; 
    263         int len; 
    264269         
    265270        if (dns_sending()) { 
     
    269274        } 
    270275 
    271         q.id = rand_seed; 
    272         q.type = T_NULL; 
    273  
    274276        data[0] = (rand_seed >> 8) & 0xff; 
    275277        data[1] = (rand_seed >> 0) & 0xff; 
     
    277279        rand_seed++; 
    278280 
    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)); 
    284282} 
    285283 
     
    287285send_version(int fd, uint32_t version) 
    288286{ 
    289         char packet[512]; 
    290         struct query q; 
    291         char buf[256]; 
    292287        char data[6]; 
    293         int len; 
    294  
    295         q.id = rand_seed; 
    296         q.type = T_NULL; 
    297288 
    298289        data[0] = (version >> 24) & 0xff; 
     
    306297        rand_seed++; 
    307298 
    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)); 
    313300} 
    314301 
     
    353340                                                memcpy(&seed, in + 4, 4); 
    354341                                                seed = ntohl(seed); 
    355                                                 printf("Version ok, both running 0x%08x\n", VERSION); 
     342                                                printf("version ok, both running 0x%08x\n", VERSION); 
    356343                                                break; 
    357344                                        } 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"); 
    359346                                        } 
    360347                                } else { 
    361348                                        memcpy(&version, in + 4, 4); 
    362349                                        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 */ 
    365353                                } 
    366354                        } 
Note: See TracChangeset for help on using the changeset viewer.