From 9658d4527b2cf4b16d2ac2abbecbf8bcd2763848 Mon Sep 17 00:00:00 2001 From: Jeremy Lakeman Date: Mon, 15 Jun 2015 15:10:08 +0930 Subject: [PATCH] Don't attempt to retransmit routing link information --- overlay_mdp.c | 2 ++ overlay_packet.h | 9 +++++---- route_link.c | 4 +++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/overlay_mdp.c b/overlay_mdp.c index b23d13be..c57baf5e 100644 --- a/overlay_mdp.c +++ b/overlay_mdp.c @@ -902,6 +902,8 @@ int _overlay_send_frame(struct __sourceloc whence, struct internal_mdp_header *h frame->ttl = header->ttl; frame->queue = header->qos; frame->type = OF_TYPE_DATA; + frame->resend = header->resend; + if (!(header->crypt_flags & MDP_FLAG_NO_CRYPT)) frame->modifiers |= OF_CRYPTO_CIPHERED; if (!(header->crypt_flags & MDP_FLAG_NO_SIGN)) diff --git a/overlay_packet.h b/overlay_packet.h index 5c9253eb..5070157b 100644 --- a/overlay_packet.h +++ b/overlay_packet.h @@ -53,11 +53,11 @@ struct overlay_frame { // encrypted? signed? unsigned int modifiers; - unsigned char ttl; + uint8_t ttl; // Which QOS queue? - unsigned char queue; - // Should we keep trying until acked? - char resend; + uint8_t queue; + // How many times should we retransmit? + int8_t resend; // callback and context just before packet sending void *send_context; @@ -108,6 +108,7 @@ struct internal_mdp_header{ mdp_port_t source_port; struct subscriber *destination; mdp_port_t destination_port; + int8_t resend; uint8_t ttl; uint8_t qos; uint8_t crypt_flags; // combination of MDP_FLAG_NO_CRYPT & MDP_FLAG_NO_SIGN flags diff --git a/route_link.c b/route_link.c index df6e39be..32a1efaa 100644 --- a/route_link.c +++ b/route_link.c @@ -849,7 +849,7 @@ static int send_neighbour_link(struct neighbour *n) frame->send_hook = neighbour_link_sent; frame->send_context = n->subscriber; - frame->resend=-1; + frame->resend = -1; if (n->subscriber->reachable & REACHABLE){ frame->destination = n->subscriber; @@ -950,6 +950,8 @@ void link_send(struct sched_ent *alarm) header.ttl = 1; header.qos = OQ_MESH_MANAGEMENT; header.crypt_flags = MDP_FLAG_NO_CRYPT|MDP_FLAG_NO_SIGN; + header.resend = -1; + ob_limitsize(payload, 400); ob_checkpoint(payload);