Diff for /ansh/src/daemon2.c between versions 1.1.1.1.2.2 and 1.1.1.1.2.5

version 1.1.1.1.2.2, 2011/10/10 13:56:30 version 1.1.1.1.2.5, 2011/10/13 15:24:17
Line 31  pktTx(sched_task_t *task) Line 31  pktTx(sched_task_t *task)
                 }                  }
         }          }
   
        if ((wlen = pktSend(TASK_FD(task), proc->proc_flg, Crypted, proc->proc_buf_[FD2NET],         if ((wlen = pktSend(TASK_FD(task), ++proc->proc_seq, proc->proc_flg, Crypted, 
                        proc->proc_rlen_[FD2NET], &proc->proc_ea)) != ANSH_FLG_ERR) {                                        proc->proc_buf_[FD2NET], proc->proc_rlen_[FD2NET], 
                                         &proc->proc_ea)) != ANSH_FLG_ERR) {
                 proc->proc_flg = ANSH_FLG_OK;                  proc->proc_flg = ANSH_FLG_OK;
                 proc->proc_rlen_[FD2NET] = 0;                  proc->proc_rlen_[FD2NET] = 0;
         }          }
Line 50  pktRx(sched_task_t *task) Line 51  pktRx(sched_task_t *task)
         struct tagProc *proc = NULL;          struct tagProc *proc = NULL;
         char ret;          char ret;
         u_short *b;          u_short *b;
           u_int seq;
   
         FTRACE(3);          FTRACE(3);
   
         rlen = bpfLEN;          rlen = bpfLEN;
         if (!(buf = malloc(rlen)))          if (!(buf = malloc(rlen)))
                 goto end;                  goto end;
           else
                   memset(buf, 0, rlen);
   
        if ((ret = pktRecv(TASK_FD(task), &Crypted, buf, &rlen, &eth)) == ANSH_FLG_ERR)        if ((ret = pktRecv(TASK_FD(task), &seq, &Crypted, buf, &rlen, &eth)) == ANSH_FLG_ERR)
                 goto end;                  goto end;
         VERB(5) LOG("Received %d bytes", rlen);          VERB(5) LOG("Received %d bytes", rlen);
         if (!(ret & ANSH_FLG_CPOUT))          if (!(ret & ANSH_FLG_CPOUT))
