gbp: Add bd flags
[vpp.git] / extras / vom / vom / gbp_bridge_domain.hpp
index 031510a..64429fc 100644 (file)
@@ -34,20 +34,42 @@ public:
    */
   typedef bridge_domain::key_t key_t;
 
+  struct flags_t : enum_base<flags_t>
+  {
+    const static flags_t NONE;
+    const static flags_t DO_NOT_LEARN;
+    const static flags_t UU_FWD_DROP;
+    const static flags_t MCAST_DROP;
+    const static flags_t UCAST_ARP;
+
+    static const flags_t& from_vpp(int i);
+
+  private:
+    flags_t(int v, const std::string& s);
+    flags_t();
+  };
+
   /**
    * Construct a GBP bridge_domain
    */
-  gbp_bridge_domain(const bridge_domain& bd, const interface& bvi);
-  gbp_bridge_domain(const bridge_domain& bd);
   gbp_bridge_domain(const bridge_domain& bd,
                     const interface& bvi,
-                    const interface& uu_fwd);
+                    const flags_t& flags = flags_t::NONE);
+  gbp_bridge_domain(const bridge_domain& bd,
+                    const interface& bvi,
+                    const interface& uu_fwd,
+                    const interface& bm_flood,
+                    const flags_t& flags = flags_t::NONE);
   gbp_bridge_domain(const bridge_domain& bd,
                     const std::shared_ptr<interface> bvi,
-                    const std::shared_ptr<interface> uu_fwd);
+                    const std::shared_ptr<interface> uu_fwd,
+                    const std::shared_ptr<interface> bm_flood,
+                    const flags_t& flags = flags_t::NONE);
   gbp_bridge_domain(const bridge_domain& bd,
                     const interface& bvi,
-                    const std::shared_ptr<interface> uu_fwd);
+                    const std::shared_ptr<interface> uu_fwd,
+                    const std::shared_ptr<interface> bm_flood,
+                    const flags_t& flags = flags_t::NONE);
 
   /**
    * Copy Construct
@@ -99,8 +121,8 @@ public:
    */
   std::string to_string() const;
 
-  const std::shared_ptr<bridge_domain> get_bridge_domain();
-  const std::shared_ptr<interface> get_bvi();
+  const std::shared_ptr<bridge_domain> get_bridge_domain() const;
+  const std::shared_ptr<interface> get_bvi() const;
 
 private:
   /**
@@ -172,6 +194,8 @@ private:
   std::shared_ptr<bridge_domain> m_bd;
   std::shared_ptr<interface> m_bvi;
   std::shared_ptr<interface> m_uu_fwd;
+  std::shared_ptr<interface> m_bm_flood;
+  const flags_t& m_flags;
 
   /**
    * A map of all bridge_domains