Major cleanup with the goal to free src/defs.h from all sorts of stuff
authorBernd Petrovitsch <bernd@firmix.at>
Fri, 5 Sep 2008 11:38:54 +0000 (13:38 +0200)
committerBernd Petrovitsch <bernd@firmix.at>
Fri, 5 Sep 2008 11:38:54 +0000 (13:38 +0200)
not belonging into a global .h file but somewhere else. src/defs.h now contains
only global (and application/OLSR-independent items) and serves as the .h file file
for main.c and builddata.c (or do we want to split out quite small main.h and builddata.h?).

More in detail:
- strscpy() and  strscat() are full blown functions (and not just "one-liners").
  So they are IMHO too large that inlining makes sense (even if debugging is disabled and
  src and dest != NULL. Even than a loop and a funtion call is left).
  So we move them into the new common/string.[ch] files
- The declaration of the "now_times" variable is moved into src/scheduler.h since
  it's definition is in src/scheduler.c.
  The timestamp-related #defines are also moved into src/scheduler.h with it.
- MIN_PACKET_SIZE() is only used in parser.c. IMHO it should go into that .c file.
  Or at least - as the first step - into parser.h.
- The declaration of the "olsr_cnf" variable clearly belongs into src/olsr_cfg.h
- Almost all #include's are removed as no longer needed.
  And the missing #include's are added to that .c and .h files where necessary.
  The bsd/ and win32/ subdirectories also got #include's added as they use errno etc.
  Sorry, if I missed something.
Now we can use src/defs.h for more global "generic" stuff and e.g. #include <src/defs.h>
in e.g. common/*.[ch] - in only for the '#define INLINE'

52 files changed:
lib/arprefresh/src/olsrd_arprefresh.c
lib/bmf/src/Address.c
lib/bmf/src/Bmf.c
lib/bmf/src/NetworkInterfaces.c
lib/bmf/src/PacketHistory.c
lib/bmf/src/olsrd_plugin.c
lib/httpinfo/src/olsrd_httpinfo.c
lib/nameservice/src/nameservice.c
lib/quagga/src/quagga.c
lib/secure/src/olsrd_secure.c
lib/txtinfo/src/olsrd_plugin.c
src/bsd/kernel_routes.c
src/bsd/net.c
src/build_msg.c
src/common/avl.h
src/common/string.c [new file with mode: 0644]
src/common/string.h [new file with mode: 0644]
src/defs.h
src/duplicate_set.c
src/interfaces.c
src/ipc_frontend.c
src/ipc_frontend.h
src/ipcalc.h
src/link_set.c
src/linux/apm.c
src/linux/kernel_routes.c
src/linux/net.c
src/lq_packet.c
src/lq_plugin.c
src/main.c
src/mid_set.c
src/mpr.c
src/mpr_selector_set.c
src/neighbor_table.c
src/olsr.c
src/olsr_cfg.h
src/olsr_cookie.c
src/olsr_switch/Makefile
src/olsr_switch/ohs_cmd.c
src/packet.c
src/parser.c
src/parser.h
src/plugin_loader.c
src/plugin_util.c
src/process_routes.c
src/scheduler.c
src/scheduler.h
src/socket_parser.c
src/two_hop_neighbor_table.c
src/unix/ifnet.c
src/win32/kernel_routes.c
src/win32/net.c

index d45107d..5521b8a 100644 (file)
@@ -48,6 +48,8 @@
 #include <netpacket/packet.h>
 #include <linux/types.h>
 #include <linux/filter.h>
+#include <errno.h>
+#include <unistd.h>
 
 #include "olsrd_arprefresh.h"
 #include "kernel_routes.h"
index 7e99125..4bd4e08 100644 (file)
 
 /* System includes */
 #include <stddef.h> /* NULL */
+#include <string.h> /* strcmp */
 #include <assert.h> /* assert() */
 #include <netinet/ip.h> /* struct ip */
 #include <netinet/udp.h> /* struct udphdr */
 
 /* OLSRD includes */
 #include "defs.h" /* ipequal */
