diff --git a/babeld/babel_interface.c b/babeld/babel_interface.c
index 1c8c886..fafe009 100644
--- a/babeld/babel_interface.c
+++ b/babeld/babel_interface.c
@@ -57,6 +57,8 @@
 #include "xroute.h"
 
 
+#define IS_ENABLE(ifp) (babel_enable_if_lookup(ifp->name) >= 0)
+
 static int babel_enable_if_lookup (const char *ifname);
 static int babel_enable_if_add (const char *ifname);
 static int babel_enable_if_delete (const char *ifname);
@@ -87,7 +89,7 @@
     debugf(BABEL_DEBUG_IF, "receive a 'interface up'");
 
     s = zclient->ibuf;
-    ifp = zebra_interface_state_read(s);
+    ifp = zebra_interface_state_read(s); /* it updates iflist */
 
     if (ifp == NULL) {
         return 0;
@@ -106,7 +108,7 @@
     debugf(BABEL_DEBUG_IF, "receive a 'interface down'");
 
     s = zclient->ibuf;
-    ifp = zebra_interface_state_read(s);
+    ifp = zebra_interface_state_read(s); /* it updates iflist */
 
     if (ifp == NULL) {
         return 0;
@@ -131,14 +133,30 @@
     }
 
     interface_recalculate(ifp);
-
     return 0;
 }
 
 int
 babel_interface_delete (int cmd, struct zclient *client, zebra_size_t length)
 {
+    struct interface *ifp;
+    struct stream *s;
+
     debugf(BABEL_DEBUG_IF, "receive a 'interface delete'");
+
+    s = zclient->ibuf;
+    ifp = zebra_interface_state_read(s); /* it updates iflist */
+
+    if (ifp == NULL)
+        return 0;
+
+    if (IS_ENABLE(ifp))
+        interface_reset(ifp);
+
+    /* To support pseudo interface do not free interface structure.  */
+    /* if_delete(ifp); */
+    ifp->ifindex = IFINDEX_INTERNAL;
+
     return 0;
 }
 
@@ -242,7 +260,7 @@
 
     ifp = if_lookup_by_name(ifname);
     if (ifp != NULL)
-        babel_get_if_nfo(ifp)->flags |= BABEL_IF_IS_ENABLE;
+        interface_recalculate(ifp);
 
     return 1;
 }
@@ -265,7 +283,7 @@
 
     ifp = if_lookup_by_name(ifname);
     if (ifp != NULL)
-        babel_get_if_nfo(ifp)->flags &= ~BABEL_IF_IS_ENABLE;
+        interface_reset(ifp);
 
     return 1;
 }
@@ -514,6 +532,9 @@
     int mtu, rc;
     struct ipv6_mreq mreq;
 
+    if (!IS_ENABLE(ifp))
+        return -1;
+
     if (!if_is_operative(ifp) || !CHECK_FLAG(ifp->flags, IFF_RUNNING)) {
         interface_reset(ifp);
         return -1;
@@ -594,13 +615,6 @@
     if(rc > 0)
         send_update(ifp, 0, NULL, 0);
 
-    /* Check and set if interface is enable. */
-    if (babel_enable_if_lookup(ifp->name) >= 0) {
-        babel_ifp->flags |= BABEL_IF_IS_ENABLE;
-    } else {
-        babel_ifp->flags &= ~BABEL_IF_IS_ENABLE;
-    }
-
     return 1;
 }
 
@@ -613,6 +627,9 @@
     struct ipv6_mreq mreq;
     babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp);
 
+    if (!(babel_ifp->flags & BABEL_IF_IS_UP))
+        return 0;
+
     debugf(BABEL_DEBUG_IF, "interface reset: %s", ifp->name);
     babel_ifp->flags &= ~BABEL_IF_IS_UP;
 
diff --git a/babeld/babel_interface.h b/babeld/babel_interface.h
index 5b551fb..ec69bff 100644
--- a/babeld/babel_interface.h
+++ b/babeld/babel_interface.h
@@ -99,7 +99,6 @@
 #define BABEL_IF_SPLIT_HORIZON (1 << 2)
 #define BABEL_IF_LQ            (1 << 3)
 #define BABEL_IF_FARAWAY       (1 << 4)
-#define BABEL_IF_IS_ENABLE     (1 << 7)
 
 /* Only INTERFERING can appear on the wire. */
 #define BABEL_IF_CHANNEL_UNKNOWN 0
@@ -111,9 +110,7 @@
 {
     return (if_is_operative(ifp) &&
             ifp->connected != NULL &&
-            babel_get_if_nfo(ifp) != NULL &&
-            (babel_get_if_nfo(ifp)->flags & BABEL_IF_IS_UP) &&
-            (babel_get_if_nfo(ifp)->flags & BABEL_IF_IS_ENABLE));
+            (babel_get_if_nfo(ifp)->flags & BABEL_IF_IS_UP));
 }
 
 /* types:
