Line data Source code
1 : /* 2 : * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. 3 : */ 4 : #ifndef vnsw_agent_vgw_h 5 : #define vnsw_agent_vgw_h 6 : 7 : // Simple Virtual Gateway operational class 8 : // Creates the interface, route and nexthop for virtual-gateway 9 : class VirtualGateway { 10 : public: 11 : VirtualGateway(Agent *agent); 12 0 : ~VirtualGateway() {}; 13 : void InterfaceNotify(DBTablePartBase *partition, DBEntryBase *entry); 14 : 15 : void Init(); 16 : void Shutdown(); 17 : void CreateVrf(); 18 : void CreateVrf(const std::string &vrf_name); 19 : void DeleteVrf(const std::string &vrf_name); 20 : void CreateInterfaces(Interface::Transport transport); 21 : void CreateInterface(const std::string &interface_name, 22 : const std::string &vrf_name, 23 : Interface::Transport transport); 24 : void DeleteInterface(const std::string &interface_name); 25 : void SubnetUpdate(const VirtualGatewayConfig &vgw, 26 : const VirtualGatewayConfig::SubnetList &add_list, 27 : const VirtualGatewayConfig::SubnetList &del_list); 28 : void RouteUpdate(const VirtualGatewayConfig &vgw, 29 : const VirtualGatewayConfig::SubnetList &new_list, 30 : const VirtualGatewayConfig::SubnetList &add_list, 31 : const VirtualGatewayConfig::SubnetList &del_list, 32 : bool add_default_route); 33 : void RegisterDBClients(); 34 : 35 : private: 36 : void SubnetUpdate(const std::string &vrf, 37 : InetUnicastAgentRouteTable *rt_table, 38 : const VirtualGatewayConfig::SubnetList &add_list, 39 : const VirtualGatewayConfig::SubnetList &del_list); 40 : void RouteUpdate(const VirtualGatewayConfig &vgw, uint32_t new_list_size, 41 : InetUnicastAgentRouteTable *rt_table, 42 : const VirtualGatewayConfig::SubnetList &add_list, 43 : const VirtualGatewayConfig::SubnetList &del_list, 44 : bool add_default_route, bool del_default_route); 45 : 46 : // Cached entries 47 : Agent *agent_; 48 : DBTableBase::ListenerId listener_id_; 49 : VirtualGatewayConfigTable *vgw_config_table_; 50 : 51 : DISALLOW_COPY_AND_ASSIGN(VirtualGateway); 52 : }; 53 : 54 : #endif //vnsw_agent_vgw_h