summaryrefslogtreecommitdiffstats
path: root/gdb/ospf.txt
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 09:53:30 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 09:53:30 +0000
commit2c7cac91ed6e7db0f6937923d2b57f97dbdbc337 (patch)
treec05dc0f8e6aa3accc84e3e5cffc933ed94941383 /gdb/ospf.txt
parentInitial commit. (diff)
downloadfrr-2c7cac91ed6e7db0f6937923d2b57f97dbdbc337.tar.xz
frr-2c7cac91ed6e7db0f6937923d2b57f97dbdbc337.zip
Adding upstream version 8.4.4.upstream/8.4.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'gdb/ospf.txt')
-rw-r--r--gdb/ospf.txt137
1 files changed, 137 insertions, 0 deletions
diff --git a/gdb/ospf.txt b/gdb/ospf.txt
new file mode 100644
index 0000000..984104b
--- /dev/null
+++ b/gdb/ospf.txt
@@ -0,0 +1,137 @@
+# GDB macros for use with Quagga.
+#
+# Macros in this file are specific to ospfd/. Definitions here depend on the
+# lib.txt macros file, which must also be loaed.
+#
+# The macro file can be loaded with 'source <filename>'. They can then be
+# called by the user. Macros that explore more complicated structs generally
+# take pointer arguments.
+
+define dump_ospf_lsa_flags
+ set $flags = $arg0
+
+ printf "%u: ", $flags
+
+ if $flags & 0x1
+ echo Self,
+ end
+ if $flags & 0x2
+ echo Self-checked,
+ end
+ if $flags & 0x4
+ echo Recvd,
+ end
+ if $flags & 0x8
+ echo Apprvd,
+ end
+ if $flags & 0x10
+ echo Discard,
+ end
+ if $flags & 0x20
+ echo Local-Xlt,
+ end
+ if $flags & 0x40
+ echo Premature-Aged,
+ end
+ if $flags & 0x40
+ echo In-Maxage,
+ end
+ echo \n
+end
+
+define dump_ospf_lsa_data
+ set $lsad = (struct lsa_header *)$arg0
+
+ echo ID / AdvRtr: \t\t
+ dump_s_addr &$lsad->id.s_addr
+ echo \ : \
+ dump_s_addr &$lsad->adv_router.s_addr
+ echo \n
+
+ def_ntohs &$lsad->ls_age
+ printf "Type: %2u Age: %4u,", $lsad->type, $_
+
+ def_ntohs &$lsad->length
+ printf " length: %2u", $_
+
+ def_ntohl &$lsad->ls_seqnum
+ printf " Seqnum: 0x%08x", $_
+
+ def_ntohs &$lsad->checksum
+ printf " csum: 0x%04x\n", $_
+
+ # return the age
+ def_ntohs &$lsad->ls_age
+end
+
+define dump_ospf_lsa
+ set $lsa = (struct ospf_lsa *)$arg0
+
+ #print/x *$lsa
+
+ dump_ospf_lsa_data $lsa->data
+
+ set $relage = $_ + (relative_time.tv_sec - $lsa->tv_recv.tv_sec)
+ printf "Relative age: %4u\n", $relage
+
+ dump_ospf_lsa_flags $lsa->flags
+
+ echo tv_recv: \
+ dump_timeval &$lsa->tv_recv
+ echo \ tv_orig: \
+ dump_timeval &$lsa->tv_orig
+ echo \n
+
+ printf "lock %2u", $lsa->lock
+ printf " stat %2d", $lsa->stat
+ printf " rtx count: %u", $lsa->retransmit_counter
+ printf " rfsh list: %d", $lsa->refresh_list
+ printf "\n\n"
+end
+
+define walk_ospf_lsdb
+ set $node = (struct route_node *)$arg0
+ set $top = (struct route_node *)$arg0
+ set $visited = 0
+
+ while ($node != 0)
+ set $prevl = $node
+
+ if ($node->info != 0)
+ dump_ospf_lsa $node->info
+ set $visited = $visited + 1
+ end
+
+ walk_route_table_next $top $node
+ set $node = $_
+
+ # we've gotten back to the top, finish
+ if ($node == $top)
+ set $node = 0
+ end
+ end
+ printf "Visited: %u\n", $visited
+end
+
+document walk_ospf_lsdb
+Walk through an OSPF LSDB (or subset thereof) and dump all the LSAs
+contained there-in.
+
+Argument: A (struct route_node *) pointing to the top of the
+LSDB route-table which should be dumped.
+end
+
+define ospf_backbone_lsdb_top
+ set $type = $arg0
+
+ set $ospf = ospf_master->ospf->head->data
+
+ output/x ((struct ospf *)$ospf)->backbone->lsdb->type[$type]->db->top
+ echo \n
+end
+document ospf_backbone_lsdb_top
+Dump location of the LSDB in the backbone area for the given LSA type
+
+Argument: Integer LSA type
+end
+