diff --git a/bindings/python/ns3_module_core.py b/bindings/python/ns3_module_core.py index 3a72f1d56..1cbf7aaad 100644 --- a/bindings/python/ns3_module_core.py +++ b/bindings/python/ns3_module_core.py @@ -2043,7 +2043,7 @@ def register_Ns3TracedValue__Unsigned_int_methods(root_module, cls): cls.add_method('ConnectWithoutContext', 'void', [param('ns3::CallbackBase const &', 'cb')]) - ## traced-value.h: void ns3::TracedValue::Connect(ns3::CallbackBase const & cb, std::string path) [member function] + ## traced-value.h: void ns3::TracedValue::Connect(ns3::CallbackBase const & cb, std::basic_string,std::allocator > path) [member function] cls.add_method('Connect', 'void', [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')]) @@ -2051,7 +2051,7 @@ def register_Ns3TracedValue__Unsigned_int_methods(root_module, cls): cls.add_method('DisconnectWithoutContext', 'void', [param('ns3::CallbackBase const &', 'cb')]) - ## traced-value.h: void ns3::TracedValue::Disconnect(ns3::CallbackBase const & cb, std::string path) [member function] + ## traced-value.h: void ns3::TracedValue::Disconnect(ns3::CallbackBase const & cb, std::basic_string,std::allocator > path) [member function] cls.add_method('Disconnect', 'void', [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')]) @@ -2199,7 +2199,7 @@ def register_functions(root_module): module.add_function('TypeNameGet', 'std::string', [], - template_parameters=['long long']) + template_parameters=['long']) ## type-name.h: extern std::string ns3::TypeNameGet() [free function] module.add_function('TypeNameGet', 'std::string', @@ -2219,7 +2219,7 @@ def register_functions(root_module): module.add_function('TypeNameGet', 'std::string', [], - template_parameters=['unsigned long long']) + template_parameters=['unsigned long']) ## type-name.h: extern std::string ns3::TypeNameGet() [free function] module.add_function('TypeNameGet', 'std::string', diff --git a/bindings/python/ns3_module_internet_stack.py b/bindings/python/ns3_module_internet_stack.py index 22ae33a65..36461857c 100644 --- a/bindings/python/ns3_module_internet_stack.py +++ b/bindings/python/ns3_module_internet_stack.py @@ -25,8 +25,8 @@ def register_types(module): module.add_class('UdpHeader', parent=root_module['ns3::Header']) ## ipv4-static-routing-impl.h: ns3::Ipv4StaticRoutingImpl [class] module.add_class('Ipv4StaticRoutingImpl', parent=root_module['ns3::Ipv4StaticRouting']) - ## ipv4-list-routing-impl.h: ns3::Ipv4ListRoutingImpl [class] - module.add_class('Ipv4ListRoutingImpl', parent=root_module['ns3::Ipv4ListRouting']) + ## ipv4-list-routing.h: ns3::Ipv4ListRouting [class] + module.add_class('Ipv4ListRouting', parent=root_module['ns3::Ipv4RoutingProtocol']) ## Register a nested module for the namespace Config @@ -86,7 +86,7 @@ def register_methods(root_module): register_Ns3TcpHeader_methods(root_module, root_module['ns3::TcpHeader']) register_Ns3UdpHeader_methods(root_module, root_module['ns3::UdpHeader']) register_Ns3Ipv4StaticRoutingImpl_methods(root_module, root_module['ns3::Ipv4StaticRoutingImpl']) - register_Ns3Ipv4ListRoutingImpl_methods(root_module, root_module['ns3::Ipv4ListRoutingImpl']) + register_Ns3Ipv4ListRouting_methods(root_module, root_module['ns3::Ipv4ListRouting']) return def register_Ns3Icmpv4DestinationUnreachable_methods(root_module, cls): @@ -648,72 +648,72 @@ def register_Ns3Ipv4StaticRoutingImpl_methods(root_module, cls): visibility='protected', is_virtual=True) return -def register_Ns3Ipv4ListRoutingImpl_methods(root_module, cls): - ## ipv4-list-routing-impl.h: ns3::Ipv4ListRoutingImpl::Ipv4ListRoutingImpl(ns3::Ipv4ListRoutingImpl const & arg0) [copy constructor] - cls.add_constructor([param('ns3::Ipv4ListRoutingImpl const &', 'arg0')]) - ## ipv4-list-routing-impl.h: static ns3::TypeId ns3::Ipv4ListRoutingImpl::GetTypeId() [member function] +def register_Ns3Ipv4ListRouting_methods(root_module, cls): + ## ipv4-list-routing.h: ns3::Ipv4ListRouting::Ipv4ListRouting(ns3::Ipv4ListRouting const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Ipv4ListRouting const &', 'arg0')]) + ## ipv4-list-routing.h: static ns3::TypeId ns3::Ipv4ListRouting::GetTypeId() [member function] cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True) - ## ipv4-list-routing-impl.h: ns3::Ipv4ListRoutingImpl::Ipv4ListRoutingImpl() [constructor] + ## ipv4-list-routing.h: ns3::Ipv4ListRouting::Ipv4ListRouting() [constructor] cls.add_constructor([]) - ## ipv4-list-routing-impl.h: ns3::Ptr ns3::Ipv4ListRoutingImpl::RouteOutput(ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function] - cls.add_method('RouteOutput', - 'ns3::Ptr< ns3::Ipv4Route >', - [param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], - is_virtual=True) - ## ipv4-list-routing-impl.h: bool ns3::Ipv4ListRoutingImpl::RouteInput(ns3::Ptr p, ns3::Ipv4Header const & header, ns3::Ptr idev, ns3::Callback,ns3::Ptr,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ucb, ns3::Callback,ns3::Ptr,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> mcb, ns3::Callback,const ns3::Ipv4Header&,unsigned int,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> lcb, ns3::Callback,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ecb) [member function] - cls.add_method('RouteInput', - 'bool', - [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], - is_virtual=True) - ## ipv4-list-routing-impl.h: void ns3::Ipv4ListRoutingImpl::NotifyInterfaceUp(uint32_t interface) [member function] - cls.add_method('NotifyInterfaceUp', - 'void', - [param('uint32_t', 'interface')], - is_virtual=True) - ## ipv4-list-routing-impl.h: void ns3::Ipv4ListRoutingImpl::NotifyInterfaceDown(uint32_t interface) [member function] - cls.add_method('NotifyInterfaceDown', - 'void', - [param('uint32_t', 'interface')], - is_virtual=True) - ## ipv4-list-routing-impl.h: void ns3::Ipv4ListRoutingImpl::NotifyAddAddress(uint32_t interface, ns3::Ipv4InterfaceAddress address) [member function] - cls.add_method('NotifyAddAddress', - 'void', - [param('uint32_t', 'interface'), param('ns3::Ipv4InterfaceAddress', 'address')], - is_virtual=True) - ## ipv4-list-routing-impl.h: void ns3::Ipv4ListRoutingImpl::NotifyRemoveAddress(uint32_t interface, ns3::Ipv4InterfaceAddress address) [member function] - cls.add_method('NotifyRemoveAddress', - 'void', - [param('uint32_t', 'interface'), param('ns3::Ipv4InterfaceAddress', 'address')], - is_virtual=True) - ## ipv4-list-routing-impl.h: void ns3::Ipv4ListRoutingImpl::SetIpv4(ns3::Ptr ipv4) [member function] - cls.add_method('SetIpv4', - 'void', - [param('ns3::Ptr< ns3::Ipv4 >', 'ipv4')], - is_virtual=True) - ## ipv4-list-routing-impl.h: void ns3::Ipv4ListRoutingImpl::AddRoutingProtocol(ns3::Ptr routingProtocol, int16_t priority) [member function] + ## ipv4-list-routing.h: void ns3::Ipv4ListRouting::AddRoutingProtocol(ns3::Ptr routingProtocol, int16_t priority) [member function] cls.add_method('AddRoutingProtocol', 'void', [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol'), param('int16_t', 'priority')], is_virtual=True) - ## ipv4-list-routing-impl.h: uint32_t ns3::Ipv4ListRoutingImpl::GetNRoutingProtocols() const [member function] + ## ipv4-list-routing.h: uint32_t ns3::Ipv4ListRouting::GetNRoutingProtocols() const [member function] cls.add_method('GetNRoutingProtocols', 'uint32_t', [], is_const=True, is_virtual=True) - ## ipv4-list-routing-impl.h: ns3::Ptr ns3::Ipv4ListRoutingImpl::GetRoutingProtocol(uint32_t index, int16_t & priority) const [member function] + ## ipv4-list-routing.h: ns3::Ptr ns3::Ipv4ListRouting::GetRoutingProtocol(uint32_t index, int16_t & priority) const [member function] cls.add_method('GetRoutingProtocol', 'ns3::Ptr< ns3::Ipv4RoutingProtocol >', [param('uint32_t', 'index'), param('int16_t &', 'priority')], is_const=True, is_virtual=True) - ## ipv4-list-routing-impl.h: ns3::Ptr ns3::Ipv4ListRoutingImpl::GetStaticRouting() const [member function] + ## ipv4-list-routing.h: ns3::Ptr ns3::Ipv4ListRouting::RouteOutput(ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function] + cls.add_method('RouteOutput', + 'ns3::Ptr< ns3::Ipv4Route >', + [param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], + is_virtual=True) + ## ipv4-list-routing.h: bool ns3::Ipv4ListRouting::RouteInput(ns3::Ptr p, ns3::Ipv4Header const & header, ns3::Ptr idev, ns3::Callback,ns3::Ptr,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ucb, ns3::Callback,ns3::Ptr,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> mcb, ns3::Callback,const ns3::Ipv4Header&,unsigned int,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> lcb, ns3::Callback,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ecb) [member function] + cls.add_method('RouteInput', + 'bool', + [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], + is_virtual=True) + ## ipv4-list-routing.h: void ns3::Ipv4ListRouting::NotifyInterfaceUp(uint32_t interface) [member function] + cls.add_method('NotifyInterfaceUp', + 'void', + [param('uint32_t', 'interface')], + is_virtual=True) + ## ipv4-list-routing.h: void ns3::Ipv4ListRouting::NotifyInterfaceDown(uint32_t interface) [member function] + cls.add_method('NotifyInterfaceDown', + 'void', + [param('uint32_t', 'interface')], + is_virtual=True) + ## ipv4-list-routing.h: void ns3::Ipv4ListRouting::NotifyAddAddress(uint32_t interface, ns3::Ipv4InterfaceAddress address) [member function] + cls.add_method('NotifyAddAddress', + 'void', + [param('uint32_t', 'interface'), param('ns3::Ipv4InterfaceAddress', 'address')], + is_virtual=True) + ## ipv4-list-routing.h: void ns3::Ipv4ListRouting::NotifyRemoveAddress(uint32_t interface, ns3::Ipv4InterfaceAddress address) [member function] + cls.add_method('NotifyRemoveAddress', + 'void', + [param('uint32_t', 'interface'), param('ns3::Ipv4InterfaceAddress', 'address')], + is_virtual=True) + ## ipv4-list-routing.h: void ns3::Ipv4ListRouting::SetIpv4(ns3::Ptr ipv4) [member function] + cls.add_method('SetIpv4', + 'void', + [param('ns3::Ptr< ns3::Ipv4 >', 'ipv4')], + is_virtual=True) + ## ipv4-list-routing.h: ns3::Ptr ns3::Ipv4ListRouting::GetStaticRouting() const [member function] cls.add_method('GetStaticRouting', 'ns3::Ptr< ns3::Ipv4StaticRouting >', [], is_const=True, is_virtual=True) - ## ipv4-list-routing-impl.h: void ns3::Ipv4ListRoutingImpl::DoDispose() [member function] + ## ipv4-list-routing.h: void ns3::Ipv4ListRouting::DoDispose() [member function] cls.add_method('DoDispose', 'void', [], diff --git a/bindings/python/ns3_module_node.py b/bindings/python/ns3_module_node.py index b0b200198..9761e947f 100644 --- a/bindings/python/ns3_module_node.py +++ b/bindings/python/ns3_module_node.py @@ -143,8 +143,6 @@ def register_types(module): module.add_class('SimpleChannel', parent=root_module['ns3::Channel']) ## simple-net-device.h: ns3::SimpleNetDevice [class] module.add_class('SimpleNetDevice', parent=root_module['ns3::NetDevice']) - ## ipv4-list-routing.h: ns3::Ipv4ListRouting [class] - module.add_class('Ipv4ListRouting', parent=root_module['ns3::Ipv4RoutingProtocol']) module.add_container('ns3::olsr::MprSet', 'ns3::Ipv4Address', container_type='set') module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type='vector') @@ -255,7 +253,6 @@ def register_methods(root_module): register_Ns3PacketSocketFactory_methods(root_module, root_module['ns3::PacketSocketFactory']) register_Ns3SimpleChannel_methods(root_module, root_module['ns3::SimpleChannel']) register_Ns3SimpleNetDevice_methods(root_module, root_module['ns3::SimpleNetDevice']) - register_Ns3Ipv4ListRouting_methods(root_module, root_module['ns3::Ipv4ListRouting']) return def register_Ns3Address_methods(root_module, cls): @@ -3357,33 +3354,6 @@ def register_Ns3SimpleNetDevice_methods(root_module, cls): visibility='protected', is_virtual=True) return -def register_Ns3Ipv4ListRouting_methods(root_module, cls): - ## ipv4-list-routing.h: ns3::Ipv4ListRouting::Ipv4ListRouting(ns3::Ipv4ListRouting const & arg0) [copy constructor] - cls.add_constructor([param('ns3::Ipv4ListRouting const &', 'arg0')]) - ## ipv4-list-routing.h: ns3::Ipv4ListRouting::Ipv4ListRouting() [constructor] - cls.add_constructor([]) - ## ipv4-list-routing.h: static ns3::TypeId ns3::Ipv4ListRouting::GetTypeId() [member function] - cls.add_method('GetTypeId', - 'ns3::TypeId', - [], - is_static=True) - ## ipv4-list-routing.h: void ns3::Ipv4ListRouting::AddRoutingProtocol(ns3::Ptr routingProtocol, int16_t priority) [member function] - cls.add_method('AddRoutingProtocol', - 'void', - [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol'), param('int16_t', 'priority')], - is_pure_virtual=True, is_virtual=True) - ## ipv4-list-routing.h: uint32_t ns3::Ipv4ListRouting::GetNRoutingProtocols() const [member function] - cls.add_method('GetNRoutingProtocols', - 'uint32_t', - [], - is_pure_virtual=True, is_const=True, is_virtual=True) - ## ipv4-list-routing.h: ns3::Ptr ns3::Ipv4ListRouting::GetRoutingProtocol(uint32_t index, int16_t & priority) const [member function] - cls.add_method('GetRoutingProtocol', - 'ns3::Ptr< ns3::Ipv4RoutingProtocol >', - [param('uint32_t', 'index'), param('int16_t &', 'priority')], - is_pure_virtual=True, is_const=True, is_virtual=True) - return - def register_functions(root_module): module = root_module ## address.h: extern ns3::Ptr ns3::MakeAddressChecker() [free function] diff --git a/bindings/python/ns3_module_olsr.py b/bindings/python/ns3_module_olsr.py index cb68f71df..86b78579a 100644 --- a/bindings/python/ns3_module_olsr.py +++ b/bindings/python/ns3_module_olsr.py @@ -102,13 +102,13 @@ def register_types_ns3_olsr(module): module.add_container('std::vector< ns3::olsr::MessageHeader::Hello::LinkMessage >', 'ns3::olsr::MessageHeader::Hello::LinkMessage', container_type='vector') module.add_container('std::vector< ns3::olsr::MessageHeader::Hna::Association >', 'ns3::olsr::MessageHeader::Hna::Association', container_type='vector') typehandlers.add_type_alias('std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >', 'ns3::olsr::DuplicateSet') + typehandlers.add_type_alias('std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >', 'ns3::olsr::TopologySet') typehandlers.add_type_alias('std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >', 'ns3::olsr::MprSet') typehandlers.add_type_alias('std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >', 'ns3::olsr::MprSelectorSet') typehandlers.add_type_alias('std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >', 'ns3::olsr::MessageList') typehandlers.add_type_alias('std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >', 'ns3::olsr::IfaceAssocSet') typehandlers.add_type_alias('std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >', 'ns3::olsr::NeighborSet') typehandlers.add_type_alias('std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >', 'ns3::olsr::TwoHopNeighborSet') - typehandlers.add_type_alias('std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >', 'ns3::olsr::TopologySet') typehandlers.add_type_alias('std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >', 'ns3::olsr::LinkSet') def register_methods(root_module): diff --git a/src/helper/internet-stack-helper.cc b/src/helper/internet-stack-helper.cc index fab320827..ba598267c 100644 --- a/src/helper/internet-stack-helper.cc +++ b/src/helper/internet-stack-helper.cc @@ -162,7 +162,7 @@ #include "ns3/callback.h" #include "ns3/node.h" #include "ns3/core-config.h" -#include "ns3/ipv4-list-routing-impl.h" +#include "ns3/ipv4-list-routing.h" #include "ns3/ipv4-static-routing-impl.h" #include @@ -242,10 +242,10 @@ InternetStackHelper::Install (Ptr node) const // Set routing Ptr ipv4 = node->GetObject (); // XXX cut this over to use of TypeIds and factories - Ptr ipv4RoutingImpl = CreateObject (); + Ptr ipv4Routing = CreateObject (); Ptr ipv4staticRoutingImpl = CreateObject (); - ipv4RoutingImpl->AddRoutingProtocol (ipv4staticRoutingImpl, 0); - ipv4->SetRoutingProtocol (ipv4RoutingImpl); + ipv4Routing->AddRoutingProtocol (ipv4staticRoutingImpl, 0); + ipv4->SetRoutingProtocol (ipv4Routing); } void diff --git a/src/internet-stack/ipv4-l3-protocol.cc b/src/internet-stack/ipv4-l3-protocol.cc index 78d06fc1b..9fa6738e0 100644 --- a/src/internet-stack/ipv4-l3-protocol.cc +++ b/src/internet-stack/ipv4-l3-protocol.cc @@ -38,7 +38,7 @@ #include "arp-l3-protocol.h" #include "ipv4-l3-protocol.h" #include "ipv4-l4-protocol.h" -#include "ipv4-list-routing-impl.h" +#include "ipv4-list-routing.h" #include "icmpv4-l4-protocol.h" #include "ipv4-interface.h" #include "ipv4-raw-socket-impl.h" diff --git a/src/internet-stack/ipv4-list-routing-impl.cc b/src/internet-stack/ipv4-list-routing.cc similarity index 86% rename from src/internet-stack/ipv4-list-routing-impl.cc rename to src/internet-stack/ipv4-list-routing.cc index f42ee4cfb..f4fa2a33b 100644 --- a/src/internet-stack/ipv4-list-routing-impl.cc +++ b/src/internet-stack/ipv4-list-routing.cc @@ -22,38 +22,38 @@ #include "ns3/ipv4-route.h" #include "ns3/node.h" #include "ns3/ipv4-static-routing.h" -#include "ipv4-list-routing-impl.h" +#include "ipv4-list-routing.h" -NS_LOG_COMPONENT_DEFINE ("Ipv4ListRoutingImpl"); +NS_LOG_COMPONENT_DEFINE ("Ipv4ListRouting"); namespace ns3 { -NS_OBJECT_ENSURE_REGISTERED (Ipv4ListRoutingImpl); +NS_OBJECT_ENSURE_REGISTERED (Ipv4ListRouting); TypeId -Ipv4ListRoutingImpl::GetTypeId (void) +Ipv4ListRouting::GetTypeId (void) { - static TypeId tid = TypeId ("ns3::Ipv4ListRoutingImpl") - .SetParent () - .AddConstructor () + static TypeId tid = TypeId ("ns3::Ipv4ListRouting") + .SetParent () + .AddConstructor () ; return tid; } -Ipv4ListRoutingImpl::Ipv4ListRoutingImpl () +Ipv4ListRouting::Ipv4ListRouting () : m_ipv4 (0) { NS_LOG_FUNCTION_NOARGS (); } -Ipv4ListRoutingImpl::~Ipv4ListRoutingImpl () +Ipv4ListRouting::~Ipv4ListRouting () { NS_LOG_FUNCTION_NOARGS (); } void -Ipv4ListRoutingImpl::DoDispose (void) +Ipv4ListRouting::DoDispose (void) { NS_LOG_FUNCTION_NOARGS (); for (Ipv4RoutingProtocolList::iterator rprotoIter = m_routingProtocols.begin (); @@ -69,7 +69,7 @@ Ipv4ListRoutingImpl::DoDispose (void) } Ptr -Ipv4ListRoutingImpl::RouteOutput (const Ipv4Header &header, uint32_t oif, enum Socket::SocketErrno &sockerr) +Ipv4ListRouting::RouteOutput (const Ipv4Header &header, uint32_t oif, enum Socket::SocketErrno &sockerr) { NS_LOG_FUNCTION (this << header.GetDestination () << " " << header.GetSource () << " " << oif); Ptr route; @@ -96,7 +96,7 @@ Ipv4ListRoutingImpl::RouteOutput (const Ipv4Header &header, uint32_t oif, enum S // Patterned after Linux ip_route_input and ip_route_input_slow bool -Ipv4ListRoutingImpl::RouteInput (Ptr p, const Ipv4Header &header, Ptr idev, +Ipv4ListRouting::RouteInput (Ptr p, const Ipv4Header &header, Ptr idev, UnicastForwardCallback ucb, MulticastForwardCallback mcb, LocalDeliverCallback lcb, ErrorCallback ecb) { @@ -195,7 +195,7 @@ Ipv4ListRoutingImpl::RouteInput (Ptr p, const Ipv4Header &header, } void -Ipv4ListRoutingImpl::NotifyInterfaceUp (uint32_t interface) +Ipv4ListRouting::NotifyInterfaceUp (uint32_t interface) { NS_LOG_FUNCTION (this << interface); for (Ipv4RoutingProtocolList::const_iterator rprotoIter = @@ -207,7 +207,7 @@ Ipv4ListRoutingImpl::NotifyInterfaceUp (uint32_t interface) } } void -Ipv4ListRoutingImpl::NotifyInterfaceDown (uint32_t interface) +Ipv4ListRouting::NotifyInterfaceDown (uint32_t interface) { NS_LOG_FUNCTION (this << interface); for (Ipv4RoutingProtocolList::const_iterator rprotoIter = @@ -219,7 +219,7 @@ Ipv4ListRoutingImpl::NotifyInterfaceDown (uint32_t interface) } } void -Ipv4ListRoutingImpl::NotifyAddAddress (uint32_t interface, Ipv4InterfaceAddress address) +Ipv4ListRouting::NotifyAddAddress (uint32_t interface, Ipv4InterfaceAddress address) { NS_LOG_FUNCTION(this << interface << address); for (Ipv4RoutingProtocolList::const_iterator rprotoIter = @@ -231,7 +231,7 @@ Ipv4ListRoutingImpl::NotifyAddAddress (uint32_t interface, Ipv4InterfaceAddress } } void -Ipv4ListRoutingImpl::NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddress address) +Ipv4ListRouting::NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddress address) { NS_LOG_FUNCTION(this << interface << address); for (Ipv4RoutingProtocolList::const_iterator rprotoIter = @@ -243,7 +243,7 @@ Ipv4ListRoutingImpl::NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddre } } void -Ipv4ListRoutingImpl::SetIpv4 (Ptr ipv4) +Ipv4ListRouting::SetIpv4 (Ptr ipv4) { NS_LOG_FUNCTION(this << ipv4); NS_ASSERT (m_ipv4 == 0); @@ -258,7 +258,7 @@ Ipv4ListRoutingImpl::SetIpv4 (Ptr ipv4) } void -Ipv4ListRoutingImpl::AddRoutingProtocol (Ptr routingProtocol, int16_t priority) +Ipv4ListRouting::AddRoutingProtocol (Ptr routingProtocol, int16_t priority) { NS_LOG_FUNCTION (this << routingProtocol->GetInstanceTypeId () << priority); m_routingProtocols.push_back (std::make_pair (-priority, routingProtocol)); @@ -270,19 +270,19 @@ Ipv4ListRoutingImpl::AddRoutingProtocol (Ptr routingProtoco } uint32_t -Ipv4ListRoutingImpl::GetNRoutingProtocols (void) const +Ipv4ListRouting::GetNRoutingProtocols (void) const { NS_LOG_FUNCTION (this); return m_routingProtocols.size (); } Ptr -Ipv4ListRoutingImpl::GetRoutingProtocol (uint32_t index, int16_t& priority) const +Ipv4ListRouting::GetRoutingProtocol (uint32_t index, int16_t& priority) const { NS_LOG_FUNCTION (index); if (index > m_routingProtocols.size ()) { - NS_FATAL_ERROR ("Ipv4ListRoutingImpl::GetRoutingProtocol(): index " << index << " out of range"); + NS_FATAL_ERROR ("Ipv4ListRouting::GetRoutingProtocol(): index " << index << " out of range"); } uint32_t i = 0; for (Ipv4RoutingProtocolList::const_iterator rprotoIter = m_routingProtocols.begin (); @@ -298,7 +298,7 @@ Ipv4ListRoutingImpl::GetRoutingProtocol (uint32_t index, int16_t& priority) cons } Ptr -Ipv4ListRoutingImpl::GetStaticRouting (void) const +Ipv4ListRouting::GetStaticRouting (void) const { NS_LOG_FUNCTION (this); Ipv4StaticRouting* srp; diff --git a/src/internet-stack/ipv4-list-routing-impl.h b/src/internet-stack/ipv4-list-routing.h similarity index 58% rename from src/internet-stack/ipv4-list-routing-impl.h rename to src/internet-stack/ipv4-list-routing.h index 1a6bd01a2..e350f9b4d 100644 --- a/src/internet-stack/ipv4-list-routing-impl.h +++ b/src/internet-stack/ipv4-list-routing.h @@ -14,30 +14,64 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * */ -#ifndef IPV4_LIST_ROUTING_IMPL_H -#define IPV4_LIST_ROUTING_IMPL_H +#ifndef IPV4_LIST_ROUTING_H +#define IPV4_LIST_ROUTING_H #include -#include "ns3/ipv4-list-routing.h" +#include "ns3/ipv4-routing-protocol.h" namespace ns3 { class Ipv4StaticRouting; -class Ipv4ListRoutingImpl : public Ipv4ListRouting +/** + * \ingroup ipv4Routing + * + * This class is a specialization of Ipv4RoutingProtocol that allows + * other instances of Ipv4RoutingProtocol to be inserted in a + * prioritized list. Routing protocols in the list are consulted one + * by one, from highest to lowest proirity, until a routing protocol + * is found that will take the packet (this corresponds to a non-zero + * return value to RouteOutput, or a return value of true to RouteInput). + * The order by which routing protocols with the same priority value + * are consulted is undefined. + * + */ +class Ipv4ListRouting : public Ipv4RoutingProtocol { public: static TypeId GetTypeId (void); - Ipv4ListRoutingImpl (); - ~Ipv4ListRoutingImpl (); + Ipv4ListRouting (); + virtual ~Ipv4ListRouting (); + /** + * \brief Register a new routing protocol to be used in this IPv4 stack + * + * \param routingProtocol new routing protocol implementation object + * \param priority priority to give to this routing protocol. + * Values may range between -32768 and +32767. + */ + virtual void AddRoutingProtocol (Ptr routingProtocol, int16_t priority); + /** + * \return number of routing protocols in the list + */ + virtual uint32_t GetNRoutingProtocols (void) const; + /** + * \return pointer to routing protocol indexed by + * \param index index of protocol to return + * \param priority output parameter, set to the priority of the protocol + being returned + */ + virtual Ptr GetRoutingProtocol (uint32_t index, int16_t& priority) const; + + // Below are from Ipv4RoutingProtocol virtual Ptr RouteOutput (const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr); - virtual bool RouteInput (Ptr p, const Ipv4Header &header, Ptr idev, - UnicastForwardCallback ucb, MulticastForwardCallback mcb, + + virtual bool RouteInput (Ptr p, const Ipv4Header &header, Ptr idev, + UnicastForwardCallback ucb, MulticastForwardCallback mcb, LocalDeliverCallback lcb, ErrorCallback ecb); virtual void NotifyInterfaceUp (uint32_t interface); virtual void NotifyInterfaceDown (uint32_t interface); @@ -45,11 +79,6 @@ public: virtual void NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddress address); virtual void SetIpv4 (Ptr ipv4); - virtual void AddRoutingProtocol (Ptr routingProtocol, int16_t priority); - - virtual uint32_t GetNRoutingProtocols (void) const; - - virtual Ptr GetRoutingProtocol (uint32_t index, int16_t& priority) const; virtual Ptr GetStaticRouting (void) const; protected: @@ -58,9 +87,8 @@ private: typedef std::list< std::pair< int16_t, Ptr > > Ipv4RoutingProtocolList; Ipv4RoutingProtocolList m_routingProtocols; Ptr m_ipv4; - }; -} // Namespace ns3 +} //namespace ns3 -#endif /* IPV4_LIST_ROUTING_IMPL_H */ +#endif /* IPV4_LIST_ROUTING_H */ diff --git a/src/internet-stack/tcp-test.cc b/src/internet-stack/tcp-test.cc index 85ca606b1..7b6820911 100644 --- a/src/internet-stack/tcp-test.cc +++ b/src/internet-stack/tcp-test.cc @@ -38,7 +38,7 @@ #include "udp-l4-protocol.h" #include "tcp-l4-protocol.h" #include "ipv4-static-routing-impl.h" -#include "ipv4-list-routing-impl.h" +#include "ipv4-list-routing.h" #include "ns3/node.h" #include "ns3/inet-socket-address.h" @@ -56,11 +56,10 @@ AddInternetStack (Ptr node) //IPV4 Ptr ipv4 = CreateObject (); //Routing for Ipv4 - //Routing for Ipv4 - Ptr ipv4RoutingImpl = CreateObject (); - ipv4->SetRoutingProtocol (ipv4RoutingImpl); + Ptr ipv4Routing = CreateObject (); + ipv4->SetRoutingProtocol (ipv4Routing); Ptr ipv4staticRoutingImpl = CreateObject (); - ipv4RoutingImpl->AddRoutingProtocol (ipv4staticRoutingImpl, 0); + ipv4Routing->AddRoutingProtocol (ipv4staticRoutingImpl, 0); node->AggregateObject(ipv4); //ICMP Ptr icmp = CreateObject (); diff --git a/src/internet-stack/udp-test.cc b/src/internet-stack/udp-test.cc index a8a0aabf6..8e670d87e 100644 --- a/src/internet-stack/udp-test.cc +++ b/src/internet-stack/udp-test.cc @@ -41,7 +41,7 @@ #include "icmpv4-l4-protocol.h" #include "udp-l4-protocol.h" #include "tcp-l4-protocol.h" -#include "ipv4-list-routing-impl.h" +#include "ipv4-list-routing.h" #include "ipv4-static-routing-impl.h" #include @@ -57,10 +57,10 @@ AddInternetStack (Ptr node) //IPV4 Ptr ipv4 = CreateObject (); //Routing for Ipv4 - Ptr ipv4RoutingImpl = CreateObject (); - ipv4->SetRoutingProtocol (ipv4RoutingImpl); + Ptr ipv4Routing = CreateObject (); + ipv4->SetRoutingProtocol (ipv4Routing); Ptr ipv4staticRoutingImpl = CreateObject (); - ipv4RoutingImpl->AddRoutingProtocol (ipv4staticRoutingImpl, 0); + ipv4Routing->AddRoutingProtocol (ipv4staticRoutingImpl, 0); node->AggregateObject(ipv4); //ICMP Ptr icmp = CreateObject (); diff --git a/src/internet-stack/wscript b/src/internet-stack/wscript index c9a4d2f7e..49f2f15f5 100644 --- a/src/internet-stack/wscript +++ b/src/internet-stack/wscript @@ -81,7 +81,7 @@ def build(bld): 'ipv4-interface.cc', 'ipv4-l3-protocol.cc', 'ipv4-static-routing-impl.cc', - 'ipv4-list-routing-impl.cc', + 'ipv4-list-routing.cc', 'ipv4-end-point.cc', 'udp-l4-protocol.cc', 'tcp-l4-protocol.cc', @@ -109,7 +109,7 @@ def build(bld): 'udp-header.h', 'tcp-header.h', 'sequence-number.h', - 'ipv4-list-routing-impl.h', + 'ipv4-list-routing.h', 'ipv4-static-routing-impl.h', 'icmpv4.h', ] diff --git a/src/node/wscript b/src/node/wscript index ffd84be4d..ac7c37472 100644 --- a/src/node/wscript +++ b/src/node/wscript @@ -20,7 +20,6 @@ def build(bld): 'ethernet-trailer.cc', 'ipv4-route.cc', 'ipv4-routing-protocol.cc', - 'ipv4-list-routing.cc', 'ipv4-static-routing.cc', 'ipv4-routing-table-entry.cc', 'queue.cc', @@ -62,7 +61,6 @@ def build(bld): 'address-utils.h', 'ipv4-route.h', 'ipv4-routing-protocol.h', - 'ipv4-list-routing.h', 'ipv4-static-routing.h', 'ipv4-routing-table-entry.h', 'queue.h',