diff --git a/ospf6d/ChangeLog b/ospf6d/ChangeLog
index 9e8ff46..f0df6b9 100644
--- a/ospf6d/ChangeLog
+++ b/ospf6d/ChangeLog
@@ -1,3 +1,8 @@
+2004-07-23  Hasso Tepper  <hasso@estpak.ee>
+
+	* ospf6_interface.c, ospf6_zebra.c: use ifp->mtu6 instead of
+	  ifp->mtu.
+
 2004-07-23 Paul Jakma <paul@dishone.st>
 
 	* ospf6_main.c: Delete LOG_PERROR, not portable.
diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c
index aea5f42..3fb3290 100644
--- a/ospf6d/ospf6_interface.c
+++ b/ospf6d/ospf6_interface.c
@@ -142,8 +142,8 @@
   oi->flag = 0;
 
   /* Try to adjust I/O buffer size with IfMtu */
-  oi->ifmtu = ifp->mtu;
-  iobuflen = ospf6_iobuf_size (ifp->mtu);
+  oi->ifmtu = ifp->mtu6;
+  iobuflen = ospf6_iobuf_size (ifp->mtu6);
   if (oi->ifmtu > iobuflen)
     {
       zlog_info ("Interface %s: IfMtu is adjusted to I/O buffer size: %d.",
@@ -271,8 +271,8 @@
 
   /* Try to adjust I/O buffer size with IfMtu */
   if (oi->ifmtu == 0)
-    oi->ifmtu = ifp->mtu;
-  iobuflen = ospf6_iobuf_size (ifp->mtu);
+    oi->ifmtu = ifp->mtu6;
+  iobuflen = ospf6_iobuf_size (ifp->mtu6);
   if (oi->ifmtu > iobuflen)
     {
       zlog_info ("Interface %s: IfMtu is adjusted to I/O buffer size: %d.",
@@ -822,7 +822,7 @@
   if (oi->area)
     {
       vty_out (vty, "  Instance ID %d, Interface MTU %d (autodetect: %d)%s",
-	       oi->instance_id, oi->ifmtu, ifp->mtu, VTY_NEWLINE);
+	       oi->instance_id, oi->ifmtu, ifp->mtu6, VTY_NEWLINE);
       inet_ntop (AF_INET, &oi->area->area_id,
                  strbuf, sizeof (strbuf));
       vty_out (vty, "  Area ID %s, Cost %hu%s", strbuf, oi->cost,
@@ -1068,10 +1068,10 @@
   if (oi->ifmtu == ifmtu)
     return CMD_SUCCESS;
 
-  if (ifp->mtu != 0 && ifp->mtu < ifmtu)
+  if (ifp->mtu6 != 0 && ifp->mtu6 < ifmtu)
     {
       vty_out (vty, "%s's ospf6 ifmtu cannot go beyond physical mtu (%d)%s",
-               ifp->name, ifp->mtu, VTY_NEWLINE);
+               ifp->name, ifp->mtu6, VTY_NEWLINE);
       return CMD_WARNING;
     }
 
@@ -1452,7 +1452,7 @@
       if (ifp->desc)
         vty_out (vty, " description %s%s", ifp->desc, VTY_NEWLINE);
 
-      if (ifp->mtu != oi->ifmtu)
+      if (ifp->mtu6 != oi->ifmtu)
         vty_out (vty, " ipv6 ospf6 ifmtu %d%s", oi->ifmtu, VTY_NEWLINE);
       vty_out (vty, " ipv6 ospf6 cost %d%s",
                oi->cost, VTY_NEWLINE);
diff --git a/ospf6d/ospf6_zebra.c b/ospf6d/ospf6_zebra.c
index b622086..88211bb 100644
--- a/ospf6d/ospf6_zebra.c
+++ b/ospf6d/ospf6_zebra.c
@@ -73,7 +73,7 @@
   ifp = zebra_interface_add_read (zclient->ibuf);
   if (IS_OSPF6_DEBUG_ZEBRA (RECV))
     zlog_info ("Zebra Interface add: %s index %d mtu %d",
-               ifp->name, ifp->ifindex, ifp->mtu);
+               ifp->name, ifp->ifindex, ifp->mtu6);
   ospf6_interface_if_add (ifp);
   return 0;
 }
@@ -87,7 +87,7 @@
   ifp = zebra_interface_delete_read (zclient->ibuf);
   if (IS_OSPF6_DEBUG_ZEBRA (RECV))
     zlog_info ("Zebra Interface delete: %s index %d mtu %d",
-               ifp->name, ifp->ifindex, ifp->mtu);
+               ifp->name, ifp->ifindex, ifp->mtu6);
 
   ospf6_interface_if_del (ifp);
 #endif /*0*/
@@ -104,7 +104,7 @@
   if (IS_OSPF6_DEBUG_ZEBRA (RECV))
     zlog_info ("Zebra Interface state change: "
                  "%s index %d flags %ld metric %d mtu %d",
-               ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
+               ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu6);
 
   ospf6_interface_state_update (ifp);
   return 0;
diff --git a/ripngd/ChangeLog b/ripngd/ChangeLog
index 059ee75..6b05f3d 100644
--- a/ripngd/ChangeLog
+++ b/ripngd/ChangeLog
@@ -1,3 +1,8 @@
+2004-07-23  Hasso Tepper  <hasso@estpak.ee>
+
+	* ripng_interface.c, ripng_nexthop.c: use ifp->mtu6 instead of
+	  ifp->mtu.
+
 2004-07-01  Greg Troxel  <gdt@fnord.ir.bbn.com>
 
 	* ripng_interface.c (ripng_multicast_join): Use privs to do join,
diff --git a/ripngd/ripng_interface.c b/ripngd/ripng_interface.c
index d4d1e64..92067a7 100644
--- a/ripngd/ripng_interface.c
+++ b/ripngd/ripng_interface.c
@@ -166,8 +166,8 @@
   for (node = listhead (iflist); node; nextnode (node))
     {
       ifp = getdata (node);
-      if (mtu < ifp->mtu)
-	mtu = ifp->mtu;
+      if (mtu < ifp->mtu6)
+	mtu = ifp->mtu6;
     }
   return mtu;
 }
