diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c
index 3fb3290..ccacc23 100644
--- a/ospf6d/ospf6_interface.c
+++ b/ospf6d/ospf6_interface.c
@@ -29,7 +29,6 @@
 #include "prefix.h"
 #include "plist.h"
 
-#include "ospf6d.h"
 #include "ospf6_lsa.h"
 #include "ospf6_lsdb.h"
 #include "ospf6_network.h"
@@ -41,6 +40,7 @@
 #include "ospf6_neighbor.h"
 #include "ospf6_intra.h"
 #include "ospf6_spf.h"
+#include "ospf6d.h"
 
 unsigned char conf_debug_ospf6_interface = 0;
 
@@ -785,18 +785,18 @@
 
   vty_out (vty, "%s is %s, type %s%s",
            ifp->name, updown[if_is_up (ifp)], type,
-	   VTY_NEWLINE);
-  vty_out (vty, "  Interface ID: %d%s", ifp->ifindex, VTY_NEWLINE);
+	   VNL);
+  vty_out (vty, "  Interface ID: %d%s", ifp->ifindex, VNL);
 
   if (ifp->info == NULL)
     {
-      vty_out (vty, "   OSPF not enabled on this interface%s", VTY_NEWLINE);
+      vty_out (vty, "   OSPF not enabled on this interface%s", VNL);
       return 0;
     }
   else
     oi = (struct ospf6_interface *) ifp->info;
 
-  vty_out (vty, "  Internet Address:%s", VTY_NEWLINE);
+  vty_out (vty, "  Internet Address:%s", VNL);
   for (i = listhead (ifp->connected); i; nextnode (i))
     {
       c = (struct connected *)getdata (i);
@@ -806,15 +806,15 @@
         {
         case AF_INET:
           vty_out (vty, "    inet : %s%s", strbuf,
-		   VTY_NEWLINE);
+		   VNL);
           break;
         case AF_INET6:
           vty_out (vty, "    inet6: %s%s", strbuf,
-		   VTY_NEWLINE);
+		   VNL);
           break;
         default:
           vty_out (vty, "    ???  : %s%s", strbuf,
-		   VTY_NEWLINE);
+		   VNL);
           break;
         }
     }
@@ -822,30 +822,30 @@
   if (oi->area)
     {
       vty_out (vty, "  Instance ID %d, Interface MTU %d (autodetect: %d)%s",
-	       oi->instance_id, oi->ifmtu, ifp->mtu6, VTY_NEWLINE);
+	       oi->instance_id, oi->ifmtu, ifp->mtu6, VNL);
       inet_ntop (AF_INET, &oi->area->area_id,
                  strbuf, sizeof (strbuf));
       vty_out (vty, "  Area ID %s, Cost %hu%s", strbuf, oi->cost,
-	       VTY_NEWLINE);
+	       VNL);
     }
   else
-    vty_out (vty, "  Not Attached to Area%s", VTY_NEWLINE);
+    vty_out (vty, "  Not Attached to Area%s", VNL);
 
   vty_out (vty, "  State %s, Transmit Delay %d sec, Priority %d%s",
            ospf6_interface_state_str[oi->state],
            oi->transdelay, oi->priority,
-	   VTY_NEWLINE);
-  vty_out (vty, "  Timer intervals configured:%s", VTY_NEWLINE);
+	   VNL);
+  vty_out (vty, "  Timer intervals configured:%s", VNL);
   vty_out (vty, "   Hello %d, Dead %d, Retransmit %d%s",
            oi->hello_interval, oi->dead_interval, oi->rxmt_interval,
-	   VTY_NEWLINE);
+	   VNL);
 
   inet_ntop (AF_INET, &oi->drouter, drouter, sizeof (drouter));
   inet_ntop (AF_INET, &oi->bdrouter, bdrouter, sizeof (bdrouter));
-  vty_out (vty, "  DR: %s BDR: %s%s", drouter, bdrouter, VTY_NEWLINE);
+  vty_out (vty, "  DR: %s BDR: %s%s", drouter, bdrouter, VNL);
 
   vty_out (vty, "  Number of I/F scoped LSAs is %u%s",
-           oi->lsdb->count, VTY_NEWLINE);
+           oi->lsdb->count, VNL);
 
   gettimeofday (&now, (struct timezone *) NULL);
 
