[Xorp-cvs] SF.net SVN: xorp:[11677] trunk/xorp
bms_fbsd at users.sourceforge.net
bms_fbsd at users.sourceforge.net
Fri Dec 4 07:27:20 PST 2009
Revision: 11677
http://xorp.svn.sourceforge.net/xorp/?rev=11677&view=rev
Author: bms_fbsd
Date: 2009-12-04 15:27:20 +0000 (Fri, 04 Dec 2009)
Log Message:
-----------
Backout r11664.
The polymorphic_cast<> can fail on Router Manager startup, especially
if we don't have a config yet.
Introducing the casts needs piecemeal review.
Modified Paths:
--------------
trunk/xorp/bgp/next_hop_resolver.cc
trunk/xorp/bgp/plumbing.cc
trunk/xorp/cli/cli_node.cc
trunk/xorp/fea/fibconfig_transaction.cc
trunk/xorp/fea/firewall_transaction.cc
trunk/xorp/libfeaclient/ifmgr_cmd_queue.cc
trunk/xorp/libxorp/timer.cc
trunk/xorp/ospf/area_router.cc
trunk/xorp/ospf/auth.cc
trunk/xorp/ospf/external.cc
trunk/xorp/ospf/peer.cc
trunk/xorp/pim/xrl_pim_node.cc
trunk/xorp/rib/rib.cc
trunk/xorp/rip/rip_varrw.cc
trunk/xorp/rip/xrl_port_manager.cc
trunk/xorp/rtrmgr/master_conf_tree.cc
trunk/xorp/rtrmgr/master_conf_tree_node.cc
trunk/xorp/rtrmgr/master_template_tree_node.cc
trunk/xorp/rtrmgr/module_manager.cc
trunk/xorp/rtrmgr/slave_conf_tree_node.cc
Modified: trunk/xorp/bgp/next_hop_resolver.cc
===================================================================
--- trunk/xorp/bgp/next_hop_resolver.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/bgp/next_hop_resolver.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -38,10 +38,7 @@
#include "route_table_decision.hh"
#include "profile_vars.hh"
-#include <boost/cast.hpp>
-using boost::polymorphic_cast;
-
template <class A>
NextHopResolver<A>::NextHopResolver(XrlStdRouter *xrl_router,
EventLoop& eventloop,
@@ -1332,7 +1329,8 @@
//Check that this answer is for the question on the front of the queue
XLOG_ASSERT(!_queue.empty());
RibDeregisterQueueEntry<A> *rd =
- polymorphic_cast<RibDeregisterQueueEntry<A> *>(_queue.front());
+ dynamic_cast<RibDeregisterQueueEntry<A> *>(_queue.front());
+ XLOG_ASSERT(rd != NULL);
XLOG_ASSERT(addr == rd->base_addr());
XLOG_ASSERT(prefix_len == rd->prefix_len());
Modified: trunk/xorp/bgp/plumbing.cc
===================================================================
--- trunk/xorp/bgp/plumbing.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/bgp/plumbing.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -38,10 +38,7 @@
#include "profile_vars.hh"
#include "dump_iterators.hh"
-#include <boost/cast.hpp>
-using boost::polymorphic_cast;
-
BGPPlumbing::BGPPlumbing(const Safi safi,
RibIpcHandler* ribhandler,
AggregationHandler* aggrhandler,
@@ -936,7 +933,8 @@
}
debug_msg("type = %d", prevrt->type());
- FilterTable<A> *filter_out = polymorphic_cast<FilterTable<A> *>(prevrt);
+ FilterTable<A> *filter_out = dynamic_cast<FilterTable<A> *>(prevrt);
+ XLOG_ASSERT(filter_out != NULL);
filter_out->set_parent(_fanout_table);
_fanout_table->add_next_table(filter_out, peer_handler, rib_in->genid());
@@ -1033,7 +1031,8 @@
_fanout_table->dump_entire_table(filter_out, _master.safi(), ribname);
DumpTable<A> *dump_table =
- polymorphic_cast<DumpTable<A> *>(filter_out->parent());
+ dynamic_cast<DumpTable<A> *>(filter_out->parent());
+ XLOG_ASSERT(dump_table);
/*
** It is possible that another peer was in the middle of going
Modified: trunk/xorp/cli/cli_node.cc
===================================================================
--- trunk/xorp/cli/cli_node.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/cli/cli_node.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -435,7 +435,6 @@
int
CliNode::xlog_output(void *obj, xlog_level_t level, const char *msg)
{
- // XXX: Unchecked runtime cast of void pointer.
CliClient *cli_client = static_cast<CliClient *>(obj);
int ret_value = cli_client->cli_print(msg);
Modified: trunk/xorp/fea/fibconfig_transaction.cc
===================================================================
--- trunk/xorp/fea/fibconfig_transaction.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/fea/fibconfig_transaction.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -27,10 +27,7 @@
#include "fibconfig_transaction.hh"
-#include <boost/cast.hpp>
-using boost::polymorphic_cast;
-
int
FibConfigTransactionManager::set_error(const string& error)
{
@@ -73,7 +70,8 @@
return;
const FibConfigTransactionOperation* fto;
- fto = polymorphic_cast<const FibConfigTransactionOperation*>(&op);
+ fto = dynamic_cast<const FibConfigTransactionOperation*>(&op);
+ XLOG_ASSERT(fto != NULL);
//
// Record error and xlog first error only
Modified: trunk/xorp/fea/firewall_transaction.cc
===================================================================
--- trunk/xorp/fea/firewall_transaction.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/fea/firewall_transaction.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -27,10 +27,6 @@
#include "firewall_transaction.hh"
-#include <boost/cast.hpp>
-
-using boost::polymorphic_cast;
-
void
FirewallTransactionManager::pre_commit(uint32_t tid)
{
@@ -46,7 +42,8 @@
return;
const FirewallTransactionOperation* fto;
- fto = polymorphic_cast<const FirewallTransactionOperation*>(&op);
+ fto = dynamic_cast<const FirewallTransactionOperation*>(&op);
+ XLOG_ASSERT(fto != NULL);
if (_first_error.empty()) {
_first_error = c_format("Failed executing: \"%s\": %s",
Modified: trunk/xorp/libfeaclient/ifmgr_cmd_queue.cc
===================================================================
--- trunk/xorp/libfeaclient/ifmgr_cmd_queue.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/libfeaclient/ifmgr_cmd_queue.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -31,10 +31,6 @@
#include "ifmgr_cmds.hh"
#include "ifmgr_cmd_queue.hh"
-#include <boost/cast.hpp>
-
-using boost::polymorphic_cast;
-
// ----------------------------------------------------------------------------
// IfMgrCommandSinkBase
@@ -131,8 +127,8 @@
void
IfMgrCommandIfClusteringQueue::push(const Cmd& cmd)
{
- IfMgrIfCommandBase* ifcmd =
- polymorphic_cast<IfMgrIfCommandBase*>(cmd.get());
+ IfMgrIfCommandBase* ifcmd = dynamic_cast<IfMgrIfCommandBase*>(cmd.get());
+ XLOG_ASSERT(ifcmd != NULL);
if (ifcmd->ifname() == _current_ifname) {
_current_cmds.push_back(cmd);
} else {
@@ -168,7 +164,8 @@
if (_current_cmds.empty() == false) {
Cmd& c = _current_cmds.front();
IfMgrIfCommandBase* ifcmd =
- polymorphic_cast<IfMgrIfCommandBase*>(c.get());
+ dynamic_cast<IfMgrIfCommandBase*>(c.get());
+ XLOG_ASSERT(ifcmd != NULL);
_current_ifname = ifcmd->ifname();
_current_cmds.pop_front();
}
@@ -189,8 +186,8 @@
{}
bool operator() (IfMgrCommandIfClusteringQueue::Cmd c) {
- IfMgrIfCommandBase* ifcmd =
- polymorphic_cast<IfMgrIfCommandBase*>(c.get());
+ IfMgrIfCommandBase* ifcmd = dynamic_cast<IfMgrIfCommandBase*>(c.get());
+ XLOG_ASSERT(ifcmd != NULL);
return ifcmd->ifname() == _ifname;
}
protected:
@@ -209,7 +206,8 @@
// as new current interface.
Cmd& c = _future_cmds.front();
IfMgrIfCommandBase* ifcmd =
- polymorphic_cast<IfMgrIfCommandBase*>(c.get());
+ dynamic_cast<IfMgrIfCommandBase*>(c.get());
+ XLOG_ASSERT(ifcmd != NULL);
_current_ifname = ifcmd->ifname();
back_insert_iterator<CmdList> bi(_current_cmds);
remove_copy_if(_future_cmds.begin(), _future_cmds.end(), bi,
Modified: trunk/xorp/libxorp/timer.cc
===================================================================
--- trunk/xorp/libxorp/timer.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/libxorp/timer.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -25,6 +25,9 @@
//
// Copyright (c) 1999-2000 Massachusetts Institute of Technology
+
+
+
#include "libxorp_module.h"
#include "xorp.h"
@@ -32,8 +35,6 @@
#include "timer.hh"
#include "clock.hh"
-#include <boost/cast.hpp>
-
// Implementation Notes:
//
// Event scheduling happens through the TimerList. The TimerList is
@@ -407,7 +408,7 @@
tardiness.str().c_str());
}
- TimerNode *t = boost::polymorphic_downcast<TimerNode *>(n->object);
+ TimerNode *t = static_cast<TimerNode *>(n->object);
heap->pop();
// _hook() requires a XorpTimer as first argument, we have
// only a timernode, so we have to create a temporary
Modified: trunk/xorp/ospf/area_router.cc
===================================================================
--- trunk/xorp/ospf/area_router.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/ospf/area_router.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -41,8 +41,6 @@
#include <set>
#include <deque>
-#include <boost/cast.hpp>
-
#include "libproto/spt.hh"
#include "ospf.hh"
@@ -50,8 +48,6 @@
#include "vertex.hh"
#include "area_router.hh"
-using boost::polymorphic_cast;
-
template <typename A>
AreaRouter<A>::AreaRouter(Ospf<A>& ospf, OspfTypes::AreaID area,
OspfTypes::AreaType area_type)
@@ -374,7 +370,8 @@
{
Vertex node = rc.node();
Lsa::LsaRef lsar = node.get_lsa();
- RouterLsa *rlsa = polymorphic_cast<RouterLsa *>(lsar.get());
+ RouterLsa *rlsa = dynamic_cast<RouterLsa *>(lsar.get());
+ XLOG_ASSERT(rlsa);
OspfTypes::RouterID rid = rlsa->get_header().get_link_state_id();
// If this router ID is in the tmp set then it is already up, just
@@ -434,7 +431,8 @@
list<Lsa::LsaRef>::iterator l = lsars.begin();
XLOG_ASSERT(l != lsars.end());
Lsa::LsaRef lsar = *l++;
- RouterLsa *rlsa = polymorphic_cast<RouterLsa *>(lsar.get());
+ RouterLsa *rlsa = dynamic_cast<RouterLsa *>(lsar.get());
+ XLOG_ASSERT(rlsa);
OspfTypes::RouterID rid = rlsa->get_header().get_advertising_router();
// If this router ID is in the tmp set then it is already up, just
@@ -507,8 +505,6 @@
"Find interface address \nsrc:\n%s\ndst:\n%s\n",
cstring(*src), cstring(*dst));
- // XXX: Candidates for polymorphic_cast<T>, but used within
- // logic below.
RouterLsa *rlsa = dynamic_cast<RouterLsa *>(src.get());
NetworkLsa *nlsa = dynamic_cast<NetworkLsa *>(src.get());
@@ -625,7 +621,8 @@
cstring(*lsa));
return false;
}
- LinkLsa *llsa = polymorphic_cast<LinkLsa *>(lsa.get());
+ LinkLsa *llsa = dynamic_cast<LinkLsa *>(lsa.get());
+ XLOG_ASSERT(llsa);
interface = llsa->get_link_local_address();
return true;
}
@@ -1430,7 +1427,8 @@
Lsa::LsaRef
AreaRouter<A>::external_generate_type7(Lsa::LsaRef lsar, bool& indb)
{
- ASExternalLsa *aselsa = polymorphic_cast<ASExternalLsa *>(lsar.get());
+ ASExternalLsa *aselsa = dynamic_cast<ASExternalLsa *>(lsar.get());
+ XLOG_ASSERT(aselsa);
OspfTypes::Version version = _ospf.get_version();
Type7Lsa *type7= new Type7Lsa(version);
@@ -1489,7 +1487,8 @@
Lsa::LsaRef
AreaRouter<A>::external_generate_external(Lsa::LsaRef lsar)
{
- Type7Lsa *type7 = polymorphic_cast<Type7Lsa *>(lsar.get());
+ Type7Lsa *type7 = dynamic_cast<Type7Lsa *>(lsar.get());
+ XLOG_ASSERT(type7);
OspfTypes::Version version = _ospf.get_version();
ASExternalLsa *aselsa= new ASExternalLsa(version);
@@ -1817,7 +1816,8 @@
return false;
}
- NetworkLsa *nlsa = polymorphic_cast<NetworkLsa *>(_db[index].get());
+ NetworkLsa *nlsa = dynamic_cast<NetworkLsa *>(_db[index].get());
+ XLOG_ASSERT(nlsa);
// If routers is empty this is a refresh.
if (!routers.empty()) {
@@ -1900,7 +1900,8 @@
AreaRouter<A>::refresh_network_lsa(OspfTypes::PeerID peerid, Lsa::LsaRef lsar,
bool timer)
{
- NetworkLsa *nlsa = polymorphic_cast<NetworkLsa *>(lsar.get());
+ NetworkLsa *nlsa = dynamic_cast<NetworkLsa *>(lsar.get());
+ XLOG_ASSERT(nlsa);
XLOG_ASSERT(nlsa->valid());
uint32_t network_mask = 0;
@@ -2126,7 +2127,8 @@
}
IntraAreaPrefixLsa *iaplsa =
- polymorphic_cast<IntraAreaPrefixLsa *>(_db[index].get());
+ dynamic_cast<IntraAreaPrefixLsa *>(_db[index].get());
+ XLOG_ASSERT(iaplsa);
// If attached_routers is empty this is a refresh.
if (!attached_routers.empty()) {
@@ -3502,7 +3504,8 @@
Lsa::LsaRef lsar = _db[index];
IntraAreaPrefixLsa *iaplsa =
- polymorphic_cast<IntraAreaPrefixLsa *>(lsar.get());
+ dynamic_cast<IntraAreaPrefixLsa *>(lsar.get());
+ XLOG_ASSERT(iaplsa);
list<IPv6Prefix>& nprefixes = iaplsa->get_prefixes();
nprefixes.insert(nprefixes.begin(), prefixes.begin(), prefixes.end());
@@ -3520,7 +3523,8 @@
// the newly computed one then update the old one and publish.
Lsa::LsaRef lsar = _db[index];
IntraAreaPrefixLsa *iaplsa =
- polymorphic_cast<IntraAreaPrefixLsa *>(lsar.get());
+ dynamic_cast<IntraAreaPrefixLsa *>(lsar.get());
+ XLOG_ASSERT(iaplsa);
list<IPv6Prefix>& oprefixes = iaplsa->get_prefixes();
list<IPv6Prefix>::iterator j, k;
@@ -4039,7 +4043,8 @@
route_entry.set_area_border_router(rlsa->get_b_bit());
route_entry.set_as_boundary_router(rlsa->get_e_bit());
} else {
- nlsa = polymorphic_cast<NetworkLsa *>(lsar.get());
+ nlsa = dynamic_cast<NetworkLsa *>(lsar.get());
+ XLOG_ASSERT(nlsa);
// route_entry.set_router_id(nlsa->get_header().
// get_advertising_router());
route_entry.set_address(nlsa->get_header().get_link_state_id());
@@ -4340,7 +4345,8 @@
// route_entry);
}
} else {
- NetworkLsa *nlsa = polymorphic_cast<NetworkLsa *>(lsar.get());
+ NetworkLsa *nlsa = dynamic_cast<NetworkLsa *>(lsar.get());
+ XLOG_ASSERT(nlsa);
const list<IntraAreaPrefixLsa *>& lsai =
lsa_temp_store.get_intra_area_prefix_lsas(node.get_nodeid());
if (!lsai.empty()) {
Modified: trunk/xorp/ospf/auth.cc
===================================================================
--- trunk/xorp/ospf/auth.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/ospf/auth.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -36,8 +36,6 @@
#include "libxorp/eventloop.hh"
#include "libproto/packet.hh"
-#include <boost/cast.hpp>
-
#include "ospf.hh"
#include "auth.hh"
@@ -803,8 +801,8 @@
if (plaintext_ah == NULL) {
set_method(PlaintextAuthHandler::auth_type_name());
}
- plaintext_ah =
- boost::polymorphic_cast<PlaintextAuthHandler*>(_auth_handler);
+ plaintext_ah = dynamic_cast<PlaintextAuthHandler*>(_auth_handler);
+ XLOG_ASSERT(plaintext_ah != NULL);
plaintext_ah->set_key(password);
error_msg = "";
Modified: trunk/xorp/ospf/external.cc
===================================================================
--- trunk/xorp/ospf/external.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/ospf/external.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -38,8 +38,6 @@
#include <list>
#include <set>
-#include <boost/cast.hpp>
-
#include "libproto/spt.hh"
#include "ospf.hh"
@@ -49,8 +47,6 @@
#include "external.hh"
#include "policy_varrw.hh"
-using boost::polymorphic_cast;
-
template <typename A>
External<A>::External(Ospf<A>& ospf,
map<OspfTypes::AreaID, AreaRouter<A> *>& areas)
@@ -130,9 +126,11 @@
Lsa::LsaRef lsar_in_db = *i;
XLOG_ASSERT(lsar_in_db->get_self_originating());
- ASExternalLsa *aselsa = polymorphic_cast<ASExternalLsa *>(lsar.get());
+ ASExternalLsa *aselsa = dynamic_cast<ASExternalLsa *>(lsar.get());
+ XLOG_ASSERT(aselsa);
ASExternalLsa *aselsa_in_db =
- polymorphic_cast<ASExternalLsa *>(lsar_in_db.get());
+ dynamic_cast<ASExternalLsa *>(lsar_in_db.get());
+ XLOG_ASSERT(aselsa_in_db);
if (aselsa->get_network_mask() == aselsa_in_db->get_network_mask())
return;
@@ -183,7 +181,8 @@
Lsa::LsaRef lsar_in_db = *i;
XLOG_ASSERT(lsar_in_db->get_self_originating());
ASExternalLsa *aselsa_in_db =
- polymorphic_cast<ASExternalLsa *>(lsar_in_db.get());
+ dynamic_cast<ASExternalLsa *>(lsar_in_db.get());
+ XLOG_ASSERT(aselsa_in_db);
IPv4 mask_in_db = IPv4(htonl(aselsa_in_db->get_network_mask()));
// If the mask/prefix lengths match then the LSA has been found.
if (mask_in_db.mask_len() == net.prefix_len())
@@ -456,7 +455,8 @@
RouteEntry<A> rte;
list<Lsa::LsaRef>::iterator i;
for (i = _suppress_temp.begin(); i != _suppress_temp.end(); i++) {
- ASExternalLsa *aselsa = polymorphic_cast<ASExternalLsa *>((*i).get());
+ ASExternalLsa *aselsa = dynamic_cast<ASExternalLsa *>((*i).get());
+ XLOG_ASSERT(aselsa);
Lsa::LsaRef olsar = aselsa->get_suppressed_lsa();
aselsa->release_suppressed_lsa();
if (!rt.lookup_entry_by_advertising_router(area,
@@ -523,7 +523,8 @@
{
XLOG_ASSERT(olsar->get_self_originating());
- ASExternalLsa *olsa = polymorphic_cast<ASExternalLsa *>(olsar.get());
+ ASExternalLsa *olsa = dynamic_cast<ASExternalLsa *>(olsar.get());
+ XLOG_ASSERT(olsa);
OspfTypes::Version version = _ospf.version();
ASExternalLsa *nlsa = new ASExternalLsa(version);
@@ -640,7 +641,8 @@
void
External<A>::suppress_self(Lsa::LsaRef lsar)
{
- ASExternalLsa *aselsa = polymorphic_cast<ASExternalLsa *>(lsar.get());
+ ASExternalLsa *aselsa = dynamic_cast<ASExternalLsa *>(lsar.get());
+ XLOG_ASSERT(aselsa);
// This may be a refresh of previously announce AS-external-LSA.
bool suppressed = false;
@@ -687,7 +689,8 @@
XLOG_ASSERT(lsar->external());
XLOG_ASSERT(!lsar->get_self_originating());
- ASExternalLsa *aselsa = polymorphic_cast<ASExternalLsa *>(lsar.get());
+ ASExternalLsa *aselsa = dynamic_cast<ASExternalLsa *>(lsar.get());
+ XLOG_ASSERT(aselsa);
OspfTypes::Version version = _ospf.version();
@@ -710,7 +713,8 @@
if (0 == olsar.get())
return false;
- ASExternalLsa *olsa = polymorphic_cast<ASExternalLsa *>(olsar.get());
+ ASExternalLsa *olsa = dynamic_cast<ASExternalLsa *>(olsar.get());
+ XLOG_ASSERT(olsa);
switch(version) {
case OspfTypes::V2:
Modified: trunk/xorp/ospf/peer.cc
===================================================================
--- trunk/xorp/ospf/peer.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/ospf/peer.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -1221,7 +1221,6 @@
LinkStateUpdatePacket *lsup;
LinkStateAcknowledgementPacket *lsap;
- // XXX: Candidate for a packet_type<T>() template function.
if (0 != (hello = dynamic_cast<HelloPacket *>(packet))) {
return process_hello_packet(dst, src, hello);
} else if(0 != (dd = dynamic_cast<DataDescriptionPacket *>(packet))) {
Modified: trunk/xorp/pim/xrl_pim_node.cc
===================================================================
--- trunk/xorp/pim/xrl_pim_node.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/pim/xrl_pim_node.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -34,10 +34,6 @@
#include "pim_vif.hh"
#include "xrl_pim_node.hh"
-#include <boost/cast.hpp>
-
-using boost::polymorphic_cast;
-
const TimeVal XrlPimNode::RETRY_TIMEVAL = TimeVal(1, 0);
//
@@ -415,7 +411,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
RegisterUnregisterInterest* entry;
- entry = polymorphic_cast<RegisterUnregisterInterest*>(xrl_task_base);
+ entry = dynamic_cast<RegisterUnregisterInterest*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
if (entry->is_register()) {
// Register interest
@@ -449,7 +446,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
RegisterUnregisterInterest* entry;
- entry = polymorphic_cast<RegisterUnregisterInterest*>(xrl_task_base);
+ entry = dynamic_cast<RegisterUnregisterInterest*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
switch (xrl_error.error_code()) {
case OKAY:
@@ -1030,7 +1028,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
RegisterUnregisterReceiver* entry;
- entry = polymorphic_cast<RegisterUnregisterReceiver*>(xrl_task_base);
+ entry = dynamic_cast<RegisterUnregisterReceiver*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
//
// Check whether we have already registered with the FEA
@@ -1118,7 +1117,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
RegisterUnregisterReceiver* entry;
- entry = polymorphic_cast<RegisterUnregisterReceiver*>(xrl_task_base);
+ entry = dynamic_cast<RegisterUnregisterReceiver*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
switch (xrl_error.error_code()) {
case OKAY:
@@ -1222,7 +1222,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
RegisterUnregisterProtocol* entry;
- entry = polymorphic_cast<RegisterUnregisterProtocol*>(xrl_task_base);
+ entry = dynamic_cast<RegisterUnregisterProtocol*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
//
// Check whether we have already registered with the MFEA
@@ -1306,7 +1307,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
RegisterUnregisterProtocol* entry;
- entry = polymorphic_cast<RegisterUnregisterProtocol*>(xrl_task_base);
+ entry = dynamic_cast<RegisterUnregisterProtocol*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
switch (xrl_error.error_code()) {
case OKAY:
@@ -1410,7 +1412,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
JoinLeaveMulticastGroup* entry;
- entry = polymorphic_cast<JoinLeaveMulticastGroup*>(xrl_task_base);
+ entry = dynamic_cast<JoinLeaveMulticastGroup*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
//
// Check whether we have already registered with the FEA
@@ -1499,7 +1502,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
JoinLeaveMulticastGroup* entry;
- entry = polymorphic_cast<JoinLeaveMulticastGroup*>(xrl_task_base);
+ entry = dynamic_cast<JoinLeaveMulticastGroup*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
switch (xrl_error.error_code()) {
case OKAY:
@@ -1599,7 +1603,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
AddDeleteMfc* entry;
- entry = polymorphic_cast<AddDeleteMfc*>(xrl_task_base);
+ entry = dynamic_cast<AddDeleteMfc*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
size_t max_vifs_oiflist = entry->olist().size();
const IPvX& source_addr = entry->source_addr();
@@ -1700,7 +1705,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
AddDeleteMfc* entry;
- entry = polymorphic_cast<AddDeleteMfc*>(xrl_task_base);
+ entry = dynamic_cast<AddDeleteMfc*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
switch (xrl_error.error_code()) {
case OKAY:
@@ -1837,7 +1843,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
AddDeleteDataflowMonitor* entry;
- entry = polymorphic_cast<AddDeleteDataflowMonitor*>(xrl_task_base);
+ entry = dynamic_cast<AddDeleteDataflowMonitor*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
//
// Check whether we have already registered with the MFEA
@@ -1974,7 +1981,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
AddDeleteDataflowMonitor* entry;
- entry = polymorphic_cast<AddDeleteDataflowMonitor*>(xrl_task_base);
+ entry = dynamic_cast<AddDeleteDataflowMonitor*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
switch (xrl_error.error_code()) {
case OKAY:
@@ -2342,7 +2350,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
SendProtocolMessage* entry;
- entry = polymorphic_cast<SendProtocolMessage*>(xrl_task_base);
+ entry = dynamic_cast<SendProtocolMessage*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
//
// Check whether we have already registered with the FEA
@@ -2423,7 +2432,8 @@
XrlTaskBase* xrl_task_base = _xrl_tasks_queue.front();
SendProtocolMessage* entry;
- entry = polymorphic_cast<SendProtocolMessage*>(xrl_task_base);
+ entry = dynamic_cast<SendProtocolMessage*>(xrl_task_base);
+ XLOG_ASSERT(entry != NULL);
switch (xrl_error.error_code()) {
case OKAY:
Modified: trunk/xorp/rib/rib.cc
===================================================================
--- trunk/xorp/rib/rib.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/rib/rib.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -31,9 +31,7 @@
#include "rib_manager.hh"
#include "rib.hh"
-#include <boost/cast.hpp>
-
// ----------------------------------------------------------------------------
// Inline table utility methods
@@ -47,7 +45,6 @@
const string& _n;
};
-// XXX: Unused template function.
template <typename A, typename T>
struct table_has_name_and_type {
table_has_name_and_type(const string& name) : _n(name) {}
@@ -137,7 +134,6 @@
{
map<string, uint32_t>::iterator mi = _admin_distances.find(protocol_name);
if (mi != _admin_distances.end()) {
- // XXX: Candidate for a table_has_type() template function.
OriginTable<A>* ot =
dynamic_cast<OriginTable<A>* >(find_table(protocol_name));
if (NULL != ot) {
@@ -776,7 +772,6 @@
}
}
- // XXX: Candidate for a table_has_type() template function.
OriginTable<A>* ot = dynamic_cast<OriginTable<A>* >(rt);
if (ot == NULL) {
if (_errors_are_fatal) {
@@ -890,7 +885,6 @@
if (NULL == rt)
return XORP_ERROR; // Table does not exist
- // XXX: Candidate for a table_has_type() template function.
OriginTable<A>* ot = dynamic_cast<OriginTable<A>* >(rt);
if (NULL == ot)
return XORP_ERROR; // Table is not an origin table
@@ -915,7 +909,6 @@
if (NULL == rt)
return XORP_ERROR; // Table does not exist
- // XXX: Candidate for a table_has_type() template function.
OriginTable<A>* ot = dynamic_cast<OriginTable<A>* >(rt);
if (NULL == ot)
return XORP_ERROR; // Table is not an origin table
@@ -1060,8 +1053,7 @@
return A::ZERO();
#else
// Default: Assume the route points to a resolved IPNextHop.
- IPNextHop<A>* route_nexthop =
- boost::polymorphic_downcast<IPNextHop<A>* >(re->nexthop());
+ IPNextHop<A>* route_nexthop = static_cast<IPNextHop<A>* >(re->nexthop());
return route_nexthop->addr();
#endif
}
@@ -1093,8 +1085,6 @@
RedistTable<A>*
RIB<A>::protocol_redist_table(const string& protocol)
{
- // XXX: Candidate for a polymorphic_cast, but our callers check
- // for the 0 return value.
RouteTable<A>* rt = find_table(redist_tablename(protocol));
if (rt != NULL) {
return dynamic_cast<RedistTable<A>*>(rt);
@@ -1242,7 +1232,6 @@
// Check if table exists and check type if so
RouteTable<A>* rt = find_table(tablename);
if (rt != NULL) {
- // XXX: Candidate for a table_has_type() template function.
OriginTable<A>* ot = dynamic_cast<OriginTable<A>* >(rt);
if (ot == NULL) {
XLOG_ERROR("add_origin_table: table \"%s\" already exists, but is "
@@ -1275,10 +1264,7 @@
return XORP_ERROR;
}
- // XXX: Unchecked upcast from RouteTable to OriginTable.
- OriginTable<A>* new_table =
- boost::polymorphic_downcast<OriginTable<A>* >(find_table(tablename));
-
+ OriginTable<A>* new_table = static_cast<OriginTable<A>* >(find_table(tablename));
// XXX: the table was created by new_origin_table() above, so it must exist
XLOG_ASSERT(new_table != NULL);
if (_final_table == new_table) {
@@ -1319,7 +1305,6 @@
continue;
}
- // XXX: Candidate for a table_has_type() template function.
OriginTable<A>* ot = dynamic_cast<OriginTable<A>* >(current);
if (ot != NULL) {
if (ot->protocol_type() == IGP) {
@@ -1474,7 +1459,6 @@
const string& target_class,
const string& target_instance)
{
- // XXX: Candidate for a table_has_type() template function.
OriginTable<A>* ot = dynamic_cast<OriginTable<A>* >(find_table(tablename));
if (NULL == ot)
return XORP_ERROR;
@@ -1612,8 +1596,8 @@
RouteTable<A>* rt = find_table(PolicyConnectedTable<A>::table_name);
XLOG_ASSERT(rt != NULL);
- PolicyConnectedTable<A>* pct =
- boost::polymorphic_cast<PolicyConnectedTable<A>*>(rt);
+ PolicyConnectedTable<A>* pct = dynamic_cast<PolicyConnectedTable<A>*>(rt);
+ XLOG_ASSERT(pct != NULL);
pct->push_routes();
}
Modified: trunk/xorp/rip/rip_varrw.cc
===================================================================
--- trunk/xorp/rip/rip_varrw.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/rip/rip_varrw.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -26,8 +26,6 @@
#include "policy/common/policy_utils.hh"
#include "rip_varrw.hh"
-#include <boost/cast.hpp>
-
template <class A>
RIPVarRW<A>::RIPVarRW(RouteEntry<A>& route)
: _route(route)
@@ -46,7 +44,6 @@
// XXX which tag wins?
Element* element = _route.policytags().element_tag();
-
ElemU32* e = dynamic_cast<ElemU32*>(element);
if (e != NULL && e->val())
_route.set_tag(e->val());
@@ -77,17 +74,21 @@
if (write_nexthop(id, e))
return;
- const ElemU32* u32 = 0;
+ const ElemU32* u32 = NULL;
if (e.type() == ElemU32::id) {
- u32 = boost::polymorphic_cast<const ElemU32*>(&e);
+ u32 = dynamic_cast<const ElemU32*>(&e);
+ XLOG_ASSERT(u32 != NULL);
}
if (id == VAR_METRIC) {
+ XLOG_ASSERT(u32 != NULL);
+
_route.set_cost(u32->val());
return;
}
+ if (id == VAR_TAG) {
+ XLOG_ASSERT(u32 != NULL);
- if (id == VAR_TAG) {
_route.set_tag(u32->val());
_route.policytags().set_tag(e);
return;
@@ -101,9 +102,10 @@
RIPVarRW<IPv4>::write_nexthop(const Id& id, const Element& e)
{
if (id == VAR_NEXTHOP4 && e.type() == ElemIPv4NextHop::id) {
- const ElemIPv4NextHop* v4 =
- boost::polymorphic_cast<const ElemIPv4NextHop*>(&e);
+ const ElemIPv4NextHop* v4 = dynamic_cast<const ElemIPv4NextHop*>(&e);
+ XLOG_ASSERT(v4 != NULL);
+
IPv4 nh(v4->val());
_route.set_nexthop(nh);
@@ -132,9 +134,10 @@
RIPVarRW<IPv6>::write_nexthop(const Id& id, const Element& e)
{
if (id == VAR_NEXTHOP6 && e.type() == ElemIPv6NextHop::id) {
- const ElemIPv6NextHop* v6 =
- boost::polymorphic_cast<const ElemIPv6NextHop*>(&e);
+ const ElemIPv6NextHop* v6 = dynamic_cast<const ElemIPv6NextHop*>(&e);
+ XLOG_ASSERT(v6 != NULL);
+
IPv6 nh(v6->val());
_route.set_nexthop(nh);
Modified: trunk/xorp/rip/xrl_port_manager.cc
===================================================================
--- trunk/xorp/rip/xrl_port_manager.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/rip/xrl_port_manager.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -548,7 +548,6 @@
return;
}
Port<A>* p = (*pi);
- // XXX: Downcast result used as a loop control variable.
xio = dynamic_cast<XrlPortIO<A>*>(p->io_handler());
pi++;
}
Modified: trunk/xorp/rtrmgr/master_conf_tree.cc
===================================================================
--- trunk/xorp/rtrmgr/master_conf_tree.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/rtrmgr/master_conf_tree.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -275,8 +275,6 @@
uid_t user_id, bool verbose)
{
MasterConfigTreeNode *ctn, *parent;
-
- // BOOST: Conditional downcast means polymorphic casts can't be used.
parent = dynamic_cast<MasterConfigTreeNode *>(parent_node);
if (parent_node != NULL)
XLOG_ASSERT(parent != NULL);
Modified: trunk/xorp/rtrmgr/master_conf_tree_node.cc
===================================================================
--- trunk/xorp/rtrmgr/master_conf_tree_node.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/rtrmgr/master_conf_tree_node.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -26,8 +26,6 @@
#include "libxorp/xlog.h"
#include "libxorp/debug.h"
-#include <boost/cast.hpp>
-
#include "command_tree.hh"
#include "master_conf_tree_node.hh"
#include "module_command.hh"
@@ -81,10 +79,9 @@
{
UNUSED(clientid);
MasterConfigTreeNode *new_node, *parent;
+ parent = dynamic_cast<MasterConfigTreeNode *>(parent_node);
// sanity check - all nodes in this tree should be Master nodes
- // BOOST: Conditional downcast means polymorphic casts can't be used.
- parent = dynamic_cast<MasterConfigTreeNode *>(parent_node);
if (parent_node != NULL)
XLOG_ASSERT(parent != NULL);
@@ -99,7 +96,8 @@
const MasterConfigTreeNode *orig;
// sanity check - all nodes in this tree should be Master nodes
- orig = boost::polymorphic_cast<const MasterConfigTreeNode *>(&ctn);
+ orig = dynamic_cast<const MasterConfigTreeNode *>(&ctn);
+ XLOG_ASSERT(orig != NULL);
new_node = new MasterConfigTreeNode(*orig);
return new_node;
@@ -451,8 +449,8 @@
const AllowCommand* allow_cmd;
debug_msg("found ALLOW command: %s\n",
cmd->str().c_str());
- allow_cmd =
- boost::polymorphic_cast<const AllowCommand*>(base_cmd);
+ allow_cmd = dynamic_cast<const AllowCommand*>(base_cmd);
+ XLOG_ASSERT(allow_cmd != NULL);
if (allow_cmd->verify_variables(*this, error_msg)
!= true) {
//
@@ -490,8 +488,8 @@
const AllowCommand* allow_cmd;
debug_msg("found ALLOW command: %s\n",
cmd->str().c_str());
- allow_cmd =
- boost::polymorphic_cast<const AllowCommand*>(base_cmd);
+ allow_cmd = dynamic_cast<const AllowCommand*>(base_cmd);
+ XLOG_ASSERT(allow_cmd != NULL);
if (allow_cmd->verify_variables(*this, error_msg)
!= true) {
error_msg = c_format("Bad operator for \"%s\": %s; ",
Modified: trunk/xorp/rtrmgr/master_template_tree_node.cc
===================================================================
--- trunk/xorp/rtrmgr/master_template_tree_node.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/rtrmgr/master_template_tree_node.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -37,10 +37,7 @@
#include "master_template_tree_node.hh"
#include "util.hh"
-#include <boost/cast.hpp>
-using boost::polymorphic_cast;
-
void
MasterTemplateTreeNode::add_cmd(const string& cmd, TemplateTree& tt)
throw (ParseError)
@@ -86,8 +83,8 @@
iter = _cmd_map.find("%modinfo");
XLOG_ASSERT(iter != _cmd_map.end());
command = iter->second;
- ModuleCommand* module_command =
- polymorphic_cast<ModuleCommand*>(command);
+ ModuleCommand* module_command = dynamic_cast<ModuleCommand*>(command);
+ XLOG_ASSERT(module_command != NULL);
module_command->add_action(action_list, xrldb);
} else if ((cmd == "%create")
|| (cmd == "%activate")
@@ -119,8 +116,8 @@
cmd_iter = _cmd_map.find("%modinfo");
if (cmd_iter != _cmd_map.end()) {
BaseCommand* command = cmd_iter->second;
- ModuleCommand* module_command =
- polymorphic_cast<ModuleCommand*>(command);
+ ModuleCommand* module_command = dynamic_cast<ModuleCommand*>(command);
+ XLOG_ASSERT(module_command != NULL);
if (module_command->expand_actions(error_msg) != true)
return (false);
}
@@ -143,7 +140,7 @@
list<TemplateTreeNode*>::iterator iter2;
for (iter2 = _children.begin(); iter2 != _children.end(); ++iter2) {
MasterTemplateTreeNode* mttn;
- mttn = polymorphic_cast<MasterTemplateTreeNode*>(*iter2);
+ mttn = static_cast<MasterTemplateTreeNode*>(*iter2);
if (mttn->expand_master_template_tree(error_msg) != true)
return false;
}
@@ -163,7 +160,8 @@
if (cmd_iter != _cmd_map.end()) {
const BaseCommand* command = cmd_iter->second;
const ModuleCommand* module_command;
- module_command = polymorphic_cast<const ModuleCommand*>(command);
+ module_command = dynamic_cast<const ModuleCommand*>(command);
+ XLOG_ASSERT(module_command != NULL);
if (module_command->check_referred_variables(error_msg) != true)
return (false);
}
@@ -174,7 +172,7 @@
list<TemplateTreeNode*>::const_iterator iter2;
for (iter2 = _children.begin(); iter2 != _children.end(); ++iter2) {
const MasterTemplateTreeNode* mttn;
- mttn = polymorphic_cast<MasterTemplateTreeNode*>(*iter2);
+ mttn = static_cast<const MasterTemplateTreeNode*>(*iter2);
if (mttn->check_master_template_tree(error_msg) != true)
return false;
}
Modified: trunk/xorp/rtrmgr/module_manager.cc
===================================================================
--- trunk/xorp/rtrmgr/module_manager.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/rtrmgr/module_manager.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -18,10 +18,7 @@
// http://xorp.net
-#include <boost/cast.hpp>
-using boost::polymorphic_cast;
-
#include "rtrmgr_module.h"
#include "libxorp/xorp.h"
@@ -442,7 +439,8 @@
{
Module* module;
- module = polymorphic_cast<Module *>(find_module(module_name));
+ module = dynamic_cast<Module *>(find_module(module_name));
+ XLOG_ASSERT(module != NULL);
return (module->execute(do_exec, is_verification, cb));
}
@@ -453,7 +451,8 @@
{
Module* module;
- module = polymorphic_cast<Module *>(find_module(module_name));
+ module = dynamic_cast<Module *>(find_module(module_name));
+ XLOG_ASSERT(module != NULL);
module->terminate(cb);
return XORP_OK;
@@ -488,7 +487,8 @@
map<string, GenericModule *>::iterator iter;
for (iter = _modules.begin(); iter != _modules.end(); ++iter) {
- Module *module = polymorphic_cast<Module *>(iter->second);
+ Module *module = dynamic_cast<Module *>(iter->second);
+ XLOG_ASSERT(module != NULL);
module->terminate(callback(this, &ModuleManager::module_shutdown_cb,
module->name()));
}
@@ -546,7 +546,8 @@
map<string, GenericModule *>::const_iterator iter;
for (iter = _modules.begin(); iter != _modules.end(); ++iter) {
- Module* module = polymorphic_cast<Module *>(iter->second);
+ Module* module = dynamic_cast<Module *>(iter->second);
+ XLOG_ASSERT(module != NULL);
if (module->expath() != expath)
continue;
switch (module->status()) {
Modified: trunk/xorp/rtrmgr/slave_conf_tree_node.cc
===================================================================
--- trunk/xorp/rtrmgr/slave_conf_tree_node.cc 2009-12-04 15:19:46 UTC (rev 11676)
+++ trunk/xorp/rtrmgr/slave_conf_tree_node.cc 2009-12-04 15:27:20 UTC (rev 11677)
@@ -33,10 +33,7 @@
#include "template_tree_node.hh"
#include "util.hh"
-#include <boost/cast.hpp>
-using boost::polymorphic_cast;
-
extern int booterror(const char *s);
SlaveConfigTreeNode::SlaveConfigTreeNode(bool verbose)
@@ -68,11 +65,9 @@
bool verbose)
{
SlaveConfigTreeNode *new_node, *parent;
+ parent = dynamic_cast<SlaveConfigTreeNode *>(parent_node);
// sanity check - all nodes in this tree should be Slave nodes
- // BOOST: This is a conditional downcast, so polymorphic casts
- // can't be applied.
- parent = dynamic_cast<SlaveConfigTreeNode *>(parent_node);
if (parent_node != NULL)
XLOG_ASSERT(parent != NULL);
@@ -90,7 +85,8 @@
debug_msg("SlaveConfigTreeNode::create_node\n");
// sanity check - all nodes in this tree should be Slave nodes
- orig = polymorphic_cast<const SlaveConfigTreeNode *>(&ctn);
+ orig = dynamic_cast<const SlaveConfigTreeNode *>(&ctn);
+ XLOG_ASSERT(orig != NULL);
new_node = new SlaveConfigTreeNode(*orig);
return new_node;
@@ -300,8 +296,9 @@
iter != master_node.const_children().end();
++iter) {
SlaveConfigTreeNode* new_node;
- const SlaveConfigTreeNode* my_child =
- polymorphic_cast<SlaveConfigTreeNode*>(*iter);
+ const SlaveConfigTreeNode* my_child
+ = dynamic_cast<SlaveConfigTreeNode*>(*iter);
+ XLOG_ASSERT(my_child != NULL);
new_node = new SlaveConfigTreeNode(*my_child);
new_node->set_parent(this);
@@ -333,9 +330,9 @@
iter != master_node.const_children().end();
++iter) {
SlaveConfigTreeNode* new_node;
- const SlaveConfigTreeNode* my_child =
- polymorphic_cast<SlaveConfigTreeNode*>(*iter);
-
+ const SlaveConfigTreeNode* my_child
+ = dynamic_cast<SlaveConfigTreeNode*>(*iter);
+ XLOG_ASSERT(my_child != NULL);
new_node = new SlaveConfigTreeNode(*my_child);
new_node->set_parent(this);
new_node->undelete();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Xorp-cvs
mailing list