139 lines
3.0 KiB
Plaintext
139 lines
3.0 KiB
Plaintext
#
|
|
# 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
|
|
|