Fix segfault in if-down path
authorHenning Rogge <hrogge@googlemail.com>
Tue, 12 Apr 2011 20:16:06 +0000 (22:16 +0200)
committerHenning Rogge <hrogge@googlemail.com>
Tue, 12 Apr 2011 20:16:06 +0000 (22:16 +0200)
src/interfaces.c
src/interfaces.h

index 3e708cb..2f636e1 100644 (file)
@@ -256,6 +256,7 @@ add_interface(struct olsr_if_config *iface) {
    * Link to config.
    */
   iface->interf = ifp;
+  ifp->if_cfg = iface;
   lock_interface(iface->interf);
 
   /* Queue */
@@ -315,6 +316,8 @@ remove_interface(struct interface *ifp)
 
   OLSR_INFO(LOG_INTERFACE, "Removing interface %s\n", ifp->int_name);
 
+  ifp->if_cfg->interf = NULL;
+
   os_cleanup_interface(ifp);
 
   olsr_delete_link_entry_by_if(ifp);
index 0bdb6ec..ab04cbd 100644 (file)
@@ -145,6 +145,9 @@ struct olsr_netbuf {
 struct interface {
   struct list_entity int_node;         /* List of all interfaces */
 
+  /* backpointer */
+  struct olsr_if_config *if_cfg;
+
   enum interface_mode mode;            /* mode of the interface, default is mesh */
 
   /* sockaddr objects for src and (multicast) destination IP of interface */