FreeBSD port
authorAndreas Tonnesen <andreto@olsr.org>
Sun, 30 Jan 2005 18:00:16 +0000 (18:00 +0000)
committerAndreas Tonnesen <andreto@olsr.org>
Sun, 30 Jan 2005 18:00:16 +0000 (18:00 +0000)
lib/powerinfo/Makefile
lib/powerinfo/src/olsrd_power.c

index 44a2d87..4549e8e 100644 (file)
@@ -7,12 +7,36 @@
 
 CC ?= gcc
 STRIP ?= strip
+
+ifndef OS
+all:           help
+endif
+
+ifeq ($(OS), linux)
+NAME ?= olsrd_power.so.0.3
+LIBDIR ?= $(INSTALL_PREFIX)/usr/lib
+# -fPIC creates position independent code
+MYFLAGS ?= -Wall -fPIC -g # Uncomment -g for debugging
+LIBS ?= -lc -lm
+CFLAGS ?= -fPIC -g -O2
+INSTALL_LIB = install -D -m 755 $(NAME) $(LIBDIR)/$(NAME);\
+       /sbin/ldconfig -n $(LIBDIR)
+all:   plugin
+else
+ifeq ($(OS), fbsd)
 NAME ?= olsrd_power.so.0.3
 LIBDIR ?= $(INSTALL_PREFIX)/usr/lib
 # -fPIC creates position independent code
 MYFLAGS ?= -Wall -fPIC -g # Uncomment -g for debugging
 LIBS ?= -lc -lm
 CFLAGS ?= -fPIC -g -O2
+INSTALL_LIB = install -m 755 $(NAME) $(LIBDIR)/$(NAME);\
+       /sbin/ldconfig
+all:   plugin
+else
+all:   help
+endif
+endif
 
 #Sourcefiles
 #add yours here
@@ -30,8 +54,6 @@ HDRS= src/olsrd_plugin.h src/olsrd_power.h src/olsr_plugin_io.h
 # Use -lc to link it against C library
 # not 100% sure if this is neccesary
 
-all: plugin
-
 plugin: $(OBJS)
        $(CC) $(LDFLAGS) $(MYFLAGS) -shared -Wl,-soname,$(NAME) \
        -Wl,--version-script=version-script.txt \
@@ -40,13 +62,28 @@ plugin: $(OBJS)
 
 install:
        $(STRIP) $(NAME)
-       install -D -m 755 $(NAME) $(LIBDIR)/$(NAME)
-       /sbin/ldconfig -n $(LIBDIR)
+       $(INSTALL_LIB)
 
 clean:
        rm -f $(OBJS) $(NAME)
 
 
+help:
+       @echo
+       @echo '******* olsr.org powerplugin *******'
+       @echo ' You must provide a valid target OS '
+       @echo ' by setting the OS variable! Valid  '
+       @echo ' target OSes are:                   '
+       @echo ' ---------------------------------  '
+       @echo ' linux - GNU/Linux                  '
+       @echo ' win32 - MS Windows                 '
+       @echo ' fbsd  - FreeBSD                    '
+       @echo ' ---------------------------------  '
+       @echo ' Example - build for windows:       '
+       @echo ' make OS=win32                      '
+       @echo '************************************'
+       @echo
+
 src/olsrd_plugin.o: $(HDRS)
 
 src/olsrd_power.o: $(HDRS)
index 13252d5..eb643b8 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-/* $Id: olsrd_power.c,v 1.3 2004/11/09 21:15:07 kattemat Exp $ */
+/* $Id: olsrd_power.c,v 1.4 2005/01/30 18:00:16 kattemat Exp $ */
 
 /*
  * Dynamic linked library example for UniK OLSRd
@@ -101,6 +101,7 @@ int
 plugin_ipc_init()
 {
   struct sockaddr_in sin;
+  olsr_u32_t yes = 1;
 
   /* Init ipc socket */
   if ((ipc_socket = socket(AF_INET, SOCK_STREAM, 0)) == -1) 
@@ -110,6 +111,20 @@ plugin_ipc_init()
     }
   else
     {
+      if (setsockopt(ipc_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&yes, sizeof(yes)) < 0) 
+      {
+       perror("SO_REUSEADDR failed");
+       return 0;
+      }
+
+#ifdef __FreeBSD__
+      if (setsockopt(ipc_socket, SOL_SOCKET, SO_NOSIGPIPE, (char *)&yes, sizeof(yes)) < 0) 
+      {
+       perror("SO_REUSEADDR failed");
+       return 0;
+      }
+#endif
+
       /* Bind the socket */
       
       /* complete the socket structure */
@@ -502,7 +517,11 @@ ipc_send(char *data, int size)
   if(!ipc_connected)
     return 0;
 
+#ifdef __FreeBSD__
+  if (send(ipc_connection, data, size, 0) < 0) 
+#else
   if (send(ipc_connection, data, size, MSG_NOSIGNAL) < 0) 
+#endif
     {
       //perror("send - IPC");
       olsr_printf(1, "(OUTPUT)IPC connection lost!\n");