diff --git a/proto/ospf/iface.c b/proto/ospf/iface.c index 7015f012..c7dfa2f1 100644 --- a/proto/ospf/iface.c +++ b/proto/ospf/iface.c @@ -282,7 +282,7 @@ ospf_iface_default(struct ospf_iface *ifa) ifa->an=0; /* FIXME This should respect config */ ifa->cost=COST_D; ifa->rxmtint=RXMTINT_D; - ifa->iftransdelay=IFTRANSDELAY_D; + ifa->inftransdelay=INFTRANSDELAY_D; ifa->priority=PRIORITY_D; ifa->helloint=HELLOINT_D; ifa->deadc=DEADC_D; diff --git a/proto/ospf/lsupd.c b/proto/ospf/lsupd.c index 3390abb4..b372a219 100644 --- a/proto/ospf/lsupd.c +++ b/proto/ospf/lsupd.c @@ -105,9 +105,16 @@ flood_lsa(struct ospf_neighbor *n, struct ospf_lsa_header *hn, { u8 *help; struct top_hash_entry *en; - htonlsah(hh,(struct ospf_lsa_header *)(pk+1)); - help=(u8 *)(pk+1); - help+=sizeof(struct ospf_lsa_header); + struct ospf_lsa_header *lh; + u16 age; + + lh=(struct ospf_lsa_header *)(pk+1); + htonlsah(hh,lh); + age=hh->age; + age+=ifa->inftransdelay; + if(age>LSA_MAXAGE) age=LSA_MAXAGE; + lh->age=htons(age); + help=(u8 *)(lh+1); en=ospf_hash_find_header(oa->gr,hh); htonlsab(en->lsa_body,help,hh->type,hh->length); len=hh->length; diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h index 40ac691f..9ce0be9a 100644 --- a/proto/ospf/ospf.h +++ b/proto/ospf/ospf.h @@ -63,7 +63,7 @@ struct ospf_iface { list neigh_list; /* List of neigbours */ u16 cost; /* Cost of iface */ u16 rxmtint; /* number of seconds between LSA retransmissions */ - u16 iftransdelay; /* The estimated number of seconds it takes to + u16 inftransdelay; /* The estimated number of seconds it takes to transmit a Link State Update Packet over this interface. LSAs contained in the update */ u8 priority; /* A router priority for DR election */ @@ -95,7 +95,7 @@ struct ospf_iface { /* Default values for interface parameters */ #define COST_D 10 #define RXMTINT_D 5 -#define IFTRANSDELAY_D 1 +#define INFTRANSDELAY_D 1 #define PRIORITY_D 1 #define HELLOINT_D 10 #define DEADC_D 4