|
xorp
|
00001 // -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*- 00002 // vim:set sts=4 ts=8: 00003 00004 // Copyright (c) 2008-2011 XORP, Inc and Others 00005 // 00006 // This program is free software; you can redistribute it and/or modify 00007 // it under the terms of the GNU General Public License, Version 2, June 00008 // 1991 as published by the Free Software Foundation. Redistribution 00009 // and/or modification of this program under the terms of any other 00010 // version of the GNU General Public License is not permitted. 00011 // 00012 // This program is distributed in the hope that it will be useful, but 00013 // WITHOUT ANY WARRANTY; without even the implied warranty of 00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For more details, 00015 // see the GNU General Public License, Version 2, a copy of which can be 00016 // found in the XORP LICENSE.gpl file. 00017 // 00018 // XORP Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA; 00019 // http://xorp.net 00020 00021 // $XORP: xorp/vrrp/vrrp_interface.hh,v 1.4 2008/12/18 11:34:51 abittau Exp $ 00022 00023 #ifndef __VRRP_VRRP_INTERFACE_HH__ 00024 #define __VRRP_VRRP_INTERFACE_HH__ 00025 00026 00027 00028 00029 #include "libxorp/ipv4.hh" 00030 #include "libxorp/mac.hh" 00031 #include "vrrp_packet.hh" 00032 00038 class VrrpInterface { 00039 public: 00040 virtual ~VrrpInterface() {} 00041 00050 virtual bool own(const IPv4& addr) = 0; 00051 00057 virtual bool ready() const = 0; 00058 00065 virtual const IPv4& addr() const = 0; 00066 00075 virtual void send(const Mac& src, const Mac& dst, uint32_t ether, 00076 const PAYLOAD& payload) = 0; 00077 00081 virtual void join_mcast() = 0; 00082 00086 virtual void leave_mcast() = 0; 00087 00093 virtual void add_mac(const Mac& mac) = 0; 00094 virtual void add_ip(const IPv4& ip) = 0; 00095 00101 virtual void delete_mac(const Mac& mac) = 0; 00102 virtual void delete_ip(const IPv4& ip) = 0; 00103 00104 // XXX these should be handled elsewhere, or differently. VRRP doesn't have 00105 // to "know" about ARPs. 00106 00110 virtual void start_arps() = 0; 00111 00115 virtual void stop_arps() = 0; 00116 }; 00117 00118 #endif // __VRRP_VRRP_INTERFACE_HH__