static int dissect_rs_pgo_unix_num_key_t (tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * parent_tree, guint8 * drep) { /* typedef struct { signed32 unix_num; sec_rgy_name_t scope; } rs_pgo_unix_num_key_t; r */ proto_item *item = NULL; proto_tree *tree = NULL; int old_offset = offset; dcerpc_info *di; guint32 rs_pgo_unix_num_key_t; di = pinfo->private_data; if (di->conformant_run) { return offset; } if (parent_tree) { item = proto_tree_add_text (parent_tree, tvb, offset, -1, " rs_pgo_unix_num_key_t "); tree = proto_item_add_subtree (item, ett_rs_pgo_unix_num_key_t); } offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_rs_pgo_unix_num_key_t, &rs_pgo_unix_num_key_t); offset = dissect_sec_rgy_name_t (tvb, offset, pinfo, tree, drep); if (check_col (pinfo->cinfo, COL_INFO)) col_append_fstr (pinfo->cinfo, COL_INFO, " rs_pgo_unix_num_key_t:%u", rs_pgo_unix_num_key_t); proto_item_set_len (item, offset - old_offset); return offset; }
static int dissect_rs_pgo_id_key_t (tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * parent_tree, guint8 * drep) { /* typedef struct { uuid_t id; sec_rgy_name_t scope; } rs_pgo_id_key_t; */ proto_item *item = NULL; proto_tree *tree = NULL; int old_offset = offset; dcerpc_info *di; e_uuid_t id; di = (dcerpc_info *)pinfo->private_data; if (di->conformant_run) { return offset; } if (parent_tree) { item = proto_tree_add_text (parent_tree, tvb, offset, -1, "rs_pgo_id_key_t "); tree = proto_item_add_subtree (item, ett_rs_pgo_id_key_t); } offset = dissect_ndr_uuid_t (tvb, offset, pinfo, tree, drep, hf_rs_uuid1, &id); offset = dissect_sec_rgy_name_t (tvb, offset, pinfo, tree, drep); if (check_col (pinfo->cinfo, COL_INFO)) col_append_fstr (pinfo->cinfo, COL_INFO, " rs_pgo_id_key_t - id %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", id.Data1, id.Data2, id.Data3, id.Data4[0], id.Data4[1], id.Data4[2], id.Data4[3], id.Data4[4], id.Data4[5], id.Data4[6], id.Data4[7]); proto_item_set_len (item, offset - old_offset); return offset; }
static int rs_pgo_dissect_delete_rqst (tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, dcerpc_info *di, guint8 * drep) { if (di->conformant_run) { return offset; } /* [in] sec_rgy_domain_t name_domain, [in] sec_rgy_name_t pgo_name, */ offset = dissect_sec_rgy_domain_t (tvb, offset, pinfo, tree, di, drep); offset = dissect_sec_rgy_name_t (tvb, offset, pinfo, tree, di, drep); return offset; }
static int dissect_rs_pgo_result_t (tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * parent_tree, guint8 * drep) { /* typedef struct { sec_rgy_name_t name; sec_rgy_pgo_item_t item; } rs_pgo_result_t; */ proto_item *item = NULL; proto_tree *tree = NULL; int old_offset = offset; dcerpc_info *di; di = (dcerpc_info *)pinfo->private_data; if (di->conformant_run) { return offset; } if (parent_tree) { item = proto_tree_add_text (parent_tree, tvb, offset, -1, "rs_pgo_result_t "); tree = proto_item_add_subtree (item, ett_rs_pgo_result_t); } offset = dissect_sec_rgy_name_t (tvb, offset, pinfo, tree, drep); offset = dissect_sec_rgy_pgo_item_t (tvb, offset, pinfo, tree, drep); proto_item_set_len (item, offset - old_offset); return offset; }
static int rs_pgo_dissect_get_members_rqst (tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, guint8 * drep) { guint32 max_members; dcerpc_info *di; di = (dcerpc_info *)pinfo->private_data; if (di->conformant_run) { return offset; } /* [in] sec_rgy_domain_t name_domain, [in] sec_rgy_name_t go_name, [in, out] sec_rgy_cursor_t *member_cursor, [in] signed32 max_members, */ offset = dissect_sec_rgy_domain_t (tvb, offset, pinfo, tree, drep); offset += 4; offset = dissect_sec_rgy_name_t (tvb, offset, pinfo, tree, drep); offset = dissect_ndr_pointer (tvb, offset, pinfo, tree, drep, dissect_sec_rgy_cursor_t, NDR_POINTER_REF, "member_cursor:", -1); offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_rs_var1, &max_members); if (check_col (pinfo->cinfo, COL_INFO)) col_append_fstr (pinfo->cinfo, COL_INFO, " :max_members:%u", max_members); return offset; }
static int rs_pgo_dissect_replace_rqst (tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, dcerpc_info *di, guint8 * drep) { if (di->conformant_run) { return offset; } /* [in] sec_rgy_domain_t name_domain, [in] sec_rgy_name_t pgo_name, [in] sec_rgy_pgo_item_t *pgo_item, */ offset = dissect_sec_rgy_domain_t (tvb, offset, pinfo, tree, di, drep); offset = dissect_sec_rgy_name_t (tvb, offset, pinfo, tree, di, drep); offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, dissect_sec_rgy_pgo_item_t, NDR_POINTER_REF, "pgo_item:", -1); return offset; }
static int dissect_rs_pgo_query_key_t (tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * parent_tree, dcerpc_info *di, guint8 * drep) { enum { rs_pgo_query_name, rs_pgo_query_id, rs_pgo_query_unix_num, rs_pgo_query_next, rs_pgo_query_none }; /* typedef union switch (rs_pgo_query_t query) tagged_union { case rs_pgo_query_name: sec_rgy_name_t name; case rs_pgo_query_id: rs_pgo_id_key_t id_key; case rs_pgo_query_unix_num: rs_pgo_unix_num_key_t unix_num_key; case rs_pgo_query_next: sec_rgy_name_t scope; default: ; * empty branch of union * } rs_pgo_query_key_t; */ proto_item *item = NULL; proto_tree *tree = NULL; int old_offset = offset; guint16 query_t; if (di->conformant_run) { return offset; } if (parent_tree) { item = proto_tree_add_text (parent_tree, tvb, offset, -1, "rs_pgo_query_key_t "); tree = proto_item_add_subtree (item, ett_rs_pgo_query_key_t); } offset = dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep, hf_rs_pgo_query_key_t, &query_t); col_append_str (pinfo->cinfo, COL_INFO, " rs_pgo_query_key_t:"); offset += 4; switch (query_t) { case rs_pgo_query_name: col_append_str (pinfo->cinfo, COL_INFO, "NAME"); offset = dissect_sec_rgy_name_t (tvb, offset, pinfo, tree, di, drep); break; case rs_pgo_query_id: col_append_str (pinfo->cinfo, COL_INFO, "ID"); offset = dissect_rs_pgo_id_key_t (tvb, offset, pinfo, tree, di, drep); break; case rs_pgo_query_unix_num: col_append_str (pinfo->cinfo, COL_INFO, "UNIX_NUM"); offset = dissect_rs_pgo_unix_num_key_t (tvb, offset, pinfo, tree, di, drep); break; case rs_pgo_query_next: col_append_str (pinfo->cinfo, COL_INFO, "NEXT"); offset = dissect_sec_rgy_name_t (tvb, offset, pinfo, tree, di, drep); break; case rs_pgo_query_none: col_append_str (pinfo->cinfo, COL_INFO, "NONE"); break; default: col_append_fstr (pinfo->cinfo, COL_INFO, " unknown:%u", query_t); break; } proto_item_set_len (item, offset - old_offset); return offset; }