+#include "olsr_protocol.h" /* OLSRPORT */
 
 /* Plugin includes */
 #include "Bmf.h" /* BMF_ENCAP_PORT */
index ab0ec52..f8e38f0 100644 (file)
@@ -54,6 +54,7 @@
 #include <signal.h> /* sigset_t, sigfillset(), sigdelset(), SIGINT */
 #include <netinet/ip.h> /* struct ip */
 #include <netinet/udp.h> /* struct udphdr */
+#include <unistd.h> /* close() */
 
 /* OLSRD includes */
 #include "plugin_util.h" /* set_plugin_int */
index fc503e9..beb1c4f 100644 (file)
@@ -55,6 +55,7 @@
 #include <linux/if_tun.h> /* IFF_TAP */
 #include <netinet/ip.h> /* struct ip */
 #include <netinet/udp.h> /* SOL_UDP */
+#include <stdlib.h> /* atoi, malloc */
 
 /* OLSRD includes */
 #include "olsr.h" /* olsr_printf() */
index 9400a75..7bc6781 100644 (file)
 #include <string.h> /* memset */
 #include <sys/types.h> /* u_int16_t, u_int32_t */
 #include <netinet/ip.h> /* struct iphdr */
+#include <stdlib.h> /* atoi, malloc */
 
 /* OLSRD includes */
 #include "defs.h" /* GET_TIMESTAMP, TIMED_OUT */
 #include "olsr.h" /* olsr_printf */
+#include "scheduler.h" /* now_times */
 
 /* Plugin includes */
 #include "Packet.h"
index bc08401..8b320e8 100644 (file)
@@ -46,6 +46,7 @@
 #include "plugin_util.h"
 #include "defs.h" /* olsr_u8_t, olsr_cnf */
 #include "scheduler.h" /* olsr_start_timer() */
+#include "olsr_cfg.h" /* olsr_cnf() */
 
 /* BMF includes */
 #include "Bmf.h" /* InitBmf(), CloseBmf() */
index cfd3ab5..980f659 100644 (file)
@@ -63,6 +63,7 @@
 #include "socket_parser.h"
 #include "ipcalc.h"
 #include "lq_plugin.h"
+#include "common/string.h"
 
 #include "olsrd_httpinfo.h"
 #include "admin_interface.h"
index 2993a39..1e9534c 100644 (file)
@@ -46,6 +46,7 @@
 #include <sys/stat.h>
 #include <signal.h>
 #include <fcntl.h>
+#include <errno.h>
 
 #include "olsr.h"
 #include "ipcalc.h"
@@ -64,6 +65,7 @@
 #include "nameservice.h"
 #include "mapwrite.h"
 #include "compat.h"
+#include "common/string.h"
 
 
 /* config parameters */
index 6ee4d33..1dea74a 100644 (file)
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <fcntl.h>
+#include <errno.h>
+#include <unistd.h>
 
 #include "quagga.h"
 #include "olsr.h"
 #include "log.h"
 #include "defs.h"
 #include "routing_table.h"
+#include "common/string.h"
+
 
 #ifdef USE_UNIX_DOMAIN_SOCKET
 #include <sys/un.h>
index b253bcc..f5a9a8e 100644 (file)
@@ -59,6 +59,7 @@
 #include "parser.h"
 #include "scheduler.h"
 #include "net_olsr.h"
+#include "common/string.h"
 
 #ifdef USE_OPENSSL
 /* OpenSSL stuff */
index b9c3dd6..df6fa67 100644 (file)
@@ -53,6 +53,7 @@
 #include "olsrd_plugin.h"
 #include "olsrd_txtinfo.h"
 #include "defs.h"
+#include "olsr_cfg.h"
 
 
 #define PLUGIN_NAME    "OLSRD txtinfo plugin"
index 329654f..166b917 100644 (file)
@@ -49,6 +49,7 @@
 
 #include <net/if_dl.h>
 #include <ifaddrs.h>
+#include <errno.h>
 
 #ifdef _WRS_KERNEL
 #include <wrn/coreip/net/route.h>
