Merge socket_parser.[ch] into scheduler.[ch]
authorBernd Petrovitsch <bernd@firmix.at>
Mon, 6 Oct 2008 23:35:07 +0000 (01:35 +0200)
committerBernd Petrovitsch <bernd@firmix.at>
Mon, 6 Oct 2008 23:35:07 +0000 (01:35 +0200)
There is no real and clear border between the two above. And the files
are not that large. So we simply merge them and loose one global
function (which is now "static").

13 files changed:
lib/dot_draw/src/olsrd_dot_draw.c
lib/httpinfo/src/olsrd_httpinfo.c
lib/pgraph/src/olsrd_pgraph.c
lib/secure/src/olsrd_secure.c
lib/txtinfo/src/olsrd_txtinfo.c
src/ipc_frontend.c
src/main.c
src/scheduler.c
src/scheduler.h
src/socket_parser.c [deleted file]
src/socket_parser.h [deleted file]
src/unix/ifnet.c
src/win32/ifnet.c

index bb0e447..d32966b 100644 (file)
@@ -49,7 +49,6 @@
 #include <wrn/coreip/netinet/in.h>
 #else
 #include <sys/types.h>
-#include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <sys/time.h>
@@ -72,7 +71,6 @@
 #include "hna_set.h"
 #include "mid_set.h"
 #include "link_set.h"
-#include "socket_parser.h"
 #include "net_olsr.h"
 #include "lq_plugin.h"
 
index 4b382b3..5e0b027 100644 (file)
@@ -60,7 +60,6 @@
 #include "olsr_protocol.h"
 #include "net_olsr.h"
 #include "link_set.h"
-#include "socket_parser.h"
 #include "ipcalc.h"
 #include "lq_plugin.h"
 #include "common/string.h"
index a8ed2c6..bdba6bf 100644 (file)
@@ -45,7 +45,6 @@
 
 #include "olsrd_pgraph.h"
 #include "ipcalc.h"
-#include "socket_parser.h"
 #include "olsrd_plugin.h"
 #include "plugin_util.h"
 #include "net_olsr.h"
index 8134427..cd58d9a 100644 (file)
@@ -55,7 +55,6 @@
 #include "defs.h"
 #include "ipcalc.h"
 #include "olsr.h"
-#include "socket_parser.h"
 #include "parser.h"
 #include "scheduler.h"
 #include "net_olsr.h"
index 3774e4e..40d17a5 100644 (file)
@@ -74,7 +74,6 @@
 #include "hna_set.h"
 #include "mid_set.h"
 #include "link_set.h"
-#include "socket_parser.h"
 #include "net_olsr.h"
 #include "lq_plugin.h"
 
index 5d8ade4..932fde0 100644 (file)
@@ -50,7 +50,7 @@
 #include "olsr.h"
 #include "log.h"
 #include "parser.h"
-#include "socket_parser.h"
+#include "scheduler.h"
 #include "net_olsr.h"
 #include "ipcalc.h"
 
index b04b88b..abc7b73 100644 (file)
@@ -53,7 +53,6 @@
 #include "parser.h"
 #include "generate_msg.h"
 #include "plugin_loader.h"
-#include "socket_parser.h"
 #include "apm.h"
 #include "net_os.h"
 #include "build_msg.h"
index 010602c..df2cd80 100644 (file)
 #include "olsr.h"
 #include "build_msg.h"
 #include "net_olsr.h"
-#include "socket_parser.h"
 #include "olsr_spf.h"
 #include "link_set.h"
 #include "olsr_cookie.h"
+#include "net_os.h"
 
 #include <stdlib.h>
+#include <errno.h>
 
 #ifdef WIN32
 #define random(x) rand(x)
@@ -79,6 +80,163 @@ static unsigned int timers_running;
 static void olsr_walk_timers(clock_t *);
 static struct list_node *olsr_get_next_list_entry(struct list_node **prev_node, struct list_node *current_node);
 
