Add in a bunch of #defines for packet types.
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Thu, 5 Nov 1998 10:16:59 +0000 (10:16 +0000)
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Thu, 5 Nov 1998 10:16:59 +0000 (10:16 +0000)
Show the packet type as a string, as well as a hex number, in the detail
display.  Show the packet type as a hex number in the summary display if
it's not a packet type we know about.

Don't put the "N on link, M captured" stuff in the PPP detail display,
as that's now in the frame detail display.

Handle IPv6, Appletalk, IPX, and Vines.

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@79 f5534014-38df-0310-8fa8-9805f1628bb7

packet-ppp.c

index 4da140ded6196f8a92a604c8d245925d86e62746..3118dfc16e1af8ba0a9382a3ac41c2a3e392398d 100644 (file)
@@ -1,7 +1,7 @@
 /* packet-ppp.c
  * Routines for ppp packet disassembly
  *
- * $Id: packet-ppp.c,v 1.5 1998/10/10 03:32:14 gerald Exp $
+ * $Id: packet-ppp.c,v 1.6 1998/11/05 10:16:59 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@zing.org>
 #include "ethereal.h"
 #include "packet.h"
 
+/* Protocol types, from Linux "ppp_defs.h" and
+
+       http://www.isi.edu/in-notes/iana/assignments/ppp-numbers
+
+ */
+#define PPP_IP         0x21    /* Internet Protocol */
+#define PPP_AT         0x29    /* AppleTalk Protocol */
+#define PPP_IPX                0x2b    /* IPX protocol */
+#define        PPP_VJC_COMP    0x2d    /* VJ compressed TCP */
+#define        PPP_VJC_UNCOMP  0x2f    /* VJ uncompressed TCP */
+#define        PPP_VINES       0x35    /* Banyan Vines */
+#define PPP_IPV6       0x57    /* Internet Protocol Version 6 */
+#define PPP_COMP       0xfd    /* compressed packet */
+#define PPP_IPCP       0x8021  /* IP Control Protocol */
+#define PPP_ATCP       0x8029  /* AppleTalk Control Protocol */
+#define PPP_IPXCP      0x802b  /* IPX Control Protocol */
+#define PPP_CCP                0x80fd  /* Compression Control Protocol */
+#define PPP_LCP                0xc021  /* Link Control Protocol */
+#define PPP_PAP                0xc023  /* Password Authentication Protocol */
+#define PPP_LQR                0xc025  /* Link Quality Report protocol */
+#define PPP_CHAP       0xc223  /* Cryptographic Handshake Auth. Protocol */
+#define PPP_CBCP       0xc029  /* Callback Control Protocol */
+
 void
 dissect_ppp( const u_char *pd, frame_data *fd, GtkTree *tree ) {
   e_ppphdr   ph;
   GtkWidget *ti, *fh_tree;
+  static const value_string ppp_vals[] = {
+    {PPP_IP,     "IP"             },
+    {PPP_AT,     "Appletalk"      },
+    {PPP_IPX,    "Netware IPX/SPX"},
+    {PPP_VINES,  "Vines"          },
+    {PPP_IPV6,   "IPv6"           },
+    {0,           NULL            } };
 
   ph.ppp_addr = pd[0];
   ph.ppp_ctl  = pd[1];
@@ -61,21 +91,34 @@ dissect_ppp( const u_char *pd, frame_data *fd, GtkTree *tree ) {
      layer (ie none) */
   if(tree) {
     ti = add_item_to_tree( GTK_WIDGET(tree), 0, 4,
-      "Point-to-Point Protocol (%d on link, %d captured)", fd->pkt_len,
-      fd->cap_len );
+      "Point-to-Point Protocol" );
     fh_tree = gtk_tree_new();
     add_subtree(ti, fh_tree, ETT_PPP);
     add_item_to_tree(fh_tree, 0, 1, "Address: %02x", ph.ppp_addr);
     add_item_to_tree(fh_tree, 1, 1, "Control: %02x", ph.ppp_ctl);
-    add_item_to_tree(fh_tree, 2, 2, "Protocol: %04x", ph.ppp_prot);
+    add_item_to_tree(fh_tree, 2, 2, "Protocol: %s (0x%04x)",
+      val_to_str(ph.ppp_prot, ppp_vals, "Unknown"), ph.ppp_prot);
   }
 
   switch (ph.ppp_prot) {
-    case 0x0021:
+    case PPP_IP:
       dissect_ip(pd, 4, fd, tree);
       break;
+    case PPP_AT:
+      dissect_ddp(pd, 4, fd, tree);
+      break;
+    case PPP_IPX:
+      dissect_ipx(pd, 4, fd, tree);
+      break;
+    case PPP_VINES:
+      dissect_vines(pd, 4, fd, tree);
+      break;
+    case PPP_IPV6:
+      dissect_ipv6(pd, 4, fd, tree);
+      break;
     default:
       dissect_data(pd, 4, fd, tree);
+      if (fd->win_info[COL_NUM]) { sprintf(fd->win_info[COL_PROTOCOL], "0x%04x", ph.ppp_prot); }
       break;
   }
 }