Moved wireless detection to OS spesific directories and added detection for FreeBSD
authorAndreas Tonnesen <andreto@olsr.org>
Tue, 15 Feb 2005 20:40:43 +0000 (20:40 +0000)
committerAndreas Tonnesen <andreto@olsr.org>
Tue, 15 Feb 2005 20:40:43 +0000 (20:40 +0000)
src/bsd/net.c
src/ifnet.h
src/linux/net.c
src/net_os.h
src/unix/ifnet.c

index 07a7db9..4008682 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.10 2005/02/14 16:55:37 kattemat Exp $
+ * $Id: net.c,v 1.11 2005/02/15 20:40:43 kattemat Exp $
  */
 
 #include "../defs.h"
@@ -48,6 +48,9 @@
 #include <sys/param.h>
 #endif
 
+#define        SIOCGIFGENERIC  _IOWR('i', 58, struct ifreq)    /* generic IF get op */
+#define SIOCGWAVELAN SIOCGIFGENERIC
+
 #include <sys/sysctl.h>
 
 static int ignore_redir;
@@ -320,3 +323,22 @@ olsr_recvfrom(int  s,
                  from, 
                  fromlen);
 }
+
+
+
+int 
+check_wireless_interface(char *ifname)
+{
+  struct ifreq ifr;
+  strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+
+  if(ioctl(ioctl_s, SIOCGWAVELAN, &ifr) >= 0)
+    {
+      return 1;
+    }
+  else
+    {
+      return 0;
+    }
+  return 1;
+}
index 91e91fc..e348988 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: ifnet.h,v 1.9 2004/11/21 11:28:56 kattemat Exp $
+ * $Id: ifnet.h,v 1.10 2005/02/15 20:40:31 kattemat Exp $
  */
 
 /* Network interface configuration interface.
@@ -65,9 +65,4 @@ chk_if_changed(struct olsr_if *);
 int
 chk_if_up(struct olsr_if *, int);
 
-#ifndef WIN32
-int
-check_wireless_interface(struct ifreq *);
-#endif
-
 #endif
index 28cac59..b1a79c0 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.15 2005/02/14 16:55:37 kattemat Exp $
+ * $Id: net.c,v 1.16 2005/02/15 20:40:43 kattemat Exp $
  */
 
 
 #include "../net_os.h"
 #include "../parser.h"
 
+/*
+ *Wireless definitions for ioctl calls
+ *(from linux/wireless.h)
+ */
+#define SIOCGIWNAME    0x8B01          /* get name == wireless protocol */
+
 /**
  *Bind a socket to a device
  *
@@ -597,3 +603,22 @@ olsr_recvfrom(int  s,
                  from, 
                  fromlen);
 }
+
+
+
+int
+check_wireless_interface(char *ifname)
+{
+  struct ifreq ifr;
+  strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+
+  if(ioctl(ioctl_s, SIOCGIWNAME, &ifr) >= 0)
+    {
+      return 1;
+    }
+  else
+    {
+      return 0;
+    }
+
+}
index 28c4906..6b3fe32 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.5 2005/02/14 16:55:37 kattemat Exp $
+ * $Id: net_os.h,v 1.6 2005/02/15 20:40:26 kattemat Exp $
  */
 
 
@@ -96,4 +96,9 @@ getsocket6(struct sockaddr_in6 *, int, char *);
 int
 get_ipv6_address(char *, struct sockaddr_in6 *, int);
 
+#ifndef WIN32
+int
+check_wireless_interface(char *);
+#endif
+
 #endif
index e2396b5..540ecf5 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: ifnet.c,v 1.14 2005/01/05 15:35:16 kattemat Exp $
+ * $Id: ifnet.c,v 1.15 2005/02/15 20:40:42 kattemat Exp $
  */
 
 
-#ifdef linux
-/*
- *Wireless definitions for ioctl calls
- *(from linux/wireless.h)
- */
-#define SIOCGIWNAME    0x8B01          /* get name == wireless protocol */
-#define SIOCSIWNWID    0x8B02          /* set network id (the cell) */
-#define SIOCGIWNWID    0x8B03          /* get network id */
-#define SIOCSIWFREQ    0x8B04          /* set channel/frequency (Hz) */
-#define SIOCGIWFREQ    0x8B05          /* get channel/frequency (Hz) */
-#define SIOCSIWMODE    0x8B06          /* set operation mode */
-#define SIOCGIWMODE    0x8B07          /* get operation mode */
-#define SIOCSIWSENS    0x8B08          /* set sensitivity (dBm) */
-#define SIOCGIWSENS    0x8B09          /* get sensitivity (dBm) */
-#elif defined __FreeBSD__ || defined __MacOSX__ || defined __NetBSD__
+#if defined __FreeBSD__ || defined __MacOSX__ || defined __NetBSD__
 #define ifr_netmask ifr_addr
 #endif
 
@@ -213,7 +199,7 @@ chk_if_changed(struct olsr_if *iface)
 
 
   /* trying to detect if interface is wireless. */
-  ifp->is_wireless = check_wireless_interface(&ifr);
+  ifp->is_wireless = check_wireless_interface(ifr.ifr_name);
 
   /* Set interface metric */
   ifp->int_metric = ifp->is_wireless;
@@ -580,7 +566,7 @@ chk_if_up(struct olsr_if *iface, int debuglvl)
     }
 
   /* trying to detect if interface is wireless. */
-  if(check_wireless_interface(&ifr))
+  if(check_wireless_interface(ifr.ifr_name))
     {
       olsr_printf(debuglvl, "\tWireless interface detected\n");
       ifs.is_wireless = 1;
@@ -878,36 +864,3 @@ chk_if_up(struct olsr_if *iface, int debuglvl)
 }
 
 
-
-#ifdef linux
-/**
- *Check if a interface is wireless
- *Returns 1 if no info can be gathered
- *
- *@param sock socket to use for kernel communication
- *@param ifr a ifreq struct describing the interface
- *
- *@return 1 if interface is wireless(or no info was
- *found) 0 if not.
- */
-int
-check_wireless_interface(struct ifreq *ifr)
-{
-  if(ioctl(ioctl_s, SIOCGIWNAME, ifr) >= 0)
-    {
-      return 1;
-    }
-  else
-    {
-      return 0;
-    }
-
-}
-#else
-int check_wireless_interface(struct ifreq *ifr)
-{
-  return 1;
-}
-#endif
-
-