From ce3e1d31a6bcb74c2e3f7c9cdbf942ba1e4f0ecb Mon Sep 17 00:00:00 2001 From: Tom Henderson Date: Sun, 12 Apr 2009 22:40:31 -0700 Subject: [PATCH] Remove class Ipv4Impl --- src/internet-stack/internet-stack.cc | 4 - src/internet-stack/ipv4-impl.cc | 255 ------------------------- src/internet-stack/ipv4-impl.h | 112 ----------- src/internet-stack/ipv4-l3-protocol.cc | 25 ++- src/internet-stack/ipv4-l3-protocol.h | 12 +- src/internet-stack/wscript | 1 - src/node/ipv4.h | 2 +- 7 files changed, 24 insertions(+), 387 deletions(-) delete mode 100644 src/internet-stack/ipv4-impl.cc delete mode 100644 src/internet-stack/ipv4-impl.h diff --git a/src/internet-stack/internet-stack.cc b/src/internet-stack/internet-stack.cc index 0e32c5cb6..e02f24286 100644 --- a/src/internet-stack/internet-stack.cc +++ b/src/internet-stack/internet-stack.cc @@ -29,7 +29,6 @@ #include "arp-l3-protocol.h" #include "udp-socket-factory-impl.h" #include "tcp-socket-factory-impl.h" -#include "ipv4-impl.h" #include "ipv4-raw-socket-factory-impl.h" #include "icmpv4-l4-protocol.h" #ifdef NETWORK_SIMULATION_CRADLE @@ -94,9 +93,6 @@ AddIpv4Stack(Ptr node) Ptr ipv4 = CreateObject (); ipv4->SetNode (node); node->AggregateObject (ipv4); - Ptr ipv4Impl = CreateObject (); - ipv4Impl->SetIpv4 (ipv4); - node->AggregateObject (ipv4Impl); } void diff --git a/src/internet-stack/ipv4-impl.cc b/src/internet-stack/ipv4-impl.cc deleted file mode 100644 index e23b87cdd..000000000 --- a/src/internet-stack/ipv4-impl.cc +++ /dev/null @@ -1,255 +0,0 @@ -/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ -/* - * Copyright (c) 2007 INRIA - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation; - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * 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 - * - * Author: Mathieu Lacage - */ -#include "ipv4-impl.h" -#include "ipv4-l3-protocol.h" -#include "ipv4-interface.h" -#include "ns3/assert.h" -#include "ns3/net-device.h" - -namespace ns3 { - -Ipv4Impl::Ipv4Impl () - : m_ipv4 (0) -{} -Ipv4Impl::~Ipv4Impl () -{ - NS_ASSERT (m_ipv4 == 0); -} -void -Ipv4Impl::SetIpv4 (Ptr ipv4) -{ - m_ipv4 = ipv4; -} -void -Ipv4Impl::DoDispose (void) -{ - m_ipv4 = 0; -} - -void -Ipv4Impl::AddRoutingProtocol (Ptr routingProtocol, - int16_t priority) -{ - m_ipv4->AddRoutingProtocol (routingProtocol, priority); -} - -void -Ipv4Impl::AddHostRouteTo (Ipv4Address dest, - Ipv4Address nextHop, - uint32_t interface) -{ - m_ipv4->AddHostRouteTo (dest, nextHop, interface); -} -void -Ipv4Impl::AddHostRouteTo (Ipv4Address dest, - uint32_t interface) -{ - m_ipv4->AddHostRouteTo (dest, interface); -} -void -Ipv4Impl::AddNetworkRouteTo (Ipv4Address network, - Ipv4Mask networkMask, - Ipv4Address nextHop, - uint32_t interface) -{ - m_ipv4->AddNetworkRouteTo (network, networkMask, nextHop, interface); -} -void -Ipv4Impl::AddNetworkRouteTo (Ipv4Address network, - Ipv4Mask networkMask, - uint32_t interface) -{ - m_ipv4->AddNetworkRouteTo (network, networkMask, interface); -} -void -Ipv4Impl::SetDefaultRoute (Ipv4Address nextHop, - uint32_t interface) -{ - m_ipv4->SetDefaultRoute (nextHop, interface); -} -uint32_t -Ipv4Impl::GetNRoutes (void) -{ - return m_ipv4->GetNRoutes (); -} -Ipv4Route -Ipv4Impl::GetRoute (uint32_t i) -{ - return *m_ipv4->GetRoute (i); -} -void -Ipv4Impl::RemoveRoute (uint32_t i) -{ - return m_ipv4->RemoveRoute (i); -} - -void -Ipv4Impl::AddMulticastRoute (Ipv4Address origin, - Ipv4Address group, - uint32_t inputInterface, - std::vector outputInterfaces) -{ - m_ipv4->AddMulticastRoute (origin, group, inputInterface, outputInterfaces); -} - -void -Ipv4Impl::SetDefaultMulticastRoute (uint32_t outputInterface) -{ - m_ipv4->SetDefaultMulticastRoute (outputInterface); -} - -uint32_t -Ipv4Impl::GetNMulticastRoutes (void) const -{ - return m_ipv4->GetNMulticastRoutes (); -} - -Ipv4MulticastRoute -Ipv4Impl::GetMulticastRoute (uint32_t i) const -{ - return *m_ipv4->GetMulticastRoute (i); -} - -void -Ipv4Impl::RemoveMulticastRoute (Ipv4Address origin, - Ipv4Address group, - uint32_t inputInterface) -{ - m_ipv4->RemoveMulticastRoute (origin, group, inputInterface); -} - -void -Ipv4Impl::RemoveMulticastRoute (uint32_t i) -{ - return m_ipv4->RemoveMulticastRoute (i); -} - -uint32_t -Ipv4Impl::AddInterface (Ptr device) -{ - return m_ipv4->AddInterface (device); -} - -uint32_t -Ipv4Impl::GetNInterfaces (void) -{ - return m_ipv4->GetNInterfaces (); -} - -uint32_t -Ipv4Impl::FindInterfaceForAddr (Ipv4Address addr) const -{ - return m_ipv4->FindInterfaceForAddr (addr); -} - -uint32_t -Ipv4Impl::FindInterfaceForAddr (Ipv4Address addr, Ipv4Mask mask) const -{ - return m_ipv4->FindInterfaceForAddr (addr, mask); -} - -int32_t -Ipv4Impl::FindInterfaceForDevice (Ptr device) const -{ - return m_ipv4->FindInterfaceIndexForDevice (device); -} - -Ptr -Ipv4Impl::GetNetDevice (uint32_t i) -{ - return m_ipv4->GetInterface (i)-> GetDevice (); -} - -void -Ipv4Impl::JoinMulticastGroup (Ipv4Address origin, Ipv4Address group) -{ - m_ipv4->JoinMulticastGroup(origin, group); -} - -void -Ipv4Impl::LeaveMulticastGroup (Ipv4Address origin, Ipv4Address group) -{ - m_ipv4->LeaveMulticastGroup(origin, group); -} - -uint32_t -Ipv4Impl::AddAddress (uint32_t i, Ipv4InterfaceAddress address) -{ - return m_ipv4->AddAddress (i, address); -} - -Ipv4InterfaceAddress -Ipv4Impl::GetAddress (uint32_t interfaceIndex, uint32_t addressIndex) const -{ - return m_ipv4->GetAddress (interfaceIndex, addressIndex); -} - -uint32_t -Ipv4Impl::GetNAddresses (uint32_t interface) const -{ - return m_ipv4->GetNAddresses (interface); -} - -void -Ipv4Impl::SetMetric (uint32_t i, uint16_t metric) -{ - m_ipv4->SetMetric (i, metric); -} - -uint16_t -Ipv4Impl::GetMetric (uint32_t i) const -{ - return m_ipv4->GetMetric (i); -} - -bool -Ipv4Impl::GetInterfaceForDestination (Ipv4Address dest, uint32_t &interface) const -{ - return m_ipv4->GetInterfaceForDestination (dest, interface); -} - -Ipv4Address -Ipv4Impl::GetSourceAddress (Ipv4Address destination) const -{ - return m_ipv4->GetSourceAddress (destination); -} - -uint16_t -Ipv4Impl::GetMtu (uint32_t i) const -{ - return m_ipv4->GetMtu (i); -} -bool -Ipv4Impl::IsUp (uint32_t i) const -{ - return m_ipv4->IsUp (i); -} -void -Ipv4Impl::SetUp (uint32_t i) -{ - m_ipv4->SetUp (i); -} -void -Ipv4Impl::SetDown (uint32_t i) -{ - m_ipv4->SetDown (i); -} - -}//namespace ns3 diff --git a/src/internet-stack/ipv4-impl.h b/src/internet-stack/ipv4-impl.h deleted file mode 100644 index 3cfedf0ef..000000000 --- a/src/internet-stack/ipv4-impl.h +++ /dev/null @@ -1,112 +0,0 @@ -/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ -/* - * Copyright (c) 2007 INRIA - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation; - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * 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 - * - * Author: Mathieu Lacage - */ -#ifndef IPV4_IMPL_H -#define IPV4_IMPL_H - -#include "ns3/ipv4.h" -#include "ns3/ptr.h" - -namespace ns3 { - -class Ipv4L3Protocol; - -class Ipv4Impl : public Ipv4 -{ -public: - Ipv4Impl (); - - virtual ~Ipv4Impl (); - - void SetIpv4 (Ptr ipv4); - - virtual void AddRoutingProtocol (Ptr routingProtocol, - int16_t priority); - - virtual void AddHostRouteTo (Ipv4Address dest, - Ipv4Address nextHop, - uint32_t interface); - virtual void AddHostRouteTo (Ipv4Address dest, - uint32_t interface); - virtual void AddNetworkRouteTo (Ipv4Address network, - Ipv4Mask networkMask, - Ipv4Address nextHop, - uint32_t interface); - virtual void AddNetworkRouteTo (Ipv4Address network, - Ipv4Mask networkMask, - uint32_t interface); - virtual void SetDefaultRoute (Ipv4Address nextHop, - uint32_t interface); - virtual uint32_t GetNRoutes (void); - virtual Ipv4Route GetRoute (uint32_t i); - virtual void RemoveRoute (uint32_t i); - - - virtual void AddMulticastRoute (Ipv4Address origin, - Ipv4Address group, - uint32_t inputInterface, - std::vector outputInterfaces); - - virtual void SetDefaultMulticastRoute (uint32_t outputInterface); - - virtual uint32_t GetNMulticastRoutes (void) const; - virtual Ipv4MulticastRoute GetMulticastRoute (uint32_t i) const; - - virtual void RemoveMulticastRoute (Ipv4Address origin, - Ipv4Address group, - uint32_t inputInterface); - virtual void RemoveMulticastRoute (uint32_t i); - - virtual uint32_t AddInterface (Ptr device); - virtual uint32_t GetNInterfaces (void); - - virtual uint32_t FindInterfaceForAddr (Ipv4Address addr) const; - virtual uint32_t FindInterfaceForAddr (Ipv4Address addr, - Ipv4Mask mask) const; - - virtual int32_t FindInterfaceForDevice (Ptr device) const; - - virtual Ptr GetNetDevice(uint32_t i); - - virtual void JoinMulticastGroup (Ipv4Address origin, Ipv4Address group); - virtual void LeaveMulticastGroup (Ipv4Address origin, Ipv4Address group); - - uint32_t AddAddress (uint32_t i, Ipv4InterfaceAddress address); - Ipv4InterfaceAddress GetAddress (uint32_t interfaceIndex, uint32_t addressIndex) const; - uint32_t GetNAddresses (uint32_t interface) const; - - virtual void SetMetric (uint32_t i, uint16_t metric); - virtual uint16_t GetMetric (uint32_t i) const; - virtual Ipv4Address GetSourceAddress (Ipv4Address destination) const; - virtual bool GetInterfaceForDestination (Ipv4Address dest, - uint32_t &interface) const; - - virtual uint16_t GetMtu (uint32_t i) const; - virtual bool IsUp (uint32_t i) const; - virtual void SetUp (uint32_t i); - virtual void SetDown (uint32_t i); -protected: - virtual void DoDispose (void); -private: - Ptr m_ipv4; -}; - -} // namespace ns3 - -#endif /* IPV4_IMPL_H */ diff --git a/src/internet-stack/ipv4-l3-protocol.cc b/src/internet-stack/ipv4-l3-protocol.cc index dd536eed3..d28c3a9df 100644 --- a/src/internet-stack/ipv4-l3-protocol.cc +++ b/src/internet-stack/ipv4-l3-protocol.cc @@ -53,7 +53,7 @@ TypeId Ipv4L3Protocol::GetTypeId (void) { static TypeId tid = TypeId ("ns3::Ipv4L3Protocol") - .SetParent () + .SetParent () .AddConstructor () .AddAttribute ("DefaultTtl", "The TTL value set by default on all outgoing packets generated on this node.", UintegerValue (64), @@ -298,7 +298,7 @@ Ipv4L3Protocol::Lookup ( void Ipv4L3Protocol::AddRoutingProtocol (Ptr routingProtocol, - int priority) + int16_t priority) { NS_LOG_FUNCTION (this << &routingProtocol << priority); m_routingProtocols.push_back @@ -313,11 +313,11 @@ Ipv4L3Protocol::GetNRoutes (void) return m_staticRouting->GetNRoutes (); } -Ipv4Route * +Ipv4Route Ipv4L3Protocol::GetRoute (uint32_t index) { NS_LOG_FUNCTION_NOARGS (); - return m_staticRouting->GetRoute (index); + return *m_staticRouting->GetRoute (index); } void @@ -354,11 +354,11 @@ Ipv4L3Protocol::GetNMulticastRoutes (void) const return m_staticRouting->GetNMulticastRoutes (); } -Ipv4MulticastRoute * +Ipv4MulticastRoute Ipv4L3Protocol::GetMulticastRoute (uint32_t index) const { NS_LOG_FUNCTION (this << index); - return m_staticRouting->GetMulticastRoute (index); + return *m_staticRouting->GetMulticastRoute (index); } void @@ -476,7 +476,7 @@ Ipv4L3Protocol::FindInterfaceForAddr (Ipv4Address addr, Ipv4Mask mask) const } int32_t -Ipv4L3Protocol::FindInterfaceIndexForDevice (Ptr device) const +Ipv4L3Protocol::FindInterfaceForDevice (Ptr device) const { NS_LOG_FUNCTION (this << device); @@ -1101,8 +1101,8 @@ Ipv4L3Protocol::SetDown (uint32_t ifaceIndex) modified = false; for (uint32_t i = 0; i < GetNRoutes (); i++) { - Ipv4Route *route = GetRoute (i); - if (route->GetInterface () == ifaceIndex) + Ipv4Route route = GetRoute (i); + if (route.GetInterface () == ifaceIndex) { RemoveRoute (i); modified = true; @@ -1143,5 +1143,12 @@ Ipv4L3Protocol::GetSourceAddress (Ipv4Address destination) const } } +Ptr +Ipv4L3Protocol::GetNetDevice (uint32_t i) +{ + return GetInterface (i)-> GetDevice (); +} + + }//namespace ns3 diff --git a/src/internet-stack/ipv4-l3-protocol.h b/src/internet-stack/ipv4-l3-protocol.h index 58d72cdaa..943e816b9 100644 --- a/src/internet-stack/ipv4-l3-protocol.h +++ b/src/internet-stack/ipv4-l3-protocol.h @@ -53,7 +53,7 @@ class Icmpv4L4Protocol; * This is the actual implementation of IP. It contains APIs to send and * receive packets at the IP layer, as well as APIs for IP routing. */ -class Ipv4L3Protocol : public Object +class Ipv4L3Protocol : public Ipv4 { public: static TypeId GetTypeId (void); @@ -158,7 +158,7 @@ public: Ipv4RoutingProtocol::RouteReplyCallback routeReply); uint32_t GetNRoutes (void); - Ipv4Route *GetRoute (uint32_t i); + Ipv4Route GetRoute (uint32_t i); void RemoveRoute (uint32_t i); void AddMulticastRoute (Ipv4Address origin, @@ -169,7 +169,7 @@ public: void SetDefaultMulticastRoute (uint32_t onputInterface); uint32_t GetNMulticastRoutes (void) const; - Ipv4MulticastRoute *GetMulticastRoute (uint32_t i) const; + Ipv4MulticastRoute GetMulticastRoute (uint32_t i) const; void RemoveMulticastRoute (Ipv4Address origin, Ipv4Address group, @@ -182,7 +182,7 @@ public: uint32_t FindInterfaceForAddr (Ipv4Address addr) const; uint32_t FindInterfaceForAddr (Ipv4Address addr, Ipv4Mask mask) const; - int32_t FindInterfaceIndexForDevice (Ptr device) const; + int32_t FindInterfaceForDevice (Ptr device) const; void JoinMulticastGroup (Ipv4Address origin, Ipv4Address group); void LeaveMulticastGroup (Ipv4Address origin, Ipv4Address group); @@ -201,8 +201,10 @@ public: void SetUp (uint32_t i); void SetDown (uint32_t i); + Ptr GetNetDevice (uint32_t i); + void AddRoutingProtocol (Ptr routingProtocol, - int priority); + int16_t priority); protected: diff --git a/src/internet-stack/wscript b/src/internet-stack/wscript index 5718723db..0a48079fe 100644 --- a/src/internet-stack/wscript +++ b/src/internet-stack/wscript @@ -92,7 +92,6 @@ def build(bld): 'udp-socket-impl.cc', 'tcp-socket-impl.cc', 'ipv4-end-point-demux.cc', - 'ipv4-impl.cc', 'udp-socket-factory-impl.cc', 'tcp-socket-factory-impl.cc', 'pending-data.cc', diff --git a/src/node/ipv4.h b/src/node/ipv4.h index bc7dd3f92..95972770d 100644 --- a/src/node/ipv4.h +++ b/src/node/ipv4.h @@ -320,7 +320,7 @@ public: /** * \returns the number of interfaces added by the user. */ - virtual uint32_t GetNInterfaces (void) = 0; + virtual uint32_t GetNInterfaces (void) const = 0; /** * \brief Find and return the interface ID of the interface that has been