--- iptraf-3.0.1/src/ifstats.c.ipv6-fix	2008-06-05 13:40:33.000000000 +0200
+++ iptraf-3.0.1/src/ifstats.c	2008-06-05 13:41:05.000000000 +0200
@@ -294,7 +294,7 @@ void printifentry(struct iflist *ptmp, W
     printlargenum(ptmp->ip6total, win);
     wmove(win, target_row, 39 * COLS / 80);
     printlargenum(ptmp->noniptotal, win);
-    wmove(win, target_row, 29 * COLS / 80);
+    wmove(win, target_row, 49 * COLS / 80);
     wprintw(win, "%8lu", ptmp->badtotal);
 }
 
@@ -329,10 +329,8 @@ void labelstats(WINDOW * win)
     wmove(win, 0, 32 * COLS / 80);
     wprintw(win, " IPv6 ");
     wmove(win, 0, 42 * COLS / 80);
-    wprintw(win, " IP ");
-    wmove(win, 0, 36 * COLS / 80);
     wprintw(win, " NonIP ");
-    wmove(win, 0, 51 * COLS / 80);
+    wmove(win, 0, 52 * COLS / 80);
     wprintw(win, " BadIP ");
     wmove(win, 0, 65 * COLS / 80);
     wprintw(win, " Activity ");
--- iptraf-3.0.1/src/othptab.c.ipv6-fix	2008-06-05 13:42:10.000000000 +0200
+++ iptraf-3.0.1/src/othptab.c	2008-06-05 13:51:12.000000000 +0200
@@ -189,6 +189,11 @@ struct othptabent *add_othp_entry(struct
                     ((struct icmphdr *) packet2)->type;
                 new_entry->un.icmp.code =
                     ((struct icmphdr *) packet2)->code;
+            } else if (protocol == IPPROTO_ICMPV6) {
+                new_entry->un.icmp6.type =
+                    ((struct icmp6_hdr *) packet2)->icmp6_type;
+                new_entry->un.icmp6.code =
+                    ((struct icmp6_hdr *) packet2)->icmp6_code;            	
             } else if (protocol == IPPROTO_UDP) {
                 servlook(servnames, ((struct udphdr *) packet2)->source,
                          IPPROTO_UDP, new_entry->un.udp.s_sname, 10);
@@ -565,8 +570,8 @@ void printothpentry(struct othptable *ta
                 case ICMP6_DST_UNREACH_ADMIN:
                     strcpy(additional, "admin");
                     break;
-                case ICMP6_DST_UNREACH_NOTNEIGHBOR:
-                    strcpy(additional, "not neigh");
+                case ICMP6_DST_UNREACH_BEYONDSCOPE:
+                    strcpy(additional, "not beyondsp");
                     break;
                 case ICMP6_DST_UNREACH_ADDR:
                     strcpy(additional, "unreach addr");
@@ -576,15 +581,15 @@ void printothpentry(struct othptable *ta
                     break;
                 }
                 break;
-    	    case ICMP6_PACKET_TOO_BIG:
+            case ICMP6_PACKET_TOO_BIG:
             	strcpy(description, "pkt too big");
                 break;
-	    case ICMP6_TIME_EXCEEDED:
-    	        strcpy(description, "time exceeded");
-    		break;
+            case ICMP6_TIME_EXCEEDED:
+                strcpy(description, "time exceeded");
+                break;
             case ICMP6_PARAM_PROB:
-	        strcpy(description, "param prob");
-    	        break;
+                strcpy(description, "param prob");
+                break;
             case ICMP6_ECHO_REQUEST:
                 strcpy(description, "echo req");
                 break;
@@ -597,15 +602,6 @@ void printothpentry(struct othptable *ta
             case ND_ROUTER_ADVERT:
                 strcpy(description, "router adv");
                 break;
-            case ICMP6_MEMBERSHIP_QUERY:
-                strcpy(description, "mbrship query");
-                break;
-            case ICMP6_MEMBERSHIP_REPORT:
-                strcpy(description, "mbrship report");
-                break;
-            case ICMP6_MEMBERSHIP_REDUCTION:
-                strcpy(description, "mbrship reduc");
-                break;
             case ND_NEIGHBOR_SOLICIT:
                 strcpy(description, "neigh sol");
                 break;