Fix several warnings and plugin errors in BSD/WIN32
authorHenning Rogge <hrogge@googlemail.com>
Sat, 9 Jan 2010 11:02:40 +0000 (12:02 +0100)
committerHenning Rogge <hrogge@googlemail.com>
Sat, 9 Jan 2010 11:02:40 +0000 (12:02 +0100)
14 files changed:
Makefile
Makefile.inc
lib/dot_draw/src/olsrd_dot_draw.c
lib/httpinfo/src/olsrd_httpinfo.c
lib/secure/src/olsrd_secure.c
lib/txtinfo/src/olsrd_txtinfo.c
src/hna_set.c
src/ipcalc.h
src/main.c
src/net_olsr.c
src/olsr_switch/main.c
src/parser.c
src/socket_parser.c
src/win32/compat.c

index 5b24b6a..7aef563 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -154,7 +154,7 @@ ifeq ($(OS),android)
 # nameservice: no regex
 SUBDIRS := bmf dot_draw dyn_gw_plain httpinfo mini quagga secure tas txtinfo watchdog
 else
-SUBDIRS := bmf dot_draw dyn_gw dyn_gw_plain httpinfo mini nameservice pgraph secure txtinfo watchdog
+SUBDIRS := dot_draw dyn_gw dyn_gw_plain httpinfo mini nameservice pgraph secure txtinfo watchdog
 endif
 endif
 endif
index 9b9a731..19c7d42 100644 (file)
@@ -17,6 +17,13 @@ OPTIMIZE ?=
 # you need a recent enough gcc and the libmudflap installed
 MUDFLAP ?= 0
 
+# OS detection
+ifeq ($(OS),Windows_NT)
+OS := win32
+endif
+ifeq ($(OS),)
+OS := $(shell sh $(TOPDIR)/make/guess_os.sh)
+endif
 
 ######################
 #
@@ -125,12 +132,19 @@ endif
 ifdef OLSRD_PLUGIN
 # c and ld flags for libraries (plugins)
 CPPFLAGS +=    -DOLSR_PLUGIN
+ifeq ($(OS),win32)
+  LDFLAGS +=   -Wl,-export-all-symbols,--enable-auto-import
+endif
 LDFLAGS +=     -shared
 LDFLAGS +=     -Wl,-soname,$(PLUGIN_NAME)
 LDFLAGS +=     -Wl,--version-script=version-script.txt 
 else
 # c and ld flags for main
-LDFLAGS +=     -Wl,-export-dynamic 
+ifeq ($(OS),win32)
+  LDFLAGS +=   -Wl,-export-all-symbols
+else 
+  LDFLAGS +=   -Wl,-export-dynamic 
+endif
 LDFLAGS +=     -Wl,-rpath,$(LIBDIR)
 endif
 # LDFLAGS for all 
