Change dissect_ppp() to accept offset.
[obnox/wireshark/wip.git] / packet-null.c
index fb68fb40abc9f82dcfd39d222b541ee3863768eb..b891777687be03682e17f9ef8785a35541242941 100644 (file)
@@ -1,7 +1,7 @@
 /* packet-null.c
  * Routines for null packet disassembly
  *
- * $Id: packet-null.c,v 1.16 1999/10/12 06:20:12 gram Exp $
+ * $Id: packet-null.c,v 1.20 2000/03/27 17:53:19 gram Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@zing.org>
 #endif
 
 #include "packet.h"
+#include "packet-atalk.h"
+#include "packet-ip.h"
+#include "packet-ipv6.h"
+#include "packet-ipx.h"
+#include "packet-osi.h"
+#include "packet-ppp.h"
 #include "etypes.h"
 
 extern const value_string etype_vals[];
@@ -48,6 +54,8 @@ static int proto_null = -1;
 static int hf_null_etype = -1;
 static int hf_null_family = -1;
 
+static gint ett_null = -1;
+
 /* Null/loopback structs and definitions */
 
 /* Macro to byte-swap 32-bit quantities. */
@@ -77,7 +85,7 @@ static const value_string family_vals[] = {
 };
 
 void
-capture_null( const u_char *pd, guint32 cap_len, packet_counts *ld )
+capture_null( const u_char *pd, packet_counts *ld )
 {
   guint32 null_header;
 
@@ -170,7 +178,7 @@ capture_null( const u_char *pd, guint32 cap_len, packet_counts *ld )
     /*
      * Hand it to PPP.
      */
-    capture_ppp(pd, cap_len, ld);
+    capture_ppp(pd, ld);
   } else {
     /*
      * Treat it as a normal DLT_NULL header.
@@ -193,12 +201,12 @@ capture_null( const u_char *pd, guint32 cap_len, packet_counts *ld )
      * BSD derivatives have different values?).
      */
     if (null_header > IEEE_802_3_MAX_LEN)
-      capture_ethertype(null_header, 4, pd, cap_len, ld);
+      capture_ethertype(null_header, 4, pd, ld);
     else {
       switch (null_header) {
 
       case BSD_AF_INET:
-        capture_ip(pd, 4, cap_len, ld);
+        capture_ip(pd, 4, ld);
         break;
 
       default:
@@ -224,7 +232,7 @@ dissect_null( const u_char *pd, frame_data *fd, proto_tree *tree )
     /*
      * Hand it to PPP.
      */
-    dissect_ppp(pd, fd, tree);
+    dissect_ppp(pd, 0, fd, tree);
   } else {
     /*
      * Treat it as a normal DLT_NULL header.
@@ -260,7 +268,7 @@ dissect_null( const u_char *pd, frame_data *fd, proto_tree *tree )
     if (null_header > IEEE_802_3_MAX_LEN) {
       if (tree) {
         ti = proto_tree_add_item(tree, proto_null, 0, 4, NULL);
-        fh_tree = proto_item_add_subtree(ti, ETT_NULL);
+        fh_tree = proto_item_add_subtree(ti, ett_null);
       } else
        fh_tree = NULL;
       ethertype(null_header, 4, pd, fd, tree, fh_tree, hf_null_etype);
@@ -269,7 +277,7 @@ dissect_null( const u_char *pd, frame_data *fd, proto_tree *tree )
          layer (ie none) */
       if (tree) {
         ti = proto_tree_add_item(tree, proto_null, 0, 4, NULL);
-        fh_tree = proto_item_add_subtree(ti, ETT_NULL);
+        fh_tree = proto_item_add_subtree(ti, ett_null);
         proto_tree_add_item(fh_tree, hf_null_family, 0, 4, null_header);
       }
 
@@ -318,7 +326,11 @@ proto_register_null(void)
                { "Family",             "null.family",  FT_UINT32, BASE_HEX, VALS(family_vals), 0x0,
                        "" }}
        };
+       static gint *ett[] = {
+               &ett_null,
+       };
 
        proto_null = proto_register_protocol ("Null/Loopback", "null" );
        proto_register_field_array(proto_null, hf, array_length(hf));
+       proto_register_subtree_array(ett, array_length(ett));
 }