summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPat Ruddy <pat@voltanet.io>2021-03-03 12:17:38 +0100
committerPat Ruddy <pat@voltanet.io>2021-06-18 10:40:42 +0200
commitec44732ea3e9a84639defc4f054e017f7087fe05 (patch)
treedb79f8b8ea2987ccddd52f8ac96b314f6ee50538
parentMerge pull request #8874 from idryzhov/ospf-routemap-fix (diff)
downloadfrr-ec44732ea3e9a84639defc4f054e017f7087fe05.tar.xz
frr-ec44732ea3e9a84639defc4f054e017f7087fe05.zip
ospf6d: create an ospf_read_helper function
Take the contents of ospf6_receive and split the funtionality that deals with a single packet receipt and place it in a separate helper function. This is the first step in a refactor process to allow the ospf6_read task to read until failure. Signed-off-by: Pat Ruddy <pat@voltanet.io>
-rw-r--r--ospf6d/ospf6_message.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/ospf6d/ospf6_message.c b/ospf6d/ospf6_message.c
index 9a1d8b79b..1afcf78a8 100644
--- a/ospf6d/ospf6_message.c
+++ b/ospf6d/ospf6_message.c
@@ -1572,23 +1572,14 @@ void ospf6_message_terminate(void)
iobuflen = 0;
}
-int ospf6_receive(struct thread *thread)
+static int ospf6_read_helper(int sockfd, struct ospf6 *ospf6)
{
- int sockfd;
unsigned int len;
struct in6_addr src, dst;
ifindex_t ifindex;
struct iovec iovector[2];
struct ospf6_interface *oi;
struct ospf6_header *oh;
- struct ospf6 *ospf6;
-
- /* add next read thread */
- ospf6 = THREAD_ARG(thread);
- sockfd = THREAD_FD(thread);
-
- thread_add_read(master, ospf6_receive, ospf6, ospf6->fd,
- &ospf6->t_ospf6_receive);
/* initialize */
memset(&src, 0, sizeof(src));
@@ -1689,6 +1680,21 @@ int ospf6_receive(struct thread *thread)
return 0;
}
+int ospf6_receive(struct thread *thread)
+{
+ int sockfd;
+ struct ospf6 *ospf6;
+
+ /* add next read thread */
+ ospf6 = THREAD_ARG(thread);
+ sockfd = THREAD_FD(thread);
+
+ thread_add_read(master, ospf6_receive, ospf6, ospf6->fd,
+ &ospf6->t_ospf6_receive);
+
+ return ospf6_read_helper(sockfd, ospf6);
+}
+
static void ospf6_send(struct in6_addr *src, struct in6_addr *dst,
struct ospf6_interface *oi, struct ospf6_header *oh)
{