📄 ospfd_browser.c
字号:
Descriptions of configurable values can also\n\be found in Appendix C of\n\<a href=\"http://www.ietf.org/rfc/rfc2328.txt\">the OSPF specification.</a>\n\</td>\n\</tr>\n\</table>\n\</td>\n\\n\<!-- Right hand column -->\n\<td>\n\n";/* This one just asks for address and port to connect * to. */ char *query_attach = "\ <table cellpadding=0 cellspacing=0 border=0 width=400>\n\ <tr>\n\ <td>\n\ <center>\n\ Enter the IP address and port to which you wish to connect:\n\ </center>\n\ </td>\n\ </tr>\n\ </table>\n\ <table width=400>\n\ <tr>\n\ <td align=\"right\">\n\ IP Address:\n\ </td>\n\ <td align=\"left\">\n\ <form action=\"/cgi-bin/ospfd_browser\">\n\ <input name=\"command\" value=\"stat\" type=hidden>\n\ <input name=\"addr\" value=\"$addr$\" size=16>\n\ </td>\n\ </tr>\n\ <tr>\n\ <td align=\"right\">\n\ Port:\n\ </td>\n\ <td align=\"left\">\n\ <input name=\"port\" value=\"$port$\" size=5>\n\ </td>\n\ </tr>\n\ </table>\n\ <table width=400>\n\ <tr>\n\ <td>\n\ <center>\n\ <input type=\"submit\">\n\ </center>\n\ </td>\n\ </tr>\n\ </form>\n\ </table>\n";/* The statistics page. */char *statistics_page = "\<table cellpadding=0 cellspacing=0 border=0>\n\<tr>\n\<td>Router ID</td>\n\<td>$router_id$</td>\n\</tr>\n\<tr>\n\<td># AS-external-LSAs</td>\n\<td>$n_ases$</td>\n\</tr>\n\<tr>\n\<td>ASE checksum</td>\n\<td>$ase_xsum$</td>\n\</tr>\n\<tr>\n\<td># ASEs originated</td>\n\<td>$n_ase_orig$</td>\n\</tr>\n\<tr>\n\<td>ASEs allowed</td>\n\<td>$ase_ceiling$</td>\n\</tr>\n\<tr>\n\<td># Dijkstras</td>\n\<td>$n_dijkstra$</td>\n\</tr>\n\<tr>\n\<td># Areas</td>\n\<td>$n_areas$</td>\n\</tr>\n\<tr>\n\<td># Nbrs in Exchange</td>\n\<td>$n_exchange$</td>\n\</tr>\n\<tr>\n\<td>MOSPF enabled</td>\n\<td>$mospf$</td>\n\</tr>\n\<tr>\n\<td>Inter-area multicast</td>\n\<td>$ia_multicast$</td>\n\</tr>\n\<tr>\n\<td>Inter-AS multicast</td>\n\<td>$as_multicast$</td>\n\</tr>\n\<tr>\n\<td>In overflow state</td>\n\<td>$overflow$</td>\n\</tr>\n\<tr>\n\<td>ospfd version</td>\n\<td>$sw_vers$</td>\n\</tr>\n\</table>\n";/* The areas page. */char *area_header ="\<table border=1>\n\<caption>Router $router_id$'s attached OSPF areas.</caption>\n\<tr>\n\<th>Area</th>\n\<th>#Ifcs</th>\n\<th>#Routers</th>\n\<th>#LSAs</th>\n\<th>Xsum</th>\n\<th>Comments</th>\n\</tr>\n";char *area_row ="\<tr>\n\<td>$area_id$</td>\n\<td>$n_ifcs$</td>\n\<td>$n_rtrs$</td>\n\<td>$n_lsas$</td>\n\<td>$area_xsum$</td>\n\<td>$comments$</td>\n\</tr>\n";char *area_footer ="\</table>\n";/* The select area page. First print the top, then the * list of areas in <opton> tags, and the the * bottom. */char *select_area_top = "\ <table cellpadding=0 cellspacing=0 border=0 width=400>\n\ <tr>\n\ <td>\n\ <center>\n\ Please select the area whose link-state database\n\ you want displayed.\n\ </center>\n\ </td>\n\ </tr>\n\ </table>\n\ <table width=400>\n\ <tr>\n\ <td align=\"right\">\n\ Area ID:\n\ </td>\n\ <td align=\"left\">\n\ <form action=\"/cgi-bin/ospfd_browser\">\n\ <input name=\"command\" value=\"database\" type=hidden>\n\ <input name=\"addr\" value=\"$addr$\" type=hidden>\n\ <input name=\"port\" value=\"$port$\" type=hidden>\n\ <select name=\"area_id\">\n";char *select_area_bottom ="\ </select>\n\ </td>\n\ </tr>\n\ </table>\n\ <table width=400>\n\ <tr>\n\ <td>\n\ <center>\n\ <input type=\"submit\">\n\ </center>\n\ </td>\n\ </tr>\n\ </form>\n\ </table>\n\ </td>\n\ </tr>\n\ </table>\n";/* The pages used to display an area's link-state database */char *database_page_top = "\<table>\n\<tr>\n\<td width=200>\n\Router $router_id$'s link-state database for OSPF\n\Area $area_id$. AS-external-LSAs are not included.\n\</td>\n\</tr>\n\<tr>\n\<td>\n\</center>\n\<table border=1>\n\<tr>\n\<th>LSA Type</th>\n\<th>LS ID</th>\n\<th>Adv. Rtr.</th>\n\<th>LS Seqno</th>\n\<th>Xsum</th>\n\<th>Length</th>\n\<th>Age</th>\n\</tr>\n";char *ase_page_top = "\<table>\n\<tr>\n\<td width=200>\n\Router $router_id$'s database of AS-external-LSAs.\n\</td>\n\</tr>\n\<tr>\n\<td>\n\</center>\n\<table border=1>\n\<tr>\n\<th>LSA Type</th>\n\<th>LS ID</th>\n\<th>Adv. Rtr.</th>\n\<th>LS Seqno</th>\n\<th>Xsum</th>\n\<th>length</th>\n\<th>Age</th>\n\</tr>\n";char *database_row = "\<tr>\n\<td><a href=\"/cgi-bin/ospfd_browser?command=adv&addr=$addr$&port=$port$&area_id=$area_id$&ls_type=$ls_typeno$&ls_id=$ls_id$&adv_rtr=$adv_rtr$\">$ls_type$</a></td>\n\<td>$ls_id$</td>\n\<td>$adv_rtr$</td>\n\<td>$seqno$</td>\n\<td>$lsa_xsum$</td>\n\<td>$lsa_len$</td>\n\<td>$ls_age$</td>\n\</tr>\n";char *database_page_bottom = "\</table>\n\</td>\n\</tr>\n\<tr>\n\<td>\n\<table border=0>\n\<tr>\n\<td><b>#LSAs:</b></td>\n\<td>$n_lsas$</td>\n\</tr>\n\<tr>\n\<td><b>Xsum:</b></td>\n\<td>$area_xsum$</td>\n\</tr>\n\</table>\n\</table>\n";/* The pages used to display the Opaque-LSAs */char *opaque_page_top = "\<table>\n\<tr>\n\<td width=200>\n\Router $router_id$'s link-state database for OSPF\n\Area $area_id$. AS-external-LSAs are not included.\n\</td>\n\</tr>\n\<tr>\n\<td>\n\</center>\n\<table border=1>\n\<tr>\n\<th>Phyint</th>\n\<th>If Address</th>\n\<th>Area</th>\n\<th>LS type</th>\n\<th>LS ID</th>\n\<th>Adv. Rtr.</th>\n\<th>LS Seqno</th>\n\<th>Xsum</th>\n\<th>Length</th>\n\<th>Age</th>\n\</tr>\n";char *opaque_row = "\<tr>\n\<td>$phyint$</a></td>\n\<td>$if_addr$</a></td>\n\<td>$area_id$</a></td>\n\<td>$ls_type$</a></td>\n\<td>$ls_id$</td>\n\<td>$adv_rtr$</td>\n\<td>$seqno$</td>\n\<td>$lsa_xsum$</td>\n\<td>$lsa_len$</td>\n\<td>$ls_age$</td>\n\</tr>\n";/* Pages used to select a given LSA for display. * Top is followed by "<option>area" fields, * and then the bottom. */char *select_lsa_top = "\ <table cellpadding=0 cellspacing=0 border=0 width=400>\n\ <tr>\n\ <td>\n\ <center>\n\ Please select the link-state advertisement that\n\ you want displayed.\n\ </center>\n\ </td>\n\ </tr>\n\ </table>\n\ <table width=400>\n\ <form action=\"/cgi-bin/ospfd_browser\">\n\ <input name=\"command\" value=\"adv\" type=hidden>\n\ <input name=\"addr\" value=\"$addr$\" type=hidden>\n\ <input name=\"port\" value=\"$port$\" type=hidden>\n\ <tr>\n\ <td align=right>Area ID:</td>\n\ <td>\n\ <select name=\"area_id\">\n";char *select_lsa_bottom = "\ </select>\n\ </td>\n\ </tr>\n\ <tr>\n\ <td align=right>LS Type:</td>\n\ <td>\n\ <select name=\"ls_type\">\n\ <option value=\"1\">router-LSA\n\ <option value=\"2\">network-LSA\n\ <option value=\"3\">summary-LSA\n\ <option value=\"4\">ASBR-summary-LSA\n\ <option value=\"5\">AS-external-LSA\n\ <option value=\"6\">group-membership-LSA\n\ </select>\n\ </td>\n\ </tr>\n\ <tr>\n\ <td align=right>LS ID:</td>\n\ <td><input name=\"ls_id\" size=16></td>\n\ </tr>\n\ <tr>\n\ <td align=right>Adv Rtr:</td>\n\ <td><input name=\"adv_rtr\" size=16></td>\n\ </tr>\n\ </table>\n\ <table width=400>\n\ <tr>\n\ <td>\n\ <center>\n\ <input type=\"submit\">\n\ </center>\n\ </td>\n\ </tr>\n\ </form>\n\ </table>\n";/* Pages used to expand a given LSA. */char *expand_lsa_top = "\<table cellpadding=0 border=0>\n\<tr>\n\<td>\n\The following LSA was found in the Area\n\$area_id$ link-state database:\n\<hr>\n\<pre>\n";char *expand_lsa_bottom = "\</pre>\n\</td>\n\</tr>\n\</table>\n";/* Pages used to display the list of interfaces. */char *interface_page_top = "\<table border=1>\n\<caption>Router $router_id$'s OSPF interfaces.</caption>\n\<tr>\n\<th>Phy</th>\n\<th>Addr</th>\n\<th>Area</th>\n\<th>Type</th>\n\<th>State</th>\n\<th>#Nbr</th>\n\<th>#Adj</th>\n\<th>Cost</th>\n\</tr>\n";char *interface_row = "\<tr>\n\<td>$phyname$</td>\n\<td>$if_addr$</td>\n\<td>$if_area$</td>\n\<td>$if_type$</td>\n\<td>$if_state$</td>\n\<td>$if_nnbrs$</td>\n\<td>$if_nfull$</td>\n\<td>$if_cost$</td>\n\</tr>\n";char *interface_page_bottom = "\</table>\n";/* Pages used to display the list of neighbors. */char *neighbor_page_top = "\<table border=1>\n\<caption>Router $router_id$'s OSPF neighbors.</caption>\n\<tr>\n\<th>Phy</th>\n\<th>Addr</th>\n\<th>ID</th>\n\<th>State</th>\n\<th>#DD</th>\n\<th>#Req</th>\n\<th>#Rxmt</th>\n\</tr>\n";char *neighbor_row = "\<tr>\n\<td>$phyname$</td>\n\<td>$n_addr$</td>\n\<td>$n_id$</td>\n\<td>$n_state$</td>\n\<td>$n_ddlst$</td>\n\<td>$n_rqlst$</td>\n\<td>$rxmt_count$</td>\n\</tr>\n";char *neighbor_page_bottom = "\</table>\n";/* Pages used to display the routing table. */char *rttbl_page_top = "\<table border=1>\n\<caption>Router $router_id$'s OSPF routing table.\n\This is the OSPF protocol's internal routing table,\n\and does not necessarily match the routing\n\table in the kernel.</caption>\n\<tr>\n\<th>Prefix</th>\n\<th>Type</th>\n\<th>Cost</th>\n\<th>Ifc</th>\n\<th>Next-hop</th>\n\<th>#Paths</th>\n\</tr>\n";char *rttbl_row = "\<tr>\n\<td>$prefix$</td>\n\<td>$rt_type$</td>\n\<td>$rt_cost$</td>\n\<td>$rt_ifc$</td>\n\<td>$rt_nh$</td>\n\<td>$rt_paths$</td>\n\</tr>\n";char *rttbl_page_bottom = "\</table>\n";/* The footer that is printed with every page. */char *page_footer = "\</td>\n\</tr>\n\</table>\n\\n\<!-- Bottom of the page -->\n\<tr>\n\<td>\n\\n\<center>\n\<table cellpadding=0 cellspacing=0 border=0>\n\<tr>\n\<td width=420 valign=top>\n\<font face=\"Geneva, Arial, Helvetica\" >\n\<p><center>\n\<a href=\"/cgi-bin/ospfd_browser?command=area&addr=$addr$&port=$port$\">Areas</a> |\n\<a href=\"/cgi-bin/ospfd_browser?command=database&addr=$addr$&port=$port$\">Database</a> |\n\<a href=\"/cgi-bin/ospfd_browser?command=interface&addr=$addr$&port=$port$\">Interfaces</a> |\n\<a href=\"/cgi-bin/ospfd_browser?command=neighbor&addr=$addr$&port=$port$\">Neighbors</a> |\n\<a href=\"/cgi-bin/ospfd_browser?command=statistics&addr=$addr$&port=$port$\">Statistics</a> |\n\<a href=\"/cgi-bin/ospfd_browser?command=lsa&addr=$addr$&port=$port$\">LSA expansion</a> |\n\<a href=\"/cgi-bin/ospfd_browser?command=ases&addr=$addr$&port=$port$\">AS externals</a> |\n\<a href=\"/cgi-bin/ospfd_browser?command=route&addr=$addr$&port=$port$\">Routing table</a> |\n\<a href=\"/cgi-bin/ospfd_browser?command=opqs&addr=$addr$&port=$port$\">Opaque-LSAs</a>\n\</center>\n\</td>\n\</tr>\n\</table>\n\</center>\n\\n\</td>\n\</tr>\n\</table>\n\</center>\n\\n\</body>\n\</html>";/* The error page. */ char *error_page = "\ <table cellpadding=0 cellspacing=0 border=0 width=400>\n\ <center> <tr>\n\ <td align=\"center\">\n\ Data connection error:\n\ <br> $operation$: $errno$\n\ </td>\n\ </tr>\n\ </center>\n\ </table>\n";/* Display the error page, converting errno to * a string first. */void display_error(char *operation){ if (!header_printed) { display_html(page_header); header_printed = true; } addVP(&pairs, "operation", operation); addVP(&pairs, "errno", strerror(errno)); display_html(error_page); display_html(page_footer);}/* Non-zero values signal enabled. */const char *yesorno(byte val){ return((val != 0) ? "yes" : "no");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -