*/
#include "vom/neighbour_cmds.hpp"
+#include "vom/api_types.hpp"
+
+DEFINE_VAPI_MSG_IDS_IP_NEIGHBOR_API_JSON;
namespace VOM {
namespace neighbour_cmds {
-create_cmd::create_cmd(HW::item<bool>& item,
+create_cmd::create_cmd(HW::item<handle_t>& item,
handle_t itf,
const mac_address_t& mac,
- const boost::asio::ip::address& ip_addr)
- : rpc_cmd(item)
+ const boost::asio::ip::address& ip_addr,
+ const neighbour::flags_t& flags)
+ : srpc_cmd(item)
, m_itf(itf)
, m_mac(mac)
, m_ip_addr(ip_addr)
-{
-}
+ , m_flags(flags)
+{}
bool
create_cmd::operator==(const create_cmd& other) const
{
return ((m_mac == other.m_mac) && (m_ip_addr == other.m_ip_addr) &&
- (m_itf == other.m_itf));
+ (m_itf == other.m_itf) && (m_flags == other.m_flags));
}
rc_t
msg_t req(con.ctx(), std::ref(*this));
auto& payload = req.get_request().get_payload();
- payload.sw_if_index = m_itf.value();
payload.is_add = 1;
- payload.is_static = 1;
- m_mac.to_bytes(payload.mac_address, 6);
- to_bytes(m_ip_addr, &payload.is_ipv6, payload.dst_address);
+ payload.neighbor.sw_if_index = m_itf.value();
- VAPI_CALL(req.execute());
+ to_api(m_mac, payload.neighbor.mac_address);
+ to_api(m_ip_addr, payload.neighbor.ip_address);
+ payload.neighbor.flags = to_api(m_flags);
- m_hw_item.set(wait());
+ VAPI_CALL(req.execute());
- return rc_t::OK;
+ return (wait());
}
std::string
return (s.str());
}
-delete_cmd::delete_cmd(HW::item<bool>& item,
+delete_cmd::delete_cmd(HW::item<handle_t>& item,
handle_t itf,
const mac_address_t& mac,
- const boost::asio::ip::address& ip_addr)
- : rpc_cmd(item)
+ const boost::asio::ip::address& ip_addr,
+ const neighbour::flags_t& flags)
+ : srpc_cmd(item)
, m_itf(itf)
, m_mac(mac)
, m_ip_addr(ip_addr)
-{
-}
+ , m_flags(flags)
+{}
bool
delete_cmd::operator==(const delete_cmd& other) const
msg_t req(con.ctx(), std::ref(*this));
auto& payload = req.get_request().get_payload();
- payload.sw_if_index = m_itf.value();
payload.is_add = 0;
- payload.is_static = 1;
- m_mac.to_bytes(payload.mac_address, 6);
- to_bytes(m_ip_addr, &payload.is_ipv6, payload.dst_address);
+ payload.neighbor.sw_if_index = m_itf.value();
+
+ to_api(m_mac, payload.neighbor.mac_address);
+ to_api(m_ip_addr, payload.neighbor.ip_address);
+ payload.neighbor.flags = to_api(m_flags);
VAPI_CALL(req.execute());
dump_cmd::dump_cmd(const handle_t& hdl, const l3_proto_t& proto)
: m_itf(hdl)
, m_proto(proto)
-{
-}
+{}
dump_cmd::dump_cmd(const dump_cmd& d)
: m_itf(d.m_itf)
, m_proto(d.m_proto)
-{
-}
+{}
bool
dump_cmd::operator==(const dump_cmd& other) const
auto& payload = m_dump->get_request().get_payload();
payload.sw_if_index = m_itf.value();
- payload.is_ipv6 = m_proto.is_ipv6();
+ payload.af = to_api(m_proto);
VAPI_CALL(m_dump->execute());