Diff for /ansh/src/utils.c between versions 1.1.1.1.2.13 and 1.2.2.1

version 1.1.1.1.2.13, 2011/10/14 13:23:49 version 1.2.2.1, 2011/10/31 09:46:18
Line 133  PrepareL3(const struct sockaddr *sa, int *bpflen) Line 133  PrepareL3(const struct sockaddr *sa, int *bpflen)
         int h, n = 1;          int h, n = 1;
   
         FTRACE(3);          FTRACE(3);
         assert(sa);  
   
         h = socket(sa->sa_family, SOCK_RAW, IPPROTO_ICMP);          h = socket(sa->sa_family, SOCK_RAW, IPPROTO_ICMP);
         if (h == -1) {          if (h == -1) {
Line 147  PrepareL3(const struct sockaddr *sa, int *bpflen) Line 146  PrepareL3(const struct sockaddr *sa, int *bpflen)
                 return -1;                  return -1;
         }          }
         */          */
        if (bind(h, sa, sizeof(struct sockaddr)) == -1) {        if (sa && bind(h, sa, sizeof(struct sockaddr)) == -1) {
                 printf("Error:: Cant bind to raw socket #%d - %s\n", errno, strerror(errno));                  printf("Error:: Cant bind to raw socket #%d - %s\n", errno, strerror(errno));
                 close(h);                  close(h);
                 return -1;                  return -1;
Line 287  icmpSend(int s, u_int seq, u_short id, char flg, u_int Line 286  icmpSend(int s, u_int seq, u_short id, char flg, u_int
 static int  static int
 _pkt_Send(int s, u_int seq, char flg, u_int crypted, u_char *data, int datlen, struct io_ether_addr *ea)  _pkt_Send(int s, u_int seq, char flg, u_int crypted, u_char *data, int datlen, struct io_ether_addr *ea)
 {  {
        u_char *pos, buf[USHRT_MAX] = { 0 };        u_char *pos, *str, buf[USHRT_MAX] = { 0 };
         struct ether_header *e = (struct ether_header*) buf;          struct ether_header *e = (struct ether_header*) buf;
         struct ansh_hdr *hdr;          struct ansh_hdr *hdr;
         int ret = 0;          int ret = 0;
Line 303  _pkt_Send(int s, u_int seq, char flg, u_int crypted, u Line 302  _pkt_Send(int s, u_int seq, char flg, u_int crypted, u
   
         memcpy(pos, data, datlen);          memcpy(pos, data, datlen);
   
           if (Crypted) {
                   str = cryptBuffer(pos, datlen, Crypted);
                   if (str) {
                           memcpy(pos, str, datlen);
                           free(str);
                   }
           }
   
         hdr->ansh_ver = ANSH_VERSION;          hdr->ansh_ver = ANSH_VERSION;
         hdr->ansh_flg = flg;          hdr->ansh_flg = flg;
         hdr->ansh_len = htons(datlen + sizeof(struct ansh_hdr));          hdr->ansh_len = htons(datlen + sizeof(struct ansh_hdr));
Line 354  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ Line 361  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _
         struct bpf_hdr *bpf;          struct bpf_hdr *bpf;
         struct ansh_hdr *hdr;          struct ansh_hdr *hdr;
         u_int crc;          u_int crc;
           u_char *str;
   
         if (rlen < (sizeof(struct bpf_hdr) + ETHER_HDR_LEN + sizeof(struct ansh_hdr))) {          if (rlen < (sizeof(struct bpf_hdr) + ETHER_HDR_LEN + sizeof(struct ansh_hdr))) {
                 VERB(1) LOG("Discard packet too short %d ...", rlen);                  VERB(1) LOG("Discard packet too short %d ...", rlen);
Line 404  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ Line 412  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _
         /* select data */          /* select data */
         if (data) {          if (data) {
                 *datlen = ntohs(hdr->ansh_len) - sizeof(struct ansh_hdr);                  *datlen = ntohs(hdr->ansh_len) - sizeof(struct ansh_hdr);
                   if (Crypted) {
                           str = cryptBuffer(buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr), 
                                           *datlen, Crypted);
                           if (str) {
                                   memcpy(buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr), 
                                                   str, *datlen);
                                   free(str);
                           }
                   }
   
                 memcpy(data, buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr), *datlen);                  memcpy(data, buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr), *datlen);
         }          }
   

Removed from v.1.1.1.1.2.13  
changed lines
  Added in v.1.2.2.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>