* this file is actually completely #if 0 ... #endif out. But I was looking for
[olsrd.git] / src / linux / link_layer.c
index 233cb7c..741a759 100644 (file)
@@ -1,28 +1,47 @@
 /*
- * OLSR ad-hoc routing table management protocol
- * Copyright (C) 2004 Andreas T√łnnesen (andreto@ifi.uio.no)
+ * The olsr.org Optimized Link-State Routing daemon(olsrd)
+ * Copyright (c) 2004, Andreas T√łnnesen(andreto@olsr.org)
+ * All rights reserved.
  *
- * This file is part of olsr.org.
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met:
  *
- * olsr.org is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * * 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.
  *
- * olsr.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * 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.
  *
- * You should have received a copy of the GNU General Public License
- * along with olsr.org; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- * 
- * $Id: link_layer.c,v 1.7 2004/11/12 21:20:23 kattemat Exp $
+ * 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: link_layer.c,v 1.12 2007/02/10 17:11:49 bernd67 Exp $
  */
 
+
+#if 0 /* DEPRECATED - KEPT FOR REFERENCE */
+
 /* Ugly fix to make this compile on wireless extentions < 16 */
 #define _LINUX_ETHTOOL_H
 
 #include <unistd.h>
 #include <stdlib.h>
 
+#include "olsr_protocol.h"
+
+void
+init_link_layer_notification(void);
+
+void
+poll_link_layer(void *);
+
+int
+add_spy_node(union olsr_ip_addr *, char *);
+
 
 extern char *
 sockaddr_to_string(struct sockaddr *);
@@ -46,17 +76,10 @@ sockaddr_to_string(struct sockaddr *);
 extern char *
 olsr_ip_to_string(union olsr_ip_addr *);
 
-extern int
-olsr_printf(int, char *, ...);
-
 
 #define        MAXIPLEN        60
 #define        MAXICMPLEN      76
 
-extern size_t ipsize;
-
-extern int ioctl_s;
-
 float poll_int = 0.2;
 
 int
