mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
lsa_cmp moved into lsalib.c
This commit is contained in:
parent
10be74da20
commit
db9fb72769
@ -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
|
void
|
||||||
ospf_dbdes_reqladd(struct ospf_dbdes_packet *ps, struct proto *p,
|
ospf_dbdes_reqladd(struct ospf_dbdes_packet *ps, struct proto *p,
|
||||||
struct ospf_neighbor *n)
|
struct ospf_neighbor *n)
|
||||||
@ -296,8 +276,6 @@ ospf_dbdes_rx(struct ospf_dbdes_packet *ps, struct proto *p,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//break; /* I should probably continue processing packet */
|
|
||||||
|
|
||||||
case NEIGHBOR_EXCHANGE:
|
case NEIGHBOR_EXCHANGE:
|
||||||
if((ps->imms.byte==n->imms.byte) && (ps->options=n->options) &&
|
if((ps->imms.byte==n->imms.byte) && (ps->options=n->options) &&
|
||||||
(ntohl(ps->ddseq)==n->ddr))
|
(ntohl(ps->ddseq)==n->ddr))
|
||||||
|
@ -16,3 +16,4 @@ void ospf_dbdes_rx(struct ospf_dbdes_packet *ps, struct proto *p,
|
|||||||
struct ospf_iface *ifa, u16 size);
|
struct ospf_iface *ifa, u16 size);
|
||||||
|
|
||||||
#endif /* _BIRD_OSPF_DBDES_H_ */
|
#endif /* _BIRD_OSPF_DBDES_H_ */
|
||||||
|
|
||||||
|
@ -283,3 +283,20 @@ lsasum_calculate(struct ospf_lsa_header *h,void *body,struct proto_ospf *po)
|
|||||||
ntohlsab(b,b,h->type,length+2);
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -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 ntohlsah(struct ospf_lsa_header *n, struct ospf_lsa_header *h);
|
||||||
void htonlsab(void *h, void *n, u8 type, u16 len);
|
void htonlsab(void *h, void *n, u8 type, u16 len);
|
||||||
void ntohlsab(void *n, void *h, 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_ */
|
#endif /* _BIRD_OSPF_LSALIB_H_ */
|
||||||
|
Loading…
Reference in New Issue
Block a user