summaryrefslogtreecommitdiffstats
path: root/proto/ospf/ospf.c
diff options
context:
space:
mode:
Diffstat (limited to 'proto/ospf/ospf.c')
-rw-r--r--proto/ospf/ospf.c64
1 files changed, 58 insertions, 6 deletions
diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c
index 7e7896a..70d8985 100644
--- a/proto/ospf/ospf.c
+++ b/proto/ospf/ospf.c
@@ -318,19 +318,38 @@ struct protocol proto_ospf = {
};
void
-ospf_sh_neigh(struct proto *p)
+ospf_sh_neigh(struct proto *p, char *iff)
{
- struct ospf_iface *ifa;
+ struct ospf_iface *ifa=NULL,*f;
struct ospf_neighbor *n;
struct proto_ospf *po=(struct proto_ospf *)p;
-
+
+ if(iff!=NULL)
+ {
+ WALK_LIST(f, po->iface_list)
+ {
+ if(strcmp(iff,f->iface->name)==0) ifa=f;
+ break;
+ }
+ if(ifa==NULL)
+ {
+ cli_msg(0,"");
+ return;
+ }
cli_msg(-1013,"%s:", p->name);
cli_msg(-1013,"%-12s\t%3s\t%-15s\t%-5s\t%-12s\t%-10s","Router ID","Pri",
" State", "DTime", "Router IP", "Interface");
- WALK_LIST(ifa,po->iface_list)
- WALK_LIST(n, ifa->neigh_list)
- ospf_sh_neigh_info(n);
+ WALK_LIST(n, ifa->neigh_list) ospf_sh_neigh_info(n);
cli_msg(0,"");
+ }
+
+ cli_msg(-1013,"%s:", p->name);
+ cli_msg(-1013,"%-12s\t%3s\t%-15s\t%-5s\t%-12s\t%-10s","Router ID","Pri",
+ " State", "DTime", "Router IP", "Interface");
+ WALK_LIST(ifa,po->iface_list)
+ WALK_LIST(n, ifa->neigh_list)
+ ospf_sh_neigh_info(n);
+ cli_msg(0,"");
}
void
@@ -371,3 +390,36 @@ ospf_sh(struct proto *p)
cli_msg(0,"");
}
+void
+ospf_sh_iface(struct proto *p, char *iff)
+{
+ struct ospf_area *oa;
+ struct proto_ospf *po=(struct proto_ospf *)p;
+ struct ospf_iface *ifa=NULL,*f;
+ struct ospf_neighbor *n;
+ int ifano;
+ int nno;
+ int adjno;
+
+ if(iff!=NULL)
+ {
+ WALK_LIST(f, po->iface_list)
+ {
+ if(strcmp(iff,f->iface->name)==0) ifa=f;
+ break;
+ }
+ if(ifa==NULL)
+ {
+ cli_msg(0,"");
+ return;
+ }
+ cli_msg(-1015,"%s:", p->name);
+ ospf_iface_info(ifa);
+ cli_msg(0,"");
+ return;
+ }
+ cli_msg(-1015,"%s:", p->name);
+ WALK_LIST(ifa, po->iface_list) ospf_iface_info(ifa);
+ cli_msg(0,"");
+}
+