mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-13 12:37:10 +00:00
pimd: Fix register receive pointer arithmetic
When receiving the register packet from another pim neighbor at the RP, we were adding an incorrect amount of bytes to find the start of the ip_hdr of the encapsulated data. This commit fixes this issue. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
09c02cc3c0
commit
83d8ff0074
@ -193,11 +193,18 @@ pim_register_recv (struct interface *ifp,
|
||||
* We need to know the inner source and dest
|
||||
*/
|
||||
bits = (uint32_t *)tlv_buf;
|
||||
ip_hdr = (struct ip *)(tlv_buf + PIM_MSG_REGISTER_LEN);
|
||||
|
||||
/*
|
||||
* tlv_buf points to the start of the |B|N|... Reserved
|
||||
* Line above. So we need to add 4 bytes to get to the
|
||||
* start of the actual Encapsulated data.
|
||||
*/
|
||||
#define PIM_MSG_REGISTER_BIT_RESERVED_LEN 4
|
||||
ip_hdr = (struct ip *)(tlv_buf + PIM_MSG_REGISTER_BIT_RESERVED_LEN);
|
||||
//hlen = (ip_hdr->ip_hl << 2) | PIM_MSG_REGISTER_LEN;
|
||||
//msg = (uint8_t *)tlv_buf + hlen;
|
||||
group = ip_hdr->ip_src;
|
||||
source = ip_hdr->ip_dst;
|
||||
source = ip_hdr->ip_src;
|
||||
group = ip_hdr->ip_dst;
|
||||
|
||||
if (I_am_RP (group) && (dest_addr.s_addr == ((RP (group))->rpf_addr.s_addr))) {
|
||||
sentRegisterStop = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user