- pinfo, tree, NULL))
- call_dissector (eth_maybefcs_dissector_handle, eth_tvb, pinfo, tree);
+ pinfo, tree, NULL)) {
+ guint8 maybe_protocol_id;
+ dissector_handle_t best_guess_dissector_handle
+ = eth_maybefcs_dissector_handle;
+
+ maybe_protocol_id = tvb_get_guint8 (tvb, offset);
+
+ switch (maybe_protocol_id) {
+ case 0x45:
+ best_guess_dissector_handle = ip_dissector_handle;
+ break;
+ case 0x60:
+ best_guess_dissector_handle = ipv6_dissector_handle;
+ break;
+ default:
+ break;
+ }
+ call_dissector (best_guess_dissector_handle, eth_tvb, pinfo, tree);
+ }