38 interface_listener_id_(),
129 bool changed =
false;
136 state->
sg_l_ = new_sg_l;
153 if (state->
vn_.get() != new_vn) {
163 state->
sg_l_ = new_sg_l;
227 bool enable_rpf =
true;
228 bool flood_unknown_unicast =
false;
237 bool changed =
false;
255 new_flood_unknown_unicast);
260 if (acl != new_acl || macl != new_macl || mcacl !=new_mcacl ||
261 enable_rpf != new_enable_rpf ||
262 flood_unknown_unicast != new_flood_unknown_unicast) {
263 state->
acl_ = new_acl;
264 state->
macl_ = new_macl;
265 state->
mcacl_ = new_mcacl;
332 bool is_tunnel_nh =
false;
333 bool changed =
false;
334 uint8_t curr_valid_encap_size = 0;
335 uint8_t new_valid_encap_size = 0;
343 if (encap_list[i].
get()->valid_)
344 new_valid_encap_size++;
366 if (is_tunnel_nh &&
agent_->
is_l3mh() && new_valid_encap_size != curr_valid_encap_size ) {
404 if (inet_table->
Size() != 0)
409 "ROUTE-TABLE-UNREGISTER",
420 if (inet_table->
Size() != 0)
425 "ROUTE-TABLE-UNREGISTER",
438 if (bridge_table->
Size() != 0)
443 "ROUTE-TABLE-UNREGISTER",
465 "ROUTE-TABLE-REGISTER",
476 "ROUTE-TABLE-REGISTER",
478 inet_table->GetTableName(),
485 bridge_listener_id_ =
490 "ROUTE-TABLE-REGISTER",
492 bridge_table->GetTableName(),
493 bridge_listener_id_);
522 std::vector<std::string> vn_list;
560 if (vrf_state == NULL)
564 if (dynamic_cast<InetUnicastRouteEntry *>(route)) {
569 }
else if (dynamic_cast<BridgeRouteEntry *>(route)) {
593 for(Route::PathList::const_iterator it = rt->
GetPathList().begin();
616 RouteFlowHandlerState::FixedIpMap::const_iterator old_it =
619 if (new_fixed_ip != old_it->second) {
626 RouteFlowHandlerState::FixedIpMap::const_iterator old_it =
629 if (new_map.find(old_it->first) == new_map.end()) {
652 sort(new_sg_l.begin(), new_sg_l.end());
672 bool new_route =
false;
685 bool changed =
false;
686 bool inet_rt_nh_changed =
false;
688 if (state->
sg_l_ != new_sg_l) {
689 state->
sg_l_ = new_sg_l;
697 const NextHop *local_nh = NULL;
718 inet_rt_nh_changed =
true;
750 if (new_route ==
true) {
752 }
else if (inet_rt_nh_changed ==
true) {
754 }
else if (changed ==
true) {
763 if (dynamic_cast<const Interface *>(entry)) {
770 if (dynamic_cast<const VnEntry *>(entry)) {
777 if (dynamic_cast<const AclDBEntry *>(entry)) {
784 if (dynamic_cast<const NextHop *>(entry)) {
791 if (dynamic_cast<const VrfEntry *>(entry)) {
798 if (dynamic_cast<const AgentRoute *>(entry)) {
801 if (dynamic_cast<const InetUnicastRouteEntry *>(entry)) {
803 if ((dynamic_cast<const AgentRoute *>(entry))->GetTableType()
uint8_t prefix_length() const
!
boost::intrusive_ptr< const AclDBEntry > AclDBEntryConstRef
const Interface * GetInterface() const
void DeleteDBEntryEvent(const DBEntry *entry, uint32_t gen_id)
FlowMgmtDbClient(Agent *agent, FlowMgmtManager *mgr)
AgentQosConfigConstRef qos_config_
std::pair< InterfaceConstRef, IpAddress > FixedIpEntry
const AgentQosConfig * qos_config() const
DBTableBase::ListenerId inet6_listener_id_
const TagList & tag_list() const
static const NextHop * GetLocalNextHop(const AgentRoute *rt)
DBState * GetState(DBTableBase *tbl_base, ListenerId listener) const
void FreeVrfState(VrfEntry *vrf, uint32_t gen_id)
const AclDBEntry * GetAcl() const
void DeleteEvent(const DBEntry *entry, FlowMgmtState *state)
NextHopTable * nexthop_table() const
DBTableBase * get_table() const
void InterfaceNotify(DBTablePartBase *part, DBEntryBase *e)
VmInterface::DeviceType device_type() const
static DBState * ValidateGenId(DBTableBase *table, DBEntry *entry, DBTableBase::ListenerId id, uint32_t gen_id)
void SetState(DBTableBase *tbl_base, ListenerId listener, DBState *state)
boost::asio::ip::address IpAddress
AclDBEntryConstRef vrf_assign_acl_
std::vector< int > SecurityGroupList
bool is_multicast() const
void FreeNhState(NextHop *nh, uint32_t gen_id)
virtual std::string GetTableName() const
InetUnicastAgentRouteTable * GetInet4UnicastRouteTable() const
InterfaceTable * interface_table() const
void Register(FlowMgmtDbClient *client, VrfEntry *vrf)
VnTable * vn_table() const
virtual ~FlowMgmtDbClient()
InetUnicastAgentRouteTable * GetInet6UnicastRouteTable() const
const string & GetName() const
void ChangeDBEntryEvent(const DBEntry *entry, uint32_t gen_id)
void FreeRouteState(AgentRoute *route, uint32_t gen_id)
Base class for all Route entries in agent.
DBTableBase::ListenerId bridge_listener_id_
void Unregister(ListenerId listener)
void DeleteAllFlow(const DBEntry *entry, FlowMgmtState *state)
std::string ToString() const
bool flood_unknown_unicast() const
void RouteNHChangeEvent(const DBEntry *entry, uint32_t gen_id)
ListenerId Register(ChangeCallback callback, const std::string &name="unspecified")
const Type GetType() const
EcmpLoadBalance ecmp_load_balance_
void AclNotify(DBTablePartBase *part, DBEntryBase *e)
const AgentPath * GetActivePath() const
NextHop * nexthop() const
virtual Agent::RouteTableType GetTableType() const =0
virtual size_t Size() const
bool HandleTrackingIpChange(const AgentRoute *rt, RouteFlowHandlerState *state)
DBTableBase::ListenerId GetListenerId(Agent::RouteTableType type)
void Unregister(FlowMgmtDbClient *client, VrfEntry *vrf)
const SecurityGroupEntryList & sg_list() const
TunnelType::TypeBmap tunnel_bmap_
AclDBEntryConstRef mcacl_
VmInterface::SecurityGroupEntryList sg_l_
const FirewallPolicyList & fwaas_fw_policy_list() const
DBTableBase::ListenerId vn_listener_id_
const NextHop * GetActiveNextHop() const
const AclDBEntry * GetMirrorAcl() const
DBTableBase::ListenerId vm_listener_id_
DBTableBase::ListenerId interface_listener_id_
const Peer * peer() const
void VnNotify(DBTablePartBase *part, DBEntryBase *e)
boost::intrusive_ptr< const Interface > InterfaceConstRef
AgentRouteTable * GetBridgeRouteTable() const
#define FLOW_TRACE(obj,...)
const VnEntry * vn() const
bool policy_enabled() const
FirewallPolicyList fw_policy_list_
const uint32_t vrf_id() const
void AddDBEntryEvent(const DBEntry *entry, uint32_t gen_id)
void ClearState(DBTableBase *tbl_base, ListenerId listener)
const AclDBEntry * vrf_assign_acl() const
virtual const PrefixType & prefix_address() const
Returns the value of a stored prefix address (IPv4, IPv6 or MAC address)
boost::asio::ip::address_v4 Ip4Address
void FreeVnState(VnEntry *vn, uint32_t gen_id)
uint32_t forwarding_vrf_id_
VrfTable * vrf_table() const
bool FreeDBState(const DBEntry *entry, uint32_t gen_id)
void FreeAclState(AclDBEntry *acl, uint32_t gen_id)
void VrfNotify(DBTablePartBase *part, DBEntryBase *e)
const IpAddress & GetFixedIp() const
std::map< InterfaceConstRef, IpAddress > FixedIpMap
virtual string GetTableName() const
const EncapDataList GetEncapDataList() const
DBTableBase::ListenerId vrf_listener_id_
DBTableBase::ListenerId nh_listener_id_
uint8_t prefix_length() const
The length of L3 IP prefix (if present) associated with this L2 address.
bool is_vn_qos_config() const
void FreeInterfaceState(Interface *intf, uint32_t gen_id)
DBTableBase::ListenerId acl_listener_id_
DBTableBase::ListenerId inet_listener_id_
static const int kInvalidId
SecurityGroupEntrySet list_
DBEntry * Find(const DBEntry *entry)
std::vector< EncapDataPtr > EncapDataList
static const uint32_t kInvalidIndex
void ChangeEvent(const DBEntry *entry, FlowMgmtState *state)
bool flood_unknown_unicast_
const FirewallPolicyList & fw_policy_list() const
void NhNotify(DBTablePartBase *part, DBEntryBase *e)
FirewallPolicyList fwaas_fw_policy_list_
VrfEntry * forwarding_vrf() const
void RouteNHChangeEvent(const DBEntry *entry, FlowMgmtState *state)
uint32_t tunnel_bmap() const
void RouteNotify(VrfFlowHandlerState *vrf_state, Agent::RouteTableType type, DBTablePartBase *partition, DBEntryBase *e)
AclTable * acl_table() const
void AddEvent(const DBEntry *entry, FlowMgmtState *state)
void GetDestinationVnList(std::vector< std::string > *vn_list) const
const NextHop * local_nh_
const SecurityGroupList & sg_list() const
VmTable * vm_table() const
void TraceMsg(AgentRoute *entry, const AgentPath *path, const SecurityGroupList &sg_list, bool deleted)
uint8_t valid_encap_size_
const EcmpLoadBalance & ecmp_load_balance() const
const AclDBEntry * GetMirrorCfgAcl() const
const NextHop * active_nh_
const PathList & GetPathList() const