Commit 5a01d744 authored by Juliusz Chroboczek's avatar Juliusz Chroboczek

Only send requests for unfeasible routes to the advertising neighbour.

parent 1a1c8054
...@@ -422,13 +422,13 @@ update_route(const unsigned char *a, const unsigned char *p, unsigned char plen, ...@@ -422,13 +422,13 @@ update_route(const unsigned char *a, const unsigned char *p, unsigned char plen,
if(feasible) if(feasible)
trigger_route_change(route, oldsrc, oldmetric); trigger_route_change(route, oldsrc, oldmetric);
else else
send_unfeasible_request(seqno, metric, a, p, plen); send_unfeasible_request(neigh, seqno, metric, a, p, plen);
if(lost) if(lost)
route_lost(oldsrc, oldmetric); route_lost(oldsrc, oldmetric);
} else { } else {
if(!feasible) { if(!feasible) {
send_unfeasible_request(seqno, metric, a, p, plen); send_unfeasible_request(neigh, seqno, metric, a, p, plen);
return NULL; return NULL;
} }
if(refmetric >= INFINITY) if(refmetric >= INFINITY)
...@@ -459,7 +459,8 @@ update_route(const unsigned char *a, const unsigned char *p, unsigned char plen, ...@@ -459,7 +459,8 @@ update_route(const unsigned char *a, const unsigned char *p, unsigned char plen,
/* We just received an unfeasible update. If it's any good, send /* We just received an unfeasible update. If it's any good, send
a request for a new seqno. */ a request for a new seqno. */
void void
send_unfeasible_request(unsigned short seqno, unsigned short metric, send_unfeasible_request(struct neighbour *neigh,
unsigned short seqno, unsigned short metric,
const unsigned char *a, const unsigned char *a,
const unsigned char *prefix, unsigned char plen) const unsigned char *prefix, unsigned char plen)
{ {
...@@ -475,7 +476,7 @@ send_unfeasible_request(unsigned short seqno, unsigned short metric, ...@@ -475,7 +476,7 @@ send_unfeasible_request(unsigned short seqno, unsigned short metric,
} }
if(!route || route->metric >= metric + 256) { if(!route || route->metric >= metric + 256) {
send_request_resend(NULL, prefix, plen, send_request_resend(neigh, prefix, plen,
src->metric >= INFINITY ? src->metric >= INFINITY ?
src->seqno : seqno_plus(src->seqno, 1), src->seqno : seqno_plus(src->seqno, 1),
hash_id(src->address)); hash_id(src->address));
......
...@@ -65,7 +65,8 @@ struct route *update_route(const unsigned char *a, ...@@ -65,7 +65,8 @@ struct route *update_route(const unsigned char *a,
unsigned short seqno, unsigned short refmetric, unsigned short seqno, unsigned short refmetric,
struct neighbour *neigh, struct neighbour *neigh,
const unsigned char *nexthop); const unsigned char *nexthop);
void send_unfeasible_request(unsigned short seqno, unsigned short metric, void send_unfeasible_request(struct neighbour *neigh,
unsigned short seqno, unsigned short metric,
const unsigned char *a, const unsigned char *a,
const unsigned char *prefix, unsigned char plen); const unsigned char *prefix, unsigned char plen);
void consider_route(struct route *route); void consider_route(struct route *route);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment