*/
#include "vom/interface.hpp"
+#include "vom/api_types.hpp"
#include "vom/bond_group_binding.hpp"
#include "vom/bond_group_binding_cmds.hpp"
#include "vom/bond_interface_cmds.hpp"
return (m_l2_address.data());
}
+const interface::admin_state_t&
+interface::admin_state() const
+{
+ return (m_state.data());
+}
+
interface::const_iterator_t
interface::cbegin()
{
std::queue<cmd*>&
interface::mk_create_cmd(std::queue<cmd*>& q)
{
- if ((type_t::LOOPBACK == m_type) || (type_t::BVI == m_type)) {
+ if (type_t::LOOPBACK == m_type) {
q.push(new interface_cmds::loopback_create_cmd(m_hdl, m_name));
q.push(new interface_cmds::set_tag(m_hdl, m_name));
/*
* set the m_tag for pretty-print
*/
m_tag = m_name;
+ } else if (type_t::BVI == m_type) {
+ q.push(new interface_cmds::bvi_create_cmd(m_hdl, m_name));
+ q.push(new interface_cmds::set_tag(m_hdl, m_name));
+ m_tag = m_name;
} else if (type_t::AFPACKET == m_type) {
q.push(new interface_cmds::af_packet_create_cmd(m_hdl, m_name));
if (!m_tag.empty())
std::queue<cmd*>&
interface::mk_delete_cmd(std::queue<cmd*>& q)
{
- if ((type_t::LOOPBACK == m_type) || (type_t::BVI == m_type)) {
+ if (type_t::LOOPBACK == m_type) {
q.push(new interface_cmds::loopback_delete_cmd(m_hdl));
+ } else if (type_t::BVI == m_type) {
+ q.push(new interface_cmds::bvi_delete_cmd(m_hdl));
} else if (type_t::AFPACKET == m_type) {
q.push(new interface_cmds::af_packet_delete_cmd(m_hdl, m_name));
} else if (type_t::VHOST == m_type) {
void
interface::set(const l2_address_t& addr)
{
- assert(rc_t::UNSET == m_l2_address.rc());
- m_l2_address.set(rc_t::NOOP);
- m_l2_address.update(addr);
+ m_l2_address = { addr, rc_t::NOOP };
}
void
m_stats.m_rx = count;
else if ("tx" == stat_type)
m_stats.m_tx = count;
+ else if ("drops" == stat_type)
+ m_stats.m_drop = count;
else if ("rx-unicast" == stat_type)
m_stats.m_rx_unicast = count;
else if ("tx-unicast" == stat_type)
operator<<(std::ostream& os, const interface::stats_t& stats)
{
os << "["
- << "rx [packets " << stats.m_rx.packets << ", bytes " << stats.m_rx.bytes
- << "]"
- << " rx-unicast [packets " << stats.m_rx_unicast.packets << ", bytes "
- << stats.m_rx_unicast.bytes << "]"
- << " rx-multicast [packets " << stats.m_rx_multicast.packets << ", bytes "
- << stats.m_rx_multicast.bytes << "]"
- << " rx-broadcast [packets " << stats.m_rx_broadcast.packets << ", bytes "
- << stats.m_rx_broadcast.bytes << "]"
- << " tx [packets " << stats.m_tx.packets << ", bytes " << stats.m_tx.bytes
- << "]"
- << " tx-unicast [packets " << stats.m_tx_unicast.packets << ", bytes "
- << stats.m_tx_unicast.bytes << "]"
- << " tx-multicast [packets " << stats.m_tx_multicast.packets << ", bytes "
- << stats.m_tx_multicast.bytes << "]"
- << " tx-broadcast [packets " << stats.m_tx_broadcast.packets << ", bytes "
- << stats.m_tx_broadcast.bytes << "]]" << std::endl;
+ << "rx " << stats.m_rx << " rx-unicast " << stats.m_rx_unicast
+ << " rx-multicast " << stats.m_rx_multicast << " rx-broadcast "
+ << stats.m_rx_broadcast << " tx " << stats.m_tx << " tx-unicast "
+ << stats.m_tx_unicast << " tx-multicast " << stats.m_tx_multicast
+ << " tx-broadcast " << stats.m_tx_broadcast << " drops " << stats.m_drop
+ << "]" << std::endl;
return (os);
}
for (auto& l3_record : *dcmd) {
auto& payload = l3_record.get_payload();
- const route::prefix_t pfx(payload.is_ipv6, payload.ip,
- payload.prefix_length);
+ const route::prefix_t pfx = from_api(payload.prefix);
VOM_LOG(log_level_t::DEBUG) << "dump: " << pfx.to_string();