+static void olsr_poll_sockets(void);
+
+
+static struct olsr_socket_entry *olsr_socket_entries = NULL;
+
+/**
+ * Add a socket and handler to the socketset
+ * beeing used in the main select(2) loop
+ * in listen_loop
+ *
+ *@param fd the socket
+ *@param pf the processing function
+ */
+void
+add_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm, void *data, unsigned int flags)
+{
+  struct olsr_socket_entry *new_entry;
+
+  if (fd < 0 || (pf_pr == NULL && pf_imm == NULL)) {
+    olsr_syslog(OLSR_LOG_ERR, "%s: Bogus socket entry - not registering...", __func__);
+    return;
+  }
+  OLSR_PRINTF(2, "Adding OLSR socket entry %d\n", fd);
+
+  new_entry = olsr_malloc(sizeof(*new_entry), "Socket entry");
+
+  new_entry->fd = fd;
+  new_entry->process_immediate = pf_imm;
+  new_entry->process_pollrate = pf_pr;
+  new_entry->data = data;
+  new_entry->flags = flags;
+
+  /* Queue */
+  new_entry->next = olsr_socket_entries;
+  olsr_socket_entries = new_entry;
+}
+
+/**
+ * Remove a socket and handler to the socketset
+ * beeing used in the main select(2) loop
+ * in listen_loop
+ *
+ *@param fd the socket
+ *@param pf the processing function
+ */
+int
+remove_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm)
+{
+  struct olsr_socket_entry *entry, *prev_entry;
+
+  if (fd < 0 || (pf_pr == NULL && pf_imm == NULL)) {
+    olsr_syslog(OLSR_LOG_ERR, "%s: Bogus socket entry - not processing...", __func__);
+    return 0;
+  }
+  OLSR_PRINTF(1, "Removing OLSR socket entry %d\n", fd);
+
+  for (entry = olsr_socket_entries, prev_entry = NULL;
+       entry != NULL;
+       prev_entry = entry, entry = entry->next) {
+    if (entry->fd == fd && entry->process_immediate == pf_imm && entry->process_pollrate == pf_pr) {
+      if (prev_entry == NULL) {
+       olsr_socket_entries = entry->next;
+      } else {
+       prev_entry->next = entry->next;
+      }
+      free(entry);
+      return 1;
+    }
+  }
+  return 0;
+}
+
+static void
+olsr_poll_sockets(void)
+{
+  int n;
+  struct olsr_socket_entry *entry;
+  fd_set ibits, obits;
+  struct timeval tvp = { 0, 0 };
+  int hfd = 0, fdsets = 0;
+  const char * err_msg;
+  /* If there are no registered sockets we
+   * do not call select(2)
+   */
+  if (olsr_socket_entries == NULL) {
+    return;
+  }
+
+  FD_ZERO(&ibits);
+  FD_ZERO(&obits);
+  
+  /* Adding file-descriptors to FD set */
+  for (entry = olsr_socket_entries; entry != NULL; entry = entry->next) {
+    if (entry->process_pollrate == NULL) {
+      continue;
+    }
+    if ((entry->flags & SP_PR_READ) != 0) {
+      fdsets |= SP_PR_READ;
+      FD_SET((unsigned int)entry->fd, &ibits); /* And we cast here since we get a warning on Win32 */    
+    }
+    if ((entry->flags & SP_PR_WRITE) != 0) {
+      fdsets |= SP_PR_WRITE;
+      FD_SET((unsigned int)entry->fd, &obits); /* And we cast here since we get a warning on Win32 */    
+    }
+    if ((entry->flags & (SP_PR_READ|SP_PR_READ)) != 0) {
+      if (entry->fd >= hfd) {
+       hfd = entry->fd + 1;
+      }
+    }
+  }
+
+  if (hfd == 0) {
+    /* we didn't set anything - no need to continue */
+    return;
+  }
+      
+  /* Running select on the FD set */
+  do {
+    n = olsr_select(hfd, 
+                   fdsets & SP_PR_READ ? &ibits : NULL,
+                   fdsets & SP_PR_WRITE ? &obits : NULL,
+                   NULL,
+                   &tvp);
+  } while (n == -1 && (errno == EINTR || errno == EAGAIN));
+
+  switch (n) {
+  case 0:
+    break;
+
+  case -1:     /* Did somethig go wrong? */
+    err_msg = strerror(errno);
+    olsr_syslog(OLSR_LOG_ERR, "select: %s", err_msg);
+    OLSR_PRINTF(1, "Error select: %s", err_msg);
+    break;
+
+  default:     /* Update time since this is much used by the parsing functions */
+    now_times = olsr_times();
+    for (entry = olsr_socket_entries; entry != NULL; entry = entry->next) {
+      int rd, wr;
+      if (entry->process_pollrate == NULL) {
+       continue;
+      }
+      rd = (entry->flags & SP_PR_READ) != 0 && FD_ISSET(entry->fd, &ibits);
+      wr = (entry->flags & SP_PR_WRITE) != 0 && FD_ISSET(entry->fd, &obits);
+      if (rd && wr) {
+       entry->process_pollrate(entry->fd, entry->data, SP_PR_READ|SP_PR_WRITE);
+      } else if (wr) {
+       entry->process_pollrate(entry->fd, entry->data, SP_PR_READ);
+      } else if (rd) {
+       entry->process_pollrate(entry->fd, entry->data, SP_PR_WRITE);
+      }
+    }
+    break;
+  }
+}
+
+
 /**
  * Sleep until the next scheduling interval.
  *
index 84e6cd8..b55b844 100644 (file)
@@ -125,6 +125,30 @@ void olsr_scheduler(void) __attribute__ ((noreturn));
 /* Timer data */
 extern clock_t now_times; /* current idea of times(2) reported uptime */
 
