Wireshark mailing list archives
Re: Registering Dissector for Private SNAP PID
From: Jaap Keuter <jaap.keuter () xs4all nl>
Date: Wed, 03 Apr 2013 23:44:20 +0200
Hi, Have a look at epan/dissectors/packet-hpteam.c for instance. It's just a reference to the header field for the representation of your PIDs. Thanks, Jaap On 04/03/2013 04:42 PM, Christopher Merck wrote:
On 2013-03-05, Guy Harris wrote:On Mar 5, 2013, at 5:39 AM, Christopher Merck <cmerck () crestron com> wrote:I believe the correct way to proceed is to register a new dissectortable along the lines of "llc.oui", I believe the correct way to proceed would be to add llc_add_oui() to the Lua API, so that Lua dissectors that need to handle a not-already- registered OUI can register that OUI, including a new dissector table for PIDs in that OUI, and then a dissector (no matter what language it's in) could register in that table.I almost have this working. But what I don't understand is the fourth argument to llc_add_oui. That structure contains a list of PIDs to register and the table name. However, when I am registering the OUI I don't want to register any PIDs yet, and I have already specified the table_name as the second argument to llc_add_oui. So, I'm trying to stuff some dummy data into hf_pid, but I get segfaults or assertion errors at runtime. Any idea what I'm missing? Thanks, Chris --- WSLUA_FUNCTION wslua_llc_add_oui(lua_State* LS) { /* registers a new OUI for LLC/SNAP purposes */ #define WSLUA_ARG_llc_add_oui_OUI 1 /* OUI to register */ #define WSLUA_ARG_llc_add_oui_TABLE_NAME 2 /* name of table to register, should be of the form: llc.<ouiname>_pid*/ #define WSLUA_ARG_llc_add_oui_TABLE_UI_NAME 3 /* name to display in GUI */ lua_Number oui = luaL_checknumber(LS,WSLUA_ARG_llc_add_oui_OUI); const gchar* table_name = luaL_checkstring(LS,WSLUA_ARG_llc_add_oui_TABLE_NAME); const gchar* table_ui_name = luaL_checkstring(LS,WSLUA_ARG_llc_add_oui_TABLE_UI_NAME); const value_string oui_pid_vals[] = { { 0, NULL } }; gint hf_llc_oui_pid = -1; hf_register_info hf_pid = { &hf_llc_oui_pid, { "PID", NULL /*table_name*/, FT_UINT16, BASE_HEX, VALS(oui_pid_vals), 0x0, NULL, HFILL } }; hf_pid.hfinfo.abbrev = table_name; /* void llc_add_oui(guint32 oui, const char *table_name, const char *table_ui_name, hf_register_info *hf_item) */ // TODO: What do to about the fourth argument? llc_add_oui(oui, table_name, table_ui_name, &hf_pid); return 0; }
___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- Re: Registering Dissector for Private SNAP PID Christopher Merck (Apr 03)
- Re: Registering Dissector for Private SNAP PID Jaap Keuter (Apr 03)