VOM reshuffle

split the VOM into two halves; a top/front-end and a bottom/backend.
Only the backend includes the auto-generated VAPI.
This serves two purposes:
1 - improves ompile times for VOM, since the VAPI is included
    only in the backend.
2 - does not expose VAPI to users of VOM

Change-Id: I17b93aeaef10c0eba8612016d9034aca5628d9f7
Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
diff --git a/src/vpp-api/vom/route.hpp b/src/vpp-api/vom/route.hpp
index d175bee..4f27ff1 100644
--- a/src/vpp-api/vom/route.hpp
+++ b/src/vpp-api/vom/route.hpp
@@ -21,8 +21,6 @@
 #include "vom/route_domain.hpp"
 #include "vom/singular_db.hpp"
 
-#include <vapi/ip.api.vapi.hpp>
-
 namespace VOM {
 /**
  * Types belonging to Routing
@@ -110,7 +108,6 @@
   /**
    * Convert the path into the VPP API representation
    */
-  void to_vpp(vapi_type_fib_path& path) const;
   void to_vpp(vapi_payload_ip_add_del_route& payload) const;
 
   /**
@@ -123,6 +120,17 @@
    */
   std::string to_string() const;
 
+  /**
+   * Getters
+   */
+  special_t type() const;
+  nh_proto_t nh_proto() const;
+  const boost::asio::ip::address& nh() const;
+  std::shared_ptr<route_domain> rd() const;
+  std::shared_ptr<interface> itf() const;
+  uint8_t weight() const;
+  uint8_t preference() const;
+
 private:
   /**
    * The special path tpye
@@ -237,140 +245,6 @@
    */
   std::string to_string() const;
 
-  /**
-   * A command class that creates or updates the route
-   */
-  class update_cmd
-    : public rpc_cmd<HW::item<bool>, rc_t, vapi::Ip_add_del_route>
-  {
-  public:
-    /**
-     * Constructor
-     */
-    update_cmd(HW::item<bool>& item,
-               table_id_t id,
-               const prefix_t& prefix,
-               const path_list_t& paths);
-
-    /**
-     * 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 update_cmd& i) const;
-
-  private:
-    route::table_id_t m_id;
-    prefix_t m_prefix;
-    const path_list_t m_paths;
-  };
-
-  /**
-   * A cmd class that deletes a route
-   */
-  class delete_cmd
-    : public rpc_cmd<HW::item<bool>, rc_t, vapi::Ip_add_del_route>
-  {
-  public:
-    /**
-     * Constructor
-     */
-    delete_cmd(HW::item<bool>& item, table_id_t id, const prefix_t& prefix);
-
-    /**
-     * 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_cmd& i) const;
-
-  private:
-    route::table_id_t m_id;
-    prefix_t m_prefix;
-  };
-
-  /**
-   * A cmd class that Dumps ipv4 fib
-   */
-  class dump_v4_cmd : public VOM::dump_cmd<vapi::Ip_fib_dump>
-  {
-  public:
-    /**
-     * Constructor
-     */
-    dump_v4_cmd();
-    dump_v4_cmd(const dump_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_v4_cmd& i) const;
-
-  private:
-    /**
-     * HW reutrn code
-     */
-    HW::item<bool> item;
-  };
-
-  /**
-   * A cmd class that Dumps ipv6 fib
-   */
-  class dump_v6_cmd : public VOM::dump_cmd<vapi::Ip6_fib_dump>
-  {
-  public:
-    /**
-     * Constructor
-     */
-    dump_v6_cmd();
-    dump_v6_cmd(const dump_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_v6_cmd& i) const;
-
-  private:
-    /**
-     * HW reutrn code
-     */
-    HW::item<bool> item;
-  };
-
 private:
   /**
    * Class definition for listeners to OM events