X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fsctp%2Fsctp_api.c;h=d804fcb36a40126049476b9dc7b373fcf4f39279;hb=b954f0125b9aa9324c4d2f9f25ba8232a94c624a;hp=bc7a69673ec712a81cfec3b0294667d53a161c9c;hpb=f267d11475d12975ca95cf2f5a61ad0f65ab9f45;p=vpp.git diff --git a/src/plugins/sctp/sctp_api.c b/src/plugins/sctp/sctp_api.c index bc7a69673ec..d804fcb36a4 100644 --- a/src/plugins/sctp/sctp_api.c +++ b/src/plugins/sctp/sctp_api.c @@ -21,6 +21,9 @@ #include #include +#include +#include + #include #include @@ -36,15 +39,15 @@ static void vlib_main_t *vm = vlib_get_main (); vl_api_sctp_add_src_dst_connection_reply_t *rmp; int rv; + ip46_address_t src, dst; + + ip_address_decode (&mp->src_address, &src); + ip_address_decode (&mp->dst_address, &dst); - if (mp->is_ipv6) - rv = sctp_sub_connection_add_ip6 - (vm, - (ip6_address_t *) mp->src_address, (ip6_address_t *) mp->dst_address); + if (ip46_address_is_ip4 (&src) && ip46_address_is_ip4 (&dst)) + rv = sctp_sub_connection_add_ip4 (vm, &src.ip4, &dst.ip4); else - rv = sctp_sub_connection_add_ip4 - (vm, - (ip4_address_t *) mp->src_address, (ip4_address_t *) mp->dst_address); + rv = sctp_sub_connection_add_ip6 (vm, &src.ip6, &dst.ip6); REPLY_MACRO (VL_API_SCTP_ADD_SRC_DST_CONNECTION_REPLY); } @@ -55,13 +58,15 @@ static void { vl_api_sctp_del_src_dst_connection_reply_t *rmp; int rv; + ip46_address_t src, dst; + + ip_address_decode (&mp->src_address, &src); + ip_address_decode (&mp->dst_address, &dst); - if (mp->is_ipv6) - rv = sctp_sub_connection_del_ip6 - ((ip6_address_t *) mp->src_address, (ip6_address_t *) mp->dst_address); + if (ip46_address_is_ip4 (&src) && ip46_address_is_ip4 (&dst)) + rv = sctp_sub_connection_del_ip4 (&src.ip4, &dst.ip4); else - rv = sctp_sub_connection_del_ip4 - ((ip4_address_t *) mp->src_address, (ip4_address_t *) mp->dst_address); + rv = sctp_sub_connection_del_ip6 (&src.ip6, &dst.ip6); REPLY_MACRO (VL_API_SCTP_ADD_SRC_DST_CONNECTION_REPLY); }