Diff for /ansh/src/utils.c between versions 1.1.1.1.2.10 and 1.1.1.1.2.14

version 1.1.1.1.2.10, 2011/10/14 09:04:04 version 1.1.1.1.2.14, 2011/10/17 09:28:19
Line 120  PrepareL2(const char *psDev, int *bpflen) Line 120  PrepareL2(const char *psDev, int *bpflen)
                 return -1;                  return -1;
         }          }
   
         /*  
         n = fcntl(h, F_GETFL);          n = fcntl(h, F_GETFL);
         fcntl(h, F_SETFL, n | O_NONBLOCK);          fcntl(h, F_SETFL, n | O_NONBLOCK);
         */  
   
         VERB(3) LOG("Openned device handle %d with bpf buflen %d", h, *bpflen);          VERB(3) LOG("Openned device handle %d with bpf buflen %d", h, *bpflen);
         return h;          return h;
Line 208  icmpRecv(int s, u_int * __restrict seq, u_short * __re Line 206  icmpRecv(int s, u_int * __restrict seq, u_short * __re
                         VERB(3) LOG("Channel SECURED:: Plain text communication not supported at this moment ...");                          VERB(3) LOG("Channel SECURED:: Plain text communication not supported at this moment ...");
                         return ANSH_FLG_ERR;                          return ANSH_FLG_ERR;
                 }                  }
                   if (ntohl(hdr->ansh_nonce) != *crypted)
                           VERB(4) LOG("Detect change of nonce from %x to %x", *crypted, ntohl(hdr->ansh_nonce));
   
                 *crypted = ntohl(hdr->ansh_nonce);                  *crypted = ntohl(hdr->ansh_nonce);
         }          }
Line 287  icmpSend(int s, u_int seq, u_short id, char flg, u_int Line 287  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 303  _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 362  _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 386  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ Line 395  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _
                         VERB(3) LOG("Channel SECURED:: Plain text communication not supported at this moment ...");                          VERB(3) LOG("Channel SECURED:: Plain text communication not supported at this moment ...");
                         return ANSH_FLG_ERR;                          return ANSH_FLG_ERR;
                 }                  }
                   if (ntohl(hdr->ansh_nonce) != *crypted)
                           VERB(4) LOG("Detect change of nonce from %x to %x", *crypted, ntohl(hdr->ansh_nonce));
   
                 *crypted = ntohl(hdr->ansh_nonce);                  *crypted = ntohl(hdr->ansh_nonce);
         }          }
Line 402  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ Line 413  _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);
         }          }
   
Line 513  cryptBuffer(u_char *buf, int rlen, u_int ctr) Line 534  cryptBuffer(u_char *buf, int rlen, u_int ctr)
                 return NULL;                  return NULL;
   
         return str;          return str;
   }
   
   int
   stopProcess(sched_root_task_t * __restrict root, proc_head_t * __restrict h, pid_t pid, sched_task_func_t func)
   {
           struct tagProc *p;
   
           FTRACE(3);
   
           SLIST_FOREACH(p, h, proc_next)
                   if (p->proc_pid == pid) {
                           break;
                   }
           VERB(3) LOG("pid=%d found=%p\n", pid, p);
           if (!p)
                   return 1;
   
           ioFreePTY(p->proc_pty, p->proc_ttyname);
           if (p->proc_pty)
                   schedCancelby(root, NULL, CRITERIA_FD, (void*) ((intptr_t) p->proc_pty), NULL);
   
           p->proc_pty = 0;
           p->proc_pid = 0;
           p->proc_seq = 0;
           p->proc_flg = ANSH_FLG_EOF;
           p->proc_rlen_[FD2NET] = 0;
   
           schedCallOnce(root, func, p, p->proc_sock);
           return 0;
 }  }

Removed from v.1.1.1.1.2.10  
changed lines
  Added in v.1.1.1.1.2.14


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