index 0c7e39e..05bf848 100644 (file)
@@ -56,6 +56,7 @@
 #include <syslog.h>
 #include <netinet/in.h>
 #include <net/if.h>
+#include <errno.h>
 
 #ifdef _WRS_KERNEL
 #include <vxWorks.h>
index 25243d4..02dde70 100644 (file)
@@ -45,6 +45,8 @@
 #include "mantissa.h"
 #include "net_olsr.h"
 
+#include <stdlib.h>
+
 #define BMSG_DBGLVL 5
 
 #define OLSR_IPV4_HDRSIZE          12
index f71058d..aca803a 100644 (file)
 #ifndef _AVL_H
 #define _AVL_H
 
-#include <stddef.h>
-
-/* must be declared here because of circular dependency through "defs.h" */
+#include "../defs.h"
 
-#define INLINE inline __attribute__((always_inline))
+#include <stddef.h>
 
 struct avl_node {
   struct avl_node *parent;
diff --git a/src/common/string.c b/src/common/string.c
new file mode 100644 (file)
index 0000000..6cb3611
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * The olsr.org Optimized Link-State Routing daemon(olsrd)
+ * Copyright (c) 2008, Bernd Petrovitsch <bernd@firmix.at>
+ * 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 "common/string.h"
+
+#include <string.h>
+
+/*
+ * A somewhat safe version of strncpy and strncat. Note, that
+ * BSD/Solaris strlcpy()/strlcat() differ in implementation, while
+ * the BSD compiler prints out a warning if you use plain strcpy().
+ */
+char *strscpy(char *dest, const char *src, size_t size)
+{
+       register size_t l = 0;
+#if !defined(NODEBUG) && defined(DEBUG)
+       if (sizeof(dest) == size) fprintf(stderr, "Warning: probably sizeof(pointer) in strscpy(%p, %s, %d)!\n", dest, src, size);
+       if (NULL == dest) fprintf(stderr, "Warning: dest is NULL in strscpy!\n");
+       if (NULL == src) fprintf(stderr, "Warning: src is NULL in strscpy!\n");
+#endif
+       if (NULL != dest && NULL != src)
+       {
+               /* src does not need to be null terminated */
+               if (0 < size--) while(l < size && 0 != src[l]) l++;
+               dest[l] = 0;
+       }
+       return strncpy(dest, src, l);
+}
+
+char *strscat(char *dest, const char *src, size_t size)
+{
+  const size_t l = strlen(dest);
+  return strscpy(dest + l, src, size > l ? size - l : 0);
+}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/src/common/string.h b/src/common/string.h
new file mode 100644 (file)
index 0000000..f59e2f4
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * The olsr.org Optimized Link-State Routing daemon(olsrd)
+ * Copyright (c) 2008, Bernd Petrovitsch <bernd@firmix.at>
+ * 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 COMMON_STRING_H_
+#define COMMON_STRING_H_
+
+#include <stdlib.h>
+
+char *strscpy(char *dest, const char *src, size_t size);
+
+char *strscat(char *dest, const char *src, size_t size);
+
+#endif
+
+/*
+ * Local Variables:
+ * c-basic-offset: 2
+ * End:
+ */
index 1b4c240..eb11e0a 100644 (file)
  *
  */
 
-
 #ifndef _OLSR_DEFS
 #define _OLSR_DEFS
 
-/* Common includes */
-#include <sys/time.h>
-#include <sys/times.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-#include <time.h>
-
-#include "olsr_protocol.h"
-#include "olsr_cfg.h"
 
 extern const char olsrd_version[];
 extern const char build_date[]; 
@@ -70,7 +56,6 @@ extern const char build_host[];
 #define UDP_IPV4_HDRSIZE        28
 #define UDP_IPV6_HDRSIZE        62
 
-#define MIN_PACKET_SIZE(ver)   ((int)(sizeof(olsr_u8_t) * (((ver) == AF_INET) ? 4 : 7)))
 
 /* Debug helper macro */
 #ifdef DEBUG
@@ -91,19 +76,6 @@ extern FILE *debug_handle;
   } while (0)
 #endif
 
