X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=pppdump%2Fpppdump.c;h=49b1626da751cca950bed08e982194f6889feb15;hb=abf89faa6cba70bf60125366465c0e019817515c;hp=25efafb28514dfe0ff948ec46fff93e8a6a10cae;hpb=f905a2633b5676a35078bcdcb392e66c943ead66;p=ppp.git diff --git a/pppdump/pppdump.c b/pppdump/pppdump.c index 25efafb..49b1626 100644 --- a/pppdump/pppdump.c +++ b/pppdump/pppdump.c @@ -22,6 +22,7 @@ int decompress; int mru = 1500; extern int optind; +extern char *optarg; main(ac, av) int ac; @@ -62,7 +63,10 @@ main(ac, av) perror(p); exit(1); } - dumplog(f); + if (pppmode) + dumpppp(f); + else + dumplog(f); fclose(f); } } @@ -76,13 +80,12 @@ dumplog(f) int c, n, k, col; int nb, c2; unsigned char buf[16]; + time_t t; - if (pppmode) { - dumpppp(f); - return; - } while ((c = getc(f)) != EOF) { - if (c == 1 || c == 2) { + switch (c) { + case 1: + case 2: if (reverse) c = 3 - c; printf("%s %c", c==1? "sent": "rcvd", hexmode? ' ': '"'); @@ -138,20 +141,31 @@ dumplog(f) } else putchar('"'); printf("\n"); - } else if (c == 3 || c == 4) { + break; + case 3: + case 4: printf("end %s\n", c==3? "send": "recv"); - } else if (c == 5 || c == 6) { + break; + case 5: + case 6: n = getc(f); if (c == 5) { for (c = 3; c > 0; --c) n = (n << 8) + getc(f); } printf("time %.1fs\n", (double) n / 10); - } else { + break; + case 7: + t = getc(f); + t = (t << 8) + getc(f); + t = (t << 8) + getc(f); + t = (t << 8) + getc(f); + printf("start %s", ctime(&t)); + break; + default: printf("?%.2x\n"); } } - exit(0); } /* @@ -220,11 +234,14 @@ dumpppp(f) unsigned char *d; unsigned short fcs; struct pkt *pkt; + time_t t; spkt.cnt = rpkt.cnt = 0; spkt.esc = rpkt.esc = 0; while ((c = getc(f)) != EOF) { - if (c == 1 || c == 2) { + switch (c) { + case 1: + case 2: if (reverse) c = 3 - c; dir = c==1? "sent": "rcvd"; @@ -357,7 +374,9 @@ dumpppp(f) break; } } - } else if (c == 3 || c == 4) { + break; + case 3: + case 4: if (reverse) c = 7 - c; dir = c==3? "send": "recv"; @@ -366,14 +385,24 @@ dumpppp(f) if (pkt->cnt > 0) printf(" [%d bytes in incomplete packet]", pkt->cnt); printf("\n"); - } else if (c == 5 || c == 6) { + break; + case 5: + case 6: n = getc(f); if (c == 5) { for (c = 3; c > 0; --c) n = (n << 8) + getc(f); } printf("time %.1fs\n", (double) n / 10); - } else { + break; + case 7: + t = getc(f); + t = (t << 8) + getc(f); + t = (t << 8) + getc(f); + t = (t << 8) + getc(f); + printf("start %s", ctime(&t)); + break; + default: printf("?%.2x\n"); } }