static void dissect_unregister_pdu(tvbuff_t *tvb, proto_tree *tree,int offset,int len, char flags) { proto_item* item; proto_tree* subtree; gboolean little_endian = !(flags & NETWORK_BYTE_ORDER); item = proto_tree_add_text(tree, tvb, offset, len, "Unregister-PDU"); subtree = proto_item_add_subtree(item, ett_unregister); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ offset += dissect_octet_string(tvb, subtree, offset, flags); } proto_tree_add_item(subtree, hf_unreg_timeout, tvb, offset, 1, FALSE); proto_tree_add_item(subtree, hf_unreg_prio, tvb, offset+1, 1, FALSE); proto_tree_add_item(subtree, hf_unreg_rsid, tvb, offset+2, 1, FALSE); offset+=4; /* Region */ offset += dissect_object_id(tvb, subtree, offset, flags); if(len > offset) { /* Upper bound (opt) */ proto_tree_add_item(subtree, hf_unreg_ubound, tvb, offset, 4, little_endian); offset += 4; } }
static int dissect_unregister_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { proto_tree* subtree; guint encoding = (flags & NETWORK_BYTE_ORDER) ? ENC_BIG_ENDIAN : ENC_LITTLE_ENDIAN; subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_unregister, NULL, "Unregister-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ offset += dissect_octet_string(tvb, subtree, offset, flags); } proto_tree_add_item(subtree, hf_unreg_timeout, tvb, offset, 1, encoding); proto_tree_add_item(subtree, hf_unreg_prio, tvb, offset+1, 1, encoding); proto_tree_add_item(subtree, hf_unreg_rsid, tvb, offset+2, 1, encoding); offset+=4; /* Region */ offset += dissect_object_id(tvb, subtree, offset, flags, OID_EXACT); len += PDU_HDR_LEN; if(len > offset) { /* Upper bound (opt) */ proto_tree_add_item(subtree, hf_unreg_ubound, tvb, offset, 4, encoding); offset += 4; } return offset; }
static void dissect_add_caps_pdu(tvbuff_t *tvb, proto_tree *tree,int offset,int len, char flags) { proto_item* item; proto_tree* subtree; item = proto_tree_add_text(tree, tvb, offset, len, "AddAgentCaps-PDU"); subtree = proto_item_add_subtree(item, ett_addcap); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ offset += dissect_octet_string(tvb, subtree, offset, flags); } offset += dissect_object_id(tvb, subtree, offset, flags); offset += dissect_octet_string(tvb, subtree, offset, flags); }
static int dissect_add_caps_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { proto_tree* subtree; subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_addcap, NULL, "AddAgentCaps-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ offset += dissect_octet_string(tvb, subtree, offset, flags); } offset += dissect_object_id(tvb, subtree, offset, flags, OID_EXACT); offset += dissect_octet_string(tvb, subtree, offset, flags); return offset; }
static int dissect_ping_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { proto_tree* subtree; subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_ping, NULL, "Ping-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ offset += dissect_octet_string(tvb, subtree, offset, flags); } return offset; }
static int dissect_varbind(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { guint16 vtag; int tlen; proto_item* item; proto_tree* subtree; NORLES(flags, vtag, tvb, offset); /* 2 reserved bytes after this */ if(tree) { item = proto_tree_add_text(tree, tvb, offset, len, "Value Representation"); subtree = proto_item_add_subtree(item, ett_valrep); } else return len; proto_tree_add_uint(subtree, hf_vtag, tvb, offset, 2, vtag); tlen = dissect_object_id(tvb, subtree, offset + 4, flags, OID_EXACT); switch(vtag) { case VB_OID: tlen += dissect_object_id(tvb, subtree, offset + tlen + 4, flags, OID_EXACT); break; case VB_OPAQUE: case VB_OSTR: case VB_IPADDR: tlen += dissect_octet_string(tvb, subtree, offset + tlen + 4, flags); break; case VB_TIMETICK: case VB_COUNTER32: case VB_INT: case VB_GAUGE32: tlen += dissect_val32(tvb, subtree, offset + tlen + 4, flags); break; case VB_COUNTER64: tlen += dissect_val64(tvb, subtree, offset + tlen + 4, flags); break; case VB_NULL: case VB_NOSUCHOBJ: case VB_NOSUCHINST: case VB_ENDOFMIB: break; } return tlen + 4; }
static void dissect_idx_dealloc_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { proto_tree* subtree; subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_idxdalloc, NULL, "IndexDeallocate-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ offset += dissect_octet_string(tvb, subtree, offset, flags); } while(len > offset) { offset += dissect_varbind(tvb, subtree, offset, len, flags); } }
static void dissect_idx_alloc_pdu(tvbuff_t *tvb, proto_tree *tree,int offset,int len, char flags) { proto_item* item; proto_tree* subtree; item = proto_tree_add_text(tree, tvb, offset, len, "IndexAllocate-PDU"); subtree = proto_item_add_subtree(item, ett_idxalloc); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ offset += dissect_octet_string(tvb, subtree, offset, flags); } while(len > offset) { offset += dissect_varbind(tvb, subtree, offset, len, flags); } }
static void dissect_getnext_pdu(tvbuff_t *tvb, proto_tree *tree,int offset,int len, char flags) { proto_item* item; proto_tree* subtree; item = proto_tree_add_text(tree, tvb, offset, len, "GetNext-PDU"); subtree = proto_item_add_subtree(item, ett_getnext); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ offset += dissect_octet_string(tvb, subtree, offset, flags); } while(len > offset) { offset += dissect_search_range(tvb, subtree, offset, flags); } }
static void dissect_get_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { proto_tree* subtree; subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_get, NULL, "Get-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ offset += dissect_octet_string(tvb, subtree, offset, flags); } len += PDU_HDR_LEN; while(len > offset) { offset += dissect_search_range(tvb, subtree, offset, flags, AGENTX_GET_PDU); } }
static int dissect_rem_caps_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { proto_item* item; proto_tree* subtree; item = proto_tree_add_text(tree, tvb, offset, len, "RemoveAgentCaps-PDU"); subtree = proto_item_add_subtree(item, ett_remcap); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ offset += dissect_octet_string(tvb, subtree, offset, flags); } offset += dissect_object_id(tvb, subtree, offset, flags, OID_EXACT); return offset; }
static void dissect_notify_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { proto_item* item; proto_tree* subtree; item = proto_tree_add_text(tree, tvb, offset, len, "Notify-PDU"); subtree = proto_item_add_subtree(item, ett_notify); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ offset += dissect_octet_string(tvb, subtree, offset, flags); } while(len > offset) { offset += dissect_varbind(tvb, subtree, offset, len, flags); } }
static void dissect_open_pdu(tvbuff_t *tvb, proto_tree *tree,int offset,int len, char flags) { proto_item* item; proto_tree* subtree; guint8 timeout; item = proto_tree_add_text(tree, tvb, offset, len, "Open-PDU"); subtree = proto_item_add_subtree(item, ett_open); timeout = tvb_get_guint8(tvb, offset); tvb_get_ntoh24(tvb, offset + 1); proto_tree_add_uint(subtree, hf_open_timeout, tvb, offset, 1, timeout); offset+=4; /* Search Range */ offset += dissect_object_id(tvb, subtree, offset, flags); /* Octet string */ offset += dissect_octet_string(tvb, subtree, offset, flags); }
static int dissect_open_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { proto_tree* subtree; guint8 timeout; subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_open, NULL, "Open-PDU"); timeout = tvb_get_guint8(tvb, offset); tvb_get_ntoh24(tvb, offset + 1); proto_tree_add_uint(subtree, hf_open_timeout, tvb, offset, 1, timeout); offset+=4; /* Search Range */ offset += dissect_object_id(tvb, subtree, offset, flags, OID_EXACT); /* Octet string */ offset += dissect_octet_string(tvb, subtree, offset, flags); return offset; }
static void dissect_getbulk_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { proto_tree* subtree; guint encoding = (flags & NETWORK_BYTE_ORDER) ? ENC_BIG_ENDIAN : ENC_LITTLE_ENDIAN; subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_getbulk, NULL, "GetBulk-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ offset += dissect_octet_string(tvb, subtree, offset, flags); } proto_tree_add_item(subtree, hf_gbulk_nrepeat, tvb, offset, 2, encoding); proto_tree_add_item(subtree, hf_gbulk_mrepeat, tvb, offset + 2, 2, encoding); offset+=4; while(len >= offset) { offset += dissect_search_range(tvb, subtree, offset, flags, 0); } }
static void dissect_getbulk_pdu(tvbuff_t *tvb, proto_tree *tree,int offset,int len, char flags) { proto_item* item; proto_tree* subtree; gboolean little_endian = !(flags & NETWORK_BYTE_ORDER); item = proto_tree_add_text(tree, tvb, offset, len, "GetBulk-PDU"); subtree = proto_item_add_subtree(item, ett_getbulk); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ offset += dissect_octet_string(tvb, subtree, offset, flags); } proto_tree_add_item(subtree, hf_gbulk_nrepeat, tvb, offset, 2, little_endian); proto_tree_add_item(subtree, hf_gbulk_mrepeat, tvb, offset + 2, 2, little_endian); offset+=4; while(len >= offset) { offset += dissect_search_range(tvb, subtree, offset, flags); } }