We did use the expert_add_info_format in our expert info system. It is a excellent function obviously. But because we need to add some private information to use later in expert_info_t structure, for avoiding to modify your expert_info_t struct, we add a new scsiexpert_expertdata_info_t structure as follows and wrote a new function iscsiexpert_add_info_to_analyzer_tap:
typedef struct iscsiexpert_expertdata_info_s {
guint32 packet_num;
int group;
int severity;
gchar * protocol;
gchar * summary;
proto_item *pitem;
gboolean direction;
guint8 opcode;
iscsiexpert_session_t * conn;
} iscsiexpert_expertdata_info_t;
Obviously, it is from your expert_info_t structure.
Could you add the private data pointer in your expert_info_t structure? Such as:
typedef struct expert_info_s {
guint32 packet_num;
int group;
int severity;
gchar * protocol;
gchar * summary;
proto_item *pitem;
gpointer priv_data;
} expert_info_t;
So, we can modify our code to use your expert_info_t struct.
Thanks for your reply again.