NAT44: in2out output feature skip translation for already translated packets (VPP...
[vpp.git] / src / vpp-api / vom / lldp_binding.hpp
index 993a2fd..0c56100 100644 (file)
 #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 {
 /**
@@ -35,6 +30,11 @@ 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
    */
@@ -44,11 +44,22 @@ public:
    * 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
    */
@@ -65,77 +76,9 @@ public:
   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:
   /**
@@ -191,7 +134,7 @@ 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
@@ -224,7 +167,7 @@ private:
   /**
    * 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;
 };
 };