xorp

ifconfig_property.hh

00001 // -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*-
00002 
00003 // Copyright (c) 2007-2009 XORP, Inc.
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/ifconfig_property.hh,v 1.5 2008/10/02 21:56:47 bms Exp $
00021 
00022 #ifndef __FEA_IFCONFIG_PROPERTY_HH__
00023 #define __FEA_IFCONFIG_PROPERTY_HH__
00024 
00025 #include "fea_data_plane_manager.hh"
00026 
00027 class IfConfig;
00028 
00029 
00030 class IfConfigProperty {
00031 public:
00038     IfConfigProperty(FeaDataPlaneManager& fea_data_plane_manager);
00039 
00043     virtual ~IfConfigProperty();
00044 
00050     IfConfig& ifconfig() { return _ifconfig; }
00051 
00057     FeaDataPlaneManager& fea_data_plane_manager() { return _fea_data_plane_manager; }
00058 
00064     virtual bool is_running() const { return _is_running; }
00065 
00072     virtual int start(string& error_msg);
00073     
00080     virtual int stop(string& error_msg);
00081     
00087     virtual bool have_ipv4() const { return (_have_ipv4); }
00088 
00094     virtual bool have_ipv6() const { return (_have_ipv6); }
00095 
00101     virtual bool test_have_ipv4() const = 0;
00102 
00108     virtual bool test_have_ipv6() const = 0;
00109 
00110 protected:
00111     // Misc other state
00112     bool    _is_running;
00113 
00114 private:
00115     IfConfig&           _ifconfig;
00116     FeaDataPlaneManager&    _fea_data_plane_manager;
00117 
00118     // Cached state whether the system has IPv4 or IPv6 support
00119     bool    _have_ipv4;
00120     bool    _have_ipv6;
00121 
00122     bool    _first_start;   // True if started for first time
00123 };
00124 
00125 #endif // __FEA_IFCONFIG_PROPERTY_HH__
 All Classes Namespaces Functions Variables Typedefs Enumerations