-/*
- * Provides a timestamp s1 milliseconds in the future according
- * to system ticks returned by times(2)
-*/
-#define GET_TIMESTAMP(s1)      (now_times + ((s1) / olsr_cnf->system_tick_divider))
-
-/* Compute the time in milliseconds when a timestamp will expire. */
-#define TIME_DUE(s1)   ((int)((s1) * olsr_cnf->system_tick_divider) - now_times)
-
-/* Returns TRUE if a timestamp is expired */
-#define TIMED_OUT(s1)  ((int)((s1) - now_times) < 0)
-
-
 #define ARRAYSIZE(x)   (sizeof(x)/sizeof(*(x)))
 #ifndef MAX
 #define MAX(x,y)       ((x) > (y) ? (x) : (y))
@@ -114,35 +86,6 @@ extern FILE *debug_handle;
 
 #define INLINE inline __attribute__((always_inline))
 
-/*
- * A somewhat safe version of strncpy and strncat. Note, that
- * BSD/Solaris strlcpy()/strlcat() differ in implementation, while
- * the BSD compiler prints out a warning if you use plain strcpy().
- */
-static INLINE char *strscpy(char *dest, const char *src, size_t size)
-{
-       register size_t l = 0;
-#if !defined(NODEBUG) && defined(DEBUG)
-       if (sizeof(dest) == size) fprintf(stderr, "Warning: probably sizeof(pointer) in strscpy(%p, %s, %d)!\n", dest, src, size);
-       if (NULL == dest) fprintf(stderr, "Warning: dest is NULL in strscpy!\n");
-       if (NULL == src) fprintf(stderr, "Warning: src is NULL in strscpy!\n");
-#endif
-       if (NULL != dest && NULL != src)
-       {
-               /* src does not need to be null terminated */
-               if (0 < size--) while(l < size && 0 != src[l]) l++;
-               dest[l] = 0;
-       }
-       return strncpy(dest, src, l);
-}
-
-static INLINE char *strscat(char *dest, const char *src, size_t size)
-{
-       register size_t l = strlen(dest);
-       return strscpy(dest + l, src, size > l ? size - l : 0);
-}
-
 /*
  * Queueing macros
  */
@@ -164,14 +107,6 @@ static INLINE char *strscat(char *dest, const char *src, size_t size)
 
 #define CLOSE(fd)  do { close(fd); (fd) = -1; } while (0)
 
-/*
- * Global olsrd configuragtion
- */
-extern struct olsrd_config *olsr_cnf;
-
-/* Timer data */
-extern clock_t now_times; /* current idea of times(2) reported uptime */
-
 #if defined WIN32
 extern olsr_bool olsr_win32_end_request;
 extern olsr_bool olsr_win32_end_flag;
@@ -187,3 +122,9 @@ extern olsr_bool olsr_win32_end_flag;
 unsigned long olsr_times(void);
 
 #endif
+
+/*
+ * Local Variables:
+ * c-basic-offset: 2
+ * End:
+ */
index c1e7dde..6f91e2d 100644 (file)
@@ -47,6 +47,8 @@
 #include "scheduler.h"
 #include "mantissa.h"
 
+#include <stdlib.h>
+
 static void olsr_cleanup_duplicate_entry(void *unused);
 
 struct avl_tree duplicate_set;
index 60d6261..c662757 100644 (file)
@@ -45,6 +45,7 @@
 #include "olsr.h"
 #include "net_olsr.h"
 #include "ipcalc.h"
+#include "common/string.h"
 
 /* The interface linked-list */
 struct interface *ifnet;
index e3070de..50d53ef 100644 (file)
@@ -54,6 +54,8 @@
 #include "net_olsr.h"
 #include "ipcalc.h"
 
+#include <stdlib.h>
+
 #ifdef WIN32
 #define close(x) closesocket(x)
 #define perror(x) WinSockPError(x)
index 5af4cf0..733aa7b 100644 (file)
@@ -56,6 +56,9 @@
 #include <signal.h>
 
 #include "defs.h"
