diff --git a/ospfd/ospf_ase.c b/ospfd/ospf_ase.c
index 9194c56..b60aa07 100644
--- a/ospfd/ospf_ase.c
+++ b/ospfd/ospf_ase.c
@@ -154,7 +154,7 @@
 
   for (ifn = listhead (ospf_top->oiflist); ifn; nextnode (ifn))
     if ((oi = getdata (ifn)) != NULL)
-      if (if_is_up (oi->ifp))
+      if (if_is_operative (oi->ifp))
 	if (oi->type != OSPF_IFTYPE_VIRTUALLINK)
 	  if (IPV4_ADDR_SAME (&oi->address->u.prefix4, &fwd_addr))
 	    return 0;
diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c
index 6d7af05..a4495e9 100644
--- a/ospfd/ospf_lsa.c
+++ b/ospfd/ospf_lsa.c
@@ -640,7 +640,7 @@
       struct interface *ifp = oi->ifp;
 
       /* Check interface is up, OSPF is enable. */
-      if (if_is_up (ifp))
+      if (if_is_operative (ifp))
 	{
 	  if (oi->state != ISM_Down)
 	    {
@@ -1391,7 +1391,7 @@
     {
       struct ospf_interface *oi = getdata (n1);
 
-      if (if_is_up (oi->ifp))
+      if (if_is_operative (oi->ifp))
 	if (oi->address->family == AF_INET)
 	  if (prefix_match (oi->address, &nh))
 	    return nexthop;
@@ -1412,7 +1412,7 @@
 
   fwd.s_addr = 0;
 
-  if (if_is_up (oi->ifp))
+  if (if_is_operative (oi->ifp))
     return oi->address->u.prefix4;
   
   return fwd;
@@ -1432,7 +1432,7 @@
     {
       struct ospf_interface *oi = getdata (n1);
 
-      if (if_is_up (oi->ifp))
+      if (if_is_operative (oi->ifp))
 	if (oi->area->external_routing == OSPF_AREA_NSSA)
 	  if (oi->address && oi->address->family == AF_INET)
 	    return (oi->address->u.prefix4 );
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index 73215fa..accf7a8 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -2526,12 +2526,11 @@
   oi_count = ospf_oi_count (ifp);
   
   /* Is interface up? */
-  if (if_is_up (ifp))
-    vty_out (vty, "%s is up, line protocol is up%s", ifp->name, VTY_NEWLINE);
-  else
-    {
-      vty_out (vty, "%s is down, line protocol is down%s", ifp->name,
-	       VTY_NEWLINE);
+  if (if_is_operative (ifp)) {
+  	vty_out (vty, "%s is up%s", ifp->name, VTY_NEWLINE);
+  } else
+  	{
+  		vty_out (vty, "%s is down%s", ifp->name, VTY_NEWLINE);
 
       
       if (oi_count == 0)
diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c
index 1ad31f2..72ffe76 100644
--- a/ospfd/ospf_zebra.c
+++ b/ospfd/ospf_zebra.c
@@ -154,6 +154,7 @@
   ifp->ifindex = stream_getl (s);
 
   /* Read interface's value. */
+  ifp->status = stream_getc (s);
   ifp->flags = stream_getl (s);
   ifp->metric = stream_getl (s);
   ifp->mtu = stream_getl (s);
@@ -175,7 +176,7 @@
     return 0;
 
   /* Interface is already up. */
-  if (if_is_up (ifp))
+  if (if_is_operative (ifp))
     {
       /* Temporarily keep ifp values. */
       memcpy (&if_tmp, ifp, sizeof (struct interface));
diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c
index e7de8ea..e8bd360 100644
--- a/ospfd/ospfd.c
+++ b/ospfd/ospfd.c
@@ -761,7 +761,7 @@
 
 		ospf_area_add_if (oi->area, oi);
 
-		if (if_is_up (ifp)) 
+		if (if_is_operative (ifp)) 
 		  ospf_if_up (oi);
 
 		break;
