diff --git a/vnet/vnet/adj/adj_internal.h b/vnet/vnet/adj/adj_internal.h
index 8c96659..e3e0e04 100644
--- a/vnet/vnet/adj/adj_internal.h
+++ b/vnet/vnet/adj/adj_internal.h
@@ -86,7 +86,7 @@
 }
 
 extern void adj_nbr_update_rewrite_internal (ip_adjacency_t *adj,
-					     adj_nbr_rewrite_flag_t flags,
+					     ip_lookup_next_t adj_next_index,
 					     u32 complete_next_index,
 					     u32 next_index,
 					     u8 *rewrite);
diff --git a/vnet/vnet/adj/adj_midchain.c b/vnet/vnet/adj/adj_midchain.c
index 8786657..d40ea79 100644
--- a/vnet/vnet/adj/adj_midchain.c
+++ b/vnet/vnet/adj/adj_midchain.c
@@ -456,7 +456,7 @@
      * time for walkies fido.
      */
     fib_node_back_walk_ctx_t bw_ctx = {
-	.fnbw_reason = FIB_NODE_BW_REASON_ADJ_UPDATE,
+	.fnbw_reason = FIB_NODE_BW_REASON_FLAG_ADJ_UPDATE,
     };
 
     fib_walk_sync(FIB_NODE_TYPE_ADJ, adj_get_index(adj), &bw_ctx);
diff --git a/vnet/vnet/dpo/dpo.h b/vnet/vnet/dpo/dpo.h
index 9065f88..78b657d 100644
--- a/vnet/vnet/dpo/dpo.h
+++ b/vnet/vnet/dpo/dpo.h
@@ -69,8 +69,8 @@
     DPO_PROTO_MPLS,
 } __attribute__((packed)) dpo_proto_t;
 
-#define DPO_PROTO_NUM (DPO_PROTO_MPLS+1)
-#define DPO_PROTO_NONE (DPO_PROTO_NUM+1)
+#define DPO_PROTO_NUM ((dpo_proto_t)(DPO_PROTO_MPLS+1))
+#define DPO_PROTO_NONE ((dpo_proto_t)(DPO_PROTO_NUM+1))
 
 #define DPO_PROTOS {		\
     [DPO_PROTO_IP4]  = "ip4",	\
diff --git a/vnet/vnet/dpo/lookup_dpo.c b/vnet/vnet/dpo/lookup_dpo.c
index b13000d..e504366 100644
--- a/vnet/vnet/dpo/lookup_dpo.c
+++ b/vnet/vnet/dpo/lookup_dpo.c
@@ -379,8 +379,9 @@
 	    }
 
 	    /* do lookup */
-	    ip4_src_fib_lookup_one (fib_index0, input_addr0, &lbi0);
-	    ip4_src_fib_lookup_one (fib_index1, input_addr1, &lbi1);
+	    ip4_src_fib_lookup_two (fib_index0, fib_index1,
+                                    input_addr0, input_addr1,
+                                    &lbi0, &lbi1);
 	    lb0 = load_balance_get(lbi0);
 	    lb1 = load_balance_get(lbi1);
 
diff --git a/vnet/vnet/fib/fib_entry_src_default_route.c b/vnet/vnet/fib/fib_entry_src_default_route.c
index 8615f72..9f4e7c3 100644
--- a/vnet/vnet/fib/fib_entry_src_default_route.c
+++ b/vnet/vnet/fib/fib_entry_src_default_route.c
@@ -22,7 +22,7 @@
 static void
 fib_entry_src_default_route_init (fib_entry_src_t *src)
 {
-    src->fes_flags = FIB_ENTRY_FLAG_NONE;
+    src->fes_flags = FIB_ENTRY_SRC_FLAG_NONE;
 }
 
 static void
