]> git.puffer.fish Git - mirror/frr.git/commitdiff
ospf6d: add packet apis
authorPat Ruddy <pat@voltanet.io>
Wed, 10 Mar 2021 18:40:14 +0000 (18:40 +0000)
committerPat Ruddy <pat@voltanet.io>
Fri, 18 Jun 2021 08:40:42 +0000 (09:40 +0100)
Add APIs to create, queue and dequeue OSPFv3 packets

Signed-off-by: Pat Ruddy <pat@voltanet.io>
ospf6d/ospf6_message.c
ospf6d/ospf6_message.h

index 8f9ae7b0c41fd71ef8cc09e1186c85ddfd976dbe..70ad7357647dc90e07e325bee414c33b582260b2 100644 (file)
@@ -271,7 +271,7 @@ struct ospf6_fifo *ospf6_fifo_new(void)
 }
 
 /* Add new packet to fifo. */
-void ospf6_fifo_push(struct ospf6_fifo *fifo, struct ospf6_packet *op)
+static void ospf6_fifo_push(struct ospf6_fifo *fifo, struct ospf6_packet *op)
 {
        if (fifo->tail)
                fifo->tail->next = op;
@@ -284,7 +284,8 @@ void ospf6_fifo_push(struct ospf6_fifo *fifo, struct ospf6_packet *op)
 }
 
 /* Add new packet to head of fifo. */
-void ospf6_fifo_push_head(struct ospf6_fifo *fifo, struct ospf6_packet *op)
+static void ospf6_fifo_push_head(struct ospf6_fifo *fifo,
+                                struct ospf6_packet *op)
 {
        op->next = fifo->head;
 
@@ -297,7 +298,7 @@ void ospf6_fifo_push_head(struct ospf6_fifo *fifo, struct ospf6_packet *op)
 }
 
 /* Delete first packet from fifo. */
-struct ospf6_packet *ospf6_fifo_pop(struct ospf6_fifo *fifo)
+static struct ospf6_packet *ospf6_fifo_pop(struct ospf6_fifo *fifo)
 {
        struct ospf6_packet *op;
 
@@ -343,6 +344,35 @@ void ospf6_fifo_free(struct ospf6_fifo *fifo)
        XFREE(MTYPE_OSPF6_FIFO, fifo);
 }
 
+void ospf6_packet_add(struct ospf6_interface *oi, struct ospf6_packet *op)
+{
+       /* Add packet to end of queue. */
+       ospf6_fifo_push(oi->obuf, op);
+
+       /* Debug of packet fifo*/
+       /* ospf_fifo_debug (oi->obuf); */
+}
+
+void ospf6_packet_add_top(struct ospf6_interface *oi, struct ospf6_packet *op)
+{
+       /* Add packet to head of queue. */
+       ospf6_fifo_push_head(oi->obuf, op);
+
+       /* Debug of packet fifo*/
+       /* ospf_fifo_debug (oi->obuf); */
+}
+
+void ospf6_packet_delete(struct ospf6_interface *oi)
+{
+       struct ospf6_packet *op;
+
+       op = ospf6_fifo_pop(oi->obuf);
+
+       if (op)
+               ospf6_packet_free(op);
+}
+
+
 static void ospf6_hello_recv(struct in6_addr *src, struct in6_addr *dst,
                             struct ospf6_interface *oi,
                             struct ospf6_header *oh)
index 4069e1048671f1324c49902e301d41e18a2a36cc..c7a5434e59ed8c6eda7e2f1529e74cfe45bd79bb 100644 (file)
@@ -159,12 +159,17 @@ extern void ospf6_lsack_print(struct ospf6_header *, int action);
 
 extern void ospf6_packet_free(struct ospf6_packet *op);
 extern struct ospf6_fifo *ospf6_fifo_new(void);
-extern void ospf6_fifo_push(struct ospf6_fifo *fifo, struct ospf6_packet *op);
-void ospf6_fifo_push_head(struct ospf6_fifo *fifo, struct ospf6_packet *op);
-extern struct ospf6_packet *ospf6_fifo_pop(struct ospf6_fifo *fifo);
-extern struct ospf6_packet *ospf6_fifo_head(struct ospf6_fifo *fifo);
 extern void ospf6_fifo_flush(struct ospf6_fifo *fifo);
 extern void ospf6_fifo_free(struct ospf6_fifo *fifo);
+struct ospf6_packet *ospf6_fifo_head(struct ospf6_fifo *fifo);
+
+/* temporary inclusinon of ospf6_interface.h for compile will be removed */
+#include "ospf6_interface.h"
+extern void ospf6_packet_add(struct ospf6_interface *oi,
+                            struct ospf6_packet *op);
+extern void ospf6_packet_add_top(struct ospf6_interface *oi,
+                                struct ospf6_packet *op);
+extern void ospf6_packet_delete(struct ospf6_interface *oi);
 
 extern int ospf6_iobuf_size(unsigned int size);
 extern void ospf6_message_terminate(void);