/* This dissector is handed a DPP packet of any version. It is responsible for decoding the common header fields and then passing off to the specific DPP dissector  */
static int dissect_app_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
/* This dissector is handed a DPP packet of any version. It is responsible for decoding the common header fields and then passing off to the specific DPP dissector  */
static int dissect_app_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
    col_clear(pinfo->cinfo, COL_INFO);
    {
        guint16 app;
        gint app_len;
        read_c2(tvb, 0, &app, &app_len);
        col_add_fstr(pinfo->cinfo, COL_PROTOCOL, "APP(%u)", app);
        if (dissector_try_uint_new(app_dissectors, app, tvb, pinfo, tree, TRUE, data))
        {
            col_set_fence(pinfo->cinfo, COL_PROTOCOL);
            col_set_fence(pinfo->cinfo, COL_INFO);
            return tvb_reported_length(tvb);
        }
        else
        {
            proto_tree_add_protocol_format(tree, proto_2008_1_app, tvb, 0, app_len,
                                           DOF_APPLICATION_PROTOCOL ", Version: %u", app);
        }
    }
    return 0;
}