summaryrefslogtreecommitdiff
path: root/proto
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2019-02-03 20:22:40 +0100
committerOndrej Zajicek (work) <santiago@crfreenet.org>2019-02-03 20:22:40 +0100
commita9b97cbcb74d918f3f606eb87a506712dccd2832 (patch)
treec2701020ad82a516b7b6ff25a3c629ea243e7e83 /proto
parent16605f2fdad730b8bb570e17192dc5f45cf15d3f (diff)
OSPF: Send direct acknowledgements as unicast
Direct acknowledgements should be send as unicast to a corresponding neighbor. Only delayed acks should be send as multicast to all/designated routers.
Diffstat (limited to 'proto')
-rw-r--r--proto/ospf/lsack.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/proto/ospf/lsack.c b/proto/ospf/lsack.c
index 251b5e47..9198dd92 100644
--- a/proto/ospf/lsack.c
+++ b/proto/ospf/lsack.c
@@ -106,6 +106,13 @@ ospf_send_lsack_(struct ospf_proto *p, struct ospf_neighbor *n, int queue)
length = ospf_pkt_hdrlen(p) + i * sizeof(struct ospf_lsa_header);
pkt->length = htons(length);
+ if (queue == ACKL_DIRECT)
+ {
+ OSPF_PACKET(ospf_dump_lsack, pkt, "LSACK packet sent to nbr %R on %s", n->rid, ifa->ifname);
+ ospf_send_to(ifa, n->ip);
+ return;
+ }
+
OSPF_PACKET(ospf_dump_lsack, pkt, "LSACK packet sent via %s", ifa->ifname);
if (ifa->type == OSPF_IT_BCAST)