The Frame protocol (and a dozen others) can not be disabled:
 /* You can't disable dissection of "Frame", as that would be
  tantamount to not doing any dissection whatsoever. */
proto_set_cant_toggle(proto_frame);

Would there be a group that lists these?

On Wed, Oct 21, 2020 at 9:34 AM Anders Broman via Wireshark-dev <
wireshark-dev@wireshark.org> wrote:

> Hi,
>
> In the developers den we discussed the possibility of disabling unneeded
> protocols and I brought up the idea of protocol groups. If there is
> interest in this feature
>
> I would need help with the GUI part – volunteers? As a PoC I was thinking
> of something along these lines.
>
> Turn all protocols of – enable the group “basic” which would then be the
> basic protocols you would need in most cases like
>
> Ethernet -VLAN-IP4/IPv6-TCP UDP SCTP ICMP ICMP6 ARP more? We don’t need a
> comprehensive list here and now these might do for the PoC.
>
> Once the basic group is there we might start to look at large groups of
> specialized protocols most people would want to turn off like
>
> USB Bluetooth ZigeBee, telco(?) might be candidates.
>
>
>
> This would be the API to register in a group, only allowed group names(we
> make list) to be accepted at registry time, possibly
>
> Have a register group name routine? But the poc may not have to be more
> complicated than this.
>
> --- a/epan/proto.c
>
> +++ b/epan/proto.c
>
> @@ -343,21 +343,22 @@ static header_field_info hfi_text_only =
>
>         { "Text item",  "text", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL
> };
>
> int hf_text_only = -1;
>
>
>
> -/* Structure for information about a protocol */
>
> +/** Structure for information about a protocol */
>
> struct _protocol {
>
> -       const char *name;               /* long description */
>
> -       const char *short_name;         /* short description */
>
> -       const char *filter_name;        /* name of this protocol in
> filters */
>
> -       GPtrArray  *fields;             /* fields for this protocol */
>
> -       int         proto_id;           /* field ID for this protocol */
>
> -       gboolean    is_enabled;         /* TRUE if protocol is enabled */
>
> -       gboolean    enabled_by_default; /* TRUE if protocol is enabled by
> default */
>
> -       gboolean    can_toggle;         /* TRUE if is_enabled can be
> changed */
>
> -       int         parent_proto_id;    /* Used to identify "pino"s
> (Protocol In Name Only).
>
> +       const char *name;               /**< long description */
>
> +       const char *short_name;         /**< short description */
>
> +       const char *filter_name;        /**< name of this protocol in
> filters */
>
> +       const char* group_name;         /**< name of the "group" this
> protocol belongs to */
>
> +       GPtrArray  *fields;             /**< fields for this protocol */
>
> +       int         proto_id;           /**< field ID for this protocol */
>
> +       gboolean    is_enabled;         /**< TRUE if protocol is enabled */
>
> +       gboolean    enabled_by_default; /**< TRUE if protocol is enabled
> by default */
>
> +       gboolean    can_toggle;         /**< TRUE if is_enabled can be
> changed */
>
> +       int         parent_proto_id;    /**< Used to identify "pino"s
> (Protocol In Name Only).
>
>                                         For dissectors that need a
> protocol name so they
>
>                                         can be added to a dissector table,
> but use the
>
>                                         parent_proto_id for things like
> enable/disable */
>
> -       GList      *heur_list;          /* Heuristic dissectors associated
> with this protocol */
>
> +       GList      *heur_list;          /**< Heuristic dissectors
> associated with this protocol */
>
> };
>
>
>
> /* List of all protocols */
>
> @@ -7208,8 +7209,14 @@ check_valid_filter_name_or_fail(const char
> *filter_name)
>
> }
>
>
>
> int
>
> -proto_register_protocol(const char *name, const char *short_name,
>
> -                       const char *filter_name)
>
> +proto_register_protocol(const char* name, const char* short_name, const
> char* filter_name)
>
> +{
>
> +       return proto_register_protocol_and_group(name, short_name,
> filter_name, NULL);
>
> +}
>
> +
>
> +int
>
> +proto_register_protocol_and_group(const char *name, const char
> *short_name,
>
> +                       const char *filter_name, const char* group_name)
>
> {
>
>         protocol_t *protocol;
>
>         header_field_info *hfinfo;
>
> @@ -7248,6 +7255,7 @@ proto_register_protocol(const char *name, const char
> *short_name,
>
>        protocol->name = name;
>
>         protocol->short_name = short_name;
>
>         protocol->filter_name = filter_name;
>
> +       protocol->group_name = group_name;
>
>         protocol->fields = NULL; /* Delegate until actually needed */
>
>         protocol->is_enabled = TRUE; /* protocol is enabled by default */
>
>         protocol->enabled_by_default = TRUE; /* see previous comment */
>
> diff --git a/epan/proto.h b/epan/proto.h
>
> index 679cb6989c..fa63c9d9de 100644
>
> --- a/epan/proto.h
>
> +++ b/epan/proto.h
>
> @@ -2371,6 +2371,14 @@ proto_item_fill_label(field_info *fi, gchar
> *label_str);
>
> WS_DLL_PUBLIC int
>
> proto_register_protocol(const char *name, const char *short_name, const
> char *filter_name);
>
>
>
> +/** Register a new protocol with group association.
>
> + @param name the full name of the new protocol
>
> + @param short_name abbreviated name of the new protocol
>
> + @param filter_name protocol name used for a display filter string
>
> + @param group_name the group the protocol belongs to. Grops are used to
> enable/dissable sets of protocols
>
> + @return the new protocol handle */
>
> +WS_DLL_PUBLIC int
>
> +proto_register_protocol_and_group(const char* name, const char*
> short_name, const char* filter_name, const char* group_name);
>
> /** Register a "helper" protocol (pino - protocol in name only).
>
>   This is for dissectors that need distinguishing names and don't need the
> other
>
>   features (like enable/disable).  One use case is a protocol with
> multiple dissection
>
>
>
> Comments?
>
>
>
> Regards
>
> Anders
>
>
> ___________________________________________________________________________
> Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
> Archives:    https://www.wireshark.org/lists/wireshark-dev
> Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
>              mailto:wireshark-dev-requ...@wireshark.org
> ?subject=unsubscribe
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

Reply via email to