print-vjc.c revision 75115
156893Sfenner/*
256893Sfenner * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997
356893Sfenner *	The Regents of the University of California.  All rights reserved.
456893Sfenner *
556893Sfenner * Redistribution and use in source and binary forms, with or without
656893Sfenner * modification, are permitted provided that: (1) source code distributions
756893Sfenner * retain the above copyright notice and this paragraph in its entirety, (2)
856893Sfenner * distributions including binary code include the above copyright notice and
956893Sfenner * this paragraph in its entirety in the documentation or other materials
1056893Sfenner * provided with the distribution, and (3) all advertising materials mentioning
1156893Sfenner * features or use of this software display the following acknowledgement:
1256893Sfenner * ``This product includes software developed by the University of California,
1356893Sfenner * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
1456893Sfenner * the University nor the names of its contributors may be used to endorse
1556893Sfenner * or promote products derived from this software without specific prior
1656893Sfenner * written permission.
1756893Sfenner * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
1856893Sfenner * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
1956893Sfenner * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
2056893Sfenner */
2156893Sfenner
2256893Sfenner#ifdef HAVE_CONFIG_H
2356893Sfenner#include "config.h"
2456893Sfenner#endif
2556893Sfenner
2656893Sfenner#ifndef lint
2756893Sfennerstatic const char rcsid[] =
2875115Sfenner    "@(#) $Header: /tcpdump/master/tcpdump/print-vjc.c,v 1.9 2000/10/09 01:53:21 guy Exp $ (LBL)";
2956893Sfenner#endif
3056893Sfenner
3156893Sfenner#include <sys/param.h>
3256893Sfenner#include <sys/time.h>
3356893Sfenner
3456893Sfenner#include <netinet/in.h>
3556893Sfenner
3656893Sfenner#include <ctype.h>
3756893Sfenner#include <netdb.h>
3856893Sfenner#include <pcap.h>
3956893Sfenner#include <stdio.h>
4056893Sfenner
4156893Sfenner#include "interface.h"
4256893Sfenner#include "addrtoname.h"
4356893Sfenner
4475115Sfenner#include "slcompress.h"
4575115Sfenner#include "ppp.h"
4675115Sfenner
4756893Sfennerint
4856893Sfennervjc_print(register const char *bp, register u_int length, u_short proto)
4956893Sfenner{
5056893Sfenner	int i;
5156893Sfenner
5256893Sfenner	switch (bp[0] & 0xf0) {
5356893Sfenner	case TYPE_IP:
5456893Sfenner		if (eflag)
5556893Sfenner			printf("(vjc type=IP) ");
5656893Sfenner		return PPP_IP;
5756893Sfenner	case TYPE_UNCOMPRESSED_TCP:
5856893Sfenner		if (eflag)
5956893Sfenner			printf("(vjc type=raw TCP) ");
6056893Sfenner		return PPP_IP;
6156893Sfenner	case TYPE_COMPRESSED_TCP:
6256893Sfenner		if (eflag)
6356893Sfenner			printf("(vjc type=compressed TCP) ");
6456893Sfenner		for (i = 0; i < 8; i++) {
6556893Sfenner			if (bp[1] & (0x80 >> i))
6656893Sfenner				printf("%c", "?CI?SAWU"[i]);
6756893Sfenner		}
6856893Sfenner		if (bp[1])
6956893Sfenner			printf(" ");
7056893Sfenner		printf("C=0x%02x ", bp[2]);
7156893Sfenner		printf("sum=0x%04x ", *(u_short *)&bp[3]);
7256893Sfenner		return -1;
7356893Sfenner	case TYPE_ERROR:
7456893Sfenner		if (eflag)
7556893Sfenner			printf("(vjc type=error) ");
7656893Sfenner		return -1;
7756893Sfenner	default:
7856893Sfenner		if (eflag)
7956893Sfenner			printf("(vjc type=0x%02x) ", bp[0] & 0xf0);
8056893Sfenner		return -1;
8156893Sfenner	}
8256893Sfenner}
83