Bugfix for interface refactoring
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Thu, 11 Nov 2010 15:30:06 +0000 (16:30 +0100)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Thu, 11 Nov 2010 15:30:06 +0000 (16:30 +0100)
Makefile.inc
lib/lq_etx_ff/src/lq_plugin_etx_ff.c
src/interfaces.c
src/parser.c

index b51c2ff..4758c45 100644 (file)
@@ -21,7 +21,7 @@ MUDFLAP ?= 0
 # enables several security features like exec ASLR,
 # stack protector, fortify source, RELRO and BIND_NOW
 # only for linux at the moment
-HARDENING ?= 1
+HARDENING ?= 0
 
 # enable static linking of plugins (list of plugin directory names) 
 STATIC_PLUGINS ?= lq_etx_ff
index 22cb693..af8cb5e 100644 (file)
@@ -171,7 +171,8 @@ lq_etxff_packet_parser(struct olsr_packet *pkt, uint8_t *binary __attribute__ ((
 #ifndef REMOVE_LOG_WARN
     struct ipaddr_str buf;
 #endif
-    OLSR_WARN(LOG_LQ_PLUGINS, "Got package with same sequence number from %s\n", olsr_ip_to_string(&buf, from_addr));
+    OLSR_WARN(LOG_LQ_PLUGINS, "Got package with same sequence number from %s, if=%s, seq=0x%04x\n",
+        olsr_ip_to_string(&buf, from_addr), in_if->int_name, pkt->seqno);
     return;
   }
   if (lnk->last_seq_nr > pkt->seqno) {
index 13e72c4..745b67f 100644 (file)
@@ -179,6 +179,12 @@ add_interface(struct olsr_if_config *iface) {
   struct interface *ifp;
 
   ifp = olsr_cookie_malloc(interface_mem_cookie);
+  ifp->int_name = iface->name;
+
+  if ((os_init_interface(ifp, iface))) {
+    olsr_cookie_free(interface_mem_cookie, ifp);
+    return NULL;
+  }
 
   ifp->olsr_socket = os_getsocket46(olsr_cnf->ip_version, BUFSPACE, ifp, false, olsr_cnf->olsr_port);
   ifp->send_socket = os_getsocket46(olsr_cnf->ip_version, 0, ifp, true, olsr_cnf->olsr_port);
@@ -187,13 +193,6 @@ add_interface(struct olsr_if_config *iface) {
     olsr_exit(EXIT_FAILURE);
   }
 
-  if ((os_init_interface(ifp, iface))) {
-    os_close(ifp->olsr_socket);
-    os_close(ifp->send_socket);
-    olsr_cookie_free(interface_mem_cookie, ifp);
-    return NULL;
-  }
-
   set_buffer_timer(ifp);
 
   /* Register sockets */
@@ -352,7 +351,7 @@ remove_interface(struct interface *ifp)
   os_close(ifp->send_socket);
   ifp->olsr_socket = -1;
 
-  free(ifp->int_name);
+  ifp->int_name = NULL;
   unlock_interface(ifp);
 
   if (list_is_empty(&interface_head) && !olsr_cnf->allow_no_interfaces) {
@@ -411,6 +410,9 @@ if_ifwithsock(int fd)
     if (ifp->olsr_socket == fd) {
       return ifp;
     }
+    if (ifp->send_socket == fd) {
+      return ifp;
+    }
   }
 
   return NULL;
index 3b28a38..0edc758 100644 (file)
@@ -361,8 +361,9 @@ olsr_input(int fd, void *data __attribute__ ((unused)), unsigned int flags __att
       break;
     }
 
-    OLSR_DEBUG(LOG_PACKET_PARSING, "Recieved a packet from %s\n",
-               sockaddr_to_string(addrbuf, sizeof(addrbuf), (struct sockaddr *)&from, fromlen));
+    OLSR_DEBUG(LOG_PACKET_PARSING, "Recieved a packet from %s (fd=%d)\n",
+               sockaddr_to_string(addrbuf, sizeof(addrbuf), (struct sockaddr *)&from, fromlen),
+               fd);
 
     if (olsr_cnf->ip_version == AF_INET) {
       /* IPv4 sender address */