@@ -77,7 +100,7 @@ init_link_layer_notification()
 {
   struct interface *ifd;
 
-  olsr_printf(1, "Initializing link-layer notification...\n");
+  OLSR_PRINTF(1, "Initializing link-layer notification...\n")
 
 
   for (ifd = ifnet; ifd ; ifd = ifd->int_next) 
@@ -104,9 +127,9 @@ clear_spy_list(char *ifname)
   /* Set device name */
   strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
 
-  if(ioctl(ioctl_s, SIOCSIWSPY, &wrq) < 0)
+  if(ioctl(olsr_cnf->ioctl_s, SIOCSIWSPY, &wrq) < 0)
     {
-      olsr_printf(1, "Could not clear spylist %s\n", strerror(errno));
+      OLSR_PRINTF(1, "Could not clear spylist %s\n", strerror(errno))
       return -1;
     }
 
@@ -125,7 +148,7 @@ add_spy_node(union olsr_ip_addr *addr, char *interface)
   char buffer[(sizeof(struct iw_quality) +
                sizeof(struct sockaddr)) * IW_MAX_SPY];
   
-  olsr_printf(1, "Adding spynode!\n\n");
+  OLSR_PRINTF(1, "Adding spynode!\n\n")
   
   /* get all addresses already in the driver */
 
@@ -135,9 +158,9 @@ add_spy_node(union olsr_ip_addr *addr, char *interface)
 
   strncpy(wrq.ifr_name, interface, IFNAMSIZ);
 
-  if(ioctl(ioctl_s, SIOCGIWSPY, &wrq) < 0)
+  if(ioctl(olsr_cnf->ioctl_s, SIOCGIWSPY, &wrq) < 0)
     {
-      olsr_printf(1, "Could not get old spylist %s\n", strerror(errno));
+      OLSR_PRINTF(1, "Could not get old spylist %s\n", strerror(errno))
       return 0;
     }
 
@@ -145,7 +168,7 @@ add_spy_node(union olsr_ip_addr *addr, char *interface)
   nbr = wrq.u.data.length;
   memcpy(hw_address, buffer, nbr * sizeof(struct sockaddr));
 
-  olsr_printf(1, "Old addresses: %d\n\n", nbr);
+  OLSR_PRINTF(1, "Old addresses: %d\n\n", nbr)
 
   /* Check upper limit */
   if(nbr >= IW_MAX_SPY)
@@ -168,9 +191,9 @@ add_spy_node(union olsr_ip_addr *addr, char *interface)
   /* Set device name */
   strncpy(wrq.ifr_name, interface, IFNAMSIZ);
   
-  if(ioctl(ioctl_s, SIOCSIWSPY, &wrq) < 0)
+  if(ioctl(olsr_cnf->ioctl_s, SIOCSIWSPY, &wrq) < 0)
     {
-      olsr_printf(1, "Could not clear spylist %s\n", strerror(errno));
+      OLSR_PRINTF(1, "Could not clear spylist %s\n", strerror(errno))
       return 0;
     }
 
@@ -188,14 +211,14 @@ convert_ip_to_mac(union olsr_ip_addr *ip, struct sockaddr *mac, char *interface)
 
   memset(&arp_query, 0, sizeof(struct arpreq));
 
-  olsr_printf(1, "\nARP conversion for %s interface %s\n", 
+  OLSR_PRINTF(1, "\nARP conversion for %s interface %s\n", 
              olsr_ip_to_string(ip),
-             interface);
+             interface)
 
   tmp_sockaddr.sin_family = AF_INET;
   tmp_sockaddr.sin_port = 0;
 
-  memcpy(&tmp_sockaddr.sin_addr, ip, ipsize);
+  memcpy(&tmp_sockaddr.sin_addr, ip, olsr_cnf->ipsize);
 
   /* Translate IP addresses to MAC addresses */
   memcpy(&arp_query.arp_pa, &tmp_sockaddr, sizeof(struct sockaddr_in));
@@ -204,10 +227,10 @@ convert_ip_to_mac(union olsr_ip_addr *ip, struct sockaddr *mac, char *interface)
 
   strncpy(arp_query.arp_dev, interface, IFNAMSIZ);
   
-  if((ioctl(ioctl_s, SIOCGARP, &arp_query) < 0) ||
+  if((ioctl(olsr_cnf->ioctl_s, SIOCGARP, &arp_query) < 0) ||
      !(arp_query.arp_flags & ATF_COM)) /* ATF_COM - hw addr valid */
     {
-      olsr_printf(1, "Arp failed: (%s) - trying lookup\n", strerror(errno));
+      OLSR_PRINTF(1, "Arp failed: (%s) - trying lookup\n", strerror(errno))
 
       /* No address - create a thread that sends a PING */
       send_ping(ip);
@@ -215,7 +238,7 @@ convert_ip_to_mac(union olsr_ip_addr *ip, struct sockaddr *mac, char *interface)
       return -1;
     }
 
-  olsr_printf(1, "Arp success!\n");
+  OLSR_PRINTF(1, "Arp success!\n")
 
   memcpy(mac, &arp_query.arp_ha, sizeof(struct sockaddr));
 
@@ -245,13 +268,13 @@ send_ping(union olsr_ip_addr *ip)
   dst_in = (struct sockaddr_in *) &dst;
 
   dst_in->sin_family = AF_INET;
-  memcpy(&dst_in->sin_addr, ip, ipsize);
+  memcpy(&dst_in->sin_addr, ip, olsr_cnf->ipsize);
 
-  olsr_printf(1, "pinging %s\n\n", olsr_ip_to_string(ip));
+  OLSR_PRINTF(1, "pinging %s\n\n", olsr_ip_to_string(ip))
 
   if ((ping_s = socket(AF_INET, SOCK_RAW, PF_INET)) < 0) 
     {
-      olsr_printf(1, "Could not create RAW socket for ping!\n%s\n", strerror(errno));
+      OLSR_PRINTF(1, "Could not create RAW socket for ping!\n%s\n", strerror(errno))
       return;
     }
 
@@ -269,12 +292,12 @@ send_ping(union olsr_ip_addr *ip)
   if((sendto(ping_s, packet, MAXIPLEN + MAXICMPLEN + 8, 0, &dst, sizeof(struct sockaddr))) !=
      MAXIPLEN + MAXICMPLEN + 8)
     {
-      olsr_printf(1, "Error PING: %s\n", strerror(errno));
+      OLSR_PRINTF(1, "Error PING: %s\n", strerror(errno))
     }
 
   /* Nevermind the pong ;-) */
 
-  olsr_printf(1, "Ping complete...\n");
+  OLSR_PRINTF(1, "Ping complete...\n")
   close(ping_s);
 
   free(packet);
@@ -296,7 +319,7 @@ poll_link_layer(void *foo)
   int                   has_range = 0;
   struct interface      *iflist;
 
-  //olsr_printf(1, "Polling link-layer notification...\n");
+  //OLSR_PRINTF(1, "Polling link-layer notification...\n")
 
   for(iflist = ifnet; iflist != NULL; iflist = iflist->int_next)
     {
@@ -312,9 +335,9 @@ poll_link_layer(void *foo)
       strncpy(wrq.ifr_name, iflist->int_name, IFNAMSIZ);
       
       /* Do the request */
-      if(ioctl(ioctl_s, SIOCGIWSPY, &wrq) < 0)
+      if(ioctl(olsr_cnf->ioctl_s, SIOCGIWSPY, &wrq) < 0)
        {
-         olsr_printf(1, "%-8.16s  Interface doesn't support wireless statistic collection\n\n", iflist->int_name);
+         OLSR_PRINTF(1, "%-8.16s  Interface doesn't support wireless statistic collection\n\n", iflist->int_name)
          return;
        }
       
@@ -335,29 +358,29 @@ poll_link_layer(void *foo)
            continue;
          
          /* Print stats for each address */
-         olsr_printf(1, "MAC");
+         OLSR_PRINTF(1, "MAC")
          for(j = 0; j < 6; j++)
            {
-             olsr_printf(1, ":%02x", (hwa[i].sa_data[j] % 0xffffff00));
+             OLSR_PRINTF(1, ":%02x", (hwa[i].sa_data[j] % 0xffffff00))
            }
          if(!has_range)
-           olsr_printf(1, " : Quality:%d  Signal level:%d dBm  Noise level:%d dBm",
+           OLSR_PRINTF(1, " : Quality:%d  Signal level:%d dBm  Noise level:%d dBm",
                        qual[i].qual,
                        qual[i].level - 0x100, 
-                       qual[i].noise - 0x100);
+                       qual[i].noise - 0x100)
          else
-           olsr_printf(1, " : Quality:%d/%d  Signal level:%d dBm  Noise level:%d dBm",
+           OLSR_PRINTF(1, " : Quality:%d/%d  Signal level:%d dBm  Noise level:%d dBm",
                        qual[i].qual,
                        range.max_qual.qual,
                        qual[i].level - 0x100, 
-                       qual[i].noise - 0x100);
+                       qual[i].noise - 0x100)
          
-         olsr_printf(1, "\n");
+         OLSR_PRINTF(1, "\n")
          
        }
     }
 
-  //olsr_printf(1, "\n");
+  //OLSR_PRINTF(1, "\n")
   return;
 }
 
@@ -386,9 +409,9 @@ iw_get_range_info(char            *ifname,
   /* Set device name */
   strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
 
-  if(ioctl(ioctl_s, SIOCGIWRANGE, &wrq) < 0)
+  if(ioctl(olsr_cnf->ioctl_s, SIOCGIWRANGE, &wrq) < 0)
     {
-      olsr_printf(1, "NO RANGE\n");
+      OLSR_PRINTF(1, "NO RANGE\n")
       return -1;
     }
 
@@ -399,3 +422,6 @@ iw_get_range_info(char            *ifname,
 
   return 1;
 }
+
+
+#endif