diff options
author | Guy Harris <guy@alum.mit.edu> | 2004-11-24 09:13:52 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2004-11-24 09:13:52 +0000 |
commit | 7c3027c5e9b169e6c4eaba78b4815123113ea398 (patch) | |
tree | 8a078ef2bb27f034ded036ea017e2b910df7de81 /epan/dissectors/packet-llc.c | |
parent | b3b1679a577c1b282bf65dd2995d5a2227bbe52c (diff) |
Export two versions of the Ethereal dissector, for use with encapsulated
Ethernet frames, one for encapsulated frames that include an FCS and one
for encapsulated frames that don't include an FCS. Use the appropriate
versions.
In the ISL dissector, do the same sort of processing we do in the
Ethernet dissector to figure out whether the frame has a trailer or not
and whether it has an FCS or not.
svn path=/trunk/; revision=12593
Diffstat (limited to 'epan/dissectors/packet-llc.c')
-rw-r--r-- | epan/dissectors/packet-llc.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/epan/dissectors/packet-llc.c b/epan/dissectors/packet-llc.c index 0d60f70b3c..8150a101c3 100644 --- a/epan/dissectors/packet-llc.c +++ b/epan/dissectors/packet-llc.c @@ -80,7 +80,8 @@ static dissector_table_t subdissector_table; static dissector_table_t xid_subdissector_table; static dissector_handle_t bpdu_handle; -static dissector_handle_t eth_handle; +static dissector_handle_t eth_withoutfcs_handle; +static dissector_handle_t eth_withfcs_handle; static dissector_handle_t fddi_handle; static dissector_handle_t tr_handle; static dissector_handle_t data_handle; @@ -512,10 +513,16 @@ dissect_snap(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, switch (etype) { case BPID_ETH_WITH_FCS: + next_tvb = tvb_new_subset(tvb, offset+5+bridge_pad, + -1, -1); + call_dissector(eth_withfcs_handle, next_tvb, pinfo, + tree); + break; + case BPID_ETH_WITHOUT_FCS: next_tvb = tvb_new_subset(tvb, offset+5+bridge_pad, -1, -1); - call_dissector(eth_handle, next_tvb, pinfo, tree); + call_dissector(eth_withoutfcs_handle, next_tvb, pinfo, tree); break; case BPID_802_5_WITH_FCS: @@ -720,7 +727,8 @@ proto_reg_handoff_llc(void) * dissectors. */ bpdu_handle = find_dissector("bpdu"); - eth_handle = find_dissector("eth"); + eth_withoutfcs_handle = find_dissector("eth_withoutfcs"); + eth_withfcs_handle = find_dissector("eth_withfcs"); fddi_handle = find_dissector("fddi"); tr_handle = find_dissector("tr"); data_handle = find_dissector("data"); |