Import Upstream version 1.2.2
[quagga-debian.git] / gdb / ospf.txt
1 # GDB macros for use with Quagga.
2 #
3 # Macros in this file are specific to ospfd/. Definitions here depend on the
4 # lib.txt macros file, which must also be loaed.
5 #
6 # The macro file can be loaded with 'source <filename>'. They can then be   
7 # called by the user. Macros that explore more complicated structs generally
8 # take pointer arguments. 
9
10 define dump_ospf_lsa_flags
11   set $flags = $arg0
12   
13   printf "%u: ", $flags
14   
15   if $flags & 0x1
16     echo Self,
17   end
18   if $flags & 0x2
19     echo Self-checked,
20   end
21   if $flags & 0x4
22     echo Recvd,
23   end
24   if $flags & 0x8
25     echo Apprvd,
26   end
27   if $flags & 0x10
28     echo Discard,
29   end
30   if $flags & 0x20
31     echo Local-Xlt,
32   end
33   if $flags & 0x40
34     echo Premature-Aged,
35   end
36   if $flags & 0x40
37     echo In-Maxage,
38   end
39   echo \n
40 end
41
42 define dump_ospf_lsa_data
43   set $lsad = (struct lsa_header *)$arg0
44   
45   echo ID / AdvRtr:  \t\t
46   dump_s_addr &$lsad->id.s_addr
47   echo \ : \ 
48   dump_s_addr &$lsad->adv_router.s_addr
49   echo \n
50   
51   def_ntohs &$lsad->ls_age
52   printf "Type: %2u Age: %4u,", $lsad->type, $_
53   
54   def_ntohs &$lsad->length
55   printf " length: %2u", $_
56   
57   def_ntohl &$lsad->ls_seqnum
58   printf " Seqnum: 0x%08x", $_
59   
60   def_ntohs &$lsad->checksum
61   printf " csum: 0x%04x\n", $_
62   
63   # return the age
64   def_ntohs &$lsad->ls_age
65 end
66
67 define dump_ospf_lsa
68   set $lsa = (struct ospf_lsa *)$arg0
69   
70   #print/x *$lsa
71   
72   dump_ospf_lsa_data $lsa->data
73   
74   set $relage = $_ + (relative_time.tv_sec - $lsa->tv_recv.tv_sec)
75   printf "Relative age: %4u\n", $relage
76   
77   dump_ospf_lsa_flags $lsa->flags
78   
79   echo tv_recv: \ 
80   dump_timeval &$lsa->tv_recv
81   echo \ tv_orig: \ 
82   dump_timeval &$lsa->tv_orig
83   echo \n
84   
85   printf "lock %2u", $lsa->lock
86   printf " stat %2d", $lsa->stat
87   printf " rtx count: %u", $lsa->retransmit_counter
88   printf " rfsh list: %d", $lsa->refresh_list
89   printf "\n\n"
90 end
91
92 define walk_ospf_lsdb
93   set $node = (struct route_node *)$arg0
94   set $top = (struct route_node *)$arg0
95   set $visited = 0
96   
97   while ($node != 0)
98     set $prevl = $node
99     
100     if ($node->info != 0)
101       dump_ospf_lsa $node->info
102       set $visited = $visited + 1
103     end
104     
105     walk_route_table_next $top $node
106     set $node = $_
107     
108     # we've gotten back to the top, finish
109     if ($node == $top)
110       set $node = 0
111     end
112   end
113   printf "Visited: %u\n", $visited
114 end
115
116 document walk_ospf_lsdb
117 Walk through an OSPF LSDB (or subset thereof) and dump all the LSAs
118 contained there-in.
119
120 Argument: A (struct route_node *) pointing to the top of the
121 LSDB route-table which should be dumped.
122 end
123
124 define ospf_backbone_lsdb_top
125   set $type = $arg0
126   
127   set $ospf = ospf_master->ospf->head->data
128   
129   output/x ((struct ospf *)$ospf)->backbone->lsdb->type[$type]->db->top
130   echo \n
131 end
132 document ospf_backbone_lsdb_top
133 Dump location of the LSDB in the backbone area for the given LSA type
134
135 Argument: Integer LSA type
136 end
137