summaryrefslogtreecommitdiffstats
path: root/extras/vom/vom/tap_interface_cmds.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'extras/vom/vom/tap_interface_cmds.cpp')
-rw-r--r--extras/vom/vom/tap_interface_cmds.cpp120
1 files changed, 3 insertions, 117 deletions
diff --git a/extras/vom/vom/tap_interface_cmds.cpp b/extras/vom/vom/tap_interface_cmds.cpp
index 4ebd2be4cf0..ffe3e97ba0c 100644
--- a/extras/vom/vom/tap_interface_cmds.cpp
+++ b/extras/vom/vom/tap_interface_cmds.cpp
@@ -23,127 +23,12 @@ DEFINE_VAPI_MSG_IDS_TAPV2_API_JSON;
namespace VOM {
namespace tap_interface_cmds {
-tap_create_cmd::tap_create_cmd(HW::item<handle_t>& item,
- const std::string& name,
- route::prefix_t& prefix,
- const l2_address_t& l2_address)
- : interface::create_cmd<vapi::Tap_connect>(item, name)
- , m_prefix(prefix)
- , m_l2_address(l2_address)
-{
-}
-
-rc_t
-tap_create_cmd::issue(connection& con)
-{
- msg_t req(con.ctx(), std::ref(*this));
-
- auto& payload = req.get_request().get_payload();
- memset(payload.tap_name, 0, sizeof(payload.tap_name));
- memcpy(payload.tap_name, m_name.c_str(),
- std::min(m_name.length(), sizeof(payload.tap_name)));
- if (m_prefix != route::prefix_t::ZERO) {
- if (m_prefix.address().is_v6()) {
- m_prefix.to_vpp(&payload.ip6_address_set, payload.ip6_address,
- &payload.ip6_mask_width);
- } else {
- m_prefix.to_vpp(&payload.ip4_address_set, payload.ip4_address,
- &payload.ip4_mask_width);
- payload.ip4_address_set = 1;
- }
- }
-
- if (m_l2_address != l2_address_t::ZERO) {
- m_l2_address.to_bytes(payload.mac_address, 6);
- } else {
- payload.use_random_mac = 1;
- }
-
- VAPI_CALL(req.execute());
-
- wait();
- if (m_hw_item.rc() == rc_t::OK) {
- insert_interface();
- }
-
- return (m_hw_item.rc());
-}
-
-std::string
-tap_create_cmd::to_string() const
-{
- std::ostringstream s;
- s << "tap-intf-create: " << m_hw_item.to_string()
- << " ip-prefix:" << m_prefix.to_string();
-
- return (s.str());
-}
-
-tap_delete_cmd::tap_delete_cmd(HW::item<handle_t>& item)
- : interface::delete_cmd<vapi::Tap_delete>(item)
-{
-}
-
-rc_t
-tap_delete_cmd::issue(connection& con)
-{
- msg_t req(con.ctx(), std::ref(*this));
-
- auto& payload = req.get_request().get_payload();
- payload.sw_if_index = m_hw_item.data().value();
-
- VAPI_CALL(req.execute());
-
- wait();
- m_hw_item.set(rc_t::NOOP);
-
- remove_interface();
- return rc_t::OK;
-}
-
-std::string
-tap_delete_cmd::to_string() const
-{
- std::ostringstream s;
- s << "tap-itf-delete: " << m_hw_item.to_string();
-
- return (s.str());
-}
-
-tap_dump_cmd::tap_dump_cmd()
-{
-}
-
-bool
-tap_dump_cmd::operator==(const tap_dump_cmd& other) const
-{
- return (true);
-}
-
-rc_t
-tap_dump_cmd::issue(connection& con)
-{
- m_dump.reset(new msg_t(con.ctx(), std::ref(*this)));
-
- VAPI_CALL(m_dump->execute());
-
- wait();
-
- return rc_t::OK;
-}
-
-std::string
-tap_dump_cmd::to_string() const
-{
- return ("tap-itf-dump");
-}
-
/*
* TAPV2
*/
tapv2_create_cmd::tapv2_create_cmd(HW::item<handle_t>& item,
const std::string& name,
- route::prefix_t& prefix,
+ const route::prefix_t& prefix,
const l2_address_t& l2_address)
: interface::create_cmd<vapi::Tap_create_v2>(item, name)
, m_prefix(prefix)
@@ -185,7 +70,8 @@ tapv2_create_cmd::issue(connection& con)
VAPI_CALL(req.execute());
- m_hw_item = wait();
+ wait();
+
if (m_hw_item.rc() == rc_t::OK) {
insert_interface();
}