xorp

libfeaclient_bridge.hh

00001 // -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*-
00002 
00003 // Copyright (c) 2001-2011 XORP, Inc and Others
00004 //
00005 // This program is free software; you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License, Version 2, June
00007 // 1991 as published by the Free Software Foundation. Redistribution
00008 // and/or modification of this program under the terms of any other
00009 // version of the GNU General Public License is not permitted.
00010 // 
00011 // This program is distributed in the hope that it will be useful, but
00012 // WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For more details,
00014 // see the GNU General Public License, Version 2, a copy of which can be
00015 // found in the XORP LICENSE.gpl file.
00016 // 
00017 // XORP Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA;
00018 // http://xorp.net
00019 
00020 // $XORP: xorp/fea/libfeaclient_bridge.hh,v 1.18 2008/10/02 21:56:49 bms Exp $
00021 
00022 #ifndef __FEA_LIBFEACLIENT_BRIDGE_HH__
00023 #define __FEA_LIBFEACLIENT_BRIDGE_HH__
00024 
00025 #include "ifconfig_reporter.hh"
00026 
00027 class IfConfigUpdateReplicator;
00028 class IfMgrXrlReplicationManager;
00029 class IfTree;
00030 class XrlRouter;
00031 
00051 class LibFeaClientBridge : public IfConfigUpdateReporterBase {
00052 public:
00053     LibFeaClientBridge(XrlRouter& rtr,
00054                IfConfigUpdateReplicator& update_replicator);
00055     ~LibFeaClientBridge();
00056 
00063     int add_libfeaclient_mirror(const string& xrl_target_instance_name);
00064 
00071     int remove_libfeaclient_mirror(const string& xrl_target_instance_name);
00072 
00073 protected:
00074     void interface_update(const string& ifname,
00075               const Update& update);
00076 
00077     void vif_update(const string& ifname,
00078             const string& vifname,
00079             const Update& update);
00080 
00081     void vifaddr4_update(const string& ifname,
00082              const string& vifname,
00083              const IPv4&   addr,
00084              const Update& update);
00085 #ifdef HAVE_IPV6
00086 
00087     void vifaddr6_update(const string& ifname,
00088              const string& vifname,
00089              const IPv6&   addr,
00090              const Update& update);
00091 #endif
00092 
00093     void updates_completed();
00094 
00095 protected:
00096     IfMgrXrlReplicationManager* _rm;
00097 };
00098 
00099 #endif // __FEA_LIBFEACLIENT_BRIDGE_HH__
 All Classes Namespaces Functions Variables Typedefs Enumerations