@@ -856,10 +856,10 @@
   vty_out (vty, "    %d Pending LSAs for LSUpdate in Time %s [thread %s]%s",
            oi->lsupdate_list->count, duration,
            (oi->thread_send_lsupdate ? "on" : "off"),
-           VTY_NEWLINE);
+           VNL);
   for (lsa = ospf6_lsdb_head (oi->lsupdate_list); lsa;
        lsa = ospf6_lsdb_next (lsa))
-    vty_out (vty, "      %s%s", lsa->name, VTY_NEWLINE);
+    vty_out (vty, "      %s%s", lsa->name, VNL);
 
   timerclear (&res);
   if (oi->thread_send_lsack)
@@ -868,10 +868,10 @@
   vty_out (vty, "    %d Pending LSAs for LSAck in Time %s [thread %s]%s",
            oi->lsack_list->count, duration,
            (oi->thread_send_lsack ? "on" : "off"),
-           VTY_NEWLINE);
+           VNL);
   for (lsa = ospf6_lsdb_head (oi->lsack_list); lsa;
        lsa = ospf6_lsdb_next (lsa))
-    vty_out (vty, "      %s%s", lsa->name, VTY_NEWLINE);
+    vty_out (vty, "      %s%s", lsa->name, VNL);
 
   return 0;
 }
@@ -896,7 +896,7 @@
       if (ifp == NULL)
         {
           vty_out (vty, "No such Interface: %s%s", argv[0],
-                   VTY_NEWLINE);
+                   VNL);
           return CMD_WARNING;
         }
       ospf6_interface_show (vty, ifp);
@@ -939,14 +939,14 @@
   ifp = if_lookup_by_name (argv[0]);
   if (ifp == NULL)
     {
-      vty_out (vty, "No such Interface: %s%s", argv[0], VTY_NEWLINE);
+      vty_out (vty, "No such Interface: %s%s", argv[0], VNL);
       return CMD_WARNING;
     }
 
   oi = ifp->info;
   if (oi == NULL)
     {
-      vty_out (vty, "OSPFv3 is not enabled on %s%s", argv[0], VTY_NEWLINE);
+      vty_out (vty, "OSPFv3 is not enabled on %s%s", argv[0], VNL);
       return CMD_WARNING;
     }
 
@@ -1071,7 +1071,7 @@
   if (ifp->mtu6 != 0 && ifp->mtu6 < ifmtu)
     {
       vty_out (vty, "%s's ospf6 ifmtu cannot go beyond physical mtu (%d)%s",
-               ifp->name, ifp->mtu6, VTY_NEWLINE);
+               ifp->name, ifp->mtu6, VNL);
       return CMD_WARNING;
     }
 
@@ -1081,7 +1081,7 @@
       if (iobuflen < ifmtu)
         {
           vty_out (vty, "%s's ifmtu is adjusted to I/O buffer size (%d).%s",
-                   ifp->name, iobuflen, VTY_NEWLINE);
+                   ifp->name, iobuflen, VNL);
           oi->ifmtu = iobuflen;
         }
       else
@@ -1101,6 +1101,55 @@
   return CMD_SUCCESS;
 }
 
+DEFUN (no_ipv6_ospf6_ifmtu,
+       no_ipv6_ospf6_ifmtu_cmd,
+       "no ipv6 ospf6 ifmtu",
+       NO_STR
+       IP6_STR
+       OSPF6_STR
+       "Interface MTU\n"
+       )
+{
+  struct ospf6_interface *oi;
+  struct interface *ifp;
+  int iobuflen;
+  listnode node;
+  struct ospf6_neighbor *on;
+
+  ifp = (struct interface *) vty->index;
+  assert (ifp);
+
+  oi = (struct ospf6_interface *) ifp->info;
+  if (oi == NULL)
+    oi = ospf6_interface_create (ifp);
+  assert (oi);
+
+  if (oi->ifmtu < ifp->mtu)
+    {
+      iobuflen = ospf6_iobuf_size (ifp->mtu);
+      if (iobuflen < ifp->mtu)
+        {
+          vty_out (vty, "%s's ifmtu is adjusted to I/O buffer size (%d).%s",
+                   ifp->name, iobuflen, VNL);
+          oi->ifmtu = iobuflen;
+        }
+      else
+        oi->ifmtu = ifp->mtu;
+    }
+  else
+    oi->ifmtu = ifp->mtu;
+
+  /* re-establish adjacencies */
+  for (node = listhead (oi->neighbor_list); node; nextnode (node))
+    {
+      on = (struct ospf6_neighbor *) getdata (node);
+      THREAD_OFF (on->inactivity_timer);
+      thread_execute (master, inactivity_timer, on, 0);
+    }
+
+  return CMD_SUCCESS;
+}
+
 DEFUN (ipv6_ospf6_cost,
        ipv6_ospf6_cost_cmd,
        "ipv6 ospf6 cost <1-65535>",
@@ -1447,36 +1496,36 @@
         continue;
 
       vty_out (vty, "interface %s%s",
-               oi->interface->name, VTY_NEWLINE);
+               oi->interface->name, VNL);
 
       if (ifp->desc)
