X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fmpls%2Fmpls_api.c;h=d9f40501526a0db366dd6d3095ce6b14c02054f2;hb=e86a8edd3c14fb41ace2a12efd17bc7772bf623f;hp=762c40ffa8f6081ddba6b41e2235fb81bae77827;hpb=b2bcad6238b7e8a669ae29c74079eb9bb9fbb694;p=vpp.git diff --git a/src/vnet/mpls/mpls_api.c b/src/vnet/mpls/mpls_api.c index 762c40ffa8f..d9f40501526 100644 --- a/src/vnet/mpls/mpls_api.c +++ b/src/vnet/mpls/mpls_api.c @@ -53,6 +53,7 @@ _(MPLS_ROUTE_ADD_DEL, mpls_route_add_del) \ _(MPLS_TABLE_ADD_DEL, mpls_table_add_del) \ _(MPLS_TUNNEL_ADD_DEL, mpls_tunnel_add_del) \ _(MPLS_TUNNEL_DUMP, mpls_tunnel_dump) \ +_(SW_INTERFACE_SET_MPLS_ENABLE, sw_interface_set_mpls_enable) \ _(MPLS_FIB_DUMP, mpls_fib_dump) extern void stats_dslock_with_hint (int hint, int tag); @@ -219,25 +220,32 @@ mpls_route_add_del_t_handler (vnet_main_t * vnm, label_stack[ii] = ntohl (mp->mr_next_hop_out_label_stack[ii]); } - return (add_del_route_t_handler (mp->mr_is_multipath, mp->mr_is_add, 0, // mp->is_drop, + /* *INDENT-OFF* */ + return (add_del_route_t_handler (mp->mr_is_multipath, mp->mr_is_add, + 0, // mp->is_drop, 0, // mp->is_unreach, 0, // mp->is_prohibit, 0, // mp->is_local, mp->mr_is_multicast, - mp->mr_is_classify, - mp->mr_classify_table_index, - mp->mr_is_resolve_host, - mp->mr_is_resolve_attached, - mp->mr_is_interface_rx, - mp->mr_is_rpf_id, + mp->mr_is_classify, + mp->mr_classify_table_index, + mp->mr_is_resolve_host, + mp->mr_is_resolve_attached, + mp->mr_is_interface_rx, + mp->mr_is_rpf_id, + 0, // l2_bridged + 0, // is source_lookup + 0, // is_udp_encap fib_index, &pfx, mp->mr_next_hop_proto, - &nh, ntohl (mp->mr_next_hop_sw_if_index), + &nh, ~0, // next_hop_id + ntohl (mp->mr_next_hop_sw_if_index), next_hop_fib_index, mp->mr_next_hop_weight, mp->mr_next_hop_preference, ntohl (mp->mr_next_hop_via_label), label_stack)); + /* *INDENT-ON* */ } void @@ -349,9 +357,26 @@ vl_api_mpls_tunnel_add_del_t_handler (vl_api_mpls_tunnel_add_del_t * mp) /* *INDENT-ON* */ } +static void + vl_api_sw_interface_set_mpls_enable_t_handler + (vl_api_sw_interface_set_mpls_enable_t * mp) +{ + vl_api_sw_interface_set_mpls_enable_reply_t *rmp; + int rv = 0; + + VALIDATE_SW_IF_INDEX (mp); + + rv = mpls_sw_interface_enable_disable (&mpls_main, + ntohl (mp->sw_if_index), + mp->enable, 1); + + BAD_SW_IF_INDEX_LABEL; + REPLY_MACRO (VL_API_SW_INTERFACE_SET_MPLS_ENABLE_REPLY); +} + typedef struct mpls_tunnel_send_walk_ctx_t_ { - unix_shared_memory_queue_t *q; + svm_queue_t *q; u32 index; u32 context; } mpls_tunnel_send_walk_ctx_t; @@ -359,7 +384,7 @@ typedef struct mpls_tunnel_send_walk_ctx_t_ static void send_mpls_tunnel_entry (u32 mti, void *arg) { - fib_route_path_encode_t *api_rpaths, *api_rpath; + fib_route_path_encode_t *api_rpaths = NULL, *api_rpath; mpls_tunnel_send_walk_ctx_t *ctx; vl_api_mpls_tunnel_details_t *mp; const mpls_tunnel_t *mt; @@ -408,7 +433,7 @@ send_mpls_tunnel_entry (u32 mti, void *arg) static void vl_api_mpls_tunnel_dump_t_handler (vl_api_mpls_tunnel_dump_t * mp) { - unix_shared_memory_queue_t *q; + svm_queue_t *q; q = vl_api_client_index_to_input_queue (mp->client_index); if (q == 0) @@ -424,7 +449,7 @@ vl_api_mpls_tunnel_dump_t_handler (vl_api_mpls_tunnel_dump_t * mp) static void send_mpls_fib_details (vpe_api_main_t * am, - unix_shared_memory_queue_t * q, + svm_queue_t * q, const fib_table_t * table, u32 label, u32 eos, fib_route_path_encode_t * api_rpaths, u32 context) @@ -482,7 +507,7 @@ static void vl_api_mpls_fib_dump_t_handler (vl_api_mpls_fib_dump_t * mp) { vpe_api_main_t *am = &vpe_api_main; - unix_shared_memory_queue_t *q; + svm_queue_t *q; mpls_main_t *mm = &mpls_main; fib_table_t *fib_table; mpls_fib_t *mpls_fib;