Ethereal-dev: [Ethereal-dev] 3G Signaling patch

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Rene Pilz <rene.pilz@xxxxxx>
Date: Sun, 25 Sep 2005 19:07:20 +0200
Hi

Due to the fact that 3G Signaling appears at an undefined VPI/VCI I added a heuristics (very simple) which should take care of this fact.

Please take a look at it. If it is fine, then please check it in into the svn

Thanks

Regards

Rene

-- 
Dipl-Ing (FH) MSc. C.E René Pilz
ftw. Telekommunications Research Center Vienna http://www.ftw.at
Tech Gate Vienna, Donaucitystraße 1, A-1220 Wien
Mobile: +43 664 8269871 Office: +43 1 5052830-13  Fax: +43 1 5052830-99

Index: wiretap/atm.c
===================================================================
--- wiretap/atm.c	(revision 15960)
+++ wiretap/atm.c	(working copy)
@@ -88,7 +88,14 @@
 			pseudo_header->atm.type = TRAF_LANE;
 			atm_guess_lane_type(pd, len, pseudo_header);
 		}
+		return;
 	}
+       else
+               /*
+                * Not only VCI 5 is used for signaling. It might be
+                * one of these VCIs
+                */
+               pseudo_header->atm.aal = AAL_SIGNALLING;
 }
 
 void
@@ -102,6 +109,10 @@
 			 */
 			pseudo_header->atm.subtype = TRAF_ST_LANE_LE_CTRL;
 		} else {
+                       guint32 len_802_3;
+                       len_802_3 = pd[10];
+                       len_802_3 <<= 8;
+                       len_802_3 |= pd[11];
 			/*
 			 * XXX - Ethernet, or Token Ring?
 			 * Assume Ethernet for now; if we see earlier
@@ -110,7 +121,16 @@
 			 * still be situations where the user has to
 			 * tell us.
 			 */
-			pseudo_header->atm.subtype = TRAF_ST_LANE_802_3;
+                       if (( len_802_3 + 5 + 5 + 2 ) == len )
+                               pseudo_header->atm.subtype = TRAF_ST_LANE_802_3;
+                       else
+                       /*
+                        * When it is not a 802.3 frame it might be a signalling one.
+                        */
+                       {
+                               pseudo_header->atm.aal = AAL_SIGNALLING;
+                               pseudo_header->atm.subtype = TRAF_ST_UNKNOWN;
+                       }
 		}
 	}
 }