-        vty_out (vty, " description %s%s", ifp->desc, VTY_NEWLINE);
+        vty_out (vty, " description %s%s", ifp->desc, VNL);
 
       if (ifp->mtu6 != oi->ifmtu)
-        vty_out (vty, " ipv6 ospf6 ifmtu %d%s", oi->ifmtu, VTY_NEWLINE);
+        vty_out (vty, " ipv6 ospf6 ifmtu %d%s", oi->ifmtu, VNL);
       vty_out (vty, " ipv6 ospf6 cost %d%s",
-               oi->cost, VTY_NEWLINE);
+               oi->cost, VNL);
       vty_out (vty, " ipv6 ospf6 hello-interval %d%s",
-               oi->hello_interval, VTY_NEWLINE);
+               oi->hello_interval, VNL);
       vty_out (vty, " ipv6 ospf6 dead-interval %d%s",
-               oi->dead_interval, VTY_NEWLINE);
+               oi->dead_interval, VNL);
       vty_out (vty, " ipv6 ospf6 retransmit-interval %d%s",
-               oi->rxmt_interval, VTY_NEWLINE);
+               oi->rxmt_interval, VNL);
       vty_out (vty, " ipv6 ospf6 priority %d%s",
-               oi->priority, VTY_NEWLINE);
+               oi->priority, VNL);
       vty_out (vty, " ipv6 ospf6 transmit-delay %d%s",
-               oi->transdelay, VTY_NEWLINE);
+               oi->transdelay, VNL);
       vty_out (vty, " ipv6 ospf6 instance-id %d%s",
-               oi->instance_id, VTY_NEWLINE);
+               oi->instance_id, VNL);
 
       if (oi->plist_name)
         vty_out (vty, " ipv6 ospf6 advertise prefix-list %s%s",
-                 oi->plist_name, VTY_NEWLINE);
+                 oi->plist_name, VNL);
 
       if (CHECK_FLAG (oi->flag, OSPF6_INTERFACE_PASSIVE))
-        vty_out (vty, " ipv6 ospf6 passive%s", VTY_NEWLINE);
+        vty_out (vty, " ipv6 ospf6 passive%s", VNL);
 
-      vty_out (vty, "!%s", VTY_NEWLINE);
+      vty_out (vty, "!%s", VNL);
     }
   return 0;
 }
@@ -1516,6 +1565,7 @@
   install_element (INTERFACE_NODE, &no_interface_desc_cmd);
   install_element (INTERFACE_NODE, &ipv6_ospf6_cost_cmd);
   install_element (INTERFACE_NODE, &ipv6_ospf6_ifmtu_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_ospf6_ifmtu_cmd);
   install_element (INTERFACE_NODE, &ipv6_ospf6_deadinterval_cmd);
   install_element (INTERFACE_NODE, &ipv6_ospf6_hellointerval_cmd);
   install_element (INTERFACE_NODE, &ipv6_ospf6_priority_cmd);
@@ -1559,7 +1609,7 @@
 config_write_ospf6_debug_interface (struct vty *vty)
 {
   if (IS_OSPF6_DEBUG_INTERFACE)
-    vty_out (vty, "debug ospf6 interface%s", VTY_NEWLINE);
+    vty_out (vty, "debug ospf6 interface%s", VNL);
   return 0;
 }
 
