LCOV - code coverage report
Current view: top level - vnsw/agent/oper - bridge_domain.h (source / functions) Hit Total Coverage
Test: OpenSDN C/C++ coverage (all TARGET_SET jobs) Lines: 0 27 0.0 %
Date: 2026-11-09 02:10:49 Functions: 0 17 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2016 Juniper Networks, Inc. All rights reserved.
       3             :  * Copyright Contributors to the OpenSDN project
       4             :  */
       5             : 
       6             : #ifndef SRC_VNSW_AGENT_BRIDGE_DOMAIN_H_
       7             : #define SRC_VNSW_AGENT_BRIDGE_DOMAIN_H_
       8             : 
       9             : #include <boost/scoped_ptr.hpp>
      10             : #include <cmn/agent.h>
      11             : #include <oper_db.h>
      12             : 
      13             : class BridgeDomainTable;
      14             : 
      15             : struct BridgeDomainKey : public AgentOperDBKey {
      16           0 :     BridgeDomainKey(const boost::uuids::uuid &id) :
      17           0 :         AgentOperDBKey(), uuid_(id) { }
      18             :     BridgeDomainKey(const boost::uuids::uuid &id, DBSubOperation sub_op) :
      19             :         AgentOperDBKey(sub_op), uuid_(id) { }
      20           0 :     virtual ~BridgeDomainKey() { }
      21             : 
      22             :     boost::uuids::uuid uuid_;
      23             : };
      24             : 
      25             : struct BridgeDomainData : public AgentOperDBData {
      26           0 :     BridgeDomainData(Agent *agent, IFMapNode *node):
      27           0 :         AgentOperDBData(agent, node), name_(""),
      28           0 :         vn_uuid_(boost::uuids::nil_uuid()), isid_(0),
      29           0 :         learning_enabled_(false), bmac_vrf_name_(""),
      30           0 :         pbb_etree_enabled_(false), mac_aging_time_(0) {}
      31             : 
      32             :     std::string name_;
      33             :     boost::uuids::uuid vn_uuid_;
      34             :     uint32_t isid_;
      35             :     bool learning_enabled_;
      36             :     std::string bmac_vrf_name_;
      37             :     bool pbb_etree_enabled_;
      38             :     uint32_t mac_aging_time_;
      39             : };
      40             : 
      41             : class BridgeDomainEntry : AgentRefCount<BridgeDomainEntry>,
      42             :                           public AgentOperDBEntry {
      43             : public:
      44             :     BridgeDomainEntry(const BridgeDomainTable *table,
      45             :                       const boost::uuids::uuid &id);
      46           0 :     virtual ~BridgeDomainEntry() {}
      47             : 
      48             :     virtual bool IsLess(const DBEntry &rhs) const;
      49             :     virtual std::string ToString() const;
      50             :     virtual KeyPtr GetDBRequestKey() const;
      51             :     virtual void SetKey(const DBRequestKey *key);
      52             :     bool DBEntrySandesh(Sandesh *resp, std::string &name) const;
      53             :     bool Change(const BridgeDomainTable *table, const BridgeDomainData *data);
      54             :     void Delete();
      55             : 
      56           0 :     const boost::uuids::uuid &uuid() const { return uuid_; }
      57           0 :     const std::string &name() const { return name_; }
      58           0 :     const VnEntry* vn() const {
      59           0 :         return vn_.get();
      60             :     }
      61             : 
      62           0 :     uint32_t isid() const {
      63           0 :         return isid_;
      64             :     }
      65             : 
      66           0 :     uint32_t GetRefCount() const {
      67           0 :         return AgentRefCount<BridgeDomainEntry>::GetRefCount();
      68             :     }
      69             : 
      70           0 :     const VrfEntry* vrf() const {
      71           0 :         return vrf_.get();
      72             :     }
      73             : 
      74           0 :     bool learning_enabled() const {
      75           0 :         return learning_enabled_;
      76             :     }
      77             : 
      78           0 :     bool pbb_etree_enabled() const {
      79           0 :         return pbb_etree_enabled_;
      80             :     }
      81             : 
      82             :     bool mac_aging_time() const {
      83             :         return mac_aging_time_;
      84             :     }
      85             : 
      86           0 :     bool layer2_control_word() const {
      87           0 :         return layer2_control_word_;
      88             :     }
      89             : 
      90             : private:
      91             :     friend class BridgeDomainTable;
      92             :     void UpdateVrf(const BridgeDomainData *data);
      93             : 
      94             :     const BridgeDomainTable *table_;
      95             :     boost::uuids::uuid uuid_;
      96             :     std::string name_;
      97             :     VnEntryRef vn_;
      98             :     uint32_t isid_;
      99             :     VrfEntryRef vrf_;
     100             :     std::string bmac_vrf_name_;
     101             :     bool learning_enabled_;
     102             :     bool pbb_etree_enabled_;
     103             :     uint32_t mac_aging_time_;
     104             :     bool layer2_control_word_;
     105             :     DISALLOW_COPY_AND_ASSIGN(BridgeDomainEntry);
     106             : };
     107             : 
     108             : class BridgeDomainTable : public AgentOperDBTable {
     109             : public:
     110             :     BridgeDomainTable(Agent *agent, DB *db, const std::string &name);
     111             :     virtual ~BridgeDomainTable();
     112             : 
     113             :     static DBTableBase *CreateTable(Agent *agent, DB *db,
     114             :                                     const std::string &name);
     115             :     virtual std::unique_ptr<DBEntry> AllocEntry(const DBRequestKey *k) const;
     116           0 :     virtual size_t Hash(const DBEntry *entry) const {return 0;}
     117           0 :     virtual size_t Hash(const DBRequestKey *key) const {return 0;}
     118             : 
     119             :     virtual DBEntry *OperDBAdd(const DBRequest *req);
     120             :     virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req);
     121             :     virtual bool OperDBResync(DBEntry *entry, const DBRequest *req);
     122             :     virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req);
     123             : 
     124             :     virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req,
     125             :                              const boost::uuids::uuid &u);
     126             :     bool ProcessConfig(IFMapNode *node, DBRequest &req,
     127             :                        const boost::uuids::uuid &u);
     128             :     virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u);
     129             :     virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args,
     130             :                                             const std::string &context);
     131             :     BridgeDomainEntry* Find(const boost::uuids::uuid &u);
     132             : private:
     133             :     DISALLOW_COPY_AND_ASSIGN(BridgeDomainTable);
     134             : };
     135             : #endif

Generated by: LCOV version 1.14