diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-05-22 10:35:08 -0400 | 
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-07-24 13:51:37 -0400 | 
| commit | 472ad3832c1db4802a604e44e049ada8f04b53fa (patch) | |
| tree | d0fc5daa52a3fafa888e8736872adb38f5c60f82 /pimd/pim_msdp_packet.c | |
| parent | 2ad78035cc824f747e64274020140dcd0b95e3fd (diff) | |
pimd: Make msdp `struct pim_instance *` aware
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_msdp_packet.c')
| -rw-r--r-- | pimd/pim_msdp_packet.c | 50 | 
1 files changed, 26 insertions, 24 deletions
diff --git a/pimd/pim_msdp_packet.c b/pimd/pim_msdp_packet.c index 7860a6ac2a..8f93e65715 100644 --- a/pimd/pim_msdp_packet.c +++ b/pimd/pim_msdp_packet.c @@ -318,7 +318,7 @@ static void pim_msdp_pkt_sa_push_to_one_peer(struct pim_msdp_peer *mp)  		/* don't tx anything unless a session is established */  		return;  	} -	s = stream_dup(pimg->msdp.work_obuf); +	s = stream_dup(mp->pim->msdp.work_obuf);  	if (s) {  		pim_msdp_pkt_send(mp, s);  		mp->flags |= PIM_MSDP_PEERF_SA_JUST_SENT; @@ -333,7 +333,8 @@ static void pim_msdp_pkt_sa_push(struct pim_msdp_peer *mp)  	if (mp) {  		pim_msdp_pkt_sa_push_to_one_peer(mp);  	} else { -		for (ALL_LIST_ELEMENTS_RO(pimg->msdp.peer_list, mpnode, mp)) { +		for (ALL_LIST_ELEMENTS_RO(mp->pim->msdp.peer_list, mpnode, +					  mp)) {  			if (PIM_DEBUG_MSDP_INTERNAL) {  				zlog_debug("MSDP peer %s pim_msdp_pkt_sa_push",  					   mp->key_str); @@ -343,30 +344,30 @@ static void pim_msdp_pkt_sa_push(struct pim_msdp_peer *mp)  	}  } -static int pim_msdp_pkt_sa_fill_hdr(int local_cnt) +static int pim_msdp_pkt_sa_fill_hdr(struct pim_instance *pim, int local_cnt)  {  	int curr_tlv_ecnt; -	stream_reset(pimg->msdp.work_obuf); +	stream_reset(pim->msdp.work_obuf);  	curr_tlv_ecnt = local_cnt > PIM_MSDP_SA_MAX_ENTRY_CNT  				? PIM_MSDP_SA_MAX_ENTRY_CNT  				: local_cnt;  	local_cnt -= curr_tlv_ecnt; -	stream_putc(pimg->msdp.work_obuf, PIM_MSDP_V4_SOURCE_ACTIVE); -	stream_putw(pimg->msdp.work_obuf, +	stream_putc(pim->msdp.work_obuf, PIM_MSDP_V4_SOURCE_ACTIVE); +	stream_putw(pim->msdp.work_obuf,  		    PIM_MSDP_SA_ENTRY_CNT2SIZE(curr_tlv_ecnt)); -	stream_putc(pimg->msdp.work_obuf, curr_tlv_ecnt); -	stream_put_ipv4(pimg->msdp.work_obuf, pimg->msdp.originator_id.s_addr); +	stream_putc(pim->msdp.work_obuf, curr_tlv_ecnt); +	stream_put_ipv4(pim->msdp.work_obuf, pim->msdp.originator_id.s_addr);  	return local_cnt;  }  static void pim_msdp_pkt_sa_fill_one(struct pim_msdp_sa *sa)  { -	stream_put3(pimg->msdp.work_obuf, 0 /* reserved */); -	stream_putc(pimg->msdp.work_obuf, 32 /* sprefix len */); -	stream_put_ipv4(pimg->msdp.work_obuf, sa->sg.grp.s_addr); -	stream_put_ipv4(pimg->msdp.work_obuf, sa->sg.src.s_addr); +	stream_put3(sa->pim->msdp.work_obuf, 0 /* reserved */); +	stream_putc(sa->pim->msdp.work_obuf, 32 /* sprefix len */); +	stream_put_ipv4(sa->pim->msdp.work_obuf, sa->sg.grp.s_addr); +	stream_put_ipv4(sa->pim->msdp.work_obuf, sa->sg.src.s_addr);  }  static void pim_msdp_pkt_sa_gen(struct pim_msdp_peer *mp) @@ -374,16 +375,16 @@ static void pim_msdp_pkt_sa_gen(struct pim_msdp_peer *mp)  	struct listnode *sanode;  	struct pim_msdp_sa *sa;  	int sa_count; -	int local_cnt = pimg->msdp.local_cnt; +	int local_cnt = mp->pim->msdp.local_cnt;  	sa_count = 0;  	if (PIM_DEBUG_MSDP_INTERNAL) {  		zlog_debug("  sa gen  %d", local_cnt);  	} -	local_cnt = pim_msdp_pkt_sa_fill_hdr(local_cnt); +	local_cnt = pim_msdp_pkt_sa_fill_hdr(mp->pim, local_cnt); -	for (ALL_LIST_ELEMENTS_RO(pimg->msdp.sa_list, sanode, sa)) { +	for (ALL_LIST_ELEMENTS_RO(mp->pim->msdp.sa_list, sanode, sa)) {  		if (!(sa->flags & PIM_MSDP_SAF_LOCAL)) {  			/* current implementation of MSDP is for anycast i.e.  			 * full mesh. so @@ -402,7 +403,8 @@ static void pim_msdp_pkt_sa_gen(struct pim_msdp_peer *mp)  				zlog_debug("  sa gen for remainder %d",  					   local_cnt);  			} -			local_cnt = pim_msdp_pkt_sa_fill_hdr(local_cnt); +			local_cnt = +				pim_msdp_pkt_sa_fill_hdr(mp->pim, local_cnt);  		}  	} @@ -412,14 +414,14 @@ static void pim_msdp_pkt_sa_gen(struct pim_msdp_peer *mp)  	return;  } -static void pim_msdp_pkt_sa_tx_done(void) +static void pim_msdp_pkt_sa_tx_done(struct pim_instance *pim)  {  	struct listnode *mpnode;  	struct pim_msdp_peer *mp;  	/* if SA were sent to the peers we restart ka timer and avoid  	 * unnecessary ka noise */ -	for (ALL_LIST_ELEMENTS_RO(pimg->msdp.peer_list, mpnode, mp)) { +	for (ALL_LIST_ELEMENTS_RO(pim->msdp.peer_list, mpnode, mp)) {  		if (mp->flags & PIM_MSDP_PEERF_SA_JUST_SENT) {  			mp->flags &= ~PIM_MSDP_PEERF_SA_JUST_SENT;  			pim_msdp_peer_pkt_txed(mp); @@ -427,25 +429,25 @@ static void pim_msdp_pkt_sa_tx_done(void)  	}  } -void pim_msdp_pkt_sa_tx(void) +void pim_msdp_pkt_sa_tx(struct pim_instance *pim)  {  	pim_msdp_pkt_sa_gen(NULL /* mp */); -	pim_msdp_pkt_sa_tx_done(); +	pim_msdp_pkt_sa_tx_done(pim);  }  void pim_msdp_pkt_sa_tx_one(struct pim_msdp_sa *sa)  { -	pim_msdp_pkt_sa_fill_hdr(1 /* cnt */); +	pim_msdp_pkt_sa_fill_hdr(sa->pim, 1 /* cnt */);  	pim_msdp_pkt_sa_fill_one(sa);  	pim_msdp_pkt_sa_push(NULL); -	pim_msdp_pkt_sa_tx_done(); +	pim_msdp_pkt_sa_tx_done(sa->pim);  }  /* when a connection is first established we push all SAs immediately */  void pim_msdp_pkt_sa_tx_to_one_peer(struct pim_msdp_peer *mp)  {  	pim_msdp_pkt_sa_gen(mp); -	pim_msdp_pkt_sa_tx_done(); +	pim_msdp_pkt_sa_tx_done(mp->pim);  }  static void pim_msdp_pkt_rxed_with_fatal_error(struct pim_msdp_peer *mp) @@ -485,7 +487,7 @@ static void pim_msdp_pkt_sa_rx_one(struct pim_msdp_peer *mp, struct in_addr rp)  	if (PIM_DEBUG_MSDP_PACKETS) {  		zlog_debug("  sg %s", pim_str_sg_dump(&sg));  	} -	pim_msdp_sa_ref(mp, &sg, rp); +	pim_msdp_sa_ref(mp->pim, mp, &sg, rp);  }  static void pim_msdp_pkt_sa_rx(struct pim_msdp_peer *mp, int len)  | 
