* killed the MAX_IFS variable and another statically sized array
authorBernd Petrovitsch <bernd@firmix.at>
Sun, 4 Feb 2007 23:36:35 +0000 (23:36 +0000)
committerBernd Petrovitsch <bernd@firmix.at>
Sun, 4 Feb 2007 23:36:35 +0000 (23:36 +0000)
src/bsd/net.c
src/interfaces.h
src/linux/net.c
src/linux/net.h
src/net_os.h
src/unix/ifnet.c

index 218a967..213f7cb 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.29 2006/12/12 11:20:53 kattemat Exp $
+ * $Id: net.c,v 1.30 2007/02/04 23:36:35 bernd67 Exp $
  */
 
 #include "defs.h"
@@ -220,7 +220,7 @@ disable_redirects_global(int version)
   return 1;
 }
 
-int disable_redirects(char *if_name, int index, int version)
+int disable_redirects(char *if_name, struct interface *iface, int version)
 {
   // this function gets called for each interface olsrd uses; however,
   // FreeBSD can only globally control ICMP redirects, and not on a
@@ -229,7 +229,7 @@ int disable_redirects(char *if_name, int index, int version)
   return 1;
 }
 
-int deactivate_spoof(char *if_name, int index, int version)
+int deactivate_spoof(char *if_name, struct interface *iface, int version)
 {
   return 1;
 }
index f202c89..08b7821 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: interfaces.h,v 1.36 2007/01/30 16:52:41 bernd67 Exp $
+ * $Id: interfaces.h,v 1.37 2007/02/04 23:36:35 bernd67 Exp $
  */
 
 
@@ -159,6 +159,15 @@ struct interface
   
   int           ttl_index; /* index in TTL array for fish-eye */
 
+#ifdef linux
+/* Struct uesd to store original redirect/ingress setting */
+  struct nic_state
+  {
+    char redirect; /* The original state of icmp redirect */
+    char spoof; /* The original state of the IP spoof filter */
+  } nic_state;
+#endif
+
   struct       interface *int_next;
 };
 
index 201edc3..e3589b9 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.31 2006/11/05 23:03:56 bernd67 Exp $
+ * $Id: net.c,v 1.32 2007/02/04 23:36:35 bernd67 Exp $
  */
 
 
 #define SIOCGIWNAME    0x8B01          /* get name == wireless protocol */
 #define SIOCGIWRATE    0x8B21          /* get default bit rate (bps) */
 
+/* The original state of the IP forwarding proc entry */
+static char orig_fwd_state;
+static char orig_global_redirect_state;
+
 /**
  *Bind a socket to a device
  *
@@ -78,8 +82,6 @@ bind_socket_to_device(int sock, char *dev_name)
 }
 
 
-
-
 /**
  *Enable IP forwarding.
  *Just writing "1" to the /proc/sys/net/ipv4/ip_forward
@@ -207,7 +209,7 @@ disable_redirects_global(int version)
  *@return 1 on sucess 0 on failiure
  */ 
 int
-disable_redirects(char *if_name, int index, int version)
+disable_redirects(const char *if_name, struct interface *iface, int version)
 {
   FILE *proc_redirect;
   char procfile[FILENAME_MAX];
@@ -228,7 +230,7 @@ disable_redirects(char *if_name, int index, int version)
     }
   else
     {
-      nic_states[index].redirect = fgetc(proc_redirect);
+      iface->nic_state.redirect = fgetc(proc_redirect);
       fclose(proc_redirect);
       
     }
@@ -257,7 +259,7 @@ disable_redirects(char *if_name, int index, int version)
  *@return 1 on sucess 0 on failiure
  */ 
 int