diff --git a/vnet/vnet/fib/fib_entry_src_mpls.c b/vnet/vnet/fib/fib_entry_src_mpls.c
index 4c316f7..14c7310 100644
--- a/vnet/vnet/fib/fib_entry_src_mpls.c
+++ b/vnet/vnet/fib/fib_entry_src_mpls.c
@@ -29,7 +29,7 @@
 {
     mpls_eos_bit_t eos;
 
-    src->fes_flags = FIB_ENTRY_FLAG_NONE;
+    src->fes_flags = FIB_ENTRY_SRC_FLAG_NONE;
     src->mpls.fesm_label = MPLS_LABEL_INVALID;
 
     FOR_EACH_MPLS_EOS_BIT(eos)
diff --git a/vnet/vnet/fib/fib_entry_src_special.c b/vnet/vnet/fib/fib_entry_src_special.c
index f73e280..52a6134 100644
--- a/vnet/vnet/fib/fib_entry_src_special.c
+++ b/vnet/vnet/fib/fib_entry_src_special.c
@@ -22,7 +22,7 @@
 static void
 fib_entry_src_special_init (fib_entry_src_t *src)
 {
-    src->fes_flags = FIB_ENTRY_FLAG_NONE;
+    src->fes_flags = FIB_ENTRY_SRC_FLAG_NONE;
 }
 
 /**
diff --git a/vnet/vnet/fib/fib_path.c b/vnet/vnet/fib/fib_path.c
index e92e233..7f5aac7 100644
--- a/vnet/vnet/fib/fib_path.c
+++ b/vnet/vnet/fib/fib_path.c
@@ -885,7 +885,7 @@
 static fib_path_cfg_flags_t
 fib_path_route_flags_to_cfg_flags (const fib_route_path_t *rpath)
 {
-    fib_path_cfg_flags_t cfg_flags = FIB_PATH_CFG_ATTRIBUTE_FIRST;
+    fib_path_cfg_flags_t cfg_flags = FIB_PATH_CFG_FLAG_NONE;
 
     if (rpath->frp_flags & FIB_ROUTE_PATH_RESOLVE_VIA_HOST)
 	cfg_flags |= FIB_PATH_CFG_FLAG_RESOLVE_HOST;
diff --git a/vnet/vnet/fib/fib_test.c b/vnet/vnet/fib/fib_test.c
index 78b9ec4..358e912 100644
--- a/vnet/vnet/fib/fib_test.c
+++ b/vnet/vnet/fib/fib_test.c
@@ -962,7 +962,7 @@
     /*
      * update the exclusive to use a different DPO
      */
-    ip_null_dpo_add_and_lock(FIB_PROTOCOL_IP4,
+    ip_null_dpo_add_and_lock(DPO_PROTO_IP4,
 			     IP_NULL_ACTION_SEND_ICMP_UNREACH,
 			     &ex_dpo);
     fib_table_entry_special_dpo_update(fib_index,
@@ -6115,7 +6115,7 @@
     /*
      * enqueue a walk across the parents children.
      */
-    high_ctx.fnbw_reason = FIB_NODE_BW_REASON_RESOLVE;
+    high_ctx.fnbw_reason = FIB_NODE_BW_REASON_FLAG_RESOLVE;
 
     fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX,
                    FIB_WALK_PRIORITY_HIGH, &high_ctx);
@@ -6245,7 +6245,7 @@
      * we do this by giving the queue draining process zero
      * time quanta. it's a do..while loop, so it does something.
      */
-    high_ctx.fnbw_reason = FIB_NODE_BW_REASON_RESOLVE;
+    high_ctx.fnbw_reason = FIB_NODE_BW_REASON_FLAG_RESOLVE;
 
     fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX,
                    FIB_WALK_PRIORITY_HIGH, &high_ctx);
@@ -6332,7 +6332,7 @@
      * park a async walk in the middle of the list, then have an sync walk catch
      * it. same expectations as async catches async.
      */
-    high_ctx.fnbw_reason = FIB_NODE_BW_REASON_RESOLVE;
+    high_ctx.fnbw_reason = FIB_NODE_BW_REASON_FLAG_RESOLVE;
 
     fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX,
                    FIB_WALK_PRIORITY_HIGH, &high_ctx);
diff --git a/vnet/vnet/fib/fib_types.c b/vnet/vnet/fib/fib_types.c
index f559ee5..383d48e 100644
--- a/vnet/vnet/fib/fib_types.c
+++ b/vnet/vnet/fib/fib_types.c
@@ -329,5 +329,5 @@
     case FIB_FORW_CHAIN_TYPE_MPLS_NON_EOS:
 	return (DPO_PROTO_MPLS);
     }
