sync with plan 9. make stats uvlongs to prevent rollover. Reference: /n/patches.lsub.org/patch/udpsync Date: Fri Jul 13 04:20:58 CES 2012 Signed-off-by: quanstro@quanstro.net --- /sys/src/nix/ip/udp.c Thu Apr 12 12:26:27 2012 +++ /sys/src/nix/ip/udp.c Fri Jul 13 03:27:03 2012 @@ -24,7 +24,6 @@ IP_UDPPROTO = 17, UDP_USEAD7 = 52, - UDP_USEAD6 = 36, Udprxms = 200, Udptickms = 100, @@ -73,10 +72,10 @@ typedef struct Udpstats Udpstats; struct Udpstats { - ulong udpInDatagrams; - ulong udpNoPorts; - ulong udpInErrors; - ulong udpOutDatagrams; + uvlong udpInDatagrams; + uvlong udpNoPorts; + uvlong udpInErrors; + uvlong udpOutDatagrams; }; typedef struct Udppriv Udppriv; @@ -88,8 +87,8 @@ Udpstats ustats; /* non-MIB stats */ - ulong csumerr; /* checksum errors */ - ulong lenerr; /* short packet */ + uvlong csumerr; /* checksum errors */ + uvlong lenerr; /* short packet */ }; void (*etherprofiler)(char *name, int qlen); @@ -195,7 +194,7 @@ upriv = c->p->priv; f = c->p->f; - netlog(c->p->f, Logudp, "udp: kick\n"); +// netlog(c->p->f, Logudp, "udp: kick\n"); /* frequent and uninteresting */ if(bp == nil) return; @@ -217,21 +216,6 @@ rport = nhgets(bp->rp); bp->rp += 2+2; /* Ignore local port */ break; - case 6: /* OBS */ - /* get user specified addresses */ - bp = pullupblock(bp, UDP_USEAD6); - if(bp == nil) - return; - ipmove(raddr, bp->rp); - bp->rp += IPaddrlen; - ipmove(laddr, bp->rp); - bp->rp += IPaddrlen; - /* pick interface closest to dest */ - if(ipforme(f, laddr) != Runi) - findlocalip(f, laddr, raddr); - rport = nhgets(bp->rp); - bp->rp += 2+2; /* Ignore local port */ - break; default: rport = 0; break; @@ -421,7 +405,7 @@ c = iphtlook(&upriv->ht, raddr, rport, laddr, lport); if(c == nil){ - /* no converstation found */ + /* no conversation found */ upriv->ustats.udpNoPorts++; qunlock(udp); netlog(f, Logudp, "udp: no conv %I!%d -> %I!%d\n", raddr, rport, @@ -432,7 +416,7 @@ icmpnoconv(f, bp); break; case V6: - icmphostunr(f, ifc, bp, icmp6_port_unreach, 0); + icmphostunr(f, ifc, bp, Icmp6_port_unreach, 0); break; default: panic("udpiput2: version %d", version); @@ -509,15 +493,6 @@ hnputs(p, rport); p += 2; hnputs(p, lport); break; - case 6: /* OBS */ - /* pass the src address */ - bp = padblock(bp, UDP_USEAD6); - p = bp->rp; - ipmove(p, raddr); p += IPaddrlen; - ipmove(p, ipforme(f, laddr)==Runi ? laddr : ifc->lifc->local); p += IPaddrlen; - hnputs(p, rport); p += 2; - hnputs(p, lport); - break; } if(bp->next) @@ -543,14 +518,7 @@ ucb = (Udpcb*)c->ptcl; if(n == 1){ - if(strcmp(f[0], "oldheaders") == 0){ /* OBS */ - ucb->headers = 6; - if (up) - print("program %s wrote `oldheaders' to udp " - "ctl file; fix or recompile it\n", - up->text); - return nil; - } else if(strcmp(f[0], "headers") == 0){ + if(strcmp(f[0], "headers") == 0){ ucb->headers = 7; /* new headers format */ return nil; } @@ -619,7 +587,7 @@ Udppriv *upriv; upriv = udp->priv; - return snprint(buf, len, "InDatagrams: %lud\nNoPorts: %lud\nInErrors: %lud\nOutDatagrams: %lud\n", + return snprint(buf, len, "InDatagrams: %llud\nNoPorts: %llud\nInErrors: %llud\nOutDatagrams: %llud\n", upriv->ustats.udpInDatagrams, upriv->ustats.udpNoPorts, upriv->ustats.udpInErrors,