@@ -243,7 +243,7 @@
 
   if (IS_RIPNG_DEBUG_ZEBRA)
     zlog_info ("interface up %s index %d flags %ld metric %d mtu %d",
-	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
+	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu6);
 
   /* Check if this interface is RIPng enabled or not. */
   ripng_enable_apply (ifp);
@@ -276,7 +276,7 @@
 
   if (IS_RIPNG_DEBUG_ZEBRA)
     zlog_info ("interface down %s index %d flags %ld metric %d mtu %d",
-	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
+	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu6);
 
   return 0;
 }
@@ -291,7 +291,7 @@
 
   if (IS_RIPNG_DEBUG_ZEBRA)
     zlog_info ("RIPng interface add %s index %d flags %ld metric %d mtu %d",
-	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
+	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu6);
 
   /* Check is this interface is RIP enabled or not.*/
   ripng_enable_apply (ifp);
@@ -324,7 +324,7 @@
   }
 
   zlog_info("interface delete %s index %d flags %ld metric %d mtu %d",
-            ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
+            ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu6);
 
   /* To support pseudo interface do not free interface structure.  */
   /* if_delete(ifp); */
diff --git a/ripngd/ripng_nexthop.c b/ripngd/ripng_nexthop.c
index 2c5d45c..04b13c5 100644
--- a/ripngd/ripng_nexthop.c
+++ b/ripngd/ripng_nexthop.c
@@ -144,7 +144,7 @@
   stream_reset (s);
   num = 0;
 
-  mtu = ifp->mtu;
+  mtu = ifp->mtu6;
   if (mtu < 0)
     mtu = IFMINMTU;
 
