[BACK]Return to pftop.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / systat

Diff for /src/usr.bin/systat/pftop.c between version 1.19 and 1.20

version 1.19, 2011/04/05 15:07:46 version 1.20, 2011/10/13 18:32:30
Line 450 
Line 450 
 {  {
         const struct pf_addr *aa, *ab;          const struct pf_addr *aa, *ab;
         u_int16_t pa, pb;          u_int16_t pa, pb;
         int af, ret, ii, io;          int af, side, ret, ii, io;
   
         af = s1->af;          side = s1->direction == PF_IN ? PF_SK_STACK : PF_SK_WIRE;
   
         if (af > s2->af)          if (s1->key[side].af > s2->key[side].af)
                 return sortdir;                  return sortdir;
         if (af < s2->af)          if (s1->key[side].af < s2->key[side].af)
                 return -sortdir;                  return -sortdir;
   
         ii = io = 0;          ii = io = 0;
   
         if (dir == PF_OUT)      /* looking for source addr */          if (dir == PF_OUT)      /* looking for source addr */
                 io = 1;                  io = 1;
         else                    /* looking for dest addr */          else                    /* looking for dest addr */
                 ii = 1;                  ii = 1;
   
         if (s1->direction == PF_IN) {          if (s1->key[PF_SK_STACK].af != s1->key[PF_SK_WIRE].af) {
                   dir = PF_OUT;
                   side = PF_SK_STACK;
           } else {
                   dir = s1->direction;
                   side = PF_SK_WIRE;
           }
   
           if (dir == PF_IN) {
                 aa = &s1->key[PF_SK_STACK].addr[ii];                  aa = &s1->key[PF_SK_STACK].addr[ii];
                 pa =  s1->key[PF_SK_STACK].port[ii];                  pa =  s1->key[PF_SK_STACK].port[ii];
                   af = s1->key[PF_SK_STACK].af;
         } else {          } else {
                 aa = &s1->key[PF_SK_WIRE].addr[io];                  aa = &s1->key[side].addr[io];
                 pa =  s1->key[PF_SK_WIRE].port[io];                  pa =  s1->key[side].port[io];
                   af = s1->key[side].af;
         }          }
   
         if (s2->direction == PF_IN) {          if (s2->key[PF_SK_STACK].af != s2->key[PF_SK_WIRE].af) {
                   dir = PF_OUT;
                   side = PF_SK_STACK;
           } else {
                   dir = s2->direction;
                   side = PF_SK_WIRE;
           }
   
           if (dir == PF_IN) {
                 ab = &s2->key[PF_SK_STACK].addr[ii];                  ab = &s2->key[PF_SK_STACK].addr[ii];
                 pb =  s2->key[PF_SK_STACK].port[ii];                  pb =  s2->key[PF_SK_STACK].port[ii];
                   af = s1->key[PF_SK_STACK].af;
         } else {          } else {
                 ab = &s2->key[PF_SK_WIRE].addr[io];                  ab = &s2->key[side].addr[io];
                 pb =  s2->key[PF_SK_WIRE].port[io];                  pb =  s2->key[side].port[io];
                   af = s1->key[side].af;
         }          }
   
         ret = compare_addr(af, aa, ab);          ret = compare_addr(af, aa, ab);
Line 497 
Line 517 
 {  {
         const struct pf_addr *aa, *ab;          const struct pf_addr *aa, *ab;
         u_int16_t pa, pb;          u_int16_t pa, pb;
         int af, ret, ii, io;          int af, side, ret, ii, io;
   
         af = s1->af;          side = s1->direction == PF_IN ? PF_SK_STACK : PF_SK_WIRE;
   
           if (s1->key[side].af > s2->key[side].af)
         if (af > s2->af)  
                 return sortdir;                  return sortdir;
         if (af < s2->af)          if (s1->key[side].af < s2->key[side].af)
                 return -sortdir;                  return -sortdir;
   
         ii = io = 0;          ii = io = 0;
   
         if (dir == PF_OUT)      /* looking for source addr */          if (dir == PF_OUT)      /* looking for source addr */
                 io = 1;                  io = 1;
         else                    /* looking for dest addr */          else                    /* looking for dest addr */
                 ii = 1;                  ii = 1;
   
         if (s1->direction == PF_IN) {          if (s1->key[PF_SK_STACK].af != s1->key[PF_SK_WIRE].af) {
                   dir = PF_OUT;
                   side = PF_SK_STACK;
           } else {
                   dir = s1->direction;
                   side = PF_SK_WIRE;
           }
   
           if (dir == PF_IN) {
                 aa = &s1->key[PF_SK_STACK].addr[ii];                  aa = &s1->key[PF_SK_STACK].addr[ii];
                 pa =  s1->key[PF_SK_STACK].port[ii];                  pa =  s1->key[PF_SK_STACK].port[ii];
                   af = s1->key[PF_SK_STACK].af;
         } else {          } else {
                 aa = &s1->key[PF_SK_WIRE].addr[io];                  aa = &s1->key[side].addr[io];
                 pa =  s1->key[PF_SK_WIRE].port[io];                  pa =  s1->key[side].port[io];
                   af = s1->key[side].af;
         }          }
   
         if (s2->direction == PF_IN) {          if (s2->key[PF_SK_STACK].af != s2->key[PF_SK_WIRE].af) {
                   dir = PF_OUT;
                   side = PF_SK_STACK;
           } else {
                   dir = s2->direction;
                   side = PF_SK_WIRE;
           }
   
           if (dir == PF_IN) {
                 ab = &s2->key[PF_SK_STACK].addr[ii];                  ab = &s2->key[PF_SK_STACK].addr[ii];
                 pb =  s2->key[PF_SK_STACK].port[ii];                  pb =  s2->key[PF_SK_STACK].port[ii];
                   af = s1->key[PF_SK_STACK].af;
         } else {          } else {
                 ab = &s2->key[PF_SK_WIRE].addr[io];                  ab = &s2->key[side].addr[io];
                 pb =  s2->key[PF_SK_WIRE].port[io];                  pb =  s2->key[side].port[io];
                   af = s1->key[side].af;
         }          }
   
   
Line 722 
Line 761 
   
 void  void
 print_fld_host2(field_def *fld, struct pfsync_state_key *ks,  print_fld_host2(field_def *fld, struct pfsync_state_key *ks,
                 struct pfsync_state_key *kn, int idx, int af)                  struct pfsync_state_key *kn, int idx)
 {  {
         struct pf_addr *as = &ks->addr[idx];          struct pf_addr *as = &ks->addr[idx];
         struct pf_addr *an = &kn->addr[idx];          struct pf_addr *an = &kn->addr[idx];
Line 730 
Line 769 
         u_int16_t ps = ntohs(ks->port[idx]);          u_int16_t ps = ntohs(ks->port[idx]);
         u_int16_t pn = ntohs(kn->port[idx]);          u_int16_t pn = ntohs(kn->port[idx]);
   
           int asf = ks->af;
           int anf = kn->af;
   
         if (fld == NULL)          if (fld == NULL)
                 return;                  return;
   
Line 739 
Line 781 
         }          }
   
         tb_start();          tb_start();
         tb_print_addr(as, NULL, af);          tb_print_addr(as, NULL, asf);
   
         if (af == AF_INET)          if (asf == AF_INET)
                 tbprintf(":%u", ps);                  tbprintf(":%u", ps);
         else          else
                 tbprintf("[%u]", ps);                  tbprintf("[%u]", ps);
   
         print_fld_tb(fld);          print_fld_tb(fld);
   
         if (PF_ANEQ(as, an, af) || ps != pn) {          if (asf != anf || PF_ANEQ(as, an, asf) || ps != pn) {
                 tb_start();                  tb_start();
                 tb_print_addr(an, NULL, af);                  tb_print_addr(an, NULL, anf);
   
                 if (af == AF_INET)                  if (anf == AF_INET)
                         tbprintf(":%u", pn);                          tbprintf(":%u", pn);
                 else                  else
                         tbprintf("[%u]", pn);                          tbprintf("[%u]", pn);
Line 816 
Line 858 
         struct pfsync_state_peer *src, *dst;          struct pfsync_state_peer *src, *dst;
         struct protoent *p;          struct protoent *p;
         u_int64_t sz;          u_int64_t sz;
           int afto, dir;
   
         if (s->direction == PF_OUT) {          afto = s->key[PF_SK_STACK].af == s->key[PF_SK_WIRE].af ? 0 : 1;
           dir = afto ? PF_OUT : s->direction;
   
           if (dir == PF_OUT) {
                 src = &s->src;                  src = &s->src;
                 dst = &s->dst;                  dst = &s->dst;
         } else {          } else {
Line 832 
Line 878 
         else          else
                 print_fld_uint(FLD_PROTO, s->proto);                  print_fld_uint(FLD_PROTO, s->proto);
   
         if (s->direction == PF_OUT) {          if (dir == PF_OUT) {
                 print_fld_host2(FLD_SRC, &s->key[PF_SK_WIRE],                  print_fld_host2(FLD_SRC,
                     &s->key[PF_SK_STACK], 1, s->af);                      &s->key[afto ? PF_SK_STACK : PF_SK_WIRE],
                 print_fld_host2(FLD_DEST, &s->key[PF_SK_WIRE],                      &s->key[PF_SK_STACK], 1);
                     &s->key[PF_SK_STACK], 0, s->af);                  print_fld_host2(FLD_DEST,
                       &s->key[afto ? PF_SK_STACK : PF_SK_WIRE],
                       &s->key[afto ? PF_SK_WIRE : PF_SK_STACK], 0);
         } else {          } else {
                 print_fld_host2(FLD_SRC, &s->key[PF_SK_STACK],                  print_fld_host2(FLD_SRC, &s->key[PF_SK_STACK],
                     &s->key[PF_SK_WIRE], 0, s->af);                      &s->key[PF_SK_WIRE], 0);
                 print_fld_host2(FLD_DEST, &s->key[PF_SK_STACK],                  print_fld_host2(FLD_DEST, &s->key[PF_SK_STACK],
                     &s->key[PF_SK_WIRE], 1, s->af);                      &s->key[PF_SK_WIRE], 1);
         }          }
   
         if (s->direction == PF_OUT)          if (dir == PF_OUT)
                 print_fld_str(FLD_DIR, "Out");                  print_fld_str(FLD_DIR, "Out");
         else          else
                 print_fld_str(FLD_DIR, "In");                  print_fld_str(FLD_DIR, "In");

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.20