Greetings-

 

Here are the changes we propose for the packet-atm dissector:

 

Index: epan/dissectors/packet-atm.c

===================================================================

--- epan/dissectors/packet-atm.c        (revision 25594)

+++ epan/dissectors/packet-atm.c        (working copy)

@@ -69,6 +69,9 @@

 static dissector_handle_t lane_handle;

 static dissector_handle_t ilmi_handle;

 static dissector_handle_t fp_handle;

+static dissector_handle_t ppp_handle;

+static dissector_handle_t eth_handle;

+static dissector_handle_t ip_handle;

 static dissector_handle_t data_handle;

 

 static gboolean dissect_lanesscop = FALSE;

@@ -1106,11 +1109,61 @@

       break;

 

     default:

-      if (tree) {

-        /* Dump it as raw data. */

-        call_dissector(data_handle, next_tvb, pinfo, tree);

-        break;

+      {

+        gboolean decoded = FALSE;

+

+        if (tvb_length(next_tvb) > 20) /* arbitrary size */

+        {

+            guint8 octet[8];

+            tvb_memcpy(next_tvb, octet, 0, sizeof(octet)); 

+

+            decoded = TRUE;

+            if (octet[0] == 0x00 && octet[1] == 0x21)

+            {

+                call_dissector(ppp_handle, next_tvb, pinfo, tree);

+            }

+            else if (octet[0] == 0x00 && octet[1] == 0x00)

+            {

+                /* assume vc muxed bridged ethernet */

+                proto_tree_add_text(tree, tvb, 0, 2, "Pad: 0x0000");

+                next_tvb = tvb_new_subset(tvb, 2, -1, -1);

+                call_dissector(eth_handle, next_tvb, pinfo, tree);

+            }

+            else if (octet[2] == 0x03    && // NLPID

+                    ((octet[3] == 0xcc   || // IPv4

+                      octet[3] == 0x8e)  || // IPv6

+                     (octet[3] == 0x00   && // Eth

+                      octet[4] == 0x80)))  // Eth

+            {

+                /* assume network interworking with FR 2 byte header */

+                call_dissector(fr_handle, next_tvb, pinfo, tree);

+            }

+            else if (octet[4] == 0x03    && // NLPID

+                    ((octet[5] == 0xcc   || // IPv4

+                      octet[5] == 0x8e)  || // IPv6

+                     (octet[5] == 0x00   && // Eth

+                      octet[6] == 0x80)))   // Eth

+            {

+                /* assume network interworking with FR 4 byte header */

+                call_dissector(fr_handle, next_tvb, pinfo, tree);

+            }

+            else if ((octet[0] == 0x45) ||

+                     ((octet[0] & 0xf0) == 0x60))

+            {

+                call_dissector(ip_handle, next_tvb, pinfo, tree);

+            }

+            else

+            {

+                decoded = FALSE;

+            }

+        }

+

+        if (tree && !decoded) {

+            /* Dump it as raw data. */

+            call_dissector(data_handle, next_tvb, pinfo, tree);

+        }

       }

+      break;

     }

     break;

 

@@ -1729,6 +1782,9 @@

        sscop_handle = find_dissector("sscop");

        lane_handle = find_dissector("lane");

        ilmi_handle = find_dissector("ilmi");

+    ppp_handle = find_dissector("ppp");

+    eth_handle = find_dissector("eth");

+    ip_handle = find_dissector("ip");

        data_handle = find_dissector("data");

        fp_handle = find_dissector("fp");

 


<DIV><FONT size="1">

E-mail confidentiality.
--------------------------------
This e-mail contains confidential and / or privileged information belonging to 
Spirent Communications plc, its affiliates and / or subsidiaries. If you are 
not the intended recipient, you are hereby notified that any disclosure, 
copying, distribution and / or the taking of any action based upon reliance on 
the contents of this transmission is strictly forbidden. If you have received 
this message in error please notify the sender by return e-mail and delete it 
from your system. If you require assistance, please contact our IT department 
at [EMAIL PROTECTED]

Spirent Communications plc,
Northwood Park, Gatwick Road, Crawley, West Sussex, RH10 9XN, United Kingdom.
Tel No. +44 (0) 1293 767676
Fax No. +44 (0) 1293 767677

Registered in England Number 470893
Registered at Northwood Park, Gatwick Road, Crawley, West Sussex, RH10 9XN, 
United Kingdom.

Or if within the US,

Spirent Communications,
26750 Agoura Road, Calabasas, CA, 91302, USA.
Tel No. 1-818-676- 2300 

</FONT></DIV>
_______________________________________________
Wireshark-dev mailing list
[email protected]
https://wireshark.org/mailman/listinfo/wireshark-dev

Reply via email to