diff options
Diffstat (limited to 'src/VppSpineProxy.cpp')
-rw-r--r-- | src/VppSpineProxy.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/VppSpineProxy.cpp b/src/VppSpineProxy.cpp new file mode 100644 index 0000000..b658e2b --- /dev/null +++ b/src/VppSpineProxy.cpp @@ -0,0 +1,66 @@ +/* -*- C++ -*-; c-basic-offset: 4; indent-tabs-mode: nil */ +/* + * Copyright (c) 2017-2018 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +#include <vom/om.hpp> +#include <vom/vxlan_tunnel.hpp> + +#include "VppSpineProxy.hpp" + +using namespace VOM; + +namespace VPP +{ +SpineProxy::SpineProxy(const boost::asio::ip::address_v4 &local, + const boost::asio::ip::address_v4 &remote_v4, + const boost::asio::ip::address_v4 &remote_v6, + const boost::asio::ip::address_v4 &remote_mac) + : m_local(local) + , m_remote_v4(remote_v4) + , m_remote_v6(remote_v6) + , m_remote_mac(remote_mac) +{ +} + +const std::shared_ptr<VOM::vxlan_tunnel> +SpineProxy::mk_v4(const std::string &key, uint32_t vnid) +{ + return (mk_intf(key, m_local, m_remote_v4, vnid)); +} + +const std::shared_ptr<VOM::vxlan_tunnel> +SpineProxy::mk_v6(const std::string &key, uint32_t vnid) +{ + return (mk_intf(key, m_local, m_remote_v6, vnid)); +} + +const std::shared_ptr<VOM::vxlan_tunnel> +SpineProxy::mk_mac(const std::string &key, uint32_t vnid) +{ + return (mk_intf(key, m_local, m_remote_mac, vnid)); +} + +const std::shared_ptr<VOM::vxlan_tunnel> +SpineProxy::mk_intf(const std::string &key, + boost::asio::ip::address_v4 &src, + boost::asio::ip::address_v4 &dst, + uint32_t vnid) +{ + std::shared_ptr<VOM::vxlan_tunnel> vt = std::make_shared<vxlan_tunnel>( + src, dst, vnid, vxlan_tunnel::mode_t::GBP_L2); + OM::write(key, *vt); + + return vt; +} +}; + +/* + * Local Variables: + * eval: (c-set-style "llvm.org") + * End: + */ |