diff options
author | Pat Ruddy <pat@voltanet.io> | 2021-03-03 12:17:38 +0100 |
---|---|---|
committer | Pat Ruddy <pat@voltanet.io> | 2021-06-18 10:40:42 +0200 |
commit | ec44732ea3e9a84639defc4f054e017f7087fe05 (patch) | |
tree | db79f8b8ea2987ccddd52f8ac96b314f6ee50538 | |
parent | Merge pull request #8874 from idryzhov/ospf-routemap-fix (diff) | |
download | frr-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.c | 26 |
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) { |