mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 06:12:32 +00:00
ospf6d: Fix double increment of Sequence Number
When OSPF6 is creating the header for the ROUTER LSA type if the packet being sent has interface information to add to the data, the Sequence Number is at least double incremented. This change moves the header creation to outside the loop over all interfaces in the area. Additionally the header is created at the bottom of the function now. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
4543bbb45e
commit
385f703b16
@ -255,30 +255,6 @@ ospf6_router_lsa_originate (struct thread *thread)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Fill LSA Header */
|
||||
lsa_header->age = 0;
|
||||
lsa_header->type = htons (OSPF6_LSTYPE_ROUTER);
|
||||
lsa_header->id = htonl (link_state_id);
|
||||
lsa_header->adv_router = oa->ospf6->router_id;
|
||||
lsa_header->seqnum =
|
||||
ospf6_new_ls_seqnum (lsa_header->type, lsa_header->id,
|
||||
lsa_header->adv_router, oa->lsdb);
|
||||
lsa_header->length = htons ((caddr_t) lsdesc - (caddr_t) buffer);
|
||||
|
||||
/* LSA checksum */
|
||||
ospf6_lsa_checksum (lsa_header);
|
||||
|
||||
/* create LSA */
|
||||
lsa = ospf6_lsa_create (lsa_header);
|
||||
|
||||
/* Originate */
|
||||
ospf6_lsa_originate_area (lsa, oa);
|
||||
|
||||
/* Reset setting for consecutive origination */
|
||||
memset ((caddr_t) router_lsa + sizeof (struct ospf6_router_lsa),
|
||||
0, (caddr_t) lsdesc - (caddr_t) router_lsa);
|
||||
lsdesc = (struct ospf6_router_lsdesc *)
|
||||
((caddr_t) router_lsa + sizeof (struct ospf6_router_lsa));
|
||||
link_state_id ++;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user