-deactivate_spoof(char *if_name, int index, int version)
+deactivate_spoof(const char *if_name, struct interface *iface, int version)
 {
   FILE *proc_spoof;
   char procfile[FILENAME_MAX];
@@ -279,7 +281,7 @@ deactivate_spoof(char *if_name, int index, int version)
     }
   else
     {
-      nic_states[index].spoof = fgetc(proc_spoof);
+      iface->nic_state.spoof = fgetc(proc_spoof);
       fclose(proc_spoof);
       
     }
@@ -381,9 +383,9 @@ restore_settings(int version)
        }
       else
        {
-         syslog(LOG_INFO, "Resetting %s to %c\n", procfile, nic_states[ifs->if_nr].redirect);
+         syslog(LOG_INFO, "Resetting %s to %c\n", procfile, ifs->nic_state.redirect);
 
-         fputc(nic_states[ifs->if_nr].redirect, proc_fd);
+         fputc(ifs->nic_state.redirect, proc_fd);
          fclose(proc_fd);
        }
 
@@ -399,9 +401,9 @@ restore_settings(int version)
        }
       else
        {
-         syslog(LOG_INFO, "Resetting %s to %c\n", procfile, nic_states[ifs->if_nr].spoof);
+         syslog(LOG_INFO, "Resetting %s to %c\n", procfile, ifs->nic_state.spoof);
 
-         fputc(nic_states[ifs->if_nr].spoof, proc_fd);
+         fputc(ifs->nic_state.spoof, proc_fd);
          fclose(proc_fd);
        }
 
index 3096fa9..f5174d9 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: net.h,v 1.7 2005/08/28 19:30:30 kattemat Exp $
+ * $Id: net.h,v 1.8 2007/02/04 23:36:35 bernd67 Exp $
  */
 
 
 #include <netinet/in.h>
 #include "../olsr_protocol.h"
 
-#define MAXIFS                  8 /* Maximum number of network interfaces */
-
 /* 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"
 
-/* The original state of the IP forwarding proc entry */
-char orig_fwd_state;
-char orig_global_redirect_state;
-
-/* Struct uesd to store original redirect/ingress setting */
-struct nic_state
-{
-  int index; /* The OLSR index of the interface */
-  char redirect; /* The original state of icmp redirect */
-  char spoof; /* The original state of the IP spoof filter */
-  struct nic_state *next;
-};
-
-struct nic_state nic_states[MAXIFS];
-
-
-extern int
-olsr_printf(int, char *, ...);
+extern int olsr_printf(int, char *, ...);
 
 #endif
index effe092..e9c9e40 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: net_os.h,v 1.12 2005/08/28 19:30:29 kattemat Exp $
+ * $Id: net_os.h,v 1.13 2007/02/04 23:36:35 bernd67 Exp $
  */
 
 
@@ -83,13 +83,13 @@ int
 convert_ip_to_mac(union olsr_ip_addr *, struct sockaddr *, char *);
 
 int
-disable_redirects(char *, int, int);
+disable_redirects(const char *, struct interface *, int);
 
 int
 disable_redirects_global(int);
 
 int
-deactivate_spoof(char *, int, int);
+deactivate_spoof(const char *, struct interface *, int);
 
 int
 restore_settings(int);
index 6903659..4c45a20 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: ifnet.c,v 1.42 2007/02/04 22:37:35 bernd67 Exp $
+ * $Id: ifnet.c,v 1.43 2007/02/04 23:36:35 bernd67 Exp $
  */
 
 
@@ -870,10 +870,10 @@ chk_if_up(struct olsr_if *iface, int debuglvl)
        }
       
       /* Deactivate IP spoof filter */
-      deactivate_spoof(if_basename(ifr.ifr_name), iface->index, olsr_cnf->ip_version);
+      deactivate_spoof(if_basename(ifr.ifr_name), &ifs, olsr_cnf->ip_version);
       
       /* Disable ICMP redirects */
-      disable_redirects(if_basename(ifr.ifr_name), iface->index, olsr_cnf->ip_version);
+      disable_redirects(if_basename(ifr.ifr_name), &ifs, olsr_cnf->ip_version);
       
     }