blob: 6fdcc8cb3ee7f7388aabe6a91474313f27fade0b [file] [log] [blame] [edit]
#
# this file defines some utilities for printing various structures
# found in the net-snmp source code. You can source it from within
# gdb and then use it to print variable chains, oids, etc directly
# from memory.
#
# as an example, consider the variables:
#
# oid *name;
# size_t name_len;
#
# normally display oids is difficult under gdb, and the best you can
# do is to use x/12dw name or so to print the first 12 numbers of the
# oid array. however, with this file you can now use:
#
# gdb> printoid name_len name
# .1.3.6.1.2.1.1.0
#
# which will print oids in a more readable fashion. etc...
#
define initme
set $varindent = ""
end
define hookpost-run
initme
end
define printvarval
printf "value: "
if $arg0->type == 2
printf "int: %d\n", $arg0->val.integer
end
if $arg0->type == 4
printf "string: %s\n", $arg0->val.string
end
if $arg0->type == 5
printf "ASN NULL\n"
end
if $arg0->type == 6
printoid (($arg0->val_len)/sizeof(oid)) $arg0->val.objid
end
if $arg0->type == 128
printf "NO SUCH NAME\n"
end
if $arg0->type == 129
printf "NO SUCH INSTANCE\n"
end
if $arg0->type == 130
printf "END OF MIB VIEW\n"
end
if $arg0->type == 194
printf "AGENTX INCL RANGE: "
printoid (($arg0->val_len)/sizeof(oid)) $arg0->val.objid
end
if $arg0->type == 195
printf "AGENTX EXCL RANGE: "
printoid (($arg0->val_len)/sizeof(oid)) $arg0->val.objid
end
end
document printvarval
printvarval VARPTR
prints the value part of a net-snmp "struct variable".
This is called from inside printvar.
end
define printvar
printf "%stype: %d\n", $varindent, $arg0->type
printf "%soid: ", $varindent
printoid $arg0->name_length $arg0->name
printf "%s", $varindent
printvarval $arg0
end
document printvar
printvar VARPTR
prints the variable information contained in a net-snmp struct
variable. printvarval POINTER will print it's oid, value type and
value contents
end
define printvars
set $tmpcount = 1
set $tmpvar = $arg0
set $varindent = " "
while $tmpvar != 0
printf "VARIABLE #%d\n", $tmpcount
printvar $tmpvar
set $tmpvar = $tmpvar->next_variable
set $tmpcount = $tmpcount + 1
end
set $varindent = ""
end
document printvars
printvars VARPTR
calls printvar repeatedly on a chain of variables, displaying all
the variables in a net-snmp struct variable chain.
end
define printoid
set $printoid_tmp = 0
while $printoid_tmp < $arg0
printf ".%d", $arg1[$printoid_tmp]
set $printoid_tmp = $printoid_tmp + 1
end
printf "\n"
end
document printoid
printoid LENGTH OIDPTR
prints an oid (.x.y.z...) given it's length and a pointer.
end
define poid
printoid $arg0_len $arg0
end
document poid
poid NAME
shorthand for 'printoid NAME_len NAME"
end
define poidl
printoid $arg0_length $arg0
end
document poidl
poid NAME
shorthand for 'printoid NAME_length NAME"
end
define printindex
printoid $arg0->len $arg0->oids
end
document printindex
printindex NETSNMP_INDEX_PTR
prints the OID contained in a netsnmp_index struct variable.
end