summaryrefslogtreecommitdiff
path: root/proto/ospf/lsack.c
diff options
context:
space:
mode:
Diffstat (limited to 'proto/ospf/lsack.c')
-rw-r--r--proto/ospf/lsack.c32
1 files changed, 29 insertions, 3 deletions
diff --git a/proto/ospf/lsack.c b/proto/ospf/lsack.c
index bb1afa0a..46528257 100644
--- a/proto/ospf/lsack.c
+++ b/proto/ospf/lsack.c
@@ -10,6 +10,25 @@
char *s_queue[] = { "direct", "delayed" };
+
+static void ospf_dump_lsack(struct proto *p, struct ospf_lsack_packet *pkt)
+{
+ struct ospf_packet *op = &pkt->ospf_packet;
+
+ ASSERT(op->type == LSACK_P);
+ ospf_dump_common(p, op);
+
+ struct ospf_lsa_header *plsa = (void *) (pkt + 1);
+ int i, j;
+
+ j = (ntohs(op->length) - sizeof(struct ospf_lsack_packet)) /
+ sizeof(struct ospf_lsa_header);
+
+ for (i = 0; i < j; i++)
+ ospf_dump_lsahdr(p, plsa + i);
+}
+
+
/*
* =====================================
* Note, that h is in network endianity!
@@ -42,8 +61,6 @@ ospf_lsack_send(struct ospf_neighbor *n, int queue)
if (EMPTY_LIST(n->ackl[queue]))
return;
- OSPF_TRACE(D_PACKETS, "LS ack sent to %I (%s)", n->ip, s_queue[queue]);
-
if (ifa->type == OSPF_IT_BCAST)
sk = ifa->hello_sk;
else
@@ -74,6 +91,10 @@ ospf_lsack_send(struct ospf_neighbor *n, int queue)
i * sizeof(struct ospf_lsa_header);
op->length = htons(len);
DBG("Sending and continuing! Len=%u\n", len);
+
+ OSPF_PACKET(ospf_dump_lsack, (struct ospf_lsack_packet *) sk->tbuf,
+ "LSACK packet sent via %s", ifa->iface->name);
+
if (ifa->type == OSPF_IT_BCAST)
{
if ((ifa->state == OSPF_IS_DR) || (ifa->state == OSPF_IS_BACKUP))
@@ -98,6 +119,10 @@ ospf_lsack_send(struct ospf_neighbor *n, int queue)
len = sizeof(struct ospf_lsack_packet) + i * sizeof(struct ospf_lsa_header);
op->length = htons(len);
DBG("Sending! Len=%u\n", len);
+
+ OSPF_PACKET(ospf_dump_lsack, (struct ospf_lsack_packet *) sk->tbuf,
+ "LSACK packet sent via %s", ifa->iface->name);
+
if (ifa->type == OSPF_IT_BCAST)
{
if ((ifa->state == OSPF_IS_DR) || (ifa->state == OSPF_IS_BACKUP))
@@ -125,7 +150,8 @@ ospf_lsack_receive(struct ospf_lsack_packet *ps,
struct proto *p = &ifa->oa->po->proto;
unsigned int size = ntohs(ps->ospf_packet.length), i;
- OSPF_TRACE(D_PACKETS, "Received LS ack from %I", n->ip);
+ OSPF_PACKET(ospf_dump_lsack, ps, "LSACK packet received from %I via %s", n->ip, ifa->iface->name);
+
ospf_neigh_sm(n, INM_HELLOREC);
if (n->state < NEIGHBOR_EXCHANGE)