From 0ea8fb4abe5acad0b8f470bbdc5cc929b6a58ced Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Sat, 24 Apr 2010 15:18:21 +0200 Subject: Fixes and enhancements in 'show ospf state' command. Now it shows a distance, option to change showing reachable/all network nodes and better handling of AS-external LSAs in multiple areas. The command 'show ospf topology' was changed to not show stubnets in both OSPFv2 and OSPFv3 (previously it displayed stubnets in OSPFv2). --- proto/ospf/lsalib.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'proto/ospf/lsalib.c') diff --git a/proto/ospf/lsalib.c b/proto/ospf/lsalib.c index 35f02dc..53c2562 100644 --- a/proto/ospf/lsalib.c +++ b/proto/ospf/lsalib.c @@ -45,19 +45,16 @@ ospf_age(struct proto_ospf *po) struct top_hash_entry *en, *nxt; int flush = can_flush_lsa(po); - if (po->cleanup) OSPF_TRACE(D_EVENTS, "Running ospf_age cleanup"); - WALK_SLIST_DELSAFE(en, nxt, po->lsal) { - if (po->cleanup) + if (po->calcrt) { + /* Cleanup before ospf_rt_spf() */ en->color = OUTSPF; en->dist = LSINFINITY; en->nhi = NULL; en->nh = IPA_NONE; en->lb = IPA_NONE; - DBG("Infinitying Type: %u, Id: %R, Rt: %R\n", en->lsa.type, - en->lsa.id, en->lsa.rt); } if (en->lsa.age == LSA_MAXAGE) { @@ -88,7 +85,6 @@ ospf_age(struct proto_ospf *po) en->lsa.age = LSA_MAXAGE; } } - po->cleanup = 0; } void -- cgit v1.2.3 From 4e5fb4b60c59db3248fd12db2bc6f0424d798122 Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Sun, 25 Apr 2010 20:12:34 +0200 Subject: Skip LSA host<->network endianity conversions on big endians. --- proto/ospf/lsalib.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'proto/ospf/lsalib.c') diff --git a/proto/ospf/lsalib.c b/proto/ospf/lsalib.c index 53c2562..c932fe0 100644 --- a/proto/ospf/lsalib.c +++ b/proto/ospf/lsalib.c @@ -87,6 +87,7 @@ ospf_age(struct proto_ospf *po) } } +#ifndef CPU_BIG_ENDIAN void htonlsah(struct ospf_lsa_header *h, struct ospf_lsa_header *n) { @@ -138,6 +139,7 @@ ntohlsab(void *n, void *h, u16 len) for (i = 0; i < (len / sizeof(u32)); i++) hid[i] = ntohl(nid[i]); } +#endif /* little endian */ /* void @@ -184,7 +186,7 @@ lsasum_calculate(struct ospf_lsa_header *h, void *body) // log(L_WARN "Checksum %R %R %d start (len %d)", h->id, h->rt, h->type, length); htonlsah(h, h); - htonlsab(body, body, length - sizeof(struct ospf_lsa_header)); + htonlsab1(body, length - sizeof(struct ospf_lsa_header)); /* char buf[1024]; @@ -198,7 +200,7 @@ lsasum_calculate(struct ospf_lsa_header *h, void *body) // log(L_WARN "Checksum result %4x", h->checksum); ntohlsah(h, h); - ntohlsab(body, body, length - sizeof(struct ospf_lsa_header)); + ntohlsab1(body, length - sizeof(struct ospf_lsa_header)); } /* -- cgit v1.2.3