+
+#define SP_PR_READ             0x01
+#define SP_PR_WRITE            0x02
+/*
+#define SP_IMM_READ            0x04
+#define SP_IMM_WRITE           0x08
+*/
+
+typedef void (*socket_handler_func)(int fd, void *data, unsigned int flags);
+
+
+struct olsr_socket_entry {
+  int fd;
+  socket_handler_func process_immediate;
+  socket_handler_func process_pollrate;
+  void *data;
+  unsigned int flags;
+  struct olsr_socket_entry *next;
+};
+
+void add_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm, void *data, unsigned int flags);
+int remove_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm);
+
+
 #endif
 
 /*
diff --git a/src/socket_parser.c b/src/socket_parser.c
deleted file mode 100644 (file)
index e8bd570..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004, Andreas T√łnnesen(andreto@olsr.org)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met:
- *
- * * Redistributions of source code must retain the above copyright 
- *   notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright 
- *   notice, this list of conditions and the following disclaimer in 
- *   the documentation and/or other materials provided with the 
- *   distribution.
- * * Neither the name of olsr.org, olsrd nor the names of its 
- *   contributors may be used to endorse or promote products derived 
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Visit http://www.olsr.org for more information.
- *
- * If you find this software useful feel free to make a donation
- * to the project. For more information see the website or contact
- * the copyright holders.
- *
- */
-
-#include "socket_parser.h"
-#include "scheduler.h"
-#include "olsr.h"
-#include "defs.h"
-#include "log.h"
-#include "net_os.h"
-
-#include <errno.h>
-#include <stdlib.h>
-
-
-#ifdef WIN32
-#undef EINTR
-#define EINTR WSAEINTR
-#undef errno
-#define errno WSAGetLastError()
-#undef strerror
-#define strerror(x) StrError(x)
-#endif
-
-static struct olsr_socket_entry *olsr_socket_entries = NULL;
-
-/**
- * Add a socket and handler to the socketset
- * beeing used in the main select(2) loop
- * in listen_loop
- *
- *@param fd the socket
- *@param pf the processing function
- */
-void
-add_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm, void *data, unsigned int flags)
-{
-  struct olsr_socket_entry *new_entry;
-
-  if (fd < 0 || (pf_pr == NULL && pf_imm == NULL)) {
-    olsr_syslog(OLSR_LOG_ERR, "%s: Bogus socket entry - not registering...", __func__);
-    return;
-  }
-  OLSR_PRINTF(2, "Adding OLSR socket entry %d\n", fd);
-
-  new_entry = olsr_malloc(sizeof(*new_entry), "Socket entry");
-
-  new_entry->fd = fd;
-  new_entry->process_immediate = pf_imm;
-  new_entry->process_pollrate = pf_pr;
-  new_entry->data = data;
-  new_entry->flags = flags;
-
-  /* Queue */
-  new_entry->next = olsr_socket_entries;
-  olsr_socket_entries = new_entry;
-}
-
-/**
- * Remove a socket and handler to the socketset
- * beeing used in the main select(2) loop
- * in listen_loop
- *
- *@param fd the socket
- *@param pf the processing function
- */
-int
-remove_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm)
-{
-  struct olsr_socket_entry *entry, *prev_entry;
-
-  if (fd < 0 || (pf_pr == NULL && pf_imm == NULL)) {
-    olsr_syslog(OLSR_LOG_ERR, "%s: Bogus socket entry - not processing...", __func__);
-    return 0;
-  }
-  OLSR_PRINTF(1, "Removing OLSR socket entry %d\n", fd);
-
-  for (entry = olsr_socket_entries, prev_entry = NULL;
-       entry != NULL;
-       prev_entry = entry, entry = entry->next) {
-    if (entry->fd == fd && entry->process_immediate == pf_imm && entry->process_pollrate == pf_pr) {
-      if (prev_entry == NULL) {
-       olsr_socket_entries = entry->next;
-      } else {
-       prev_entry->next = entry->next;
-      }
-      free(entry);
-      return 1;
-    }
-  }
-  return 0;
-}
-
-
-void
-olsr_poll_sockets(void)
-{
-  int n;
-  struct olsr_socket_entry *entry;
-  fd_set ibits, obits;
-  struct timeval tvp = { 0, 0 };
-  int hfd = 0, fdsets = 0;
-  const char * err_msg;
-  /* If there are no registered sockets we
-   * do not call select(2)
-   */
-  if (olsr_socket_entries == NULL) {
-    return;
-  }
-
-  FD_ZERO(&ibits);
-  FD_ZERO(&obits);
-  
-  /* Adding file-descriptors to FD set */
-  for (entry = olsr_socket_entries; entry != NULL; entry = entry->next) {
-    if (entry->process_pollrate == NULL) {
-      continue;
-    }
-    if ((entry->flags & SP_PR_READ) != 0) {
-      fdsets |= SP_PR_READ;
-      FD_SET((unsigned int)entry->fd, &ibits); /* And we cast here since we get a warning on Win32 */    
-    }
-    if ((entry->flags & SP_PR_WRITE) != 0) {
-      fdsets |= SP_PR_WRITE;
-      FD_SET((unsigned int)entry->fd, &obits); /* And we cast here since we get a warning on Win32 */    
-    }
-    if ((entry->flags & (SP_PR_READ|SP_PR_READ)) != 0) {
-      if (entry->fd >= hfd) {
-       hfd = entry->fd + 1;
-      }
-    }
-  }
-
-  if (hfd == 0) {
-    /* we didn't set anything - no need to continue */
-    return;
-  }
-      
-  /* Running select on the FD set */
-  do {
-    n = olsr_select(hfd, 
-                   fdsets & SP_PR_READ ? &ibits : NULL,
-                   fdsets & SP_PR_WRITE ? &obits : NULL,
-                   NULL,
-                   &tvp);
-  } while (n == -1 && (errno == EINTR || errno == EAGAIN));
-
-  switch (n) {
-  case 0:
-    break;
-
-  case -1:     /* Did somethig go wrong? */
-    err_msg = strerror(errno);
-    olsr_syslog(OLSR_LOG_ERR, "select: %s", err_msg);
-    OLSR_PRINTF(1, "Error select: %s", err_msg);
-    break;
-
-  default:     /* Update time since this is much used by the parsing functions */
-    now_times = olsr_times();
-    for (entry = olsr_socket_entries; entry != NULL; entry = entry->next) {
-      int rd, wr;
-      if (entry->process_pollrate == NULL) {
-       continue;
-      }
-      rd = (entry->flags & SP_PR_READ) != 0 && FD_ISSET(entry->fd, &ibits);
-      wr = (entry->flags & SP_PR_WRITE) != 0 && FD_ISSET(entry->fd, &obits);
-      if (rd && wr) {
-       entry->process_pollrate(entry->fd, entry->data, SP_PR_READ|SP_PR_WRITE);
-      } else if (wr) {
-       entry->process_pollrate(entry->fd, entry->data, SP_PR_READ);
-      } else if (rd) {
-       entry->process_pollrate(entry->fd, entry->data, SP_PR_WRITE);
-      }
-    }
-    break;
-  }
-}
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * End:
- */
diff --git a/src/socket_parser.h b/src/socket_parser.h
deleted file mode 100644 (file)
index cf8b1b9..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004, Andreas T√łnnesen(andreto@olsr.org)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met:
- *
- * * Redistributions of source code must retain the above copyright 
- *   notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright 
- *   notice, this list of conditions and the following disclaimer in 
- *   the documentation and/or other materials provided with the 
- *   distribution.
- * * Neither the name of olsr.org, olsrd nor the names of its 
- *   contributors may be used to endorse or promote products derived 
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Visit http://www.olsr.org for more information.
- *
- * If you find this software useful feel free to make a donation
- * to the project. For more information see the website or contact
- * the copyright holders.
- *
- */
-
-#ifndef _OLSR_SOCKET_PARSER
-#define _OLSR_SOCKET_PARSER
-
-#define SP_PR_READ             0x01
-#define SP_PR_WRITE            0x02
-/*
-#define SP_IMM_READ            0x04
-#define SP_IMM_WRITE           0x08
-*/
-
-typedef void (*socket_handler_func)(int fd, void *data, unsigned int flags);
-
-
-struct olsr_socket_entry {
-  int fd;
-  socket_handler_func process_immediate;
-  socket_handler_func process_pollrate;
-  void *data;
-  unsigned int flags;
-  struct olsr_socket_entry *next;
-};
-
-void olsr_poll_sockets(void);
-
-void add_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm, void *data, unsigned int flags);
-int remove_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm);
-
-#endif
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * End:
- */
index 37f856a..9272067 100644 (file)
@@ -50,7 +50,6 @@
 #include "olsr.h"
 #include "net_os.h"
 #include "net_olsr.h"
-#include "socket_parser.h"
 #include "parser.h"
 #include "scheduler.h"
 #include "generate_msg.h"
index 451fdc8..e407347 100644 (file)
  */
 
 #include <winsock2.h>
+
 #include "interfaces.h"
 #include "olsr.h"
 #include "parser.h"
-#include "socket_parser.h"
 #include "defs.h"
 #include "net_os.h"
 #include "ifnet.h"