@@ -161,13 +175,6 @@ CPPFLAGS +=     -DUSE_FPM
 SRCS +=                $(wildcard src/common/*.c src/*.c *.c)
 HDRS +=                $(wildcard src/common/*.h src/*.h *.h)
 
-# OS detection
-ifeq ($(OS),Windows_NT)
-OS := win32
-endif
-ifeq ($(OS),)
-OS := $(shell sh $(TOPDIR)/make/guess_os.sh)
-endif
 ifeq ($(OS),UNKNOWN)
 all: help
 else
index 94de45e..348380e 100644 (file)
@@ -288,7 +288,8 @@ dotdraw_write_data(void *foo __attribute__ ((unused))) {
   struct timeval tv;
 
   FD_ZERO(&set);
-  FD_SET(outbuffer_socket, &set);
+  /* prevent warning on WIN32 */
+  FD_SET((unsigned int)outbuffer_socket, &set);
 
   tv.tv_sec = 0;
   tv.tv_usec = 0;
@@ -299,7 +300,7 @@ dotdraw_write_data(void *foo __attribute__ ((unused))) {
   }
 
   if (FD_ISSET(outbuffer_socket, &set)) {
-    result = write(outbuffer_socket, outbuffer.buf, outbuffer.len);
+    result = send(outbuffer_socket, outbuffer.buf, outbuffer.len, 0);
     if (result > 0)
       abuf_pull(&outbuffer, result);
 
index 196d866..8a828cd 100644 (file)
@@ -553,7 +553,8 @@ httpinfo_write_data(void *foo __attribute__ ((unused))) {
   FD_ZERO(&set);
   max = 0;
   for (i=0; i<outbuffer_count; i++) {
-    FD_SET(outbuffer_socket[i], &set);
+    /* prevent warning in win32 */
+    FD_SET((unsigned int)outbuffer_socket[i], &set);
     if (outbuffer_socket[i] > max) {
       max = outbuffer_socket[i];
     }
index 92e94f6..2b4466c 100644 (file)
@@ -333,8 +333,9 @@ add_signature(uint8_t * pck, int *size)
 
   /* Add timestamp */
   msg->sig.timestamp = htonl(now.tv_sec);
+#ifndef WIN32
   olsr_printf(3, "[ENC]timestamp: %lld\n", (long long)now.tv_sec);
-
+#endif
   /* Set the new size */
   *size += sizeof(struct s_olsrmsg);
 
@@ -483,9 +484,9 @@ one_checksum_SHA:
                 olsr_ip_to_string(&buf, (const union olsr_ip_addr *)&sig->originator));
     return 0;
   }
-
+#ifndef WIN32
   olsr_printf(1, "[ENC]Received timestamp %lld diff: %lld\n", (long long)rec_time, (long long)now.tv_sec - (long long)rec_time);
-
+#endif
   /* Remove signature message */
   *size = packetsize;
   return 1;
@@ -894,7 +895,9 @@ send_cres(struct interface *olsr_if, union olsr_ip_addr *to, union olsr_ip_addr
 
   /* set timestamp */
   crmsg.timestamp = now.tv_sec;
+#ifndef WIN32
   olsr_printf(3, "[ENC]Timestamp %lld\n", (long long)crmsg.timestamp);
+#endif
 
   /* Fill subheader */
   memcpy(&crmsg.destination, to, olsr_cnf->ipsize);
@@ -962,8 +965,10 @@ send_rres(struct interface *olsr_if, union olsr_ip_addr *to, union olsr_ip_addr
 
   /* set timestamp */
   rrmsg.timestamp = now.tv_sec;
-  olsr_printf(3, "[ENC]Timestamp %lld\n", (long long)rrmsg.timestamp);
 
+#ifndef WIN32
+  olsr_printf(3, "[ENC]Timestamp %lld\n", (long long)rrmsg.timestamp);
+#endif
   /* Fill subheader */
   memcpy(&rrmsg.destination, to, olsr_cnf->ipsize);
 
index 7ce31e1..94b7813 100644 (file)
@@ -47,6 +47,7 @@
  * Dynamic linked library for the olsr.org olsr daemon
  */
 
+
 #include <sys/types.h>
 #include <sys/socket.h>
 #if !defined WIN32
@@ -547,7 +548,9 @@ txtinfo_write_data(void *foo __attribute__ ((unused))) {
   FD_ZERO(&set);
   max = 0;
   for (i=0; i<outbuffer_count; i++) {
-    FD_SET(outbuffer_socket[i], &set);
+    /* And we cast here since we get a warning on Win32 */
+    FD_SET((unsigned int)(outbuffer_socket[i]), &set);
+
     if (outbuffer_socket[i] > max) {
       max = outbuffer_socket[i];
     }
@@ -563,7 +566,7 @@ txtinfo_write_data(void *foo __attribute__ ((unused))) {
 
   for (i=0; i<outbuffer_count; i++) {
     if (FD_ISSET(outbuffer_socket[i], &set)) {
-      result = write(outbuffer_socket[i], outbuffer[i] + outbuffer_written[i], outbuffer_size[i] - outbuffer_written[i]);
+      result = send(outbuffer_socket[i], outbuffer[i] + outbuffer_written[i], outbuffer_size[i] - outbuffer_written[i], 0);
       if (result > 0) {
         outbuffer_written[i] += result;
       }
index 887fcfa..0569ca8 100644 (file)
@@ -390,8 +390,10 @@ olsr_input_hna(union olsr_message *m, struct interface *in_if __attribute__ ((un
   pkt_get_u16(&curr, &olsr_msgsize);
 
   if (olsr_msgsize < 8 + olsr_cnf->ipsize) {
+#ifndef WIN32
     OLSR_PRINTF(1, "HNA message size %d too small (at least %zu)!\n", olsr_msgsize,
                 8 + olsr_cnf->ipsize);
+#endif
     return false;
   }
 
index 0a0d8e5..a5f8750 100644 (file)
@@ -47,6 +47,7 @@
 
 #include <limits.h>
 #include <arpa/inet.h>
+#include <netinet/in.h>
 
 struct ipaddr_str {
   char buf[MAX(INET6_ADDRSTRLEN, INET_ADDRSTRLEN)];
index 543f899..c2edd6b 100644 (file)
@@ -99,7 +99,9 @@ static char
         "The olsr.org Optimized Link-State Routing daemon(olsrd) Copyright (c) 2004, Andreas Tonnesen(andreto@olsr.org) All rights reserved.";
 
 /* Data for OLSR locking */
+#ifndef WIN32
 static int lock_fd = 0;
+#endif
 static char lock_file_name[FILENAME_MAX];
 
 /*
@@ -347,7 +349,9 @@ int main(int argc, char *argv[]) {
    */
   olsr_cnf->ioctl_s = socket(olsr_cnf->ip_version, SOCK_DGRAM, 0);
   if (olsr_cnf->ioctl_s < 0) {
+#ifndef WIN32
     olsr_syslog(OLSR_LOG_ERR, "ioctl socket: %m");
+#endif
     olsr_exit(__func__, 0);
   }
 #if LINUX_POLICY_ROUTING
index c7cd5b1..7d85f4f 100644 (file)
@@ -392,7 +392,9 @@ net_output(struct interface *ifp)
     if (olsr_sendto(ifp->send_socket, ifp->netbuf.buff, ifp->netbuf.pending, MSG_DONTROUTE, (struct sockaddr *)sin, sizeof(*sin)) <
         0) {
       perror("sendto(v4)");
+#ifndef WIN32
       olsr_syslog(OLSR_LOG_ERR, "OLSR: sendto IPv4 %m");
+#endif
       retval = -1;
     }
   } else {
@@ -401,7 +403,9 @@ net_output(struct interface *ifp)
         < 0) {
       struct ipaddr_str buf;
       perror("sendto(v6)");
+#ifndef WIN32
       olsr_syslog(OLSR_LOG_ERR, "OLSR: sendto IPv6 %m");
+#endif
       fprintf(stderr, "Socket: %d interface: %d\n", ifp->olsr_socket, ifp->if_index);
       fprintf(stderr, "To: %s (size: %u)\n", ip6_to_string(&buf, &sin6->sin6_addr), (unsigned int)sizeof(*sin6));
       fprintf(stderr, "Outputsize: %d\n", ifp->netbuf.pending);
index 1dc5502..2416c70 100644 (file)
@@ -236,7 +236,7 @@ ohs_route_data(struct ohs_connection *oc)
 
   oc->tx++;
   /* Read data */
-  if ((len = recv(oc->socket, data_buffer, OHS_BUFSIZE, 0)) <= 0)
+  if ((len = recv(oc->socket, (void *)data_buffer, OHS_BUFSIZE, 0)) <= 0)
     return -1;
 
   if (logbits & LOG_FORWARD) {
@@ -260,7 +260,7 @@ ohs_route_data(struct ohs_connection *oc)
                olsr_ip_to_string(&addrstr2, &ohs_cs->ip_addr));
       }
 
-      sent = send(ohs_cs->socket, data_buffer, len, 0);
+      sent = send(ohs_cs->socket, (void*)data_buffer, len, 0);
       if (sent != len) {
         printf("Error sending(buf %d != sent %d)\n", (int)len, (int)sent);
       }
index 97f1fde..c7d6114 100644 (file)
@@ -444,7 +444,9 @@ olsr_input(int fd)
     if (cc <= 0) {
       if (cc < 0 && errno != EWOULDBLOCK) {
         OLSR_PRINTF(1, "error recvfrom: %s", strerror(errno));
+#ifndef WIN32
         olsr_syslog(OLSR_LOG_ERR, "error recvfrom: %m");
+#endif
       }
       break;
     }
@@ -522,7 +524,7 @@ olsr_input_hostemu(int fd)
   /* Host emulator receives IP address first to emulate
      direct link */
 
-  int cc = recv(fd, from_addr.v6.s6_addr, olsr_cnf->ipsize, 0);
+  int cc = recv(fd, (void*)from_addr.v6.s6_addr, olsr_cnf->ipsize, 0);
   if (cc != (int)olsr_cnf->ipsize) {
     fprintf(stderr, "Error receiving host-client IP hook(%d) %s!\n", cc, strerror(errno));
     memcpy(&from_addr, &((struct olsr *)inbuf)->olsr_msg->originator, olsr_cnf->ipsize);
index f3aa8de..f833bdb 100644 (file)
@@ -161,7 +161,8 @@ olsr_poll_sockets(void)
   /* Adding file-descriptors to FD set */
 
   for (olsr_sockets = olsr_socket_entries; olsr_sockets; olsr_sockets = olsr_sockets->next) {
-    FD_SET((unsigned int)olsr_sockets->fd, &ibits);     /* And we cast here since we get a warning on Win32 */
+    /* And we cast here since we get a warning on Win32 */
+    FD_SET((unsigned int)olsr_sockets->fd, &ibits);
   }
 
   /* Runnig select on the FD set */
index b9f1039..67df6fd 100644 (file)
@@ -527,7 +527,7 @@ write(int fd, const void *buf, unsigned int count)
 {
   size_t written = 0;
   while (written < count) {
-    ssize_t rc = send(fd, (const unsigned char *)buf + written,
+    ssize_t rc = send(fd, (const char *)buf + written,
                       min(count - written, CHUNK_SIZE), 0);
     if (rc <= 0) {
       break;