diff options
Diffstat (limited to 'proto/ospf')
-rw-r--r-- | proto/ospf/dbdes.c | 22 | ||||
-rw-r--r-- | proto/ospf/dbdes.h | 1 | ||||
-rw-r--r-- | proto/ospf/lsalib.c | 17 | ||||
-rw-r--r-- | proto/ospf/lsalib.h | 7 |
4 files changed, 24 insertions, 23 deletions
diff --git a/proto/ospf/dbdes.c b/proto/ospf/dbdes.c index 3a8a9a1..ee2f96f 100644 --- a/proto/ospf/dbdes.c +++ b/proto/ospf/dbdes.c @@ -168,26 +168,6 @@ rxmt_timer_hook(timer *timer) } } -int -lsa_comp(struct ospf_lsa_header *l1, struct ospf_lsa_header *l2) - /* - * 1 l1 is newer - * 0 identical - * -1 l2 is newer - */ -{ - if(l1->sn<l2->sn) return 1; - if(l1->sn==l2->sn) - { - if(l1->checksum=!l2->checksum) return l1->checksum<l2->checksum ? -1 :1; - if(l1->age==MAXAGE) return 1; - if(l2->age==MAXAGE) return -1; - if(abs(l1->age-l2->age)>MAXAGEDIFF) return l1->age<l2->age ? 1 : -1; - } - return 0; - -} - void ospf_dbdes_reqladd(struct ospf_dbdes_packet *ps, struct proto *p, struct ospf_neighbor *n) @@ -296,8 +276,6 @@ ospf_dbdes_rx(struct ospf_dbdes_packet *ps, struct proto *p, break; } } - //break; /* I should probably continue processing packet */ - case NEIGHBOR_EXCHANGE: if((ps->imms.byte==n->imms.byte) && (ps->options=n->options) && (ntohl(ps->ddseq)==n->ddr)) diff --git a/proto/ospf/dbdes.h b/proto/ospf/dbdes.h index 6cbad97..09642ff 100644 --- a/proto/ospf/dbdes.h +++ b/proto/ospf/dbdes.h @@ -16,3 +16,4 @@ void ospf_dbdes_rx(struct ospf_dbdes_packet *ps, struct proto *p, struct ospf_iface *ifa, u16 size); #endif /* _BIRD_OSPF_DBDES_H_ */ + diff --git a/proto/ospf/lsalib.c b/proto/ospf/lsalib.c index d7ae1c6..72ca55c 100644 --- a/proto/ospf/lsalib.c +++ b/proto/ospf/lsalib.c @@ -283,3 +283,20 @@ lsasum_calculate(struct ospf_lsa_header *h,void *body,struct proto_ospf *po) ntohlsab(b,b,h->type,length+2); } +int +lsa_comp(struct ospf_lsa_header *l1, struct ospf_lsa_header *l2) + /* Return codes form view of l1 */ +{ + if(l1->sn<l2->sn) return CMP_NEWER; + if(l1->sn==l2->sn) + { + if(l1->checksum=!l2->checksum) + return l1->checksum<l2->checksum ? CMP_OLDER : CMP_NEWER; + if(l1->age==MAXAGE) return CMP_NEWER; + if(l2->age==MAXAGE) return CMP_OLDER; + if(abs(l1->age-l2->age)>MAXAGEDIFF) + return l1->age<l2->age ? CMP_NEWER : CMP_OLDER; + } + return CMP_SAME; +} + diff --git a/proto/ospf/lsalib.h b/proto/ospf/lsalib.h index 0eb6dce..b6547c7 100644 --- a/proto/ospf/lsalib.h +++ b/proto/ospf/lsalib.h @@ -14,6 +14,11 @@ void htonlsah(struct ospf_lsa_header *h, struct ospf_lsa_header *n); void ntohlsah(struct ospf_lsa_header *n, struct ospf_lsa_header *h); void htonlsab(void *h, void *n, u8 type, u16 len); void ntohlsab(void *n, void *h, u8 type, u16 len); -void lsasum_calculate(struct ospf_lsa_header *header, void *body, struct proto_ospf *p); +void lsasum_calculate(struct ospf_lsa_header *header, void *body, + struct proto_ospf *p); +#define CMP_NEWER 1 +#define CMP_SAME 0 +#define CMP_OLDER -1 +int lsa_comp(struct ospf_lsa_header *l1, struct ospf_lsa_header *l2); #endif /* _BIRD_OSPF_LSALIB_H_ */ |