#ifndef __VOM_LLDP_BINDING_H__
#define __VOM_LLDP_BINDING_H__
-#include "vom/dump_cmd.hpp"
#include "vom/hw.hpp"
#include "vom/inspect.hpp"
#include "vom/interface.hpp"
#include "vom/object_base.hpp"
#include "vom/om.hpp"
-#include "vom/rpc_cmd.hpp"
#include "vom/singular_db.hpp"
-#include "vom/sub_interface.hpp"
-
-#include <vapi/lldp.api.vapi.hpp>
namespace VOM {
/**
class lldp_binding : public object_base
{
public:
+ /**
+ * Typedef for the key of a LLDP binding
+ */
+ typedef interface::key_t key_t;
+
/**
* Construct a new object matching the desried state
*/
* Copy Constructor
*/
lldp_binding(const lldp_binding& o);
+
/**
* Destructor
*/
~lldp_binding();
+ /**
+ * Comparison operator
+ */
+ bool operator==(const lldp_binding& b) const;
+
+ /**
+ * Return this object's key
+ */
+ const key_t& key() const;
+
/**
* Return the 'singular' of the LLDP binding that matches this object
*/
static void dump(std::ostream& os);
/**
- * A command class that binds the LLDP config to the interface
+ * Find or add LLDP binding based on its key
*/
- class bind_cmd
- : public rpc_cmd<HW::item<bool>, rc_t, vapi::Sw_interface_set_lldp>
- {
- public:
- /**
- * Constructor
- */
- bind_cmd(HW::item<bool>& item,
- const handle_t& itf,
- const std::string& port_desc);
-
- /**
- * Issue the command to VPP/HW
- */
- rc_t issue(connection& con);
- /**
- * convert to string format for debug purposes
- */
- std::string to_string() const;
-
- /**
- * Comparison operator - only used for UT
- */
- bool operator==(const bind_cmd& i) const;
-
- private:
- /**
- * Reference to the HW::item of the interface to bind
- */
- const handle_t& m_itf;
-
- /**
- * The LLDP client's hostname
- */
- const std::string m_port_desc;
- };
-
- /**
- * A cmd class that Unbinds Lldp Config from an interface
- */
- class unbind_cmd
- : public rpc_cmd<HW::item<bool>, rc_t, vapi::Sw_interface_set_lldp>
- {
- public:
- /**
- * Constructor
- */
- unbind_cmd(HW::item<bool>& item, const handle_t& itf);
-
- /**
- * Issue the command to VPP/HW
- */
- rc_t issue(connection& con);
- /**
- * convert to string format for debug purposes
- */
- std::string to_string() const;
-
- /**
- * Comparison operator - only used for UT
- */
- bool operator==(const unbind_cmd& i) const;
-
- private:
- /**
- * Reference to the HW::item of the interface to unbind
- */
- const handle_t& m_itf;
- };
+ static std::shared_ptr<lldp_binding> find(const key_t& k);
private:
/**
/**
* It's the singular_db class that calls replay()
*/
- friend class singular_db<interface::key_type, lldp_binding>;
+ friend class singular_db<key_t, lldp_binding>;
/**
* Sweep/reap the object if still stale
/**
* A map of all Lldp bindings keyed against the interface.
*/
- static singular_db<interface::key_type, lldp_binding> m_db;
+ static singular_db<key_t, lldp_binding> m_db;
};
};