* src/linux/net.h is used by one .c file only. No need for a separate file.
authorBernd Petrovitsch <bernd@firmix.at>
Thu, 6 Dec 2007 20:43:15 +0000 (20:43 +0000)
committerBernd Petrovitsch <bernd@firmix.at>
Thu, 6 Dec 2007 20:43:15 +0000 (20:43 +0000)
* removed an "extern" declaration which doesn't belong here
* removed superflous #include's

src/linux/net.c
src/linux/net.h [deleted file]

index 5b1ce90..e6b7511 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: net.c,v 1.37 2007/12/02 19:00:28 bernd67 Exp $
+ * $Id: net.c,v 1.38 2007/12/06 20:43:15 bernd67 Exp $
  */
 
 
  * Linux spesific code
  */
 
-#include "net.h"
-#include "../ipcalc.h"
-#include "../defs.h"
 #include "../net_os.h"
-#include "../parser.h"
-#include "../net_olsr.h"
+#include "../ipcalc.h"
+
+#include <net/if.h>
+
+#include <sys/ioctl.h>
+
+#include <fcntl.h>
+#include <string.h>
+#include <stdio.h>
+#include <syslog.h>
+
+
+/* Redirect proc entry */
+#define REDIRECT_PROC "/proc/sys/net/ipv4/conf/%s/send_redirects"
 
+/* IP spoof proc entry */
+#define SPOOF_PROC "/proc/sys/net/ipv4/conf/%s/rp_filter"
 
 /*
  *Wireless definitions for ioctl calls
@@ -394,18 +405,19 @@ gethemusocket(struct sockaddr_in *pin)
  *@return the FD of the socket or -1 on error.
  */
 int
-getsocket(struct sockaddr *sa, int bufspace, char *int_name)
+getsocket(int bufspace, char *int_name)
 {
-  struct sockaddr_in *sin=(struct sockaddr_in *)sa;
-  int sock, on = 1;
-
-  if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) 
+  struct sockaddr_in sin;
+  int on;
+  int sock = socket(AF_INET, SOCK_DGRAM, 0);
+  if (sock < 0) 
     {
       perror("socket");
       syslog(LOG_ERR, "socket: %m");
       return -1;
     }
 
+  on = 1;
 #ifdef SO_BROADCAST
   if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &on, sizeof (on)) < 0)
     {
@@ -450,20 +462,25 @@ getsocket(struct sockaddr *sa, int bufspace, char *int_name)
       return -1;
     }
 
-  if (bind(sock, (struct sockaddr *)sin, sizeof (*sin)) < 0) 
-    {
+  memset(&sin, 0, sizeof (sin));
+  sin.sin_family = AF_INET;
+  sin.sin_port = htons(OLSRPORT);
+  sin.sin_addr.s_addr = INADDR_ANY;
+  if (bind(sock, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
       perror("bind");
       syslog(LOG_ERR, "bind: %m");
       close(sock);
       return -1;
-    }
-  /*
-   *FIXME: One should probably fetch the flags first
-   *using F_GETFL....
-   */
-  if (fcntl(sock, F_SETFL, O_NONBLOCK) == -1)
-    syslog(LOG_ERR, "fcntl O_NONBLOCK: %m\n");
-
+  }
+
+  on = fcntl(sock, F_GETFL);
+  if (on == -1) {
+      syslog(LOG_ERR, "fcntl (F_GETFL): %m\n");
+  } else {
+      if (fcntl(sock, F_SETFL, on|O_NONBLOCK) == -1) {
+          syslog(LOG_ERR, "fcntl O_NONBLOCK: %m\n");
+      }
+  }
   return sock;
 }
 
@@ -474,22 +491,23 @@ getsocket(struct sockaddr *sa, int bufspace, char *int_name)
  *@return the FD of the socket or -1 on error.
  */
 int
-getsocket6(struct sockaddr_in6 *sin, int bufspace, char *int_name)
+getsocket6(int bufspace, char *int_name)
 {
-  int sock, on = 1;
-  if ((sock = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) 
-    {
-      perror("socket");
-      syslog(LOG_ERR, "socket: %m");
-      return (-1);
-    }
+  struct sockaddr_in6 sin;
+  int on;
+  int sock = socket(AF_INET6, SOCK_DGRAM, 0);
+  if (sock < 0) {
+    perror("socket");
+    syslog(LOG_ERR, "socket: %m");
+    return (-1);
+  }
 
 #ifdef IPV6_V6ONLY
-  if (setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) < 0) 
-    {
-      perror("setsockopt(IPV6_V6ONLY)");
-      syslog(LOG_ERR, "setsockopt(IPV6_V6ONLY): %m");
-    }
+  on = 1;
+  if (setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) < 0) {
+    perror("setsockopt(IPV6_V6ONLY)");
+    syslog(LOG_ERR, "setsockopt(IPV6_V6ONLY): %m");
+  }
 #endif
 
 
@@ -539,20 +557,26 @@ getsocket6(struct sockaddr_in6 *sin, int bufspace, char *int_name)
       return -1;
     }
 
-  if (bind(sock, (struct sockaddr *)sin, sizeof (*sin)) < 0) 
+  memset(&sin, 0, sizeof(sin));
+  sin.sin6_family = AF_INET6;
+  sin.sin6_port = htons(OLSRPORT);
+  //(addrsock6.sin6_addr).s_addr = IN6ADDR_ANY_INIT;
+  if (bind(sock, (struct sockaddr *)&sin, sizeof(sin)) < 0) 
     {
       perror("bind");
       syslog(LOG_ERR, "bind: %m");
       close(sock);
       return (-1);
     }
-  /*
-   *One should probably fetch the flags first
-   *using F_GETFL....
-   */
-  if (fcntl(sock, F_SETFL, O_NONBLOCK) == -1)
-    syslog(LOG_ERR, "fcntl O_NONBLOCK: %m\n");
 
+  on = fcntl(sock, F_GETFL);
+  if (on == -1) {
+      syslog(LOG_ERR, "fcntl (F_GETFL): %m\n");
+  } else {
+      if (fcntl(sock, F_SETFL, on|O_NONBLOCK) == -1) {
+          syslog(LOG_ERR, "fcntl O_NONBLOCK: %m\n");
+      }
+  }
   return sock;
 }
 
diff --git a/src/linux/net.h b/src/linux/net.h
deleted file mode 100644 (file)
index 8a31510..0000000
+++ /dev/null
@@ -1,67 +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.
- *
- * $Id: net.h,v 1.9 2007/11/29 18:09:11 bernd67 Exp $
- */
-
-
-
-#ifndef _OLSR_NET_LINUX
-#define _OLSR_NET_LINUX
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <net/if.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <syslog.h>
-#include <netinet/in.h>
-#include "../olsr_protocol.h"
-
-/* Redirect proc entry */
-#define REDIRECT_PROC "/proc/sys/net/ipv4/conf/%s/send_redirects"
-
-/* IP spoof proc entry */
-#define SPOOF_PROC "/proc/sys/net/ipv4/conf/%s/rp_filter"
-
-extern int olsr_printf(int, char *, ...);
-
-#endif