Register Q.931 in the osinl.incl dissector table.
authorGuy Harris <guy@alum.mit.edu>
Sat, 13 Feb 2016 23:59:36 +0000 (15:59 -0800)
committerGuy Harris <guy@alum.mit.edu>
Sun, 14 Feb 2016 00:00:07 +0000 (00:00 +0000)
Have the Frame Relay dissector first check the fr.osinl table and then
the osinl.incl table, so that it finds Q.933 rather than Q.931 for an
NLPID of 0x08.

Change-Id: I1582482003c2ff96100f6c3e1eb77917ab04c9ee
Reviewed-on: https://code.wireshark.org/review/13929
Reviewed-by: Guy Harris <guy@alum.mit.edu>
epan/dissectors/packet-fr.c
epan/dissectors/packet-q931.c

index 6f47348d6ddc4ba87aa960ff78486eb47381ebd2..60ce77ea11815f203e686ca590061c82ed48efce 100644 (file)
@@ -674,6 +674,10 @@ dissect_fr_nlpid(tvbuff_t *tvb, int offset, packet_info *pinfo,
    *
    * "OSI network layer protocols" includes Q.933.
    *
+   * We check the Frame Relay table first, so that protocols for which
+   * the NLPID means something different on Frame Relay, i.e. Q.933 vs.
+   * Q.931, are handled appropriately for Frame Relay.
+   *
    * XXX - note that an NLPID of 0x08 for Q.933 could either be a
    * Q.933 signaling message or a message for a protocol
    * identified by a 2-octet layer 2 protocol type and a
@@ -699,9 +703,9 @@ dissect_fr_nlpid(tvbuff_t *tvb, int offset, packet_info *pinfo,
    * Either that, or it's Q.933 iff the DLCI is 0.
    */
   next_tvb = tvb_new_subset_remaining(tvb,offset);
-  if (dissector_try_uint(osinl_incl_subdissector_table, fr_nlpid, next_tvb,
+  if (dissector_try_uint(fr_osinl_subdissector_table, fr_nlpid, next_tvb,
                          pinfo, tree) ||
-      dissector_try_uint(fr_osinl_subdissector_table, fr_nlpid, next_tvb,
+      dissector_try_uint(osinl_incl_subdissector_table, fr_nlpid, next_tvb,
                          pinfo, tree)) {
     /*
      * Yes, we got a match.  Add the NLPID as a hidden item,
index 7a48dfc4430f73b1f3b7dd5010594ac746a8d786..b4a02ae21b08448780a9f33a57a888f64e1c42f1 100644 (file)
@@ -4002,6 +4002,7 @@ proto_reg_handoff_q931(void)
 {
     dissector_add_uint("lapd.sapi", LAPD_SAPI_Q931, q931_handle);
     dissector_add_uint("sctp.ppi", H323_PAYLOAD_PROTOCOL_ID, q931_over_ip_handle);
+    dissector_add_uint("osinl.incl", NLPID_Q_931, q931_handle);
 
     /*
      * Attempt to get a handle for the H.225 dissector.