diff options
Diffstat (limited to 'vnet')
-rw-r--r-- | vnet/vnet/mpls/mpls.c | 10 | ||||
-rw-r--r-- | vnet/vnet/sr/sr_replicate.c | 3 |
2 files changed, 8 insertions, 5 deletions
diff --git a/vnet/vnet/mpls/mpls.c b/vnet/vnet/mpls/mpls.c index c3e642a649c..0e610e175cc 100644 --- a/vnet/vnet/mpls/mpls.c +++ b/vnet/vnet/mpls/mpls.c @@ -415,17 +415,17 @@ vnet_mpls_local_label (vlib_main_t * vm, fib_node_index_t lfe, fib_index; u32 fi; - pfx.fp_proto = FIB_PROTOCOL_MPLS; - pfx.fp_len = 21; - pfx.fp_label = local_label; - pfx.fp_payload_proto = fib_proto_to_dpo(rpaths[0].frp_proto); - if (NULL == rpaths) { error = clib_error_return(0 , "no paths"); goto done; } + pfx.fp_proto = FIB_PROTOCOL_MPLS; + pfx.fp_len = 21; + pfx.fp_label = local_label; + pfx.fp_payload_proto = fib_proto_to_dpo(rpaths[0].frp_proto); + /* * the CLI parsing stored table Ids, swap to FIB indicies */ diff --git a/vnet/vnet/sr/sr_replicate.c b/vnet/vnet/sr/sr_replicate.c index 34cde3d2938..5f9de5042af 100644 --- a/vnet/vnet/sr/sr_replicate.c +++ b/vnet/vnet/sr/sr_replicate.c @@ -253,6 +253,8 @@ sr_replicate_node_fn (vlib_main_t * vm, /* Not the last tunnel to process */ clone0 = rte_pktmbuf_clone (orig_mb0, bm->pktmbuf_pools[socket_id]); + if (clone0 == 0) + goto clone_fail; nb_seg = 0; clone0i = clone0; clone0_c = NULL; @@ -289,6 +291,7 @@ sr_replicate_node_fn (vlib_main_t * vm, if (PREDICT_FALSE (!clone0 || !hdr_mb0)) { + clone_fail: b0->error = node->errors[SR_REPLICATE_ERROR_NO_BUFFERS]; vec_foreach_index (i, rte_mbuf_vec) |