diff options
Diffstat (limited to 'extras/vom/vom/vxlan_tunnel.hpp')
-rw-r--r-- | extras/vom/vom/vxlan_tunnel.hpp | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/extras/vom/vom/vxlan_tunnel.hpp b/extras/vom/vom/vxlan_tunnel.hpp index a0b3e9afa3e..136f0380e6d 100644 --- a/extras/vom/vom/vxlan_tunnel.hpp +++ b/extras/vom/vom/vxlan_tunnel.hpp @@ -50,11 +50,6 @@ public: uint32_t vni); /** - * less-than operator for map storage - */ - bool operator<(const endpoint_t& o) const; - - /** * Comparison operator */ bool operator==(const endpoint_t& o) const; @@ -81,11 +76,27 @@ public: }; /** + * mode for the tunnel + */ + struct mode_t : public enum_base<mode_t> + { + ~mode_t() = default; + const static mode_t STANDARD; + const static mode_t GBP; + const static mode_t GPE; + + private: + mode_t(int v, const std::string s); + mode_t() = default; + }; + + /** * Construct a new object matching the desried state */ vxlan_tunnel(const boost::asio::ip::address& src, const boost::asio::ip::address& dst, - uint32_t vni); + uint32_t vni, + const mode_t& mode = mode_t::STANDARD); /** * Construct a new object matching the desried state with a handle @@ -94,7 +105,8 @@ public: vxlan_tunnel(const handle_t& hdl, const boost::asio::ip::address& src, const boost::asio::ip::address& dst, - uint32_t vni); + uint32_t vni, + const mode_t& mode = mode_t::STANDARD); /* * Destructor @@ -122,9 +134,9 @@ public: const handle_t& handle() const; /** - * Dump all L3Configs into the stream provided + * Fond the singular instance of the interface in the DB by key */ - static void dump(std::ostream& os); + static std::shared_ptr<vxlan_tunnel> find(const interface::key_t& k); private: /** @@ -204,15 +216,16 @@ private: endpoint_t m_tep; /** - * A map of all VLAN tunnela against thier key + * The tunnel mode */ - static singular_db<endpoint_t, vxlan_tunnel> m_db; + mode_t m_mode; /** * Construct a unique name for the tunnel */ static std::string mk_name(const boost::asio::ip::address& src, const boost::asio::ip::address& dst, + const mode_t& mode, uint32_t vni); }; |