+#include "olsr_types.h"
+#include "olsr_protocol.h"
+#include "interfaces.h"
 
 #define IPC_PORT 1212
 #define IPC_PACK_SIZE 44 /* Size of the IPC_ROUTE packet */
index 3fafd76..bbb9053 100644 (file)
 
 #include "olsr_types.h"
 #include "defs.h"
+#include "olsr_cfg.h"
 
 #include <limits.h>
+#include <string.h>
 #include <arpa/inet.h>
 
 struct ipaddr_str {
index 7f217b8..c4bc03a 100644 (file)
@@ -55,6 +55,7 @@
 #include "net_olsr.h"
 #include "ipcalc.h"
 #include "lq_plugin.h"
+#include "common/string.h"
 
 /* head node for all link sets */
 struct list_node link_entry_head;
index 2035d2d..c12488e 100644 (file)
@@ -45,6 +45,8 @@
 
 #include "apm.h"
 #include "defs.h"
+#include "olsr_cfg.h"
+
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
index 4a75bca..4666435 100644 (file)
@@ -42,6 +42,7 @@
 #include "kernel_routes.h"
 #include "ipc_frontend.h"
 
+
 #if !LINUX_POLICY_ROUTING
 #include "log.h"
 
@@ -50,6 +51,7 @@ static int delete_all_inet_gws(void);
 #else /* !LINUX_POLICY_ROUTING */
 
 #include <assert.h>
+#include <errno.h>
 #include <linux/types.h>
 #include <linux/rtnetlink.h>
 
index 7942de6..52c6aeb 100644 (file)
@@ -45,6 +45,8 @@
 
 #include "../net_os.h"
 #include "../ipcalc.h"
+#include "../common/string.h"
+#include "../olsr_protocol.h"
 
 #include <net/if.h>
 
@@ -54,6 +56,8 @@
 #include <string.h>
 #include <stdio.h>
 #include <syslog.h>
+#include <errno.h>
+#include <unistd.h>
 
 
 /* Redirect proc entry */
index 391e13e..6e47aea 100644 (file)
@@ -58,6 +58,8 @@
 #include "net_olsr.h"
 #include "lq_plugin.h"
 
+#include <stdlib.h>
+
 olsr_bool lq_tc_pending = OLSR_FALSE;
 
 static unsigned char msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE];
index 48c64ca..625d155 100644 (file)
@@ -47,6 +47,7 @@
 #include "olsr.h"
 #include "two_hop_neighbor_table.h"
 #include "common/avl.h"
+#include "common/string.h"
 
 #include "lq_plugin_default_float.h"
 #include "lq_plugin_default_fpm.h"
index 35b284a..c4b2926 100644 (file)
@@ -42,6 +42,8 @@
 #include <signal.h>
 #include <sys/stat.h>
 #include <assert.h>
+#include <errno.h>
+#include <sys/times.h>
 
 #include "ipcalc.h"
 #include "defs.h"
@@ -57,6 +59,7 @@
 #include "build_msg.h"
 #include "net_olsr.h"
 #include "ipc_frontend.h"
+#include "common/string.h"
 
 #if LINUX_POLICY_ROUTING
 #include <linux/types.h>
index 979e325..70b0dda 100644 (file)
@@ -51,6 +51,8 @@
 #include "packet.h"            /* struct mid_alias */
 #include "net_olsr.h"
 
+#include <stdlib.h>
+
 
 struct mid_entry mid_set[HASHSIZE];
 struct mid_address reverse_mid_set[HASHSIZE];
index 4e2daf1..3ed6606 100644 (file)
--- a/src/mpr.c
+++ b/src/mpr.c
@@ -47,6 +47,8 @@
 #include "scheduler.h"
 #include "net_olsr.h"
 
+#include <stdlib.h>
+
 /* Begin:
  * Prototypes for internal functions 
  */
index aa01c0a..e30a192 100644 (file)
@@ -38,7 +38,6 @@
  *
  */
 
