Diff for /src/usr.sbin/trpt/trpt.c between versions 1.3 and 1.4

version 1.3, 2003/11/03 19:31:44 version 1.4, 2004/03/21 22:41:24
Line 95  void tcp_trace(short, short, struct tcpc Line 95  void tcp_trace(short, short, struct tcpc
 static void usage(void);  static void usage(void);
   
 int  int
main(argc, argv)main(int argc, char **argv)
        int argc; 
        char **argv; 
 {  {
         int ch, i, jflag, npcbs;          int ch, i, jflag, npcbs;
         char *system, *core;          char *system, *core;
Line 118  main(argc, argv) Line 116  main(argc, argv)
                 case 'p':                  case 'p':
                         if (npcbs >= TCP_NDEBUG)                          if (npcbs >= TCP_NDEBUG)
                                 errx(1, "too many pcb's specified");                                  errx(1, "too many pcb's specified");
                        (void)sscanf(optarg, "%x", (int *)&tcp_pcbs[npcbs++]);                        sscanf(optarg, "%x", (int *)&tcp_pcbs[npcbs++]);
                         break;                          break;
                 case 's':                  case 's':
                         ++sflag;                          ++sflag;
Line 157  main(argc, argv) Line 155  main(argc, argv)
                 err(2, "%s", core);                  err(2, "%s", core);
         if (kflag)          if (kflag)
                 errx(1, "can't do core files yet");                  errx(1, "can't do core files yet");
        (void)klseek(memf, (off_t)nl[N_TCP_DEBX].n_value, L_SET);        klseek(memf, (off_t)nl[N_TCP_DEBX].n_value, L_SET);
         if (read(memf, (char *)&tcp_debx, sizeof(tcp_debx)) !=          if (read(memf, (char *)&tcp_debx, sizeof(tcp_debx)) !=
             sizeof(tcp_debx))              sizeof(tcp_debx))
                 err(3, "tcp_debx");                  err(3, "tcp_debx");
        (void)klseek(memf, (off_t)nl[N_TCP_DEBUG].n_value, L_SET);        klseek(memf, (off_t)nl[N_TCP_DEBUG].n_value, L_SET);
         if (read(memf, (char *)tcp_debug, sizeof(tcp_debug)) !=          if (read(memf, (char *)tcp_debug, sizeof(tcp_debug)) !=
             sizeof(tcp_debug))              sizeof(tcp_debug))
                 err(3, "tcp_debug");                  err(3, "tcp_debug");
Line 173  main(argc, argv) Line 171  main(argc, argv)
          */           */
         if (!npcbs) {          if (!npcbs) {
                 for (i = 0; i < TCP_NDEBUG; i++) {                  for (i = 0; i < TCP_NDEBUG; i++) {
                        register struct tcp_debug *td = &tcp_debug[i];                        struct tcp_debug *td = &tcp_debug[i];
                        register int j;                        int j;
   
                         if (td->td_tcb == 0)                          if (td->td_tcb == 0)
                                 continue;                                  continue;
Line 205  main(argc, argv) Line 203  main(argc, argv)
 }  }
   
 static void  static void
usage()usage(void)
 {  {
        (void)fprintf(stderr,        fprintf(stderr,
                "usage: trpt [-afjst] [-p hex-address] [system [core]]\n");            "usage: trpt [-afjst] [-p hex-address] [system [core]]\n");
         exit(1);          exit(1);
 }  }
   
 void  void
dotrace(tcpcb)dotrace(caddr_t tcpcb)
        register caddr_t tcpcb; 
 {  {
        register struct tcp_debug *td;        struct tcp_debug *td;
        register int i;        int i;
        int prev_debx = tcp_debx, family;        int prev_debx, family;
   
           prev_debx = tcp_debx;
 again:  if (--tcp_debx < 0)  again:  if (--tcp_debx < 0)
                 tcp_debx = TCP_NDEBUG - 1;                  tcp_debx = TCP_NDEBUG - 1;
         for (i = prev_debx % TCP_NDEBUG; i < TCP_NDEBUG; i++) {          for (i = prev_debx % TCP_NDEBUG; i < TCP_NDEBUG; i++) {
Line 284  done: if (follow) { Line 282  done: if (follow) {
                         prev_debx = 0;                          prev_debx = 0;
                 do {                  do {
                         sleep(1);                          sleep(1);
                        (void)klseek(memf, (off_t)nl[N_TCP_DEBX].n_value, L_SET);                        klseek(memf, (off_t)nl[N_TCP_DEBX].n_value, L_SET);
                         if (read(memf, (char *)&tcp_debx, sizeof(tcp_debx)) !=                          if (read(memf, (char *)&tcp_debx, sizeof(tcp_debx)) !=
                             sizeof(tcp_debx))                              sizeof(tcp_debx))
                                 err(3, "tcp_debx");                                  err(3, "tcp_debx");
                 } while (tcp_debx == prev_debx);                  } while (tcp_debx == prev_debx);
                (void)klseek(memf, (off_t)nl[N_TCP_DEBUG].n_value, L_SET);                klseek(memf, (off_t)nl[N_TCP_DEBUG].n_value, L_SET);
                 if (read(memf, (char *)tcp_debug, sizeof(tcp_debug)) !=                  if (read(memf, (char *)tcp_debug, sizeof(tcp_debug)) !=
                     sizeof(tcp_debug))                      sizeof(tcp_debug))
                         err(3, "tcp_debug");                          err(3, "tcp_debug");
Line 302  done: if (follow) { Line 300  done: if (follow) {
  */   */
 /*ARGSUSED*/  /*ARGSUSED*/
 void  void
tcp_trace(act, ostate, atp, tp, family, ip, th, req)tcp_trace(short act, short ostate, struct tcpcb *atp, struct tcpcb *tp,
        short act, ostate;          int family, void *ip, struct tcphdr *th, int req)
        struct tcpcb *atp, *tp; 
        int family; 
        void *ip; 
        struct tcphdr *th; 
        int req; 
 {  {
         tcp_seq seq, ack;          tcp_seq seq, ack;
         int flags, len, win, timer;          int flags, len, win, timer;
Line 392  tcp_trace(act, ostate, atp, tp, family, Line 385  tcp_trace(act, ostate, atp, tp, family,
                         printf("(win=%x)", win);                          printf("(win=%x)", win);
                 flags = th->th_flags;                  flags = th->th_flags;
                 if (flags) {                  if (flags) {
                        register char *cp = "<";                        char *cp = "<";
#define pf(flag, string) { \
        if (th->th_flags&flag) { \#define pf(flag, string) {                                              \
                (void)printf("%s%s", cp, string); \        if (th->th_flags & flag) {                                        \
                cp = ","; \                printf("%s%s", cp, string);                             \
        } \                cp = ",";                                               \
         }                                                               \
 }  }
                         pf(TH_SYN, "SYN");                          pf(TH_SYN, "SYN");
                         pf(TH_ACK, "ACK");                          pf(TH_ACK, "ACK");
Line 433  tcp_trace(act, ostate, atp, tp, family, Line 427  tcp_trace(act, ostate, atp, tp, family,
          * kernel now uses callouts, not integer time values.           * kernel now uses callouts, not integer time values.
          */           */
         if (tflag) {          if (tflag) {
                register char *cp = "\t";                char *cp = "\t";
                register int i;                int i;
   
                 for (i = 0; i < TCPT_NTIMERS; i++) {                  for (i = 0; i < TCPT_NTIMERS; i++) {
                         if (tp->t_timer[i] == 0)                          if (tp->t_timer[i] == 0)
Line 451  tcp_trace(act, ostate, atp, tp, family, Line 445  tcp_trace(act, ostate, atp, tp, family,
 }  }
   
 int  int
numeric(c1, c2)numeric(caddr_t *c1, caddr_t *c2)
        caddr_t *c1, *c2; 
 {  {
         return(*c1 - *c2);          return(*c1 - *c2);
 }  }
   
 void  void
klseek(fd, base, off)klseek(int fd, off_t base, int off)
        int fd, off; 
        off_t base; 
 {  {
        (void)lseek(fd, base, off);        lseek(fd, base, off);
 }  }

Removed from v.1.3  
changed lines
  Added in v.1.4