|
xorp
|
00001 // -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*- 00002 00003 // Copyright (c) 2001-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/rip/output_updates.hh,v 1.10 2008/10/02 21:58:16 bms Exp $ 00021 00022 #ifndef __RIP_OUTPUT_UPDATES_HH__ 00023 #define __RIP_OUTPUT_UPDATES_HH__ 00024 00025 #include "rip_module.h" 00026 #include "libxorp/xlog.h" 00027 00028 #include "output.hh" 00029 #include "route_db.hh" 00030 #include "update_queue.hh" 00031 00041 template <typename A> 00042 class OutputUpdates : 00043 public OutputBase<A> 00044 { 00045 public: 00046 OutputUpdates(EventLoop& e, 00047 Port<A>& port, 00048 PacketQueue<A>& pkt_queue, 00049 RouteDB<A>& rdb, 00050 const A& ip_addr = RIP_AF_CONSTANTS<A>::IP_GROUP(), 00051 uint16_t ip_port = RIP_AF_CONSTANTS<A>::IP_PORT); 00052 00053 ~OutputUpdates(); 00054 00063 void ffwd(); 00064 00065 protected: 00066 void output_packet(); 00067 00068 void start_output_processing(); 00069 00070 void stop_output_processing(); 00071 00072 private: 00073 UpdateQueue<A>& _uq; 00074 typename UpdateQueue<A>::ReadIterator _uq_iter; 00075 }; 00076 00077 #endif // __RIP_OUTPUT_UPDATES_HH__