GBP V2
[vpp.git] / src / vpp-api / vom / nat_static.hpp
index 1aa4a5e..2dcadb3 100644 (file)
 #ifndef __VOM_NAT_STATIC_H__
 #define __VOM_NAT_STATIC_H__
 
-#include "vom/dump_cmd.hpp"
 #include "vom/route.hpp"
 #include "vom/singular_db.hpp"
 #include "vom/types.hpp"
 
-#include <vapi/nat.api.vapi.hpp>
-
 namespace VOM {
 /**
  * A entry in the ARP termination table of a Bridge Domain
@@ -42,7 +39,7 @@ public:
    * table
    */
   nat_static(const boost::asio::ip::address& inside,
-             const boost::asio::ip::address_v4& outside);
+             const boost::asio::ip::address& outside);
 
   /**
    * Construct an NAT Static binding with the outside address in
@@ -50,7 +47,7 @@ public:
    */
   nat_static(const route_domain& rd,
              const boost::asio::ip::address& inside,
-             const boost::asio::ip::address_v4& outside);
+             const boost::asio::ip::address& outside);
 
   /**
    * Copy Construct
@@ -62,6 +59,16 @@ public:
    */
   ~nat_static();
 
+  /**
+   * Comparison operator - for UT
+   */
+  bool operator==(const nat_static& n) const;
+
+  /**
+   * Return the object's key
+   */
+  const key_t key() const;
+
   /**
    * Return the matching 'singular instance'
    */
@@ -70,7 +77,7 @@ public:
   /**
    * Find the instnace of the bridge_domain domain in the OM
    */
-  static std::shared_ptr<nat_static> find(const nat_static& temp);
+  static std::shared_ptr<nat_static> find(const key_t& key);
 
   /**
    * Dump all bridge_domain-doamin into the stream provided
@@ -87,111 +94,6 @@ public:
    */
   std::string to_string() const;
 
-  /**
-   * A command class that creates NAT 44 static mapping
-   */
-  class create_44_cmd
-    : public rpc_cmd<HW::item<bool>, rc_t, vapi::Nat44_add_del_static_mapping>
-  {
-  public:
-    /**
-     * Constructor
-     */
-    create_44_cmd(HW::item<bool>& item,
-                  route::table_id_t id,
-                  const boost::asio::ip::address_v4& inside,
-                  const boost::asio::ip::address_v4& outside);
-
-    /**
-     * 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 create_44_cmd& i) const;
-
-  private:
-    route::table_id_t m_id;
-    const boost::asio::ip::address_v4 m_inside;
-    const boost::asio::ip::address_v4 m_outside;
-  };
-
-  /**
-   * A cmd class that deletes a NAT 44 static mapping
-   */
-  class delete_44_cmd
-    : public rpc_cmd<HW::item<bool>, rc_t, vapi::Nat44_add_del_static_mapping>
-  {
-  public:
-    /**
-     * Constructor
-     */
-    delete_44_cmd(HW::item<bool>& item,
-                  route::table_id_t id,
-                  const boost::asio::ip::address_v4& inside,
-                  const boost::asio::ip::address_v4& outside);
-
-    /**
-     * 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 delete_44_cmd& i) const;
-
-  private:
-    route::table_id_t m_id;
-    const boost::asio::ip::address_v4 m_inside;
-    const boost::asio::ip::address_v4 m_outside;
-  };
-
-  /**
-   * A cmd class that Dumps all the nat_statics
-   */
-  class dump_44_cmd : public dump_cmd<vapi::Nat44_static_mapping_dump>
-  {
-  public:
-    /**
-     * Constructor
-     */
-    dump_44_cmd();
-    dump_44_cmd(const dump_44_cmd& d);
-
-    /**
-     * 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 dump_44_cmd& i) const;
-
-  private:
-    /**
-     * HW reutrn code
-     */
-    HW::item<bool> item;
-  };
-
 private:
   /**
    * Class definition for listeners to OM events
@@ -266,12 +168,12 @@ private:
   /**
    * The 'inside' IP address, could be v4 or v6
    */
-  const boost::asio::ip::address& m_inside;
+  const boost::asio::ip::address m_inside;
 
   /**
-   * The 'outside' IP address - always v4
+   * The 'outside' IP address
    */
-  const boost::asio::ip::address_v4& m_outside;
+  const boost::asio::ip::address m_outside;
 
   /**
    * A map of all NAT statics