X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsrmpls%2Fsr_mpls_api.c;h=359d7446aab0058e96b85e9f281ed29b5d667f70;hb=07bbaef593939e9d03ba131e03296587472514ce;hp=2c36c0dd9f20e1ade0f1a0769593ff4cceb31352;hpb=d23d39cc012e5b1075a2323d6e940ae5ad43de46;p=vpp.git diff --git a/src/vnet/srmpls/sr_mpls_api.c b/src/vnet/srmpls/sr_mpls_api.c index 2c36c0dd9f2..359d7446aab 100644 --- a/src/vnet/srmpls/sr_mpls_api.c +++ b/src/vnet/srmpls/sr_mpls_api.c @@ -24,6 +24,8 @@ #include #include +#include + #include #define vl_typedefs /* define message structures */ @@ -66,7 +68,7 @@ vl_api_sr_mpls_policy_add_t_handler (vl_api_sr_mpls_policy_add_t * mp) int rv = 0; rv = sr_mpls_policy_add (ntohl (mp->bsid), - segments, mp->type, ntohl (mp->weight)); + segments, mp->is_spray, ntohl (mp->weight)); vec_free (segments); REPLY_MACRO (VL_API_SR_MPLS_POLICY_ADD_REPLY); @@ -90,8 +92,8 @@ vl_api_sr_mpls_policy_mod_t_handler (vl_api_sr_mpls_policy_mod_t * mp) int rv = 0; rv = sr_mpls_policy_mod (ntohl (mp->bsid), - mp->operation, segments, ntohl (mp->sl_index), - ntohl (mp->weight)); + ntohl (mp->operation), segments, + ntohl (mp->sl_index), ntohl (mp->weight)); vec_free (segments); REPLY_MACRO (VL_API_SR_MPLS_POLICY_MOD_REPLY); @@ -111,28 +113,31 @@ static void vl_api_sr_mpls_steering_add_del_t_handler (vl_api_sr_mpls_steering_add_del_t * mp) { vl_api_sr_mpls_steering_add_del_reply_t *rmp; - ip46_address_t prefix; - memset (&prefix, 0, sizeof (ip46_address_t)); - if (mp->traffic_type == SR_STEER_IPV4) - memcpy (&prefix.ip4, mp->prefix_addr, sizeof (prefix.ip4)); - else - memcpy (&prefix, mp->prefix_addr, sizeof (prefix.ip6)); + fib_prefix_t prefix; + ip46_address_t next_hop; + clib_memset (&prefix, 0, sizeof (ip46_address_t)); + + ip_prefix_decode (&mp->prefix, &prefix); + ip_address_decode (&mp->next_hop, &next_hop); int rv = 0; if (mp->is_del) - rv = sr_mpls_steering_policy_del (&prefix, - ntohl (mp->mask_width), - mp->traffic_type, + rv = sr_mpls_steering_policy_del (&prefix.fp_addr, + prefix.fp_len, + ip46_address_is_ip4 (&prefix.fp_addr) ? + SR_STEER_IPV4 : SR_STEER_IPV6, ntohl (mp->table_id), ntohl (mp->color)); else rv = sr_mpls_steering_policy_add (ntohl (mp->bsid), ntohl (mp->table_id), - &prefix, - ntohl (mp->mask_width), - mp->traffic_type, - (ip46_address_t *) & mp->next_hop, - mp->nh_type, + &prefix.fp_addr, + prefix.fp_len, + ip46_address_is_ip4 (&prefix.fp_addr) ? + SR_STEER_IPV4 : SR_STEER_IPV6, + &next_hop, + ip46_address_is_ip4 (&next_hop) ? + SR_STEER_IPV4 : SR_STEER_IPV6, ntohl (mp->color), mp->co_bits, ntohl (mp->vpn_label)); @@ -146,14 +151,13 @@ static void vl_api_sr_mpls_policy_assign_endpoint_color_t_handler int rv = 0; ip46_address_t endpoint; - memset (&endpoint, 0, sizeof (ip46_address_t)); - if (mp->endpoint_type == SR_STEER_IPV4) - memcpy (&endpoint.ip4, mp->endpoint, sizeof (endpoint.ip4)); - else - memcpy (&endpoint, mp->endpoint, sizeof (endpoint.ip6)); + clib_memset (&endpoint, 0, sizeof (ip46_address_t)); + ip_address_decode (&mp->endpoint, &endpoint); rv = sr_mpls_policy_assign_endpoint_color (ntohl (mp->bsid), - &endpoint, mp->endpoint_type, + &endpoint, + ip46_address_is_ip4 (&endpoint) ? + SR_STEER_IPV4 : SR_STEER_IPV6, ntohl (mp->color)); REPLY_MACRO (VL_API_SR_MPLS_POLICY_ASSIGN_ENDPOINT_COLOR_REPLY); @@ -161,7 +165,7 @@ static void vl_api_sr_mpls_policy_assign_endpoint_color_t_handler /* * sr_mpls_api_hookup Add vpe's API message handlers to the table. vlib has - * alread mapped shared memory and added the client registration handlers. + * already mapped shared memory and added the client registration handlers. * See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process() */ #define vl_msg_name_crc_list @@ -179,7 +183,7 @@ setup_message_id_table (api_main_t * am) static clib_error_t * sr_mpls_api_hookup (vlib_main_t * vm) { - api_main_t *am = &api_main; + api_main_t *am = vlibapi_get_main (); #define _(N,n) \ vl_msg_api_set_handlers(VL_API_##N, #n, \