From 3d1ef873da900ddf4ef18d5cf7709aab70ed6b7d Mon Sep 17 00:00:00 2001 From: Jakub Grajciar Date: Mon, 26 Aug 2019 12:55:15 +0200 Subject: [PATCH] bonding: API cleanup Use consistent API types. Type: fix Signed-off-by: Jakub Grajciar Change-Id: Idbba4ab6a412b75338e3149e51476693f0862f16 Signed-off-by: Jakub Grajciar --- extras/vom/vom/bond_interface_cmds.cpp | 4 +- src/vat/api_format.c | 12 +++--- src/vnet/bonding/bond.api | 74 ++++++++++++++++++++++------------ src/vnet/bonding/bond_api.c | 11 ++--- test/vpp_papi_provider.py | 1 + 5 files changed, 63 insertions(+), 39 deletions(-) diff --git a/extras/vom/vom/bond_interface_cmds.cpp b/extras/vom/vom/bond_interface_cmds.cpp index a43a832222a..b5b459a0d42 100644 --- a/extras/vom/vom/bond_interface_cmds.cpp +++ b/extras/vom/vom/bond_interface_cmds.cpp @@ -43,11 +43,11 @@ create_cmd::issue(connection& con) payload.use_custom_mac = 1; } - payload.mode = m_mode.value(); + payload.mode = (vapi_enum_bond_mode)m_mode.value(); if ((m_mode == bond_interface::mode_t::XOR || m_mode == bond_interface::mode_t::LACP) && m_lb != bond_interface::lb_t::UNSPECIFIED) - payload.lb = m_lb.value(); + payload.lb = (vapi_enum_bond_lb_algo)m_lb.value(); VAPI_CALL(req.execute()); diff --git a/src/vat/api_format.c b/src/vat/api_format.c index fe316c540a8..f8af24b0ea7 100644 --- a/src/vat/api_format.c +++ b/src/vat/api_format.c @@ -2051,8 +2051,8 @@ static void vl_api_sw_interface_bond_details_t_handler print (vam->ofp, "%-16s %-12d %-12U %-13U %-14u %-14u", mp->interface_name, ntohl (mp->sw_if_index), - format_bond_mode, mp->mode, format_bond_load_balance, mp->lb, - ntohl (mp->active_slaves), ntohl (mp->slaves)); + format_bond_mode, ntohl (mp->mode), format_bond_load_balance, + ntohl (mp->lb), ntohl (mp->active_slaves), ntohl (mp->slaves)); } static void vl_api_sw_interface_bond_details_t_handler_json @@ -2072,8 +2072,8 @@ static void vl_api_sw_interface_bond_details_t_handler_json vat_json_object_add_uint (node, "sw_if_index", ntohl (mp->sw_if_index)); vat_json_object_add_string_copy (node, "interface_name", mp->interface_name); - vat_json_object_add_uint (node, "mode", mp->mode); - vat_json_object_add_uint (node, "load_balance", mp->lb); + vat_json_object_add_uint (node, "mode", ntohl (mp->mode)); + vat_json_object_add_uint (node, "load_balance", ntohl (mp->lb)); vat_json_object_add_uint (node, "active_slaves", ntohl (mp->active_slaves)); vat_json_object_add_uint (node, "slaves", ntohl (mp->slaves)); } @@ -7737,8 +7737,8 @@ api_bond_create (vat_main_t * vam) mp->use_custom_mac = custom_mac; - mp->mode = mode; - mp->lb = lb; + mp->mode = htonl (mode); + mp->lb = htonl (lb); mp->id = htonl (id); mp->numa_only = numa_only; diff --git a/src/vnet/bonding/bond.api b/src/vnet/bonding/bond.api index 5d9a0563c1a..34fa0204a39 100644 --- a/src/vnet/bonding/bond.api +++ b/src/vnet/bonding/bond.api @@ -19,7 +19,29 @@ the bonding device driver */ -option version = "1.0.2"; +option version = "2.0.0"; + +import "vnet/interface_types.api"; +import "vnet/ethernet/ethernet_types.api"; + +enum bond_mode +{ + BOND_API_MODE_ROUND_ROBIN = 1, + BOND_API_MODE_ACTIVE_BACKUP = 2, + BOND_API_MODE_XOR = 3, + BOND_API_MODE_BROADCAST = 4, + BOND_API_MODE_LACP = 5, +}; + +enum bond_lb_algo +{ + BOND_API_LB_ALGO_L2 = 0, + BOND_API_LB_ALGO_L34 = 1, + BOND_API_LB_ALGO_L23 = 2, + BOND_API_LB_ALGO_RR = 3, + BOND_API_LB_ALGO_BC = 4, + BOND_API_LB_ALGO_AB = 5, +}; /** \brief Initialize a new bond interface with the given paramters @param client_index - opaque cookie to identify the sender @@ -36,11 +58,11 @@ define bond_create u32 client_index; u32 context; u32 id; - u8 use_custom_mac; - u8 mac_address[6]; - u8 mode; - u8 lb; - u8 numa_only; + bool use_custom_mac; + vl_api_mac_address_t mac_address; + vl_api_bond_mode_t mode; + vl_api_bond_lb_algo_t lb; + bool numa_only; }; /** \brief Reply for bond create reply @@ -52,7 +74,7 @@ define bond_create_reply { u32 context; i32 retval; - u32 sw_if_index; + vl_api_interface_index_t sw_if_index; }; /** \brief Delete bond interface @@ -64,7 +86,7 @@ autoreply define bond_delete { u32 client_index; u32 context; - u32 sw_if_index; + vl_api_interface_index_t sw_if_index; }; /** \brief Initialize a new bond interface with the given paramters @@ -79,10 +101,10 @@ define bond_enslave { u32 client_index; u32 context; - u32 sw_if_index; - u32 bond_sw_if_index; - u8 is_passive; - u8 is_long_timeout; + vl_api_interface_index_t sw_if_index; + vl_api_interface_index_t bond_sw_if_index; + bool is_passive; + bool is_long_timeout; }; /** \brief Reply for bond enslave reply @@ -104,7 +126,7 @@ autoreply define bond_detach_slave { u32 client_index; u32 context; - u32 sw_if_index; + vl_api_interface_index_t sw_if_index; }; /** \brief Dump bond interfaces request */ @@ -117,24 +139,24 @@ define sw_interface_bond_dump /** \brief Reply for bond dump request @param sw_if_index - software index of bond interface @param id - ID of interface - @param interface_name - name of interface @param mode - bonding mode @param lb - load balance algo @param numa_only - enable local numa TX for lacp mode @param active_slaves - active slaves count @param slaves - config slave count + @param interface_name - name of interface */ define sw_interface_bond_details { u32 context; - u32 sw_if_index; + vl_api_interface_index_t sw_if_index; u32 id; - u8 interface_name[64]; - u8 mode; - u8 lb; - u8 numa_only; + vl_api_bond_mode_t mode; + vl_api_bond_lb_algo_t lb; + bool numa_only; u32 active_slaves; u32 slaves; + string interface_name[64]; }; /** \brief bond slave dump @@ -146,7 +168,7 @@ define sw_interface_slave_dump { u32 client_index; u32 context; - u32 sw_if_index; + vl_api_interface_index_t sw_if_index; }; /** \brief Reply for slave dump request @@ -160,11 +182,11 @@ define sw_interface_slave_dump define sw_interface_slave_details { u32 context; - u32 sw_if_index; - u8 interface_name[64]; - u8 is_passive; - u8 is_long_timeout; - u8 is_local_numa; + vl_api_interface_index_t sw_if_index; + string interface_name[64]; + bool is_passive; + bool is_long_timeout; + bool is_local_numa; u32 weight; }; @@ -178,7 +200,7 @@ autoreply define sw_interface_set_bond_weight { u32 client_index; u32 context; - u32 sw_if_index; + vl_api_interface_index_t sw_if_index; u32 weight; }; diff --git a/src/vnet/bonding/bond_api.c b/src/vnet/bonding/bond_api.c index 74334b52bf2..ebbb80e956b 100644 --- a/src/vnet/bonding/bond_api.c +++ b/src/vnet/bonding/bond_api.c @@ -23,6 +23,7 @@ #include #include #include +#include #include @@ -78,12 +79,12 @@ vl_api_bond_create_t_handler (vl_api_bond_create_t * mp) if (mp->use_custom_mac) { - clib_memcpy (ap->hw_addr, mp->mac_address, 6); + mac_address_decode (mp->mac_address, (mac_address_t *) ap->hw_addr); ap->hw_addr_set = 1; } - ap->mode = mp->mode; - ap->lb = mp->lb; + ap->mode = ntohl (mp->mode); + ap->lb = ntohl (mp->lb); ap->numa_only = mp->numa_only; bond_create_if (vm, ap); @@ -168,8 +169,8 @@ bond_send_sw_interface_details (vpe_api_main_t * am, clib_memcpy (mp->interface_name, bond_if->interface_name, MIN (ARRAY_LEN (mp->interface_name) - 1, strlen ((const char *) bond_if->interface_name))); - mp->mode = bond_if->mode; - mp->lb = bond_if->lb; + mp->mode = htonl (bond_if->mode); + mp->lb = htonl (bond_if->lb); mp->numa_only = bond_if->numa_only; mp->active_slaves = htonl (bond_if->active_slaves); mp->slaves = htonl (bond_if->slaves); diff --git a/test/vpp_papi_provider.py b/test/vpp_papi_provider.py index 663f688e1db..e38b262eda7 100644 --- a/test/vpp_papi_provider.py +++ b/test/vpp_papi_provider.py @@ -37,6 +37,7 @@ defaultmapping = { 'bier_imp_add': {'is_add': 1, }, 'bier_route_add_del': {'is_add': 1, }, 'bier_table_add_del': {'is_add': 1, }, + 'bond_create': {'mac_address': '', 'id': 0xFFFFFFFF}, 'bridge_domain_add_del': {'flood': 1, 'uu_flood': 1, 'forward': 1, 'learn': 1, 'is_add': 1, }, 'bvi_create': {'user_instance': 4294967295, }, -- 2.16.6