Line data Source code
1 : /* 2 : * Copyright (c) 2015 Juniper Networks, Inc. All rights reserved. 3 : * Copyright Contributors to the OpenSDN project 4 : */ 5 : 6 : #ifndef SRC_BGP_ROUTING_INSTANCE_IROUTE_AGGREGATOR_H_ 7 : #define SRC_BGP_ROUTING_INSTANCE_IROUTE_AGGREGATOR_H_ 8 : 9 : #include <stdint.h> 10 : 11 : class BgpRoute; 12 : class RoutingInstance; 13 : class AggregateRouteEntriesInfo; 14 : 15 : class IRouteAggregator { 16 : public: 17 160 : virtual ~IRouteAggregator() { } 18 : 19 : virtual void Initialize() = 0; 20 : virtual void ProcessAggregateRouteConfig() = 0; 21 : virtual void UpdateAggregateRouteConfig() = 0; 22 : virtual void FlushAggregateRouteConfig() = 0; 23 : virtual uint32_t GetAggregateRouteCount() const = 0; 24 : 25 : virtual bool IsAggregateRoute(const BgpRoute *route) const = 0; 26 : virtual bool IsContributingRoute(const BgpRoute *route) const = 0; 27 : 28 : virtual bool FillAggregateRouteInfo(AggregateRouteEntriesInfo *info, 29 : bool summary) const = 0; 30 : 31 : private: 32 : friend class RouteAggregatorTest; 33 : 34 : // Enable/Disable task triggers 35 : virtual void DisableRouteAggregateUpdate() = 0; 36 : virtual void EnableRouteAggregateUpdate() = 0; 37 : virtual size_t GetUpdateAggregateListSize() const = 0; 38 : 39 : virtual void DisableUnregResolveTask() = 0; 40 : virtual void EnableUnregResolveTask() = 0; 41 : virtual size_t GetUnregResolveListSize() const = 0; 42 : }; 43 : 44 : #endif // SRC_BGP_ROUTING_INSTANCE_IROUTE_AGGREGATOR_H_