GBP: fixes for l3-out routing
[vpp.git] / extras / vom / vom / vxlan_tunnel.hpp
index 136f038..4c46e75 100644 (file)
@@ -82,7 +82,8 @@ public:
   {
     ~mode_t() = default;
     const static mode_t STANDARD;
-    const static mode_t GBP;
+    const static mode_t GBP_L2;
+    const static mode_t GBP_L3;
     const static mode_t GPE;
 
   private:
@@ -97,15 +98,15 @@ public:
                const boost::asio::ip::address& dst,
                uint32_t vni,
                const mode_t& mode = mode_t::STANDARD);
-
-  /**
-   * Construct a new object matching the desried state with a handle
-   * read from VPP
-   */
-  vxlan_tunnel(const handle_t& hdl,
-               const boost::asio::ip::address& src,
+  vxlan_tunnel(const boost::asio::ip::address& src,
+               const boost::asio::ip::address& dst,
+               uint32_t vni,
+               const interface& mcast_itf,
+               const mode_t& mode = mode_t::STANDARD);
+  vxlan_tunnel(const boost::asio::ip::address& src,
                const boost::asio::ip::address& dst,
                uint32_t vni,
+               const route_domain& rd,
                const mode_t& mode = mode_t::STANDARD);
 
   /*
@@ -118,6 +119,11 @@ public:
    */
   vxlan_tunnel(const vxlan_tunnel& o);
 
+  /**
+   * comparison operator
+   */
+  bool operator==(const vxlan_tunnel& vx) const;
+
   /**
    * Return the matching 'singular instance'
    */
@@ -220,6 +226,22 @@ private:
    */
   mode_t m_mode;
 
+  /**
+   * The interface on which to send the packets if the destination
+   * is multicast
+   */
+  std::shared_ptr<interface> m_mcast_itf;
+
+  /**
+   * The RD an L3 interface is bound to
+   */
+  std::shared_ptr<const route_domain> m_rd;
+
+  /**
+   * HW state of the VPP table mapping
+   */
+  HW::item<route::table_id_t> m_table_id;
+
   /**
    * Construct a unique name for the tunnel
    */