X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsrmpls%2Fsr_mpls_api.c;h=359d7446aab0058e96b85e9f281ed29b5d667f70;hb=00ec4019b399132a72467ed4c3fb039d4f2466b7;hp=f17c8b482e3080a4f4cc4e7456956e333c2085f5;hpb=908965db7e3075ba7bacd924bfb0df203fe6cc7d;p=vpp.git diff --git a/src/vnet/srmpls/sr_mpls_api.c b/src/vnet/srmpls/sr_mpls_api.c index f17c8b482e3..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; + fib_prefix_t prefix; + ip46_address_t next_hop; clib_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)); + + 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)); @@ -147,13 +152,12 @@ static void vl_api_sr_mpls_policy_assign_endpoint_color_t_handler ip46_address_t endpoint; clib_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)); + 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);