Line 86  pktRx(sched_task_t *task) Line 90  pktRx(sched_task_t *task)
         switch (ret) {          switch (ret) {
                 case ANSH_FLG_EOF:                  case ANSH_FLG_EOF:
                 case ANSH_FLG_CPOUT:                  case ANSH_FLG_CPOUT:
                           if (seq <= proc->proc_seq)
                                   goto end;
                           else if (seq > (proc->proc_seq + 1))
                                   LOG("LOST PACKET(s) detect: %d; received seq=%d - %d", 
                                                   seq - proc->proc_seq + 1, seq, proc->proc_seq);
                           proc->proc_seq = seq;
                         break;                          break;
                 case ANSH_FLG_WINZ:                  case ANSH_FLG_WINZ:
                         b = (u_short*) buf;                          b = (u_short*) buf;
Line 132  fdTx(sched_task_t *task) Line 142  fdTx(sched_task_t *task)
                 schedCancelby(TASK_ROOT(task), NULL, CRITERIA_FD, (void*) TASK_FD(task), NULL);                  schedCancelby(TASK_ROOT(task), NULL, CRITERIA_FD, (void*) TASK_FD(task), NULL);
   
                 proc->proc_pid = 0;                  proc->proc_pid = 0;
                   proc->proc_seq = 0;
                 proc->proc_flg = ANSH_FLG_EOF;                  proc->proc_flg = ANSH_FLG_EOF;
                 proc->proc_rlen_[FD2NET] = 0;                  proc->proc_rlen_[FD2NET] = 0;
   
Line 153  fdTx(sched_task_t *task) Line 164  fdTx(sched_task_t *task)
                         schedCancelby(TASK_ROOT(task), NULL, CRITERIA_FD, (void*) TASK_FD(task), NULL);                          schedCancelby(TASK_ROOT(task), NULL, CRITERIA_FD, (void*) TASK_FD(task), NULL);
   
                         proc->proc_pid = 0;                          proc->proc_pid = 0;
                           proc->proc_seq = 0;
                         proc->proc_flg = ANSH_FLG_EOF;                          proc->proc_flg = ANSH_FLG_EOF;
                         proc->proc_rlen_[FD2NET] = 0;                          proc->proc_rlen_[FD2NET] = 0;
   
Line 192  fdRx(sched_task_t *task) Line 204  fdRx(sched_task_t *task)
                 schedCancelby(TASK_ROOT(task), NULL, CRITERIA_FD, (void*) TASK_FD(task), NULL);                  schedCancelby(TASK_ROOT(task), NULL, CRITERIA_FD, (void*) TASK_FD(task), NULL);
   
                 proc->proc_pid = 0;                  proc->proc_pid = 0;
                   proc->proc_seq = 0;
                 proc->proc_flg = ANSH_FLG_EOF;                  proc->proc_flg = ANSH_FLG_EOF;
                 proc->proc_rlen_[FD2NET] = 0;                  proc->proc_rlen_[FD2NET] = 0;
   
Line 204  fdRx(sched_task_t *task) Line 217  fdRx(sched_task_t *task)
                 schedCancelby(TASK_ROOT(task), &TASK_ROOT(task)->root_timer, CRITERIA_CALL, TOfunc, NULL);                  schedCancelby(TASK_ROOT(task), &TASK_ROOT(task)->root_timer, CRITERIA_CALL, TOfunc, NULL);
   
         memset(proc->proc_buf_[FD2NET], 0, proc->proc_blen);          memset(proc->proc_buf_[FD2NET], 0, proc->proc_blen);
        rlen = read(TASK_FD(task), proc->proc_buf_[FD2NET], proc->proc_blen);        rlen = read(TASK_FD(task), proc->proc_buf_[FD2NET], 
                         proc->proc_blen - ETHER_HDR_LEN + sizeof(struct ansh_hdr));
         switch (rlen) {          switch (rlen) {
                 case -1:                  case -1:
                         ERR("readtty #%d - %s", errno, strerror(errno));                          ERR("readtty #%d - %s", errno, strerror(errno));
Line 216  fdRx(sched_task_t *task) Line 230  fdRx(sched_task_t *task)
                         VERB(3) LOG("EOF process status %d", rlen);                          VERB(3) LOG("EOF process status %d", rlen);
   
                         proc->proc_pid = 0;                          proc->proc_pid = 0;
                           proc->proc_seq = 0;
                         proc->proc_flg = ANSH_FLG_EOF;                          proc->proc_flg = ANSH_FLG_EOF;
                         proc->proc_rlen_[FD2NET] = 0;                          proc->proc_rlen_[FD2NET] = 0;
   
Line 227  fdRx(sched_task_t *task) Line 242  fdRx(sched_task_t *task)
         }          }
         VERB(3) LOG("Readed %d bytes - %s", rlen, proc->proc_buf_[FD2NET]);          VERB(3) LOG("Readed %d bytes - %s", rlen, proc->proc_buf_[FD2NET]);
   
         LOG("fd=%d\n", proc->proc_sock);  
         schedCallOnce(TASK_ROOT(task), pktTx, proc, proc->proc_sock);          schedCallOnce(TASK_ROOT(task), pktTx, proc, proc->proc_sock);
         schedRead(TASK_ROOT(task), fdRx, proc, proc->proc_pty);          schedRead(TASK_ROOT(task), fdRx, proc, proc->proc_pty);
   

Removed from v.1.1.1.1.2.2  
changed lines
  Added in v.1.1.1.1.2.5


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