from Daniele Orlandi:
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Thu, 2 Mar 2006 21:29:15 +0000 (21:29 +0000)
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Thu, 2 Mar 2006 21:29:15 +0000 (21:29 +0000)
The attached patch adds support for LAPD frames captured using vISDN thru
libpcap. The support has already been included in libpcap.

The patch adds a new wiretap encapsulation, the necessary glue to decode
SLL-encapsulated frames, and some minor change in the LAPD dissector in order
to support the remote-to-remote frames captured on the ISDN E-Channel.

Please apply ethereal-encap-table.diff before, as it fixes a misalignment in
the encapsulation names table.

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

capture-wpcap.c
epan/column.c
epan/column_info.h
epan/dissectors/packet-frame.c

index b61b6c0e239366e62caa46bd0fa532b1e4affc44..5d0902bb2c60c66c197088dda8b30f08933ee1f7 100644 (file)
@@ -359,6 +359,9 @@ static struct dlt_choice dlt_choices[] = {
 #ifdef DLT_LINUX_IRDA
        DLT_CHOICE(DLT_LINUX_IRDA, "Linux IrDA"),
 #endif
+#ifdef DLT_LINUX_LAPD
+       DLT_CHOICE(DLT_LINUX_LAPD, "Linux vISDN LAPD"),
+#endif
 #ifdef DLT_LANE8023
        DLT_CHOICE(DLT_LANE8023, "Linux 802.3 LANE"),
 #endif
index 138d2822b8da0c4cefe28f45668f5a2ff3546526..b3d956aa960f6a7dbe39935e39fbf5dd7d3ff345 100644 (file)
@@ -50,7 +50,7 @@ col_format_to_string(gint fmt) {
        "%rd", "%ud", "%hd", "%rhd", "%uhd", "%nd", "%rnd",
        "%und", "%S", "%rS", "%uS", "%D", "%rD", "%uD", "%p",
        "%i", "%L", "%B", "%XO", "%XR", "%I", "%c", "%Xs", 
-       "%Xd", "%V", "%x", "%e", "%H", "%P", "%y", "%v"
+       "%Xd", "%V", "%x", "%e", "%H", "%P", "%y", "%v", "%E"
 };
                      
   if (fmt < 0 || fmt >= NUM_COL_FMTS)
@@ -109,6 +109,7 @@ static const gchar *dlist[NUM_COL_FMTS] = {
        "HP-UX Device ID",
        "DCE/RPC call (cn_call_id / dg_seqnum)",
        "802.1Q VLAN id",
+       "TEI",
 };
 
 const gchar *
@@ -209,6 +210,9 @@ get_column_format_matches(gboolean *fmt_list, gint format) {
     case COL_8021Q_VLAN_ID:
       fmt_list[COL_8021Q_VLAN_ID] = TRUE;
       break;
+    case COL_TEI:
+      fmt_list[COL_TEI] = TRUE;
+      break;
     default:
       break;
   }
@@ -429,6 +433,9 @@ get_column_longest_string(gint format)
     case COL_8021Q_VLAN_ID:
       return "0000";
       break;
+    case COL_TEI:
+      return "127";
+      break;
     default: /* COL_INFO */
       return "Source port: kerberos-master  Destination port: kerberos-master";
       break;
@@ -578,6 +585,9 @@ get_column_format_from_str(gchar *str) {
       case 'v':
        return COL_8021Q_VLAN_ID;
        break;
+      case 'E':
+       return COL_TEI;
+       break;
     }
     cptr++;
   }
index 7e510dab493270273b7bffa60557d6d8346f5058..3796f42658b293a0922beca45eacc1d9d7e54c75 100644 (file)
@@ -99,6 +99,7 @@ enum {
   COL_HPUX_DEVID,     /* HP-UX Nettl Device ID */
   COL_DCE_CALL,       /* DCE/RPC call id OR datagram sequence number */
   COL_8021Q_VLAN_ID,  /* 802.1Q vlan ID */
+  COL_TEI,            /* q.921 TEI */
   NUM_COL_FMTS        /* Should always be last */
 };
 
index 37e66c8587b9f58cf955b788a2f1da738908ff81..3929956a4c71fdfef0e62b3812f37aa2d64d85cd 100644 (file)
@@ -141,6 +141,13 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
                        pinfo->p2p_dir = pinfo->pseudo_header->isdn.uton ?
                            P2P_DIR_SENT : P2P_DIR_RECV;
                        break;
+
+               case WTAP_ENCAP_LINUX_LAPD:
+                       pinfo->p2p_dir = (pinfo->pseudo_header->lapd.pkttype == 3 ||
+                               pinfo->pseudo_header->lapd.pkttype == 4) ?
+                               P2P_DIR_SENT : P2P_DIR_RECV;
+                       break;
+
                case WTAP_ENCAP_MTP2_WITH_PHDR:
                        pinfo->p2p_dir = pinfo->pseudo_header->mtp2.sent ?
                            P2P_DIR_SENT : P2P_DIR_RECV;