5 #ifndef vnsw_agent_ecmp_load_balance_hpp
6 #define vnsw_agent_ecmp_load_balance_hpp
7 #include <boost/intrusive_ptr.hpp>
8 #include <vnc_cfg_types.h>
11 struct EcmpHashingIncludeFields;
16 "l3-destination-address",
165 (
const autogen::EcmpHashingIncludeFields &ecmp_hashing_fields) {
173 ecmp_hashing_fields.destination_ip) {
175 ecmp_hashing_fields.destination_ip;
179 ecmp_hashing_fields.source_port) {
184 ecmp_hashing_fields.destination_port) {
186 ecmp_hashing_fields.destination_port;
190 ecmp_hashing_fields.ip_protocol) {
239 uint32_t prev = ptr->
ref_count_.fetch_and_decrement();
281 if (!objFieldPtr.get()) {
282 objFieldPtr = fieldPtr;
int intrusive_ptr_add_ref(const AsPath *cpath)
bool is_source_port_set() const
void AllocateEcmpFields()
bool is_destination_ip_set() const
uint8_t CalculateHashFieldsToUse()
const std::string & source_ip_str() const
uint8_t hash_fields_to_use_
bool UpdateFields(const autogen::EcmpHashingIncludeFields &ecmp_hashing_fields)
boost::intrusive_ptr< EcmpField > EcmpFieldPtr
uint8_t HashFieldsToUse() const
void reset_destination_port()
friend void intrusive_ptr_release(EcmpField *ptr)
EcmpHashFields(const uint8_t hash_fields_to_use)
void operator=(const uint8_t hash_fields_to_use)
bool use_global_vrouter() const
void reset_destination_ip()
friend void intrusive_ptr_add_ref(EcmpField *ptr)
void GetStringVector(std::vector< std::string > &string_vector) const
virtual void Copy(const VmiEcmpLoadBalance &rhs)
const std::string & source_port_str() const
virtual ~EcmpLoadBalance()
uint8_t comp_hash_fields_to_use_
void set_destination_ip()
tbb::atomic< uint32_t > ref_count_
void set_use_global_vrouter(bool use_global_vrouter)
bool is_source_ip_set() const
static const std::string LoadBalanceDecision
const std::string & destination_port_str() const
void SetHashFieldtoUse(EcmpField *ptr, uint8_t key)
virtual void Copy(const EcmpLoadBalance &rhs)
const std::string & destination_ip_str() const
const std::string & ip_protocol_str() const
DISALLOW_COPY_AND_ASSIGN(EcmpHashFields)
bool hash_fields_to_use_[NUM_HASH_FIELDS]
bool IsFieldsInUseChanged()
void intrusive_ptr_release(const AsPath *cpath)
virtual ~VmiEcmpLoadBalance()
static const std::string HashingFieldsStr[]
bool is_destination_port_set() const
void SetChangeInHashField(bool is_field_set, EcmpFieldPtr &fieldPtr, EcmpFieldPtr &objFieldPtr)
bool operator!=(const EcmpLoadBalance &rhs) const
void SetHashFieldstoUse()
bool is_ip_protocol_set() const
void set_destination_port()
uint32_t RefCount() const
void CalculateChangeInEcmpFields(const EcmpLoadBalance &ecmp_load_balance, EcmpHashFields &ecmp_hash_fields)