/*--- proto_register_ess ----------------------------------------------*/ void proto_register_ess(void) { /* List of fields */ static hf_register_info hf[] = { { &hf_ess_SecurityCategory_type_OID, { "type", "ess.type_OID", FT_STRING, BASE_NONE, NULL, 0, "Type of Security Category", HFILL }}, { &hf_ess_Category_attribute, { "Attribute", "ess.attribute", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, #include "packet-ess-hfarr.c" }; /* List of subtrees */ static gint *ett[] = { &ett_Category_attributes, #include "packet-ess-ettarr.c" }; static uat_field_t attributes_flds[] = { UAT_FLD_CSTRING(ess_category_attributes,oid, "Tag Set", "Category Tag Set (Object Identifier)"), UAT_FLD_DEC(ess_category_attributes,lacv, "Value", "Label And Cert Value"), UAT_FLD_CSTRING(ess_category_attributes,name, "Name", "Category Name"), UAT_END_FIELDS }; uat_t *attributes_uat = uat_new("ESS Category Attributes", sizeof(ess_category_attributes_t), "ess_category_attributes", TRUE, (void*) &ess_category_attributes, &num_ess_category_attributes, UAT_AFFECTS_DISSECTION, /* affects dissection of packets, but not set of named fields */ "ChEssCategoryAttributes", ess_copy_cb, NULL, ess_free_cb, NULL, attributes_flds); static module_t *ess_module; /* Register protocol */ proto_ess = proto_register_protocol(PNAME, PSNAME, PFNAME); /* Register fields and subtrees */ proto_register_field_array(proto_ess, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); ess_module = prefs_register_protocol(proto_ess, NULL); prefs_register_uat_preference(ess_module, "attributes_table", "ESS Category Attributes", "ESS category attributes translation table", attributes_uat); }
/*FUNCTION:------------------------------------------------------ * NAME * zbee_security_register * DESCRIPTION * Called by proto_register_zbee_nwk() to initialize the security * dissectors. * PARAMETERS * module_t zbee_prefs - Prefs module to load preferences under. * RETURNS * none *--------------------------------------------------------------- */ void zbee_security_register(module_t *zbee_prefs, int proto) { static hf_register_info hf[] = { { &hf_zbee_sec_key_id, { "Key Id", "zbee.sec.key", FT_UINT8, BASE_HEX, VALS(zbee_sec_key_names), ZBEE_SEC_CONTROL_KEY, NULL, HFILL }}, { &hf_zbee_sec_nonce, { "Extended Nonce", "zbee.sec.ext_nonce", FT_BOOLEAN, 8, NULL, ZBEE_SEC_CONTROL_NONCE, NULL, HFILL }}, { &hf_zbee_sec_counter, { "Frame Counter", "zbee.sec.counter", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, { &hf_zbee_sec_src64, { "Extended Source", "zbee.sec.src64", FT_EUI64, BASE_NONE, NULL, 0x0, NULL, HFILL }}, { &hf_zbee_sec_key_seqno, { "Key Sequence Number", "zbee.sec.key_seqno", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, { &hf_zbee_sec_mic, { "Message Integrity Code", "zbee.sec.mic", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, { &hf_zbee_sec_key_origin, { "Key Origin", "zbee.sec.key.origin", FT_FRAMENUM, BASE_NONE, NULL, 0x0, NULL, HFILL }} }; static gint *ett[] = { &ett_zbee_sec, &ett_zbee_sec_control }; static uat_field_t key_uat_fields[] = { UAT_FLD_CSTRING(uat_key_records, string, "Key", "A 16-byte key in hexadecimal with optional dash-,\n" "colon-, or space-separator characters, or a\n" "a 16-character string in double-quotes."), UAT_FLD_VS(uat_key_records, byte_order, "Byte Order", byte_order_vals, "Byte order of key."), UAT_FLD_LSTRING(uat_key_records, label, "Label", "User label for key."), UAT_END_FIELDS }; /* If no prefs module was supplied, register our own. */ if (zbee_prefs == NULL) { zbee_prefs = prefs_register_protocol(proto, NULL); } /* Register preferences */ prefs_register_enum_preference(zbee_prefs, "seclevel", "Security Level", "Specifies the security level to use in the\n" "decryption process. This value is ignored\n" "for ZigBee 2004 and unsecured networks.", &gPREF_zbee_sec_level, zbee_sec_level_enums, FALSE); zbee_sec_key_table_uat = uat_new("Pre-configured Keys", sizeof(uat_key_record_t), "zigbee_pc_keys", TRUE, (void*) &uat_key_records, &num_uat_key_records, UAT_CAT_FFMT, NULL, /* TODO: ptr to help manual? */ uat_key_record_copy_cb, uat_key_record_update_cb, uat_key_record_free_cb, NULL, /* TODO: post_update */ key_uat_fields ); prefs_register_uat_preference(zbee_prefs, "key_table", "Pre-configured Keys", "Pre-configured link or network keys.", zbee_sec_key_table_uat); proto_register_field_array(proto, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); /* Register the init routine. */ register_init_routine(proto_init_zbee_security); } /* zbee_security_register */
void expert_packet_init(void) { module_t *module_expert; uat_t *expert_uat; static hf_register_info hf[] = { { &hf_expert_msg, { "Message", "_ws.expert.message", FT_STRING, BASE_NONE, NULL, 0, "Wireshark expert information", HFILL } }, { &hf_expert_group, { "Group", "_ws.expert.group", FT_UINT32, BASE_HEX, VALS(expert_group_vals), 0, "Wireshark expert group", HFILL } }, { &hf_expert_severity, { "Severity level", "_ws.expert.severity", FT_UINT32, BASE_HEX, VALS(expert_severity_vals), 0, "Wireshark expert severity level", HFILL } } }; static gint *ett[] = { &ett_expert, &ett_subexpert }; /* UAT for overriding severity levels */ static uat_field_t custom_expert_fields[] = { UAT_FLD_CSTRING(uat_expert_entries, field, "Field name", "Expert Info filter name"), UAT_FLD_VS(uat_expert_entries, severity, "Severity", expert_severity_vals, "Custom severity level"), UAT_END_FIELDS }; if (expert_tap == -1) { expert_tap = register_tap("expert"); } if (proto_expert == -1) { proto_expert = proto_register_protocol("Expert Info", "Expert", "_ws.expert"); proto_register_field_array(proto_expert, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); proto_set_cant_toggle(proto_expert); module_expert = prefs_register_protocol(proto_expert, NULL); expert_uat = uat_new("Expert Info Severity Level Configuration", sizeof(expert_level_entry_t), "expert_severity", TRUE, (void **)&uat_expert_entries, &expert_level_entry_count, UAT_AFFECTS_DISSECTION, NULL, uat_expert_copy_cb, uat_expert_update_cb, uat_expert_free_cb, uat_expert_post_update_cb, custom_expert_fields); prefs_register_uat_preference(module_expert, "expert_severity_levels", "Severity Level Configuration", "A table that overrides Expert Info field severity levels to user configured levels", expert_uat); } highest_severity = 0; proto_malformed = proto_get_id_by_filter_name("_ws.malformed"); }
/*FUNCTION:------------------------------------------------------ * NAME * zbee_security_register * DESCRIPTION * Called by proto_register_zbee_nwk() to initialize the security * dissectors. * PARAMETERS * module_t zbee_prefs - Prefs module to load preferences under. * RETURNS * none *--------------------------------------------------------------- */ void zbee_security_register(module_t *zbee_prefs, int proto) { static hf_register_info hf[] = { { &hf_zbee_sec_field, { "Security Control Field", "zbee.sec.field", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }}, { &hf_zbee_sec_key_id, { "Key Id", "zbee.sec.key_id", FT_UINT8, BASE_HEX, VALS(zbee_sec_key_names), ZBEE_SEC_CONTROL_KEY, NULL, HFILL }}, { &hf_zbee_sec_nonce, { "Extended Nonce", "zbee.sec.ext_nonce", FT_BOOLEAN, 8, NULL, ZBEE_SEC_CONTROL_NONCE, NULL, HFILL }}, { &hf_zbee_sec_counter, { "Frame Counter", "zbee.sec.counter", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, { &hf_zbee_sec_src64, { "Extended Source", "zbee.sec.src64", FT_EUI64, BASE_NONE, NULL, 0x0, NULL, HFILL }}, { &hf_zbee_sec_key_seqno, { "Key Sequence Number", "zbee.sec.key_seqno", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, { &hf_zbee_sec_mic, { "Message Integrity Code", "zbee.sec.mic", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, { &hf_zbee_sec_key, { "Key", "zbee.sec.key", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, { &hf_zbee_sec_key_origin, { "Key Origin", "zbee.sec.key.origin", FT_FRAMENUM, BASE_NONE, NULL, 0x0, NULL, HFILL }}, { &hf_zbee_sec_decryption_key, { "Key Label", "zbee.sec.decryption_key", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }} }; static gint *ett[] = { &ett_zbee_sec, &ett_zbee_sec_control }; static ei_register_info ei[] = { { &ei_zbee_sec_encrypted_payload, { "zbee_sec.encrypted_payload", PI_UNDECODED, PI_WARN, "Encrypted Payload", EXPFILL }}, { &ei_zbee_sec_encrypted_payload_sliced, { "zbee_sec.encrypted_payload_sliced", PI_UNDECODED, PI_WARN, "Encrypted payload, cut short when capturing - can't decrypt", EXPFILL }}, { &ei_zbee_sec_extended_source_unknown, { "zbee_sec.extended_source_unknown", PI_PROTOCOL, PI_NOTE, "Extended Source: Unknown", EXPFILL }}, }; expert_module_t* expert_zbee_sec; static uat_field_t key_uat_fields[] = { UAT_FLD_CSTRING(uat_key_records, string, "Key", "A 16-byte key in hexadecimal with optional dash-,\n" "colon-, or space-separator characters, or a\n" "a 16-character string in double-quotes."), UAT_FLD_VS(uat_key_records, byte_order, "Byte Order", byte_order_vals, "Byte order of key."), UAT_FLD_CSTRING(uat_key_records, label, "Label", "User label for key."), UAT_END_FIELDS }; /* If no prefs module was supplied, register our own. */ if (zbee_prefs == NULL) { zbee_prefs = prefs_register_protocol(proto, NULL); } /* Register preferences */ prefs_register_enum_preference(zbee_prefs, "seclevel", "Security Level", "Specifies the security level to use in the\n" "decryption process. This value is ignored\n" "for ZigBee 2004 and unsecured networks.", &gPREF_zbee_sec_level, zbee_sec_level_enums, FALSE); zbee_sec_key_table_uat = uat_new("Pre-configured Keys", sizeof(uat_key_record_t), "zigbee_pc_keys", TRUE, &uat_key_records, &num_uat_key_records, UAT_AFFECTS_DISSECTION, /* affects dissection of packets, but not set of named fields */ NULL, /* TODO: ptr to help manual? */ uat_key_record_copy_cb, uat_key_record_update_cb, uat_key_record_free_cb, uat_key_record_post_update, key_uat_fields ); prefs_register_uat_preference(zbee_prefs, "key_table", "Pre-configured Keys", "Pre-configured link or network keys.", zbee_sec_key_table_uat); proto_register_field_array(proto, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_zbee_sec = expert_register_protocol(proto); expert_register_field_array(expert_zbee_sec, ei, array_length(ei)); } /* zbee_security_register */
typedef struct { char * name; guint32 port_low; guint32 port_high; } lbmpdm_tcp_tag_entry_t; static lbmpdm_tcp_tag_entry_t * lbmpdm_tcp_tag_entry = NULL; static guint lbmpdm_tcp_tag_count = 0; UAT_CSTRING_CB_DEF(lbmpdm_tcp_tag, name, lbmpdm_tcp_tag_entry_t) UAT_DEC_CB_DEF(lbmpdm_tcp_tag, port_low, lbmpdm_tcp_tag_entry_t) UAT_DEC_CB_DEF(lbmpdm_tcp_tag, port_high, lbmpdm_tcp_tag_entry_t) static uat_field_t lbmpdm_tcp_tag_array[] = { UAT_FLD_CSTRING(lbmpdm_tcp_tag, name, "Tag name", "Tag name"), UAT_FLD_DEC(lbmpdm_tcp_tag, port_low, "Port low", "Port low"), UAT_FLD_DEC(lbmpdm_tcp_tag, port_high, "Port high", "Port high"), UAT_END_FIELDS }; /*----------------------------------------------------------------------------*/ /* UAT callback functions. */ /*----------------------------------------------------------------------------*/ static gboolean lbmpdm_tcp_tag_update_cb(void * record, char * * error_string) { lbmpdm_tcp_tag_entry_t * tag = (lbmpdm_tcp_tag_entry_t *)record; if (tag->name == NULL) { *error_string = g_strdup_printf("Tag name can't be empty");
guint32 store_port_high; } lbttcp_tag_entry_t; static lbttcp_tag_entry_t * lbttcp_tag_entry = NULL; static guint lbttcp_tag_count = 0; UAT_CSTRING_CB_DEF(lbttcp_tag, name, lbttcp_tag_entry_t) UAT_DEC_CB_DEF(lbttcp_tag, source_port_low, lbttcp_tag_entry_t) UAT_DEC_CB_DEF(lbttcp_tag, source_port_high, lbttcp_tag_entry_t) UAT_DEC_CB_DEF(lbttcp_tag, request_port_low, lbttcp_tag_entry_t) UAT_DEC_CB_DEF(lbttcp_tag, request_port_high, lbttcp_tag_entry_t) UAT_DEC_CB_DEF(lbttcp_tag, store_port_low, lbttcp_tag_entry_t) UAT_DEC_CB_DEF(lbttcp_tag, store_port_high, lbttcp_tag_entry_t) static uat_field_t lbttcp_tag_array[] = { UAT_FLD_CSTRING(lbttcp_tag, name, "Tag name", "Tag name"), UAT_FLD_DEC(lbttcp_tag, source_port_low, "Source port low", "Source port low"), UAT_FLD_DEC(lbttcp_tag, source_port_high, "Source port high", "Source port high"), UAT_FLD_DEC(lbttcp_tag, request_port_low, "Request port low", "Request port low"), UAT_FLD_DEC(lbttcp_tag, request_port_high, "Request port high", "Request port high"), UAT_FLD_DEC(lbttcp_tag, store_port_low, "Store port low", "Store port low"), UAT_FLD_DEC(lbttcp_tag, store_port_high, "Store port high", "Store port high"), UAT_END_FIELDS }; /*----------------------------------------------------------------------------*/ /* UAT callback functions. */ /*----------------------------------------------------------------------------*/ static gboolean lbttcp_tag_update_cb(void * record, char * * error_string) { lbttcp_tag_entry_t * tag = (lbttcp_tag_entry_t *)record;
filter_expression_t* new_record = (filter_expression_t*)n; const filter_expression_t* old_record = (const filter_expression_t*)o; new_record->label = g_strdup(old_record->label); new_record->expression = g_strdup(old_record->expression); new_record->comment = g_strdup(old_record->comment); new_record->enabled = old_record->enabled; return new_record; } static uat_field_t display_filter_uat_flds[] = { UAT_FLD_BOOL(display_filter_macro_uat, enabled, "Show in toolbar", "Checked to add display filter button to toolbar"), UAT_FLD_CSTRING(display_filter_macro_uat, label, "Button Label", "Name of the display filter button"), UAT_FLD_DISPLAY_FILTER(display_filter_macro_uat, expression, "Filter Expression", "Filter expression to be applied by the button"), UAT_FLD_CSTRING(display_filter_macro_uat, comment, "Comment", "Comment describing filter expression"), UAT_END_FIELDS }; void filter_expression_register_uat(module_t* pref_module) { display_filter_macro_uat = uat_new("Display expressions", sizeof(filter_expression_t), /* record size */ "dfilter_buttons", /* filename */ TRUE, /* from_profile */ &display_filter_macros, /* data_ptr */ &num_display_filter_macros, /* numitems_ptr */