diff --git a/src/vnet/ip/ip6_error.h b/src/vnet/ip/ip6_error.h
index a6fb165..8546b4a 100644
--- a/src/vnet/ip/ip6_error.h
+++ b/src/vnet/ip/ip6_error.h
@@ -40,6 +40,7 @@
 #ifndef included_ip_ip6_error_h
 #define included_ip_ip6_error_h
 
+// clang-format off
 #define foreach_ip6_error                                               \
   /* Must be first. */                                                  \
   _ (NONE, "valid ip6 packets")                                         \
@@ -76,6 +77,9 @@
   _ (OUTACL_TABLE_MISS, "output ACL table-miss drops")                  \
   _ (OUTACL_SESSION_DENY, "output ACL session deny drops")              \
                                                                         \
+  /* Errors from mfib-forward */                                        \
+  _ (RPF_FAILURE, "Multicast RPF check failed")                         \
+                                                                        \
   /* Errors signalled by ip6-reassembly */                              \
   _ (REASS_MISSING_UPPER, "missing-upper layer drops")                  \
   _ (REASS_DUPLICATE_FRAGMENT, "duplicate fragments")                   \
@@ -87,6 +91,8 @@
   _ (REASS_INTERNAL_ERROR, "drops due to internal reassembly error")    \
   _ (REASS_UNSUPP_IP_PROTO, "unsupported ip protocol")
 
+// clang-format on
+
 typedef enum
 {
 #define _(sym,str) IP6_ERROR_##sym,
diff --git a/src/vnet/mfib/mfib_forward.c b/src/vnet/mfib/mfib_forward.c
index a7b7a6b..affedb0 100644
--- a/src/vnet/mfib/mfib_forward.c
+++ b/src/vnet/mfib/mfib_forward.c
@@ -443,33 +443,33 @@
             else
             {
                 next0 = MFIB_FORWARD_RPF_NEXT_DROP;
-                error0 = IP4_ERROR_RPF_FAILURE;
-            }
+		error0 =
+		  (is_v4 ? IP4_ERROR_RPF_FAILURE : IP6_ERROR_RPF_FAILURE);
+	    }
 
-            b0->error = error0 ? error_node->errors[error0] : 0;
+	    b0->error = error0 ? error_node->errors[error0] : 0;
 
-            if (b0->flags & VLIB_BUFFER_IS_TRACED)
-            {
-                mfib_forward_rpf_trace_t *t0;
+	    if (b0->flags & VLIB_BUFFER_IS_TRACED)
+	      {
+		mfib_forward_rpf_trace_t *t0;
 
-                t0 = vlib_add_trace (vm, node, b0, sizeof (*t0));
-                t0->entry_index = mfei0;
-                t0->itf_flags = iflags0;
-                if (NULL == mfi0)
-                {
-                    t0->sw_if_index = ~0;
-                }
-                else
-                {
-                    t0->sw_if_index = mfi0->mfi_sw_if_index;
-                }
-            }
-            vlib_validate_buffer_enqueue_x1 (vm, node, next,
-                                             to_next, n_left_to_next,
-                                             pi0, next0);
-        }
+		t0 = vlib_add_trace (vm, node, b0, sizeof (*t0));
+		t0->entry_index = mfei0;
+		t0->itf_flags = iflags0;
+		if (NULL == mfi0)
+		  {
+		    t0->sw_if_index = ~0;
+		  }
+		else
+		  {
+		    t0->sw_if_index = mfi0->mfi_sw_if_index;
+		  }
+	      }
+	    vlib_validate_buffer_enqueue_x1 (vm, node, next, to_next,
+					     n_left_to_next, pi0, next0);
+	}
 
-        vlib_put_next_frame(vm, node, next, n_left_to_next);
+	vlib_put_next_frame (vm, node, next, n_left_to_next);
     }
 
     return frame->n_vectors;
