diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-08-17 09:53:51 -0400 | 
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-08-17 09:53:51 -0400 | 
| commit | 907b430346b16f670a497e357ba48b01a3240144 (patch) | |
| tree | e10b8190bc22e4e04bc75d3f43fe894684415a2f | |
| parent | 3bbde7327a20efe80a58574a784290206c8efc93 (diff) | |
eigrpd: Store nbr in packet data
Store the neighbor information( if available ) in the packet
data that we are sending.  This will allow in a future commit
the ability to fixup the outgoing ack we are sending.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
| -rw-r--r-- | eigrpd/eigrp_hello.c | 2 | ||||
| -rw-r--r-- | eigrpd/eigrp_packet.c | 5 | ||||
| -rw-r--r-- | eigrpd/eigrp_packet.h | 2 | ||||
| -rw-r--r-- | eigrpd/eigrp_query.c | 2 | ||||
| -rw-r--r-- | eigrpd/eigrp_reply.c | 2 | ||||
| -rw-r--r-- | eigrpd/eigrp_siaquery.c | 2 | ||||
| -rw-r--r-- | eigrpd/eigrp_siareply.c | 2 | ||||
| -rw-r--r-- | eigrpd/eigrp_structs.h | 2 | ||||
| -rw-r--r-- | eigrpd/eigrp_update.c | 10 | 
9 files changed, 16 insertions, 13 deletions
diff --git a/eigrpd/eigrp_hello.c b/eigrpd/eigrp_hello.c index b7c2f7f18d..4654ead434 100644 --- a/eigrpd/eigrp_hello.c +++ b/eigrpd/eigrp_hello.c @@ -614,7 +614,7 @@ static struct eigrp_packet *eigrp_hello_encode(struct eigrp_interface *ei,  	u_int16_t length = EIGRP_HEADER_LEN;  	// allocate a new packet to be sent -	ep = eigrp_packet_new(ei->ifp->mtu); +	ep = eigrp_packet_new(ei->ifp->mtu, NULL);  	if (ep) {  		// encode common header feilds diff --git a/eigrpd/eigrp_packet.c b/eigrpd/eigrp_packet.c index dfc7463025..84c1b1c590 100644 --- a/eigrpd/eigrp_packet.c +++ b/eigrpd/eigrp_packet.c @@ -826,13 +826,14 @@ void eigrp_fifo_reset(struct eigrp_fifo *fifo)  	fifo->count = 0;  } -struct eigrp_packet *eigrp_packet_new(size_t size) +struct eigrp_packet *eigrp_packet_new(size_t size, struct eigrp_neighbor *nbr)  {  	struct eigrp_packet *new;  	new = XCALLOC(MTYPE_EIGRP_PACKET, sizeof(struct eigrp_packet));  	new->s = stream_new(size);  	new->retrans_counter = 0; +	new->nbr = nbr;  	return new;  } @@ -1121,7 +1122,7 @@ struct eigrp_packet *eigrp_packet_duplicate(struct eigrp_packet *old,  {  	struct eigrp_packet *new; -	new = eigrp_packet_new(nbr->ei->ifp->mtu); +	new = eigrp_packet_new(nbr->ei->ifp->mtu, nbr);  	new->length = old->length;  	new->retrans_counter = old->retrans_counter;  	new->dst = old->dst; diff --git a/eigrpd/eigrp_packet.h b/eigrpd/eigrp_packet.h index 2f607e5cab..890fc33c0f 100644 --- a/eigrpd/eigrp_packet.h +++ b/eigrpd/eigrp_packet.h @@ -36,7 +36,7 @@  extern int eigrp_read(struct thread *);  extern int eigrp_write(struct thread *); -extern struct eigrp_packet *eigrp_packet_new(size_t); +extern struct eigrp_packet *eigrp_packet_new(size_t, struct eigrp_neighbor *);  extern struct eigrp_packet *eigrp_packet_duplicate(struct eigrp_packet *,  						   struct eigrp_neighbor *);  extern void eigrp_packet_free(struct eigrp_packet *); diff --git a/eigrpd/eigrp_query.c b/eigrpd/eigrp_query.c index 653eae258f..92bc792c6a 100644 --- a/eigrpd/eigrp_query.c +++ b/eigrpd/eigrp_query.c @@ -159,7 +159,7 @@ void eigrp_send_query(struct eigrp_interface *ei)  	char has_tlv;  	bool ep_saved = false; -	ep = eigrp_packet_new(ei->ifp->mtu); +	ep = eigrp_packet_new(ei->ifp->mtu, NULL);  	/* Prepare EIGRP INIT UPDATE header */  	eigrp_packet_header_init(EIGRP_OPC_QUERY, ei, ep->s, 0, diff --git a/eigrpd/eigrp_reply.c b/eigrpd/eigrp_reply.c index 4eb08c60d0..c96c3008ca 100644 --- a/eigrpd/eigrp_reply.c +++ b/eigrpd/eigrp_reply.c @@ -114,7 +114,7 @@ void eigrp_send_reply(struct eigrp_neighbor *nbr, struct eigrp_prefix_entry *pe)  	 * End of filtering  	 */ -	ep = eigrp_packet_new(nbr->ei->ifp->mtu); +	ep = eigrp_packet_new(nbr->ei->ifp->mtu, nbr);  	/* Prepare EIGRP INIT UPDATE header */  	eigrp_packet_header_init(EIGRP_OPC_REPLY, nbr->ei, ep->s, 0, diff --git a/eigrpd/eigrp_siaquery.c b/eigrpd/eigrp_siaquery.c index f16f49a330..a5df2381ca 100644 --- a/eigrpd/eigrp_siaquery.c +++ b/eigrpd/eigrp_siaquery.c @@ -123,7 +123,7 @@ void eigrp_send_siaquery(struct eigrp_neighbor *nbr,  	struct eigrp_packet *ep;  	u_int16_t length = EIGRP_HEADER_LEN; -	ep = eigrp_packet_new(nbr->ei->ifp->mtu); +	ep = eigrp_packet_new(nbr->ei->ifp->mtu, nbr);  	/* Prepare EIGRP INIT UPDATE header */  	eigrp_packet_header_init(EIGRP_OPC_SIAQUERY, nbr->ei, ep->s, 0, diff --git a/eigrpd/eigrp_siareply.c b/eigrpd/eigrp_siareply.c index 9a768566d3..0b684b498b 100644 --- a/eigrpd/eigrp_siareply.c +++ b/eigrpd/eigrp_siareply.c @@ -122,7 +122,7 @@ void eigrp_send_siareply(struct eigrp_neighbor *nbr,  	struct eigrp_packet *ep;  	u_int16_t length = EIGRP_HEADER_LEN; -	ep = eigrp_packet_new(nbr->ei->ifp->mtu); +	ep = eigrp_packet_new(nbr->ei->ifp->mtu, nbr);  	/* Prepare EIGRP INIT UPDATE header */  	eigrp_packet_header_init(EIGRP_OPC_SIAREPLY, nbr->ei, ep->s, 0, diff --git a/eigrpd/eigrp_structs.h b/eigrpd/eigrp_structs.h index fd3e4b2014..0c15436d4f 100644 --- a/eigrpd/eigrp_structs.h +++ b/eigrpd/eigrp_structs.h @@ -311,6 +311,8 @@ struct eigrp_packet {  	/* EIGRP packet length. */  	u_int16_t length; + +	struct eigrp_neighbor *nbr;  };  struct eigrp_fifo { diff --git a/eigrpd/eigrp_update.c b/eigrpd/eigrp_update.c index e0169c514b..3c82fdfde8 100644 --- a/eigrpd/eigrp_update.c +++ b/eigrpd/eigrp_update.c @@ -463,7 +463,7 @@ void eigrp_update_send_init(struct eigrp_neighbor *nbr)  	struct eigrp_packet *ep;  	u_int16_t length = EIGRP_HEADER_LEN; -	ep = eigrp_packet_new(nbr->ei->ifp->mtu); +	ep = eigrp_packet_new(nbr->ei->ifp->mtu, nbr);  	/* Prepare EIGRP INIT UPDATE header */  	if (IS_DEBUG_EIGRP_PACKET(0, RECV)) @@ -546,7 +546,7 @@ void eigrp_update_send_EOT(struct eigrp_neighbor *nbr)  	struct prefix_ipv4 *dest_addr;  	u_int32_t seq_no = nbr->ei->eigrp->sequence_number; -	ep = eigrp_packet_new(nbr->ei->ifp->mtu); +	ep = eigrp_packet_new(nbr->ei->ifp->mtu, nbr);  	/* Prepare EIGRP EOT UPDATE header */  	eigrp_packet_header_init(EIGRP_OPC_UPDATE, nbr->ei, ep->s, EIGRP_EOT_FLAG, @@ -571,7 +571,7 @@ void eigrp_update_send_EOT(struct eigrp_neighbor *nbr)  				seq_no++;  				length = EIGRP_HEADER_LEN; -				ep = eigrp_packet_new(nbr->ei->ifp->mtu); +				ep = eigrp_packet_new(nbr->ei->ifp->mtu, nbr);  				eigrp_packet_header_init(EIGRP_OPC_UPDATE, nbr->ei, ep->s, EIGRP_EOT_FLAG,  							 seq_no, nbr->recv_sequence_number); @@ -635,7 +635,7 @@ void eigrp_update_send(struct eigrp_interface *ei)  	u_int16_t length = EIGRP_HEADER_LEN; -	ep = eigrp_packet_new(ei->ifp->mtu); +	ep = eigrp_packet_new(ei->ifp->mtu, NULL);  	/* Prepare EIGRP INIT UPDATE header */  	eigrp_packet_header_init(EIGRP_OPC_UPDATE, ei, ep->s, 0, @@ -835,7 +835,7 @@ static void eigrp_update_send_GR_part(struct eigrp_neighbor *nbr)  		}  	} -	ep = eigrp_packet_new(nbr->ei->ifp->mtu); +	ep = eigrp_packet_new(nbr->ei->ifp->mtu, nbr);  	/* Prepare EIGRP Graceful restart UPDATE header */  	eigrp_packet_header_init(EIGRP_OPC_UPDATE, nbr->ei, ep->s, flags,  | 