-
 #include "ipcalc.h"
 #include "defs.h"
 #include "mpr_selector_set.h"
@@ -46,6 +45,8 @@
 #include "scheduler.h"
 #include "net_olsr.h"
 
+#include <stdlib.h>
+
 static olsr_u16_t ansn;
 
 /* MPR selector list */
index 31b1fa7..2c4c1cf 100644 (file)
@@ -50,6 +50,8 @@
 #include "mpr_selector_set.h"
 #include "net_olsr.h"
 
+#include <stdlib.h>
+
 
 struct neighbor_entry neighbortable[HASHSIZE];
 
index bf7e40d..e9626c1 100644 (file)
@@ -65,6 +65,9 @@
 
 #include <stdarg.h>
 #include <signal.h>
+#include <errno.h>
+#include <unistd.h>
+#include <stdlib.h>
 
 
 olsr_bool changes_topology;
index 5003d5c..1a81072 100644 (file)
@@ -246,6 +246,12 @@ struct olsrd_config
   float                    lq_nat_thresh;
 };
 
+/*
+ * Global olsrd configuragtion
+ */
+extern struct olsrd_config *olsr_cnf;
+
+
 #if defined __cplusplus
 extern "C" {
 #endif
index 484ee6f..b6ba786 100644 (file)
@@ -44,6 +44,9 @@
 #include "log.h"
 
 #include <assert.h>
+#include <errno.h>
+#include <stdlib.h>
+
 
 /* Root directory of the cookies we have in the system */
 static struct olsr_cookie_info *cookies[COOKIE_ID_MAX] = { 0 };
@@ -98,10 +101,8 @@ olsr_free_cookie(struct olsr_cookie_info *ci)
   /* Mark the cookie as unused */
   cookies[ci->ci_id] = NULL;
 
-  /* Free name if set */
-  if (ci->ci_name) {
-    free(ci->ci_name);
-  }
+  /* Free name */
+  free(ci->ci_name);
 
   /* Flush all the memory on the free list */
   if (ci->ci_type == OLSR_COOKIE_TYPE_MEMORY) {
index 31dfc2d..f1b3246 100644 (file)
@@ -8,6 +8,9 @@ else
 BINNAME = olsr_switch
 endif
 
+COMMON_SRCS=$(wildcard $(TOPDIR)/src/common/*.c)
+OBJS += $(COMMON_SRCS:%.c=%.o)
+
 default_target:        $(OBJS)
        $(CC) $(LDFLAGS) -o $(TOPDIR)/$(BINNAME) $(OBJS) $(LIBS)
 
@@ -15,5 +18,5 @@ ohs_cmd.o: CFLAGS += -Wno-cast-qual
 
 clean:
        rm -f *.[od]
-       rm -f *~
+       rm -f *~ .#* #*#
        rm -f $(TOPDIR)/$(BINNAME)
index 3188f8f..0ddda1b 100644 (file)
@@ -44,6 +44,7 @@
 #include "commands.h"
 #include "link_rules.h"
 #include "ipcalc.h"
+#include "../common/string.h"
 
 #include <string.h>
 #include <stdlib.h>
index 100642f..f8ee44b 100644 (file)
@@ -38,7 +38,6 @@
  *
  */
 
-
 #include "ipcalc.h"
 #include "defs.h"
 #include "link_set.h"
@@ -50,6 +49,9 @@
 #include "net_olsr.h"
 #include "lq_plugin.h"
 
+#include <stdlib.h>
+
+
 /**
  *Free the memory allocated for a HELLO packet.
  *
index 49aabc3..de7bb33 100644 (file)
@@ -53,6 +53,9 @@
 #include "print_packet.h"
 #include "net_olsr.h"
 
+#include <errno.h>
+#include <stdlib.h>
+
 #ifdef WIN32
 #undef EWOULDBLOCK
 #define EWOULDBLOCK WSAEWOULDBLOCK
index 7440b35..54e6971 100644 (file)
@@ -47,6 +47,8 @@
 
 #define PROMISCUOUS 0xffffffff
 
+#define MIN_PACKET_SIZE(ver)   ((int)(sizeof(olsr_u8_t) * (((ver) == AF_INET) ? 4 : 7)))
+
 typedef void parse_function(union olsr_message *, struct interface *, union olsr_ip_addr *);
 
 struct parse_function_entry
index 922ce19..f075a3b 100644 (file)
@@ -45,6 +45,9 @@
 #include "olsr.h"
 
 #include <dlfcn.h>
+#include <errno.h>
+#include <stdlib.h>
+
 
 /* Local functions */
 static int init_olsr_plugin(struct olsr_plugin *);
index d9f3dda..6a4933b 100644 (file)
@@ -42,6 +42,7 @@
 #include "plugin_util.h"
 #include "olsr.h"
 #include "defs.h"
+#include "common/string.h"
 
 #include <arpa/inet.h>
 
index e78228c..842ded5 100644 (file)
@@ -52,6 +52,8 @@
 #include "tc_set.h"
 #include "olsr_cookie.h"
 
+#include <errno.h>
+
 #ifdef WIN32
 #undef strerror
 #define strerror(x) StrError(x)
index 394504c..c773195 100644 (file)
 #include "link_set.h"
 #include "olsr_cookie.h"
 
-/* Timer data, global. Externed in defs.h */
+#include <stdlib.h>
+
+
+/* Timer data, global. Externed in scheduler.h */
 clock_t now_times;                    /* current idea of times(2) reported uptime */
 
 /* Hashed root of all timers */
index 6a73d30..ea81f42 100644 (file)
 
 #include "common/list.h"
 
+#include "olsr_types.h"
+
+#include <time.h>
+
 #define TIMER_WHEEL_SLOTS 256
 #define TIMER_WHEEL_MASK (TIMER_WHEEL_SLOTS - 1)
 
@@ -107,6 +111,21 @@ const char *olsr_wallclock_string(void);
 /* Main scheduler loop */
 void olsr_scheduler(void) __attribute__ ((noreturn));
 
+/*
+ * Provides a timestamp s1 milliseconds in the future according
+ * to system ticks returned by times(2)
+*/
+#define GET_TIMESTAMP(s1)      (now_times + ((s1) / olsr_cnf->system_tick_divider))
+
+/* Compute the time in milliseconds when a timestamp will expire. */
+#define TIME_DUE(s1)   ((int)((s1) * olsr_cnf->system_tick_divider) - now_times)
+
+/* Returns TRUE if a timestamp is expired */
+#define TIMED_OUT(s1)  ((int)((s1) - now_times) < 0)
+
+/* Timer data */
+extern clock_t now_times; /* current idea of times(2) reported uptime */
+
 #endif
 
 /*
index 679f538..d177828 100644 (file)
  */
 
 #include <unistd.h>
+
 #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
index 21c9c66..9cddc04 100644 (file)
@@ -46,6 +46,7 @@
 #include "net_olsr.h"
 #include "scheduler.h"
 
+#include <stdlib.h>
 
 struct neighbor_2_entry two_hop_neighbortable[HASHSIZE];
 
index c146e52..5420ba1 100644 (file)
@@ -58,6 +58,8 @@
 #include "lq_packet.h"
 #include "log.h"
 #include "link_set.h"
+#include "../common/string.h"
+
 #include <signal.h>
 #include <sys/types.h>
 #include <net/if.h>
@@ -67,6 +69,7 @@
 #include <arpa/inet.h>
 #include <netdb.h>
 #include <unistd.h>
+#include <errno.h>
 
 #define BUFSPACE  (127*1024)   /* max. input buffer size to request */
 
index 3671088..078e65e 100644 (file)
@@ -50,6 +50,8 @@
 #include <iprtrmib.h>
 #include <iphlpapi.h>
 
+#include <errno.h>
+
 char *StrError(unsigned int ErrNo);
 
 /**
index 6ed5dc7..87096cf 100644 (file)
@@ -51,6 +51,8 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <errno.h>
+
 #include "defs.h"
 #include "net_os.h"
 #include "net_olsr.h"