A bit of buffer metadata reshuffling to accommodate flow_id
[vpp.git] / src / vpp-api / vom / bridge_domain_cmds.cpp
index 9117339..d1d536f 100644 (file)
  * limitations under the License.
  */
 
-#include "vom/bridge_domain.hpp"
-#include "vom/cmd.hpp"
+#include "vom/bridge_domain_cmds.hpp"
 
 DEFINE_VAPI_MSG_IDS_L2_API_JSON;
 
 namespace VOM {
-bridge_domain::create_cmd::create_cmd(HW::item<uint32_t>& item)
+namespace bridge_domain_cmds {
+create_cmd::create_cmd(HW::item<uint32_t>& item,
+                       const bridge_domain::learning_mode_t& lmode,
+                       const bridge_domain::arp_term_mode_t& amode,
+                       const bridge_domain::flood_mode_t& fmode,
+                       const bridge_domain::mac_age_mode_t& mmode)
   : rpc_cmd(item)
+  , m_learning_mode(lmode)
+  , m_arp_term_mode(amode)
+  , m_flood_mode(fmode)
+  , m_mac_age_mode(mmode)
 {
 }
 
 bool
-bridge_domain::create_cmd::operator==(const create_cmd& other) const
+create_cmd::operator==(const create_cmd& other) const
 {
   return (m_hw_item.data() == other.m_hw_item.data());
 }
 
 rc_t
-bridge_domain::create_cmd::issue(connection& con)
+create_cmd::issue(connection& con)
 {
   msg_t req(con.ctx(), std::ref(*this));
 
   auto& payload = req.get_request().get_payload();
   payload.bd_id = m_hw_item.data();
-  payload.flood = 1;
-  payload.uu_flood = 1;
+  payload.flood = m_flood_mode.value();
+  payload.uu_flood = m_flood_mode.value();
   payload.forward = 1;
-  payload.learn = 1;
-  payload.arp_term = 1;
-  payload.mac_age = 0;
+  payload.learn = m_learning_mode.value();
+  payload.arp_term = m_arp_term_mode.value();
+  payload.mac_age = m_mac_age_mode.value();
   payload.is_add = 1;
 
   VAPI_CALL(req.execute());
@@ -53,7 +61,7 @@ bridge_domain::create_cmd::issue(connection& con)
 }
 
 std::string
-bridge_domain::create_cmd::to_string() const
+create_cmd::to_string() const
 {
   std::ostringstream s;
   s << "bridge-domain-create: " << m_hw_item.to_string();
@@ -61,19 +69,19 @@ bridge_domain::create_cmd::to_string() const
   return (s.str());
 }
 
-bridge_domain::delete_cmd::delete_cmd(HW::item<uint32_t>& item)
+delete_cmd::delete_cmd(HW::item<uint32_t>& item)
   : rpc_cmd(item)
 {
 }
 
 bool
-bridge_domain::delete_cmd::operator==(const delete_cmd& other) const
+delete_cmd::operator==(const delete_cmd& other) const
 {
   return (m_hw_item == other.m_hw_item);
 }
 
 rc_t
-bridge_domain::delete_cmd::issue(connection& con)
+delete_cmd::issue(connection& con)
 {
   msg_t req(con.ctx(), std::ref(*this));
 
@@ -90,7 +98,7 @@ bridge_domain::delete_cmd::issue(connection& con)
 }
 
 std::string
-bridge_domain::delete_cmd::to_string() const
+delete_cmd::to_string() const
 {
   std::ostringstream s;
   s << "bridge-domain-delete: " << m_hw_item.to_string();
@@ -98,18 +106,18 @@ bridge_domain::delete_cmd::to_string() const
   return (s.str());
 }
 
-bridge_domain::dump_cmd::dump_cmd()
+dump_cmd::dump_cmd()
 {
 }
 
 bool
-bridge_domain::dump_cmd::operator==(const dump_cmd& other) const
+dump_cmd::operator==(const dump_cmd& other) const
 {
   return (true);
 }
 
 rc_t
-bridge_domain::dump_cmd::issue(connection& con)
+dump_cmd::issue(connection& con)
 {
   m_dump.reset(new msg_t(con.ctx(), std::ref(*this)));
 
@@ -124,11 +132,12 @@ bridge_domain::dump_cmd::issue(connection& con)
 }
 
 std::string
-bridge_domain::dump_cmd::to_string() const
+dump_cmd::to_string() const
 {
   return ("bridge-domain-dump");
 }
 }
+}
 
 /*
  * fd.io coding-style-patch-verification: ON