-    return (VNET_LINK_IP4);
+    return (DPO_PROTO_IP4);
 }
diff --git a/vnet/vnet/fib/fib_walk.c b/vnet/vnet/fib/fib_walk.c
index 078a651..83f09e3 100644
--- a/vnet/vnet/fib/fib_walk.c
+++ b/vnet/vnet/fib/fib_walk.c
@@ -108,7 +108,7 @@
     FIB_WALK_SCHEDULED,
     FIB_WALK_COMPLETED,
 } fib_walk_queue_stats_t;
-#define FIB_WALK_QUEUE_STATS_NUM (FIB_WALK_COMPLETED+1)
+#define FIB_WALK_QUEUE_STATS_NUM ((fib_walk_queue_stats_t)(FIB_WALK_COMPLETED+1))
 
 #define FIB_WALK_QUEUE_STATS {           \
     [FIB_WALK_SCHEDULED] = "scheduled",  \
diff --git a/vnet/vnet/fib/fib_walk.h b/vnet/vnet/fib/fib_walk.h
index 7ae99d0..7413d8a 100644
--- a/vnet/vnet/fib/fib_walk.h
+++ b/vnet/vnet/fib/fib_walk.h
@@ -29,7 +29,7 @@
     FIB_WALK_PRIORITY_LOW  = 1,
 } fib_walk_priority_t;
 
-#define FIB_WALK_PRIORITY_NUM (FIB_WALK_PRIORITY_LOW+1)
+#define FIB_WALK_PRIORITY_NUM ((fib_walk_priority_t)(FIB_WALK_PRIORITY_LOW+1))
 
 #define FIB_WALK_PRIORITIES {           \
     [FIB_WALK_PRIORITY_HIGH] = "high",  \
diff --git a/vnet/vnet/lisp-gpe/interface.c b/vnet/vnet/lisp-gpe/interface.c
index 15d203c..b293e2d 100644
--- a/vnet/vnet/lisp-gpe/interface.c
+++ b/vnet/vnet/lisp-gpe/interface.c
@@ -194,7 +194,6 @@
 VNET_HW_INTERFACE_CLASS (lisp_gpe_hw_class) = {
   .name = "LISP_GPE",
   .format_header = format_lisp_gpe_header_with_length,
-  .build_rewrite = default_build_rewrite,
   .build_rewrite = lisp_gpe_build_rewrite,
   .update_adjacency = lisp_gpe_update_adjacency,
 };
diff --git a/vnet/vnet/lisp-gpe/lisp_gpe_fwd_entry.c b/vnet/vnet/lisp-gpe/lisp_gpe_fwd_entry.c
index 54ee86d..c7aafc6 100644
--- a/vnet/vnet/lisp-gpe/lisp_gpe_fwd_entry.c
+++ b/vnet/vnet/lisp-gpe/lisp_gpe_fwd_entry.c
@@ -267,7 +267,7 @@
   dpo_proto_t dproto;
 
   dproto = (ip_prefix_version (&lfe->key->rmt.ippref) == IP4 ?
-	    FIB_PROTOCOL_IP4 : FIB_PROTOCOL_IP6);
+	    DPO_PROTO_IP4 : DPO_PROTO_IP6);
 
   lfe->src_fib_index = ip_dst_fib_add_route (lfe->eid_fib_index,
 					     &lfe->key->rmt.ippref);
diff --git a/vnet/vnet/mpls/mpls_output.c b/vnet/vnet/mpls/mpls_output.c
index 739e85d..91514d6 100644
--- a/vnet/vnet/mpls/mpls_output.c
+++ b/vnet/vnet/mpls/mpls_output.c
@@ -342,8 +342,6 @@
     foreach_mpls_adj_incomplete_next
 #undef _
   },
-
-  .format_trace = format_mpls_output_trace,
 };
 
 VLIB_NODE_FUNCTION_MULTIARCH (mpls_adj_incomplete_node,
