--- a/CHANGES.html Fri Nov 16 22:27:18 2012 +0100
+++ b/CHANGES.html Tue Nov 20 17:52:39 2012 -0500
@@ -48,7 +48,18 @@
<h2>New API:</h2>
<ul>
-<li></li>
+<li>In the Socket class, the following functions were added:
+ <ul>
+ <li>(Set/Get)IpTos - sets IP Type of Service field in the IP headers.</li>
+ <li>(Set/Is)IpRecvTos - tells the socket to pass information about IP ToS up the stack (by adding SocketIpTosTag to the packet).</li>
+ <li>(Set/Get)IpTtl - sets IP Time to live field in the IP headers.</li>
+ <li>(Set/Is)RecvIpTtl - tells the socket to pass information about IP TTL up the stack (by adding SocketIpTtlTag to the packet).</li>
+ <li>(Set/Is)Ipv6Tclass - sets Traffic Class field in the IPv6 headers.</li>
+ <li>(Set/Is)Ipv6RecvTclass - tells the socket to pass information about IPv6 TCLASS up the stack (by adding SocketIpv6TclassTag to the packet).</li>
+ <li>(Set/Get)Ipv6HopLimit - sets Hop Limit field in the IPv6 headers.</li>
+ <li>(Set/Is)Ipv6RecvHopLimit - tells the socket to pass information about IPv6 HOPLIMIT up the stack (by adding SocketIpv6HoplimitTag to the packet).</li>
+ </ul>
+A user can call these functions to set/get the corresponding socket option. See examples/socket/socket-options-ipv4.cc and examples/socket/socket-options-ipv6.cc for examples.
</ul>
<h2>Changes to existing API:</h2>
--- a/RELEASE_NOTES Fri Nov 16 22:27:18 2012 +0100
+++ b/RELEASE_NOTES Tue Nov 20 17:52:39 2012 -0500
@@ -24,6 +24,7 @@
Bugs fixed
----------
+ - bug 1361 - Set TOS from Application level (sockets)
- bug 1479 - When the Ipv4RawSocket "IpHeaderInclude" Attribute set true,
Ip Checksum error
- bug 976 - wifi-wired-bridging regression test fails because of
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/socket/socket-options-ipv4.cc Tue Nov 20 17:52:39 2012 -0500
@@ -0,0 +1,158 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * 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
+ */
+
+// Network topology
+//
+// n0 n1
+// | |
+// =================
+// LAN
+//
+// - UDP flows from n0 to n1
+
+#include <fstream>
+#include "ns3/core-module.h"
+#include "ns3/csma-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/network-module.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("SocketOptionsIpv4");
+
+void ReceivePacket (Ptr<Socket> socket)
+{
+ NS_LOG_INFO ("Received one packet!");
+ Ptr<Packet> packet = socket->Recv ();
+ SocketIpTosTag tosTag;
+ if (packet->RemovePacketTag (tosTag))
+ {
+ NS_LOG_INFO (" TOS = " << (uint32_t)tosTag.GetTos ());
+ }
+ SocketIpTtlTag ttlTag;
+ if (packet->RemovePacketTag (ttlTag))
+ {
+ NS_LOG_INFO (" TTL = " << (uint32_t)ttlTag.GetTtl ());
+ }
+}
+
+static void SendPacket (Ptr<Socket> socket, uint32_t pktSize,
+ uint32_t pktCount, Time pktInterval )
+{
+ if (pktCount > 0)
+ {
+ socket->Send (Create<Packet> (pktSize));
+ Simulator::Schedule (pktInterval, &SendPacket,
+ socket, pktSize,pktCount - 1, pktInterval);
+ }
+ else
+ {
+ socket->Close ();
+ }
+}
+
+int
+main (int argc, char *argv[])
+{
+//
+// Allow the user to override any of the defaults and the above Bind() at
+// run-time, via command-line arguments
+//
+ uint32_t packetSize = 1024;
+ uint32_t packetCount = 10;
+ double packetInterval = 1.0;
+
+ //Socket options for IPv4, currently TOS, TTL, RECVTOS, and RECVTTL
+ uint32_t ipTos = 0;
+ bool ipRecvTos = true;
+ uint32_t ipTtl = 0;
+ bool ipRecvTtl = true;
+
+ CommandLine cmd;
+ cmd.AddValue ("PacketSize", "Packet size in bytes", packetSize);
+ cmd.AddValue ("PacketCount", "Number of packets to send", packetCount);
+ cmd.AddValue ("Interval", "Interval between packets", packetInterval);
+ cmd.AddValue ("IP_TOS", "IP_TOS", ipTos);
+ cmd.AddValue ("IP_RECVTOS", "IP_RECVTOS", ipRecvTos);
+ cmd.AddValue ("IP_TTL", "IP_TTL", ipTtl);
+ cmd.AddValue ("IP_RECVTTL", "IP_RECVTTL", ipRecvTtl);
+ cmd.Parse (argc, argv);
+
+ NS_LOG_INFO ("Create nodes.");
+ NodeContainer n;
+ n.Create (2);
+
+ InternetStackHelper internet;
+ internet.Install (n);
+
+ Address serverAddress;
+
+ NS_LOG_INFO ("Create channels.");
+ CsmaHelper csma;
+ csma.SetChannelAttribute ("DataRate", DataRateValue (DataRate (5000000)));
+ csma.SetChannelAttribute ("Delay", TimeValue (MilliSeconds (2)));
+ csma.SetDeviceAttribute ("Mtu", UintegerValue (1400));
+ NetDeviceContainer d = csma.Install (n);
+
+
+ NS_LOG_INFO ("Assign IP Addresses.");
+ Ipv4AddressHelper ipv4;
+ ipv4.SetBase ("10.1.1.0", "255.255.255.0");
+ Ipv4InterfaceContainer i = ipv4.Assign (d);
+ serverAddress = Address(i.GetAddress (1));
+
+ NS_LOG_INFO ("Create sockets.");
+ //Receiver socket on n1
+ TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
+ Ptr<Socket> recvSink = Socket::CreateSocket (n.Get (1), tid);
+ InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), 4477);
+ recvSink->SetIpRecvTos (ipRecvTos);
+ recvSink->SetIpRecvTtl (ipRecvTtl);
+ recvSink->Bind (local);
+ recvSink->SetRecvCallback (MakeCallback (&ReceivePacket));
+
+ //Sender socket on n0
+ Ptr<Socket> source = Socket::CreateSocket (n.Get (0), tid);
+ InetSocketAddress remote = InetSocketAddress (i.GetAddress (1), 4477);
+
+ //Set socket options, it is also possible to set the options after the socket has been created/connected.
+ if (ipTos > 0)
+ {
+ source->SetIpTos (ipTos);
+ }
+
+ if (ipTtl > 0)
+ {
+ source->SetIpTtl (ipTtl);
+ }
+ source->Connect (remote);
+
+ AsciiTraceHelper ascii;
+ csma.EnableAsciiAll (ascii.CreateFileStream ("socket-options-ipv4.tr"));
+ csma.EnablePcapAll ("socket-options-ipv4", false);
+
+ //Schedule SendPacket
+ Time interPacketInterval = Seconds (packetInterval);
+ Simulator::ScheduleWithContext (source->GetNode ()->GetId (),
+ Seconds (1.0), &SendPacket,
+ source, packetSize, packetCount, interPacketInterval);
+
+ NS_LOG_INFO ("Run Simulation.");
+ Simulator::Run ();
+ Simulator::Destroy ();
+ NS_LOG_INFO ("Done.");
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/socket/socket-options-ipv6.cc Tue Nov 20 17:52:39 2012 -0500
@@ -0,0 +1,157 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * 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
+ */
+
+// Network topology
+//
+// n0 n1
+// | |
+// =================
+// LAN
+//
+// - UDP flows from n0 to n1
+
+#include <fstream>
+#include "ns3/core-module.h"
+#include "ns3/csma-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/network-module.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("SocketOptionsIpv6");
+
+void ReceivePacket (Ptr<Socket> socket)
+{
+ NS_LOG_INFO ("Received one packet!");
+ Ptr<Packet> packet = socket->Recv ();
+ SocketIpv6TclassTag tclassTag;
+ if (packet->RemovePacketTag (tclassTag))
+ {
+ NS_LOG_INFO (" TCLASS = " << (uint32_t)tclassTag.GetTclass ());
+ }
+ SocketIpv6HopLimitTag hoplimitTag;
+ if (packet->RemovePacketTag (hoplimitTag))
+ {
+ NS_LOG_INFO (" HOPLIMIT = " << (uint32_t)hoplimitTag.GetHopLimit ());
+ }
+}
+
+static void SendPacket (Ptr<Socket> socket, uint32_t pktSize,
+ uint32_t pktCount, Time pktInterval )
+{
+ if (pktCount > 0)
+ {
+ socket->Send (Create<Packet> (pktSize));
+ Simulator::Schedule (pktInterval, &SendPacket,
+ socket, pktSize,pktCount - 1, pktInterval);
+ }
+ else
+ {
+ socket->Close ();
+ }
+}
+
+int
+main (int argc, char *argv[])
+{
+//
+// Allow the user to override any of the defaults and the above Bind() at
+// run-time, via command-line arguments
+//
+ uint32_t packetSize = 1024;
+ uint32_t packetCount = 10;
+ double packetInterval = 1.0;
+
+ //Socket options for IPv6, currently TCLASS, HOPLIMIT, RECVTCLASS, and RECVHOPLIMIT
+ uint32_t ipv6Tclass = 0;
+ bool ipv6RecvTclass = true;
+ uint32_t ipv6Hoplimit = 0;
+ bool ipv6RecvHoplimit = true;
+
+ CommandLine cmd;
+ cmd.AddValue ("PacketSize", "Packet size in bytes", packetSize);
+ cmd.AddValue ("PacketCount", "Number of packets to send", packetCount);
+ cmd.AddValue ("Interval", "Interval between packets", packetInterval);
+ cmd.AddValue ("IPV6_TCLASS", "IPV6_TCLASS", ipv6Tclass);
+ cmd.AddValue ("IPV6_RECVTCLASS", "IPV6_RECVTCLASS", ipv6RecvTclass);
+ cmd.AddValue ("IPV6_HOPLIMIT", "IPV6_HOPLIMIT", ipv6Hoplimit);
+ cmd.AddValue ("IPV6_RECVHOPLIMIT", "IPV6_RECVHOPLIMIT", ipv6RecvHoplimit);
+ cmd.Parse (argc, argv);
+
+ NS_LOG_INFO ("Create nodes.");
+ NodeContainer n;
+ n.Create (2);
+
+ InternetStackHelper internet;
+ internet.Install (n);
+
+ Address serverAddress;
+
+ NS_LOG_INFO ("Create channels.");
+ CsmaHelper csma;
+ csma.SetChannelAttribute ("DataRate", DataRateValue (DataRate (5000000)));
+ csma.SetChannelAttribute ("Delay", TimeValue (MilliSeconds (2)));
+ csma.SetDeviceAttribute ("Mtu", UintegerValue (1400));
+ NetDeviceContainer d = csma.Install (n);
+
+
+ NS_LOG_INFO ("Assign IP Addresses.");
+ Ipv6AddressHelper ipv6;
+ ipv6.SetBase ("2001:0000:f00d:cafe::", Ipv6Prefix (64));
+ Ipv6InterfaceContainer i6 = ipv6.Assign (d);
+ serverAddress = Address(i6.GetAddress (1,1));
+
+ NS_LOG_INFO ("Create sockets.");
+ //Receiver socket on n1
+ TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
+ Ptr<Socket> recvSink = Socket::CreateSocket (n.Get (1), tid);
+ Inet6SocketAddress local = Inet6SocketAddress (Ipv6Address::GetAny (), 4477);
+ recvSink->SetIpv6RecvTclass (ipv6RecvTclass);
+ recvSink->SetIpv6RecvHopLimit (ipv6RecvHoplimit);
+ recvSink->Bind (local);
+ recvSink->SetRecvCallback (MakeCallback (&ReceivePacket));
+
+ //Sender socket on n0
+ Ptr<Socket> source = Socket::CreateSocket (n.Get (0), tid);
+ Inet6SocketAddress remote = Inet6SocketAddress (i6.GetAddress (1,1), 4477);
+ //Set socket options, it is also possible to set the options after the socket has been created/connected.
+ if (ipv6Tclass != 0)
+ {
+ source->SetIpv6Tclass (ipv6Tclass);
+ }
+
+ if (ipv6Hoplimit > 0)
+ {
+ source->SetIpv6HopLimit (ipv6Hoplimit);
+ }
+ source->Connect (remote);
+
+ AsciiTraceHelper ascii;
+ csma.EnableAsciiAll (ascii.CreateFileStream ("socket-options-ipv6.tr"));
+ csma.EnablePcapAll ("socket-options-ipv6", false);
+
+ //Schedule SendPacket
+ Time interPacketInterval = Seconds (packetInterval);
+ Simulator::ScheduleWithContext (source->GetNode ()->GetId (),
+ Seconds (1.0), &SendPacket,
+ source, packetSize, packetCount, interPacketInterval);
+
+ NS_LOG_INFO ("Run Simulation.");
+ Simulator::Run ();
+ Simulator::Destroy ();
+ NS_LOG_INFO ("Done.");
+}
--- a/examples/socket/wscript Fri Nov 16 22:27:18 2012 +0100
+++ b/examples/socket/wscript Tue Nov 20 17:52:39 2012 -0500
@@ -6,3 +6,9 @@
obj = bld.create_ns3_program('socket-bound-tcp-static-routing', ['network', 'csma', 'point-to-point', 'internet'])
obj.source = 'socket-bound-tcp-static-routing.cc'
+
+ obj = bld.create_ns3_program('socket-options-ipv4', ['network', 'csma', 'point-to-point', 'internet'])
+ obj.source = 'socket-options-ipv4.cc'
+
+ obj = bld.create_ns3_program('socket-options-ipv6', ['network', 'csma', 'point-to-point', 'internet'])
+ obj.source = 'socket-options-ipv6.cc'
--- a/src/dsr/bindings/modulegen__gcc_ILP32.py Fri Nov 16 22:27:18 2012 +0100
+++ b/src/dsr/bindings/modulegen__gcc_ILP32.py Tue Nov 20 17:52:39 2012 -0500
@@ -64,6 +64,14 @@
module.add_class('EventGarbageCollector', import_from_module='ns.tools')
## event-id.h (module 'core'): ns3::EventId [class]
module.add_class('EventId', import_from_module='ns.core')
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress [class]
+ module.add_class('Inet6SocketAddress', import_from_module='ns.network')
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress [class]
+ root_module['ns3::Inet6SocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
+ module.add_class('InetSocketAddress', import_from_module='ns.network')
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
+ root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
@@ -254,8 +262,14 @@
module.add_enum('SocketType', ['NS3_SOCK_STREAM', 'NS3_SOCK_SEQPACKET', 'NS3_SOCK_DGRAM', 'NS3_SOCK_RAW'], outer_class=root_module['ns3::Socket'], import_from_module='ns.network')
## socket.h (module 'network'): ns3::SocketAddressTag [class]
module.add_class('SocketAddressTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
+ ## socket.h (module 'network'): ns3::SocketIpTosTag [class]
+ module.add_class('SocketIpTosTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## socket.h (module 'network'): ns3::SocketIpTtlTag [class]
module.add_class('SocketIpTtlTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
+ ## socket.h (module 'network'): ns3::SocketIpv6HopLimitTag [class]
+ module.add_class('SocketIpv6HopLimitTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
+ ## socket.h (module 'network'): ns3::SocketIpv6TclassTag [class]
+ module.add_class('SocketIpv6TclassTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## socket.h (module 'network'): ns3::SocketSetDontFragmentTag [class]
module.add_class('SocketSetDontFragmentTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## nstime.h (module 'core'): ns3::Time [class]
@@ -590,6 +604,8 @@
register_Ns3DsrMainHelper_methods(root_module, root_module['ns3::DsrMainHelper'])
register_Ns3EventGarbageCollector_methods(root_module, root_module['ns3::EventGarbageCollector'])
register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
+ register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
+ register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
@@ -659,7 +675,10 @@
register_Ns3SimpleRefCount__Ns3WifiInformationElement_Ns3Empty_Ns3DefaultDeleter__lt__ns3WifiInformationElement__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::WifiInformationElement, ns3::empty, ns3::DefaultDeleter<ns3::WifiInformationElement> >'])
register_Ns3Socket_methods(root_module, root_module['ns3::Socket'])
register_Ns3SocketAddressTag_methods(root_module, root_module['ns3::SocketAddressTag'])
+ register_Ns3SocketIpTosTag_methods(root_module, root_module['ns3::SocketIpTosTag'])
register_Ns3SocketIpTtlTag_methods(root_module, root_module['ns3::SocketIpTtlTag'])
+ register_Ns3SocketIpv6HopLimitTag_methods(root_module, root_module['ns3::SocketIpv6HopLimitTag'])
+ register_Ns3SocketIpv6TclassTag_methods(root_module, root_module['ns3::SocketIpv6TclassTag'])
register_Ns3SocketSetDontFragmentTag_methods(root_module, root_module['ns3::SocketSetDontFragmentTag'])
register_Ns3Time_methods(root_module, root_module['ns3::Time'])
register_Ns3TraceSourceAccessor_methods(root_module, root_module['ns3::TraceSourceAccessor'])
@@ -1362,6 +1381,92 @@
is_const=True)
return
+def register_Ns3Inet6SocketAddress_methods(root_module, cls):
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Inet6SocketAddress const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::Inet6SocketAddress const &', 'arg0')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Ipv6Address ipv6, uint16_t port) [constructor]
+ cls.add_constructor([param('ns3::Ipv6Address', 'ipv6'), param('uint16_t', 'port')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Ipv6Address ipv6) [constructor]
+ cls.add_constructor([param('ns3::Ipv6Address', 'ipv6')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(uint16_t port) [constructor]
+ cls.add_constructor([param('uint16_t', 'port')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(char const * ipv6, uint16_t port) [constructor]
+ cls.add_constructor([param('char const *', 'ipv6'), param('uint16_t', 'port')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(char const * ipv6) [constructor]
+ cls.add_constructor([param('char const *', 'ipv6')])
+ ## inet6-socket-address.h (module 'network'): static ns3::Inet6SocketAddress ns3::Inet6SocketAddress::ConvertFrom(ns3::Address const & addr) [member function]
+ cls.add_method('ConvertFrom',
+ 'ns3::Inet6SocketAddress',
+ [param('ns3::Address const &', 'addr')],
+ is_static=True)
+ ## inet6-socket-address.h (module 'network'): ns3::Ipv6Address ns3::Inet6SocketAddress::GetIpv6() const [member function]
+ cls.add_method('GetIpv6',
+ 'ns3::Ipv6Address',
+ [],
+ is_const=True)
+ ## inet6-socket-address.h (module 'network'): uint16_t ns3::Inet6SocketAddress::GetPort() const [member function]
+ cls.add_method('GetPort',
+ 'uint16_t',
+ [],
+ is_const=True)
+ ## inet6-socket-address.h (module 'network'): static bool ns3::Inet6SocketAddress::IsMatchingType(ns3::Address const & addr) [member function]
+ cls.add_method('IsMatchingType',
+ 'bool',
+ [param('ns3::Address const &', 'addr')],
+ is_static=True)
+ ## inet6-socket-address.h (module 'network'): void ns3::Inet6SocketAddress::SetIpv6(ns3::Ipv6Address ipv6) [member function]
+ cls.add_method('SetIpv6',
+ 'void',
+ [param('ns3::Ipv6Address', 'ipv6')])
+ ## inet6-socket-address.h (module 'network'): void ns3::Inet6SocketAddress::SetPort(uint16_t port) [member function]
+ cls.add_method('SetPort',
+ 'void',
+ [param('uint16_t', 'port')])
+ return
+
+def register_Ns3InetSocketAddress_methods(root_module, cls):
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::InetSocketAddress const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::InetSocketAddress const &', 'arg0')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::Ipv4Address ipv4, uint16_t port) [constructor]
+ cls.add_constructor([param('ns3::Ipv4Address', 'ipv4'), param('uint16_t', 'port')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::Ipv4Address ipv4) [constructor]
+ cls.add_constructor([param('ns3::Ipv4Address', 'ipv4')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(uint16_t port) [constructor]
+ cls.add_constructor([param('uint16_t', 'port')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(char const * ipv4, uint16_t port) [constructor]
+ cls.add_constructor([param('char const *', 'ipv4'), param('uint16_t', 'port')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(char const * ipv4) [constructor]
+ cls.add_constructor([param('char const *', 'ipv4')])
+ ## inet-socket-address.h (module 'network'): static ns3::InetSocketAddress ns3::InetSocketAddress::ConvertFrom(ns3::Address const & address) [member function]
+ cls.add_method('ConvertFrom',
+ 'ns3::InetSocketAddress',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ ## inet-socket-address.h (module 'network'): ns3::Ipv4Address ns3::InetSocketAddress::GetIpv4() const [member function]
+ cls.add_method('GetIpv4',
+ 'ns3::Ipv4Address',
+ [],
+ is_const=True)
+ ## inet-socket-address.h (module 'network'): uint16_t ns3::InetSocketAddress::GetPort() const [member function]
+ cls.add_method('GetPort',
+ 'uint16_t',
+ [],
+ is_const=True)
+ ## inet-socket-address.h (module 'network'): static bool ns3::InetSocketAddress::IsMatchingType(ns3::Address const & address) [member function]
+ cls.add_method('IsMatchingType',
+ 'bool',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ ## inet-socket-address.h (module 'network'): void ns3::InetSocketAddress::SetIpv4(ns3::Ipv4Address address) [member function]
+ cls.add_method('SetIpv4',
+ 'void',
+ [param('ns3::Ipv4Address', 'address')])
+ ## inet-socket-address.h (module 'network'): void ns3::InetSocketAddress::SetPort(uint16_t port) [member function]
+ cls.add_method('SetPort',
+ 'void',
+ [param('uint16_t', 'port')])
+ return
+
def register_Ns3IntToType__0_methods(root_module, cls):
## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
cls.add_constructor([])
@@ -2995,6 +3100,7 @@
return
def register_Ns3Int64x64_t_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
@@ -3052,7 +3158,6 @@
cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
@@ -4022,6 +4127,26 @@
'ns3::Socket::SocketErrno',
[],
is_pure_virtual=True, is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpTos() const [member function]
+ cls.add_method('GetIpTos',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpTtl() const [member function]
+ cls.add_method('GetIpTtl',
+ 'uint8_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpv6HopLimit() const [member function]
+ cls.add_method('GetIpv6HopLimit',
+ 'uint8_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpv6Tclass() const [member function]
+ cls.add_method('GetIpv6Tclass',
+ 'uint8_t',
+ [],
+ is_const=True)
## socket.h (module 'network'): ns3::Ptr<ns3::Node> ns3::Socket::GetNode() const [member function]
cls.add_method('GetNode',
'ns3::Ptr< ns3::Node >',
@@ -4052,6 +4177,26 @@
'ns3::TypeId',
[],
is_static=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpRecvTos() const [member function]
+ cls.add_method('IsIpRecvTos',
+ 'bool',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpRecvTtl() const [member function]
+ cls.add_method('IsIpRecvTtl',
+ 'bool',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpv6RecvHopLimit() const [member function]
+ cls.add_method('IsIpv6RecvHopLimit',
+ 'bool',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpv6RecvTclass() const [member function]
+ cls.add_method('IsIpv6RecvTclass',
+ 'bool',
+ [],
+ is_const=True)
## socket.h (module 'network'): bool ns3::Socket::IsRecvPktInfo() const [member function]
cls.add_method('IsRecvPktInfo',
'bool',
@@ -4131,6 +4276,40 @@
cls.add_method('SetDataSentCallback',
'void',
[param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'dataSent')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpRecvTos(bool ipv4RecvTos) [member function]
+ cls.add_method('SetIpRecvTos',
+ 'void',
+ [param('bool', 'ipv4RecvTos')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpRecvTtl(bool ipv4RecvTtl) [member function]
+ cls.add_method('SetIpRecvTtl',
+ 'void',
+ [param('bool', 'ipv4RecvTtl')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpTos(uint8_t ipTos) [member function]
+ cls.add_method('SetIpTos',
+ 'void',
+ [param('uint8_t', 'ipTos')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpTtl(uint8_t ipTtl) [member function]
+ cls.add_method('SetIpTtl',
+ 'void',
+ [param('uint8_t', 'ipTtl')],
+ is_virtual=True)
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6HopLimit(uint8_t ipHopLimit) [member function]
+ cls.add_method('SetIpv6HopLimit',
+ 'void',
+ [param('uint8_t', 'ipHopLimit')],
+ is_virtual=True)
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6RecvHopLimit(bool ipv6RecvHopLimit) [member function]
+ cls.add_method('SetIpv6RecvHopLimit',
+ 'void',
+ [param('bool', 'ipv6RecvHopLimit')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6RecvTclass(bool ipv6RecvTclass) [member function]
+ cls.add_method('SetIpv6RecvTclass',
+ 'void',
+ [param('bool', 'ipv6RecvTclass')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6Tclass(int ipTclass) [member function]
+ cls.add_method('SetIpv6Tclass',
+ 'void',
+ [param('int', 'ipTclass')])
## socket.h (module 'network'): void ns3::Socket::SetRecvCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> arg0) [member function]
cls.add_method('SetRecvCallback',
'void',
@@ -4158,6 +4337,26 @@
'void',
[],
visibility='protected', is_virtual=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpTos() const [member function]
+ cls.add_method('IsManualIpTos',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpTtl() const [member function]
+ cls.add_method('IsManualIpTtl',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpv6HopLimit() const [member function]
+ cls.add_method('IsManualIpv6HopLimit',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpv6Tclass() const [member function]
+ cls.add_method('IsManualIpv6Tclass',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
## socket.h (module 'network'): void ns3::Socket::NotifyConnectionFailed() [member function]
cls.add_method('NotifyConnectionFailed',
'void',
@@ -4251,6 +4450,52 @@
[param('ns3::Address', 'addr')])
return
+def register_Ns3SocketIpTosTag_methods(root_module, cls):
+ ## socket.h (module 'network'): ns3::SocketIpTosTag::SocketIpTosTag(ns3::SocketIpTosTag const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::SocketIpTosTag const &', 'arg0')])
+ ## socket.h (module 'network'): ns3::SocketIpTosTag::SocketIpTosTag() [constructor]
+ cls.add_constructor([])
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::Deserialize(ns3::TagBuffer i) [member function]
+ cls.add_method('Deserialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_virtual=True)
+ ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpTosTag::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint32_t ns3::SocketIpTosTag::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::SocketIpTosTag::GetTos() const [member function]
+ cls.add_method('GetTos',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpTosTag::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::Serialize(ns3::TagBuffer i) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::SetTos(uint8_t tos) [member function]
+ cls.add_method('SetTos',
+ 'void',
+ [param('uint8_t', 'tos')])
+ return
+
def register_Ns3SocketIpTtlTag_methods(root_module, cls):
## socket.h (module 'network'): ns3::SocketIpTtlTag::SocketIpTtlTag(ns3::SocketIpTtlTag const & arg0) [copy constructor]
cls.add_constructor([param('ns3::SocketIpTtlTag const &', 'arg0')])
@@ -4297,6 +4542,98 @@
[param('uint8_t', 'ttl')])
return
+def register_Ns3SocketIpv6HopLimitTag_methods(root_module, cls):
+ ## socket.h (module 'network'): ns3::SocketIpv6HopLimitTag::SocketIpv6HopLimitTag(ns3::SocketIpv6HopLimitTag const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::SocketIpv6HopLimitTag const &', 'arg0')])
+ ## socket.h (module 'network'): ns3::SocketIpv6HopLimitTag::SocketIpv6HopLimitTag() [constructor]
+ cls.add_constructor([])
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::Deserialize(ns3::TagBuffer i) [member function]
+ cls.add_method('Deserialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::SocketIpv6HopLimitTag::GetHopLimit() const [member function]
+ cls.add_method('GetHopLimit',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpv6HopLimitTag::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint32_t ns3::SocketIpv6HopLimitTag::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpv6HopLimitTag::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::Serialize(ns3::TagBuffer i) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::SetHopLimit(uint8_t hopLimit) [member function]
+ cls.add_method('SetHopLimit',
+ 'void',
+ [param('uint8_t', 'hopLimit')])
+ return
+
+def register_Ns3SocketIpv6TclassTag_methods(root_module, cls):
+ ## socket.h (module 'network'): ns3::SocketIpv6TclassTag::SocketIpv6TclassTag(ns3::SocketIpv6TclassTag const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::SocketIpv6TclassTag const &', 'arg0')])
+ ## socket.h (module 'network'): ns3::SocketIpv6TclassTag::SocketIpv6TclassTag() [constructor]
+ cls.add_constructor([])
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::Deserialize(ns3::TagBuffer i) [member function]
+ cls.add_method('Deserialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_virtual=True)
+ ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpv6TclassTag::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint32_t ns3::SocketIpv6TclassTag::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::SocketIpv6TclassTag::GetTclass() const [member function]
+ cls.add_method('GetTclass',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpv6TclassTag::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::Serialize(ns3::TagBuffer i) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::SetTclass(uint8_t tclass) [member function]
+ cls.add_method('SetTclass',
+ 'void',
+ [param('uint8_t', 'tclass')])
+ return
+
def register_Ns3SocketSetDontFragmentTag_methods(root_module, cls):
## socket.h (module 'network'): ns3::SocketSetDontFragmentTag::SocketSetDontFragmentTag(ns3::SocketSetDontFragmentTag const & arg0) [copy constructor]
cls.add_constructor([param('ns3::SocketSetDontFragmentTag const &', 'arg0')])
@@ -4348,6 +4685,7 @@
return
def register_Ns3Time_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
@@ -4356,7 +4694,6 @@
cls.add_binary_comparison_operator('>')
cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## nstime.h (module 'core'): ns3::Time::Time() [constructor]
@@ -6747,10 +7084,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_pure_virtual=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
+ ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
is_pure_virtual=True, is_virtual=True)
## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
cls.add_method('ReceiveIcmp',
@@ -8531,10 +8868,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_virtual=True)
- ## tcp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::TcpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
+ ## tcp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::TcpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
is_virtual=True)
## tcp-l4-protocol.h (module 'internet'): void ns3::TcpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
cls.add_method('ReceiveIcmp',
@@ -8750,10 +9087,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'interface')],
is_virtual=True)
- ## udp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::UdpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
+ ## udp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::UdpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
is_virtual=True)
## udp-l4-protocol.h (module 'internet'): void ns3::UdpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
cls.add_method('ReceiveIcmp',
@@ -8945,10 +9282,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_virtual=True)
- ## icmpv4-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::Icmpv4L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
+ ## icmpv4-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::Icmpv4L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
is_virtual=True)
## icmpv4-l4-protocol.h (module 'internet'): void ns3::Icmpv4L4Protocol::SendDestUnreachFragNeeded(ns3::Ipv4Header header, ns3::Ptr<ns3::Packet const> orgData, uint16_t nextHopMtu) [member function]
cls.add_method('SendDestUnreachFragNeeded',
@@ -10134,10 +10471,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_virtual=True)
- ## dsr-routing.h (module 'dsr'): ns3::IpL4Protocol::RxStatus ns3::dsr::DsrRouting::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
+ ## dsr-routing.h (module 'dsr'): ns3::IpL4Protocol::RxStatus ns3::dsr::DsrRouting::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
is_virtual=True)
## dsr-routing.h (module 'dsr'): void ns3::dsr::DsrRouting::RouteRequestTimerExpire(ns3::Ptr<ns3::Packet> packet, std::vector<ns3::Ipv4Address, std::allocator<ns3::Ipv4Address> > address, uint32_t requestId, uint8_t protocol) [member function]
cls.add_method('RouteRequestTimerExpire',
--- a/src/dsr/bindings/modulegen__gcc_LP64.py Fri Nov 16 22:27:18 2012 +0100
+++ b/src/dsr/bindings/modulegen__gcc_LP64.py Tue Nov 20 17:52:39 2012 -0500
@@ -64,6 +64,14 @@
module.add_class('EventGarbageCollector', import_from_module='ns.tools')
## event-id.h (module 'core'): ns3::EventId [class]
module.add_class('EventId', import_from_module='ns.core')
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress [class]
+ module.add_class('Inet6SocketAddress', import_from_module='ns.network')
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress [class]
+ root_module['ns3::Inet6SocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
+ module.add_class('InetSocketAddress', import_from_module='ns.network')
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
+ root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
@@ -254,8 +262,14 @@
module.add_enum('SocketType', ['NS3_SOCK_STREAM', 'NS3_SOCK_SEQPACKET', 'NS3_SOCK_DGRAM', 'NS3_SOCK_RAW'], outer_class=root_module['ns3::Socket'], import_from_module='ns.network')
## socket.h (module 'network'): ns3::SocketAddressTag [class]
module.add_class('SocketAddressTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
+ ## socket.h (module 'network'): ns3::SocketIpTosTag [class]
+ module.add_class('SocketIpTosTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## socket.h (module 'network'): ns3::SocketIpTtlTag [class]
module.add_class('SocketIpTtlTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
+ ## socket.h (module 'network'): ns3::SocketIpv6HopLimitTag [class]
+ module.add_class('SocketIpv6HopLimitTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
+ ## socket.h (module 'network'): ns3::SocketIpv6TclassTag [class]
+ module.add_class('SocketIpv6TclassTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## socket.h (module 'network'): ns3::SocketSetDontFragmentTag [class]
module.add_class('SocketSetDontFragmentTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## nstime.h (module 'core'): ns3::Time [class]
@@ -590,6 +604,8 @@
register_Ns3DsrMainHelper_methods(root_module, root_module['ns3::DsrMainHelper'])
register_Ns3EventGarbageCollector_methods(root_module, root_module['ns3::EventGarbageCollector'])
register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
+ register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
+ register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
@@ -659,7 +675,10 @@
register_Ns3SimpleRefCount__Ns3WifiInformationElement_Ns3Empty_Ns3DefaultDeleter__lt__ns3WifiInformationElement__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::WifiInformationElement, ns3::empty, ns3::DefaultDeleter<ns3::WifiInformationElement> >'])
register_Ns3Socket_methods(root_module, root_module['ns3::Socket'])
register_Ns3SocketAddressTag_methods(root_module, root_module['ns3::SocketAddressTag'])
+ register_Ns3SocketIpTosTag_methods(root_module, root_module['ns3::SocketIpTosTag'])
register_Ns3SocketIpTtlTag_methods(root_module, root_module['ns3::SocketIpTtlTag'])
+ register_Ns3SocketIpv6HopLimitTag_methods(root_module, root_module['ns3::SocketIpv6HopLimitTag'])
+ register_Ns3SocketIpv6TclassTag_methods(root_module, root_module['ns3::SocketIpv6TclassTag'])
register_Ns3SocketSetDontFragmentTag_methods(root_module, root_module['ns3::SocketSetDontFragmentTag'])
register_Ns3Time_methods(root_module, root_module['ns3::Time'])
register_Ns3TraceSourceAccessor_methods(root_module, root_module['ns3::TraceSourceAccessor'])
@@ -1362,6 +1381,92 @@
is_const=True)
return
+def register_Ns3Inet6SocketAddress_methods(root_module, cls):
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Inet6SocketAddress const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::Inet6SocketAddress const &', 'arg0')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Ipv6Address ipv6, uint16_t port) [constructor]
+ cls.add_constructor([param('ns3::Ipv6Address', 'ipv6'), param('uint16_t', 'port')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Ipv6Address ipv6) [constructor]
+ cls.add_constructor([param('ns3::Ipv6Address', 'ipv6')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(uint16_t port) [constructor]
+ cls.add_constructor([param('uint16_t', 'port')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(char const * ipv6, uint16_t port) [constructor]
+ cls.add_constructor([param('char const *', 'ipv6'), param('uint16_t', 'port')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(char const * ipv6) [constructor]
+ cls.add_constructor([param('char const *', 'ipv6')])
+ ## inet6-socket-address.h (module 'network'): static ns3::Inet6SocketAddress ns3::Inet6SocketAddress::ConvertFrom(ns3::Address const & addr) [member function]
+ cls.add_method('ConvertFrom',
+ 'ns3::Inet6SocketAddress',
+ [param('ns3::Address const &', 'addr')],
+ is_static=True)
+ ## inet6-socket-address.h (module 'network'): ns3::Ipv6Address ns3::Inet6SocketAddress::GetIpv6() const [member function]
+ cls.add_method('GetIpv6',
+ 'ns3::Ipv6Address',
+ [],
+ is_const=True)
+ ## inet6-socket-address.h (module 'network'): uint16_t ns3::Inet6SocketAddress::GetPort() const [member function]
+ cls.add_method('GetPort',
+ 'uint16_t',
+ [],
+ is_const=True)
+ ## inet6-socket-address.h (module 'network'): static bool ns3::Inet6SocketAddress::IsMatchingType(ns3::Address const & addr) [member function]
+ cls.add_method('IsMatchingType',
+ 'bool',
+ [param('ns3::Address const &', 'addr')],
+ is_static=True)
+ ## inet6-socket-address.h (module 'network'): void ns3::Inet6SocketAddress::SetIpv6(ns3::Ipv6Address ipv6) [member function]
+ cls.add_method('SetIpv6',
+ 'void',
+ [param('ns3::Ipv6Address', 'ipv6')])
+ ## inet6-socket-address.h (module 'network'): void ns3::Inet6SocketAddress::SetPort(uint16_t port) [member function]
+ cls.add_method('SetPort',
+ 'void',
+ [param('uint16_t', 'port')])
+ return
+
+def register_Ns3InetSocketAddress_methods(root_module, cls):
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::InetSocketAddress const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::InetSocketAddress const &', 'arg0')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::Ipv4Address ipv4, uint16_t port) [constructor]
+ cls.add_constructor([param('ns3::Ipv4Address', 'ipv4'), param('uint16_t', 'port')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::Ipv4Address ipv4) [constructor]
+ cls.add_constructor([param('ns3::Ipv4Address', 'ipv4')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(uint16_t port) [constructor]
+ cls.add_constructor([param('uint16_t', 'port')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(char const * ipv4, uint16_t port) [constructor]
+ cls.add_constructor([param('char const *', 'ipv4'), param('uint16_t', 'port')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(char const * ipv4) [constructor]
+ cls.add_constructor([param('char const *', 'ipv4')])
+ ## inet-socket-address.h (module 'network'): static ns3::InetSocketAddress ns3::InetSocketAddress::ConvertFrom(ns3::Address const & address) [member function]
+ cls.add_method('ConvertFrom',
+ 'ns3::InetSocketAddress',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ ## inet-socket-address.h (module 'network'): ns3::Ipv4Address ns3::InetSocketAddress::GetIpv4() const [member function]
+ cls.add_method('GetIpv4',
+ 'ns3::Ipv4Address',
+ [],
+ is_const=True)
+ ## inet-socket-address.h (module 'network'): uint16_t ns3::InetSocketAddress::GetPort() const [member function]
+ cls.add_method('GetPort',
+ 'uint16_t',
+ [],
+ is_const=True)
+ ## inet-socket-address.h (module 'network'): static bool ns3::InetSocketAddress::IsMatchingType(ns3::Address const & address) [member function]
+ cls.add_method('IsMatchingType',
+ 'bool',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ ## inet-socket-address.h (module 'network'): void ns3::InetSocketAddress::SetIpv4(ns3::Ipv4Address address) [member function]
+ cls.add_method('SetIpv4',
+ 'void',
+ [param('ns3::Ipv4Address', 'address')])
+ ## inet-socket-address.h (module 'network'): void ns3::InetSocketAddress::SetPort(uint16_t port) [member function]
+ cls.add_method('SetPort',
+ 'void',
+ [param('uint16_t', 'port')])
+ return
+
def register_Ns3IntToType__0_methods(root_module, cls):
## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
cls.add_constructor([])
@@ -2995,6 +3100,7 @@
return
def register_Ns3Int64x64_t_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
@@ -3052,7 +3158,6 @@
cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
@@ -4022,6 +4127,26 @@
'ns3::Socket::SocketErrno',
[],
is_pure_virtual=True, is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpTos() const [member function]
+ cls.add_method('GetIpTos',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpTtl() const [member function]
+ cls.add_method('GetIpTtl',
+ 'uint8_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpv6HopLimit() const [member function]
+ cls.add_method('GetIpv6HopLimit',
+ 'uint8_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpv6Tclass() const [member function]
+ cls.add_method('GetIpv6Tclass',
+ 'uint8_t',
+ [],
+ is_const=True)
## socket.h (module 'network'): ns3::Ptr<ns3::Node> ns3::Socket::GetNode() const [member function]
cls.add_method('GetNode',
'ns3::Ptr< ns3::Node >',
@@ -4052,6 +4177,26 @@
'ns3::TypeId',
[],
is_static=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpRecvTos() const [member function]
+ cls.add_method('IsIpRecvTos',
+ 'bool',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpRecvTtl() const [member function]
+ cls.add_method('IsIpRecvTtl',
+ 'bool',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpv6RecvHopLimit() const [member function]
+ cls.add_method('IsIpv6RecvHopLimit',
+ 'bool',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpv6RecvTclass() const [member function]
+ cls.add_method('IsIpv6RecvTclass',
+ 'bool',
+ [],
+ is_const=True)
## socket.h (module 'network'): bool ns3::Socket::IsRecvPktInfo() const [member function]
cls.add_method('IsRecvPktInfo',
'bool',
@@ -4131,6 +4276,40 @@
cls.add_method('SetDataSentCallback',
'void',
[param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'dataSent')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpRecvTos(bool ipv4RecvTos) [member function]
+ cls.add_method('SetIpRecvTos',
+ 'void',
+ [param('bool', 'ipv4RecvTos')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpRecvTtl(bool ipv4RecvTtl) [member function]
+ cls.add_method('SetIpRecvTtl',
+ 'void',
+ [param('bool', 'ipv4RecvTtl')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpTos(uint8_t ipTos) [member function]
+ cls.add_method('SetIpTos',
+ 'void',
+ [param('uint8_t', 'ipTos')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpTtl(uint8_t ipTtl) [member function]
+ cls.add_method('SetIpTtl',
+ 'void',
+ [param('uint8_t', 'ipTtl')],
+ is_virtual=True)
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6HopLimit(uint8_t ipHopLimit) [member function]
+ cls.add_method('SetIpv6HopLimit',
+ 'void',
+ [param('uint8_t', 'ipHopLimit')],
+ is_virtual=True)
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6RecvHopLimit(bool ipv6RecvHopLimit) [member function]
+ cls.add_method('SetIpv6RecvHopLimit',
+ 'void',
+ [param('bool', 'ipv6RecvHopLimit')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6RecvTclass(bool ipv6RecvTclass) [member function]
+ cls.add_method('SetIpv6RecvTclass',
+ 'void',
+ [param('bool', 'ipv6RecvTclass')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6Tclass(int ipTclass) [member function]
+ cls.add_method('SetIpv6Tclass',
+ 'void',
+ [param('int', 'ipTclass')])
## socket.h (module 'network'): void ns3::Socket::SetRecvCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> arg0) [member function]
cls.add_method('SetRecvCallback',
'void',
@@ -4158,6 +4337,26 @@
'void',
[],
visibility='protected', is_virtual=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpTos() const [member function]
+ cls.add_method('IsManualIpTos',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpTtl() const [member function]
+ cls.add_method('IsManualIpTtl',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpv6HopLimit() const [member function]
+ cls.add_method('IsManualIpv6HopLimit',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpv6Tclass() const [member function]
+ cls.add_method('IsManualIpv6Tclass',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
## socket.h (module 'network'): void ns3::Socket::NotifyConnectionFailed() [member function]
cls.add_method('NotifyConnectionFailed',
'void',
@@ -4251,6 +4450,52 @@
[param('ns3::Address', 'addr')])
return
+def register_Ns3SocketIpTosTag_methods(root_module, cls):
+ ## socket.h (module 'network'): ns3::SocketIpTosTag::SocketIpTosTag(ns3::SocketIpTosTag const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::SocketIpTosTag const &', 'arg0')])
+ ## socket.h (module 'network'): ns3::SocketIpTosTag::SocketIpTosTag() [constructor]
+ cls.add_constructor([])
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::Deserialize(ns3::TagBuffer i) [member function]
+ cls.add_method('Deserialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_virtual=True)
+ ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpTosTag::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint32_t ns3::SocketIpTosTag::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::SocketIpTosTag::GetTos() const [member function]
+ cls.add_method('GetTos',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpTosTag::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::Serialize(ns3::TagBuffer i) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::SetTos(uint8_t tos) [member function]
+ cls.add_method('SetTos',
+ 'void',
+ [param('uint8_t', 'tos')])
+ return
+
def register_Ns3SocketIpTtlTag_methods(root_module, cls):
## socket.h (module 'network'): ns3::SocketIpTtlTag::SocketIpTtlTag(ns3::SocketIpTtlTag const & arg0) [copy constructor]
cls.add_constructor([param('ns3::SocketIpTtlTag const &', 'arg0')])
@@ -4297,6 +4542,98 @@
[param('uint8_t', 'ttl')])
return
+def register_Ns3SocketIpv6HopLimitTag_methods(root_module, cls):
+ ## socket.h (module 'network'): ns3::SocketIpv6HopLimitTag::SocketIpv6HopLimitTag(ns3::SocketIpv6HopLimitTag const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::SocketIpv6HopLimitTag const &', 'arg0')])
+ ## socket.h (module 'network'): ns3::SocketIpv6HopLimitTag::SocketIpv6HopLimitTag() [constructor]
+ cls.add_constructor([])
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::Deserialize(ns3::TagBuffer i) [member function]
+ cls.add_method('Deserialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::SocketIpv6HopLimitTag::GetHopLimit() const [member function]
+ cls.add_method('GetHopLimit',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpv6HopLimitTag::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint32_t ns3::SocketIpv6HopLimitTag::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpv6HopLimitTag::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::Serialize(ns3::TagBuffer i) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::SetHopLimit(uint8_t hopLimit) [member function]
+ cls.add_method('SetHopLimit',
+ 'void',
+ [param('uint8_t', 'hopLimit')])
+ return
+
+def register_Ns3SocketIpv6TclassTag_methods(root_module, cls):
+ ## socket.h (module 'network'): ns3::SocketIpv6TclassTag::SocketIpv6TclassTag(ns3::SocketIpv6TclassTag const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::SocketIpv6TclassTag const &', 'arg0')])
+ ## socket.h (module 'network'): ns3::SocketIpv6TclassTag::SocketIpv6TclassTag() [constructor]
+ cls.add_constructor([])
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::Deserialize(ns3::TagBuffer i) [member function]
+ cls.add_method('Deserialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_virtual=True)
+ ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpv6TclassTag::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint32_t ns3::SocketIpv6TclassTag::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::SocketIpv6TclassTag::GetTclass() const [member function]
+ cls.add_method('GetTclass',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpv6TclassTag::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::Serialize(ns3::TagBuffer i) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::SetTclass(uint8_t tclass) [member function]
+ cls.add_method('SetTclass',
+ 'void',
+ [param('uint8_t', 'tclass')])
+ return
+
def register_Ns3SocketSetDontFragmentTag_methods(root_module, cls):
## socket.h (module 'network'): ns3::SocketSetDontFragmentTag::SocketSetDontFragmentTag(ns3::SocketSetDontFragmentTag const & arg0) [copy constructor]
cls.add_constructor([param('ns3::SocketSetDontFragmentTag const &', 'arg0')])
@@ -4348,6 +4685,7 @@
return
def register_Ns3Time_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
@@ -4356,7 +4694,6 @@
cls.add_binary_comparison_operator('>')
cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## nstime.h (module 'core'): ns3::Time::Time() [constructor]
@@ -6747,10 +7084,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_pure_virtual=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
+ ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
is_pure_virtual=True, is_virtual=True)
## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
cls.add_method('ReceiveIcmp',
@@ -8531,10 +8868,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_virtual=True)
- ## tcp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::TcpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
+ ## tcp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::TcpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
is_virtual=True)
## tcp-l4-protocol.h (module 'internet'): void ns3::TcpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
cls.add_method('ReceiveIcmp',
@@ -8750,10 +9087,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'interface')],
is_virtual=True)
- ## udp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::UdpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
+ ## udp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::UdpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
is_virtual=True)
## udp-l4-protocol.h (module 'internet'): void ns3::UdpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
cls.add_method('ReceiveIcmp',
@@ -8945,10 +9282,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_virtual=True)
- ## icmpv4-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::Icmpv4L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
+ ## icmpv4-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::Icmpv4L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
is_virtual=True)
## icmpv4-l4-protocol.h (module 'internet'): void ns3::Icmpv4L4Protocol::SendDestUnreachFragNeeded(ns3::Ipv4Header header, ns3::Ptr<ns3::Packet const> orgData, uint16_t nextHopMtu) [member function]
cls.add_method('SendDestUnreachFragNeeded',
@@ -10134,10 +10471,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_virtual=True)
- ## dsr-routing.h (module 'dsr'): ns3::IpL4Protocol::RxStatus ns3::dsr::DsrRouting::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
+ ## dsr-routing.h (module 'dsr'): ns3::IpL4Protocol::RxStatus ns3::dsr::DsrRouting::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
is_virtual=True)
## dsr-routing.h (module 'dsr'): void ns3::dsr::DsrRouting::RouteRequestTimerExpire(ns3::Ptr<ns3::Packet> packet, std::vector<ns3::Ipv4Address, std::allocator<ns3::Ipv4Address> > address, uint32_t requestId, uint8_t protocol) [member function]
cls.add_method('RouteRequestTimerExpire',
--- a/src/dsr/model/dsr-routing.cc Fri Nov 16 22:27:18 2012 +0100
+++ b/src/dsr/model/dsr-routing.cc Tue Nov 20 17:52:39 2012 -0500
@@ -3098,11 +3098,10 @@
enum IpL4Protocol::RxStatus
DsrRouting::Receive (Ptr<Packet> p,
- Ipv6Address &src,
- Ipv6Address &dst,
+ Ipv6Header const &ip,
Ptr<Ipv6Interface> incomingInterface)
{
- NS_LOG_FUNCTION (this << p << src << dst << incomingInterface);
+ NS_LOG_FUNCTION (this << p << ip.GetSourceAddress () << ip.GetDestinationAddress () << incomingInterface);
return IpL4Protocol::RX_ENDPOINT_UNREACH;
}
--- a/src/dsr/model/dsr-routing.h Fri Nov 16 22:27:18 2012 +0100
+++ b/src/dsr/model/dsr-routing.h Tue Nov 20 17:52:39 2012 -0500
@@ -408,16 +408,14 @@
/**
* \param p packet to forward up
- * \param src source IPv6 address
- * \param dst destination IPv6 address
+ * \param header IPv6 Header information
* \param incomingInterface the Ipv6Interface on which the packet arrived
*
* Called from lower-level layers to send the packet up
* in the stack. Not implemented (IPv6).
*/
virtual enum IpL4Protocol::RxStatus Receive (Ptr<Packet> p,
- Ipv6Address &src,
- Ipv6Address &dst,
+ Ipv6Header const &header,
Ptr<Ipv6Interface> incomingInterface);
void SetDownTarget (IpL4Protocol::DownTargetCallback callback);
--- a/src/internet/bindings/modulegen__gcc_ILP32.py Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/bindings/modulegen__gcc_ILP32.py Tue Nov 20 17:52:39 2012 -0500
@@ -74,6 +74,14 @@
module.add_class('GlobalRoutingLinkRecord')
## global-router-interface.h (module 'internet'): ns3::GlobalRoutingLinkRecord::LinkType [enumeration]
module.add_enum('LinkType', ['Unknown', 'PointToPoint', 'TransitNetwork', 'StubNetwork', 'VirtualLink'], outer_class=root_module['ns3::GlobalRoutingLinkRecord'])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress [class]
+ module.add_class('Inet6SocketAddress', import_from_module='ns.network')
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress [class]
+ root_module['ns3::Inet6SocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
+ module.add_class('InetSocketAddress', import_from_module='ns.network')
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
+ root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
@@ -374,8 +382,14 @@
module.add_class('SocketAddressTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## socket-factory.h (module 'network'): ns3::SocketFactory [class]
module.add_class('SocketFactory', import_from_module='ns.network', parent=root_module['ns3::Object'])
+ ## socket.h (module 'network'): ns3::SocketIpTosTag [class]
+ module.add_class('SocketIpTosTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## socket.h (module 'network'): ns3::SocketIpTtlTag [class]
module.add_class('SocketIpTtlTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
+ ## socket.h (module 'network'): ns3::SocketIpv6HopLimitTag [class]
+ module.add_class('SocketIpv6HopLimitTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
+ ## socket.h (module 'network'): ns3::SocketIpv6TclassTag [class]
+ module.add_class('SocketIpv6TclassTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## socket.h (module 'network'): ns3::SocketSetDontFragmentTag [class]
module.add_class('SocketSetDontFragmentTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## tcp-header.h (module 'internet'): ns3::TcpHeader [class]
@@ -653,6 +667,8 @@
register_Ns3GlobalRouteManagerLSDB_methods(root_module, root_module['ns3::GlobalRouteManagerLSDB'])
register_Ns3GlobalRoutingLSA_methods(root_module, root_module['ns3::GlobalRoutingLSA'])
register_Ns3GlobalRoutingLinkRecord_methods(root_module, root_module['ns3::GlobalRoutingLinkRecord'])
+ register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
+ register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
@@ -771,7 +787,10 @@
register_Ns3Socket_methods(root_module, root_module['ns3::Socket'])
register_Ns3SocketAddressTag_methods(root_module, root_module['ns3::SocketAddressTag'])
register_Ns3SocketFactory_methods(root_module, root_module['ns3::SocketFactory'])
+ register_Ns3SocketIpTosTag_methods(root_module, root_module['ns3::SocketIpTosTag'])
register_Ns3SocketIpTtlTag_methods(root_module, root_module['ns3::SocketIpTtlTag'])
+ register_Ns3SocketIpv6HopLimitTag_methods(root_module, root_module['ns3::SocketIpv6HopLimitTag'])
+ register_Ns3SocketIpv6TclassTag_methods(root_module, root_module['ns3::SocketIpv6TclassTag'])
register_Ns3SocketSetDontFragmentTag_methods(root_module, root_module['ns3::SocketSetDontFragmentTag'])
register_Ns3TcpHeader_methods(root_module, root_module['ns3::TcpHeader'])
register_Ns3TcpSocket_methods(root_module, root_module['ns3::TcpSocket'])
@@ -1925,6 +1944,92 @@
[param('uint16_t', 'metric')])
return
+def register_Ns3Inet6SocketAddress_methods(root_module, cls):
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Inet6SocketAddress const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::Inet6SocketAddress const &', 'arg0')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Ipv6Address ipv6, uint16_t port) [constructor]
+ cls.add_constructor([param('ns3::Ipv6Address', 'ipv6'), param('uint16_t', 'port')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Ipv6Address ipv6) [constructor]
+ cls.add_constructor([param('ns3::Ipv6Address', 'ipv6')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(uint16_t port) [constructor]
+ cls.add_constructor([param('uint16_t', 'port')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(char const * ipv6, uint16_t port) [constructor]
+ cls.add_constructor([param('char const *', 'ipv6'), param('uint16_t', 'port')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(char const * ipv6) [constructor]
+ cls.add_constructor([param('char const *', 'ipv6')])
+ ## inet6-socket-address.h (module 'network'): static ns3::Inet6SocketAddress ns3::Inet6SocketAddress::ConvertFrom(ns3::Address const & addr) [member function]
+ cls.add_method('ConvertFrom',
+ 'ns3::Inet6SocketAddress',
+ [param('ns3::Address const &', 'addr')],
+ is_static=True)
+ ## inet6-socket-address.h (module 'network'): ns3::Ipv6Address ns3::Inet6SocketAddress::GetIpv6() const [member function]
+ cls.add_method('GetIpv6',
+ 'ns3::Ipv6Address',
+ [],
+ is_const=True)
+ ## inet6-socket-address.h (module 'network'): uint16_t ns3::Inet6SocketAddress::GetPort() const [member function]
+ cls.add_method('GetPort',
+ 'uint16_t',
+ [],
+ is_const=True)
+ ## inet6-socket-address.h (module 'network'): static bool ns3::Inet6SocketAddress::IsMatchingType(ns3::Address const & addr) [member function]
+ cls.add_method('IsMatchingType',
+ 'bool',
+ [param('ns3::Address const &', 'addr')],
+ is_static=True)
+ ## inet6-socket-address.h (module 'network'): void ns3::Inet6SocketAddress::SetIpv6(ns3::Ipv6Address ipv6) [member function]
+ cls.add_method('SetIpv6',
+ 'void',
+ [param('ns3::Ipv6Address', 'ipv6')])
+ ## inet6-socket-address.h (module 'network'): void ns3::Inet6SocketAddress::SetPort(uint16_t port) [member function]
+ cls.add_method('SetPort',
+ 'void',
+ [param('uint16_t', 'port')])
+ return
+
+def register_Ns3InetSocketAddress_methods(root_module, cls):
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::InetSocketAddress const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::InetSocketAddress const &', 'arg0')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::Ipv4Address ipv4, uint16_t port) [constructor]
+ cls.add_constructor([param('ns3::Ipv4Address', 'ipv4'), param('uint16_t', 'port')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::Ipv4Address ipv4) [constructor]
+ cls.add_constructor([param('ns3::Ipv4Address', 'ipv4')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(uint16_t port) [constructor]
+ cls.add_constructor([param('uint16_t', 'port')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(char const * ipv4, uint16_t port) [constructor]
+ cls.add_constructor([param('char const *', 'ipv4'), param('uint16_t', 'port')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(char const * ipv4) [constructor]
+ cls.add_constructor([param('char const *', 'ipv4')])
+ ## inet-socket-address.h (module 'network'): static ns3::InetSocketAddress ns3::InetSocketAddress::ConvertFrom(ns3::Address const & address) [member function]
+ cls.add_method('ConvertFrom',
+ 'ns3::InetSocketAddress',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ ## inet-socket-address.h (module 'network'): ns3::Ipv4Address ns3::InetSocketAddress::GetIpv4() const [member function]
+ cls.add_method('GetIpv4',
+ 'ns3::Ipv4Address',
+ [],
+ is_const=True)
+ ## inet-socket-address.h (module 'network'): uint16_t ns3::InetSocketAddress::GetPort() const [member function]
+ cls.add_method('GetPort',
+ 'uint16_t',
+ [],
+ is_const=True)
+ ## inet-socket-address.h (module 'network'): static bool ns3::InetSocketAddress::IsMatchingType(ns3::Address const & address) [member function]
+ cls.add_method('IsMatchingType',
+ 'bool',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ ## inet-socket-address.h (module 'network'): void ns3::InetSocketAddress::SetIpv4(ns3::Ipv4Address address) [member function]
+ cls.add_method('SetIpv4',
+ 'void',
+ [param('ns3::Ipv4Address', 'address')])
+ ## inet-socket-address.h (module 'network'): void ns3::InetSocketAddress::SetPort(uint16_t port) [member function]
+ cls.add_method('SetPort',
+ 'void',
+ [param('uint16_t', 'port')])
+ return
+
def register_Ns3IntToType__0_methods(root_module, cls):
## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
cls.add_constructor([])
@@ -4573,6 +4678,7 @@
return
def register_Ns3Int64x64_t_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
@@ -4630,7 +4736,6 @@
cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
@@ -7259,6 +7364,26 @@
'ns3::Socket::SocketErrno',
[],
is_pure_virtual=True, is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpTos() const [member function]
+ cls.add_method('GetIpTos',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpTtl() const [member function]
+ cls.add_method('GetIpTtl',
+ 'uint8_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpv6HopLimit() const [member function]
+ cls.add_method('GetIpv6HopLimit',
+ 'uint8_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpv6Tclass() const [member function]
+ cls.add_method('GetIpv6Tclass',
+ 'uint8_t',
+ [],
+ is_const=True)
## socket.h (module 'network'): ns3::Ptr<ns3::Node> ns3::Socket::GetNode() const [member function]
cls.add_method('GetNode',
'ns3::Ptr< ns3::Node >',
@@ -7289,6 +7414,26 @@
'ns3::TypeId',
[],
is_static=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpRecvTos() const [member function]
+ cls.add_method('IsIpRecvTos',
+ 'bool',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpRecvTtl() const [member function]
+ cls.add_method('IsIpRecvTtl',
+ 'bool',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpv6RecvHopLimit() const [member function]
+ cls.add_method('IsIpv6RecvHopLimit',
+ 'bool',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpv6RecvTclass() const [member function]
+ cls.add_method('IsIpv6RecvTclass',
+ 'bool',
+ [],
+ is_const=True)
## socket.h (module 'network'): bool ns3::Socket::IsRecvPktInfo() const [member function]
cls.add_method('IsRecvPktInfo',
'bool',
@@ -7368,6 +7513,40 @@
cls.add_method('SetDataSentCallback',
'void',
[param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'dataSent')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpRecvTos(bool ipv4RecvTos) [member function]
+ cls.add_method('SetIpRecvTos',
+ 'void',
+ [param('bool', 'ipv4RecvTos')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpRecvTtl(bool ipv4RecvTtl) [member function]
+ cls.add_method('SetIpRecvTtl',
+ 'void',
+ [param('bool', 'ipv4RecvTtl')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpTos(uint8_t ipTos) [member function]
+ cls.add_method('SetIpTos',
+ 'void',
+ [param('uint8_t', 'ipTos')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpTtl(uint8_t ipTtl) [member function]
+ cls.add_method('SetIpTtl',
+ 'void',
+ [param('uint8_t', 'ipTtl')],
+ is_virtual=True)
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6HopLimit(uint8_t ipHopLimit) [member function]
+ cls.add_method('SetIpv6HopLimit',
+ 'void',
+ [param('uint8_t', 'ipHopLimit')],
+ is_virtual=True)
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6RecvHopLimit(bool ipv6RecvHopLimit) [member function]
+ cls.add_method('SetIpv6RecvHopLimit',
+ 'void',
+ [param('bool', 'ipv6RecvHopLimit')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6RecvTclass(bool ipv6RecvTclass) [member function]
+ cls.add_method('SetIpv6RecvTclass',
+ 'void',
+ [param('bool', 'ipv6RecvTclass')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6Tclass(int ipTclass) [member function]
+ cls.add_method('SetIpv6Tclass',
+ 'void',
+ [param('int', 'ipTclass')])
## socket.h (module 'network'): void ns3::Socket::SetRecvCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> arg0) [member function]
cls.add_method('SetRecvCallback',
'void',
@@ -7395,6 +7574,26 @@
'void',
[],
visibility='protected', is_virtual=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpTos() const [member function]
+ cls.add_method('IsManualIpTos',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpTtl() const [member function]
+ cls.add_method('IsManualIpTtl',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpv6HopLimit() const [member function]
+ cls.add_method('IsManualIpv6HopLimit',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpv6Tclass() const [member function]
+ cls.add_method('IsManualIpv6Tclass',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
## socket.h (module 'network'): void ns3::Socket::NotifyConnectionFailed() [member function]
cls.add_method('NotifyConnectionFailed',
'void',
@@ -7505,6 +7704,52 @@
is_static=True)
return
+def register_Ns3SocketIpTosTag_methods(root_module, cls):
+ ## socket.h (module 'network'): ns3::SocketIpTosTag::SocketIpTosTag(ns3::SocketIpTosTag const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::SocketIpTosTag const &', 'arg0')])
+ ## socket.h (module 'network'): ns3::SocketIpTosTag::SocketIpTosTag() [constructor]
+ cls.add_constructor([])
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::Deserialize(ns3::TagBuffer i) [member function]
+ cls.add_method('Deserialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_virtual=True)
+ ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpTosTag::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint32_t ns3::SocketIpTosTag::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::SocketIpTosTag::GetTos() const [member function]
+ cls.add_method('GetTos',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpTosTag::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::Serialize(ns3::TagBuffer i) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::SetTos(uint8_t tos) [member function]
+ cls.add_method('SetTos',
+ 'void',
+ [param('uint8_t', 'tos')])
+ return
+
def register_Ns3SocketIpTtlTag_methods(root_module, cls):
## socket.h (module 'network'): ns3::SocketIpTtlTag::SocketIpTtlTag(ns3::SocketIpTtlTag const & arg0) [copy constructor]
cls.add_constructor([param('ns3::SocketIpTtlTag const &', 'arg0')])
@@ -7551,6 +7796,98 @@
[param('uint8_t', 'ttl')])
return
+def register_Ns3SocketIpv6HopLimitTag_methods(root_module, cls):
+ ## socket.h (module 'network'): ns3::SocketIpv6HopLimitTag::SocketIpv6HopLimitTag(ns3::SocketIpv6HopLimitTag const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::SocketIpv6HopLimitTag const &', 'arg0')])
+ ## socket.h (module 'network'): ns3::SocketIpv6HopLimitTag::SocketIpv6HopLimitTag() [constructor]
+ cls.add_constructor([])
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::Deserialize(ns3::TagBuffer i) [member function]
+ cls.add_method('Deserialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::SocketIpv6HopLimitTag::GetHopLimit() const [member function]
+ cls.add_method('GetHopLimit',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpv6HopLimitTag::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint32_t ns3::SocketIpv6HopLimitTag::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpv6HopLimitTag::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::Serialize(ns3::TagBuffer i) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::SetHopLimit(uint8_t hopLimit) [member function]
+ cls.add_method('SetHopLimit',
+ 'void',
+ [param('uint8_t', 'hopLimit')])
+ return
+
+def register_Ns3SocketIpv6TclassTag_methods(root_module, cls):
+ ## socket.h (module 'network'): ns3::SocketIpv6TclassTag::SocketIpv6TclassTag(ns3::SocketIpv6TclassTag const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::SocketIpv6TclassTag const &', 'arg0')])
+ ## socket.h (module 'network'): ns3::SocketIpv6TclassTag::SocketIpv6TclassTag() [constructor]
+ cls.add_constructor([])
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::Deserialize(ns3::TagBuffer i) [member function]
+ cls.add_method('Deserialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_virtual=True)
+ ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpv6TclassTag::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint32_t ns3::SocketIpv6TclassTag::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::SocketIpv6TclassTag::GetTclass() const [member function]
+ cls.add_method('GetTclass',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpv6TclassTag::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::Serialize(ns3::TagBuffer i) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::SetTclass(uint8_t tclass) [member function]
+ cls.add_method('SetTclass',
+ 'void',
+ [param('uint8_t', 'tclass')])
+ return
+
def register_Ns3SocketSetDontFragmentTag_methods(root_module, cls):
## socket.h (module 'network'): ns3::SocketSetDontFragmentTag::SocketSetDontFragmentTag(ns3::SocketSetDontFragmentTag const & arg0) [copy constructor]
cls.add_constructor([param('ns3::SocketSetDontFragmentTag const &', 'arg0')])
@@ -7868,6 +8205,7 @@
return
def register_Ns3Time_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
@@ -7876,7 +8214,6 @@
cls.add_binary_comparison_operator('>')
cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## nstime.h (module 'core'): ns3::Time::Time() [constructor]
@@ -8237,11 +8574,6 @@
'uint8_t',
[],
is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
- ## udp-socket.h (module 'internet'): uint8_t ns3::UdpSocket::GetIpTtl() const [member function]
- cls.add_method('GetIpTtl',
- 'uint8_t',
- [],
- is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
## udp-socket.h (module 'internet'): bool ns3::UdpSocket::GetMtuDiscover() const [member function]
cls.add_method('GetMtuDiscover',
'bool',
@@ -8267,11 +8599,6 @@
'void',
[param('uint8_t', 'ipTtl')],
is_pure_virtual=True, visibility='private', is_virtual=True)
- ## udp-socket.h (module 'internet'): void ns3::UdpSocket::SetIpTtl(uint8_t ipTtl) [member function]
- cls.add_method('SetIpTtl',
- 'void',
- [param('uint8_t', 'ipTtl')],
- is_pure_virtual=True, visibility='private', is_virtual=True)
## udp-socket.h (module 'internet'): void ns3::UdpSocket::SetMtuDiscover(bool discover) [member function]
cls.add_method('SetMtuDiscover',
'void',
@@ -9325,10 +9652,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_pure_virtual=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
+ ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
is_pure_virtual=True, is_virtual=True)
## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
cls.add_method('ReceiveIcmp',
@@ -11173,6 +11500,10 @@
cls.add_method('SetDefaultTtl',
'void',
[param('uint8_t', 'ttl')])
+ ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetDefaultTclass(uint8_t tclass) [member function]
+ cls.add_method('SetDefaultTclass',
+ 'void',
+ [param('uint8_t', 'tclass')])
## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::Receive(ns3::Ptr<ns3::NetDevice> device, ns3::Ptr<const ns3::Packet> p, uint16_t protocol, ns3::Address const & from, ns3::Address const & to, ns3::NetDevice::PacketType packetType) [member function]
cls.add_method('Receive',
'void',
@@ -12662,10 +12993,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_virtual=True)
- ## tcp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::TcpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
+ ## tcp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::TcpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
is_virtual=True)
## tcp-l4-protocol.h (module 'internet'): void ns3::TcpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
cls.add_method('ReceiveIcmp',
@@ -12881,10 +13212,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'interface')],
is_virtual=True)
- ## udp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::UdpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
+ ## udp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::UdpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
is_virtual=True)
## udp-l4-protocol.h (module 'internet'): void ns3::UdpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
cls.add_method('ReceiveIcmp',
@@ -13201,10 +13532,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_virtual=True)
- ## icmpv4-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::Icmpv4L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
+ ## icmpv4-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::Icmpv4L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
is_virtual=True)
## icmpv4-l4-protocol.h (module 'internet'): void ns3::Icmpv4L4Protocol::SendDestUnreachFragNeeded(ns3::Ipv4Header header, ns3::Ptr<const ns3::Packet> orgData, uint16_t nextHopMtu) [member function]
cls.add_method('SendDestUnreachFragNeeded',
@@ -13323,10 +13654,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'interface')],
is_virtual=True)
- ## icmpv6-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::Icmpv6L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
+ ## icmpv6-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::Icmpv6L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
is_virtual=True)
## icmpv6-l4-protocol.h (module 'internet'): void ns3::Icmpv6L4Protocol::SendEchoReply(ns3::Ipv6Address src, ns3::Ipv6Address dst, uint16_t id, uint16_t seq, ns3::Ptr<ns3::Packet> data) [member function]
cls.add_method('SendEchoReply',
--- a/src/internet/bindings/modulegen__gcc_LP64.py Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/bindings/modulegen__gcc_LP64.py Tue Nov 20 17:52:39 2012 -0500
@@ -74,6 +74,14 @@
module.add_class('GlobalRoutingLinkRecord')
## global-router-interface.h (module 'internet'): ns3::GlobalRoutingLinkRecord::LinkType [enumeration]
module.add_enum('LinkType', ['Unknown', 'PointToPoint', 'TransitNetwork', 'StubNetwork', 'VirtualLink'], outer_class=root_module['ns3::GlobalRoutingLinkRecord'])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress [class]
+ module.add_class('Inet6SocketAddress', import_from_module='ns.network')
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress [class]
+ root_module['ns3::Inet6SocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
+ module.add_class('InetSocketAddress', import_from_module='ns.network')
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
+ root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
@@ -374,8 +382,14 @@
module.add_class('SocketAddressTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## socket-factory.h (module 'network'): ns3::SocketFactory [class]
module.add_class('SocketFactory', import_from_module='ns.network', parent=root_module['ns3::Object'])
+ ## socket.h (module 'network'): ns3::SocketIpTosTag [class]
+ module.add_class('SocketIpTosTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## socket.h (module 'network'): ns3::SocketIpTtlTag [class]
module.add_class('SocketIpTtlTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
+ ## socket.h (module 'network'): ns3::SocketIpv6HopLimitTag [class]
+ module.add_class('SocketIpv6HopLimitTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
+ ## socket.h (module 'network'): ns3::SocketIpv6TclassTag [class]
+ module.add_class('SocketIpv6TclassTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## socket.h (module 'network'): ns3::SocketSetDontFragmentTag [class]
module.add_class('SocketSetDontFragmentTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
## tcp-header.h (module 'internet'): ns3::TcpHeader [class]
@@ -653,6 +667,8 @@
register_Ns3GlobalRouteManagerLSDB_methods(root_module, root_module['ns3::GlobalRouteManagerLSDB'])
register_Ns3GlobalRoutingLSA_methods(root_module, root_module['ns3::GlobalRoutingLSA'])
register_Ns3GlobalRoutingLinkRecord_methods(root_module, root_module['ns3::GlobalRoutingLinkRecord'])
+ register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
+ register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
@@ -771,7 +787,10 @@
register_Ns3Socket_methods(root_module, root_module['ns3::Socket'])
register_Ns3SocketAddressTag_methods(root_module, root_module['ns3::SocketAddressTag'])
register_Ns3SocketFactory_methods(root_module, root_module['ns3::SocketFactory'])
+ register_Ns3SocketIpTosTag_methods(root_module, root_module['ns3::SocketIpTosTag'])
register_Ns3SocketIpTtlTag_methods(root_module, root_module['ns3::SocketIpTtlTag'])
+ register_Ns3SocketIpv6HopLimitTag_methods(root_module, root_module['ns3::SocketIpv6HopLimitTag'])
+ register_Ns3SocketIpv6TclassTag_methods(root_module, root_module['ns3::SocketIpv6TclassTag'])
register_Ns3SocketSetDontFragmentTag_methods(root_module, root_module['ns3::SocketSetDontFragmentTag'])
register_Ns3TcpHeader_methods(root_module, root_module['ns3::TcpHeader'])
register_Ns3TcpSocket_methods(root_module, root_module['ns3::TcpSocket'])
@@ -1925,6 +1944,92 @@
[param('uint16_t', 'metric')])
return
+def register_Ns3Inet6SocketAddress_methods(root_module, cls):
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Inet6SocketAddress const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::Inet6SocketAddress const &', 'arg0')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Ipv6Address ipv6, uint16_t port) [constructor]
+ cls.add_constructor([param('ns3::Ipv6Address', 'ipv6'), param('uint16_t', 'port')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Ipv6Address ipv6) [constructor]
+ cls.add_constructor([param('ns3::Ipv6Address', 'ipv6')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(uint16_t port) [constructor]
+ cls.add_constructor([param('uint16_t', 'port')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(char const * ipv6, uint16_t port) [constructor]
+ cls.add_constructor([param('char const *', 'ipv6'), param('uint16_t', 'port')])
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(char const * ipv6) [constructor]
+ cls.add_constructor([param('char const *', 'ipv6')])
+ ## inet6-socket-address.h (module 'network'): static ns3::Inet6SocketAddress ns3::Inet6SocketAddress::ConvertFrom(ns3::Address const & addr) [member function]
+ cls.add_method('ConvertFrom',
+ 'ns3::Inet6SocketAddress',
+ [param('ns3::Address const &', 'addr')],
+ is_static=True)
+ ## inet6-socket-address.h (module 'network'): ns3::Ipv6Address ns3::Inet6SocketAddress::GetIpv6() const [member function]
+ cls.add_method('GetIpv6',
+ 'ns3::Ipv6Address',
+ [],
+ is_const=True)
+ ## inet6-socket-address.h (module 'network'): uint16_t ns3::Inet6SocketAddress::GetPort() const [member function]
+ cls.add_method('GetPort',
+ 'uint16_t',
+ [],
+ is_const=True)
+ ## inet6-socket-address.h (module 'network'): static bool ns3::Inet6SocketAddress::IsMatchingType(ns3::Address const & addr) [member function]
+ cls.add_method('IsMatchingType',
+ 'bool',
+ [param('ns3::Address const &', 'addr')],
+ is_static=True)
+ ## inet6-socket-address.h (module 'network'): void ns3::Inet6SocketAddress::SetIpv6(ns3::Ipv6Address ipv6) [member function]
+ cls.add_method('SetIpv6',
+ 'void',
+ [param('ns3::Ipv6Address', 'ipv6')])
+ ## inet6-socket-address.h (module 'network'): void ns3::Inet6SocketAddress::SetPort(uint16_t port) [member function]
+ cls.add_method('SetPort',
+ 'void',
+ [param('uint16_t', 'port')])
+ return
+
+def register_Ns3InetSocketAddress_methods(root_module, cls):
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::InetSocketAddress const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::InetSocketAddress const &', 'arg0')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::Ipv4Address ipv4, uint16_t port) [constructor]
+ cls.add_constructor([param('ns3::Ipv4Address', 'ipv4'), param('uint16_t', 'port')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::Ipv4Address ipv4) [constructor]
+ cls.add_constructor([param('ns3::Ipv4Address', 'ipv4')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(uint16_t port) [constructor]
+ cls.add_constructor([param('uint16_t', 'port')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(char const * ipv4, uint16_t port) [constructor]
+ cls.add_constructor([param('char const *', 'ipv4'), param('uint16_t', 'port')])
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(char const * ipv4) [constructor]
+ cls.add_constructor([param('char const *', 'ipv4')])
+ ## inet-socket-address.h (module 'network'): static ns3::InetSocketAddress ns3::InetSocketAddress::ConvertFrom(ns3::Address const & address) [member function]
+ cls.add_method('ConvertFrom',
+ 'ns3::InetSocketAddress',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ ## inet-socket-address.h (module 'network'): ns3::Ipv4Address ns3::InetSocketAddress::GetIpv4() const [member function]
+ cls.add_method('GetIpv4',
+ 'ns3::Ipv4Address',
+ [],
+ is_const=True)
+ ## inet-socket-address.h (module 'network'): uint16_t ns3::InetSocketAddress::GetPort() const [member function]
+ cls.add_method('GetPort',
+ 'uint16_t',
+ [],
+ is_const=True)
+ ## inet-socket-address.h (module 'network'): static bool ns3::InetSocketAddress::IsMatchingType(ns3::Address const & address) [member function]
+ cls.add_method('IsMatchingType',
+ 'bool',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ ## inet-socket-address.h (module 'network'): void ns3::InetSocketAddress::SetIpv4(ns3::Ipv4Address address) [member function]
+ cls.add_method('SetIpv4',
+ 'void',
+ [param('ns3::Ipv4Address', 'address')])
+ ## inet-socket-address.h (module 'network'): void ns3::InetSocketAddress::SetPort(uint16_t port) [member function]
+ cls.add_method('SetPort',
+ 'void',
+ [param('uint16_t', 'port')])
+ return
+
def register_Ns3IntToType__0_methods(root_module, cls):
## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
cls.add_constructor([])
@@ -4573,6 +4678,7 @@
return
def register_Ns3Int64x64_t_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
@@ -4630,7 +4736,6 @@
cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
@@ -7259,6 +7364,26 @@
'ns3::Socket::SocketErrno',
[],
is_pure_virtual=True, is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpTos() const [member function]
+ cls.add_method('GetIpTos',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpTtl() const [member function]
+ cls.add_method('GetIpTtl',
+ 'uint8_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpv6HopLimit() const [member function]
+ cls.add_method('GetIpv6HopLimit',
+ 'uint8_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::Socket::GetIpv6Tclass() const [member function]
+ cls.add_method('GetIpv6Tclass',
+ 'uint8_t',
+ [],
+ is_const=True)
## socket.h (module 'network'): ns3::Ptr<ns3::Node> ns3::Socket::GetNode() const [member function]
cls.add_method('GetNode',
'ns3::Ptr< ns3::Node >',
@@ -7289,6 +7414,26 @@
'ns3::TypeId',
[],
is_static=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpRecvTos() const [member function]
+ cls.add_method('IsIpRecvTos',
+ 'bool',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpRecvTtl() const [member function]
+ cls.add_method('IsIpRecvTtl',
+ 'bool',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpv6RecvHopLimit() const [member function]
+ cls.add_method('IsIpv6RecvHopLimit',
+ 'bool',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsIpv6RecvTclass() const [member function]
+ cls.add_method('IsIpv6RecvTclass',
+ 'bool',
+ [],
+ is_const=True)
## socket.h (module 'network'): bool ns3::Socket::IsRecvPktInfo() const [member function]
cls.add_method('IsRecvPktInfo',
'bool',
@@ -7368,6 +7513,40 @@
cls.add_method('SetDataSentCallback',
'void',
[param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'dataSent')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpRecvTos(bool ipv4RecvTos) [member function]
+ cls.add_method('SetIpRecvTos',
+ 'void',
+ [param('bool', 'ipv4RecvTos')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpRecvTtl(bool ipv4RecvTtl) [member function]
+ cls.add_method('SetIpRecvTtl',
+ 'void',
+ [param('bool', 'ipv4RecvTtl')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpTos(uint8_t ipTos) [member function]
+ cls.add_method('SetIpTos',
+ 'void',
+ [param('uint8_t', 'ipTos')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpTtl(uint8_t ipTtl) [member function]
+ cls.add_method('SetIpTtl',
+ 'void',
+ [param('uint8_t', 'ipTtl')],
+ is_virtual=True)
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6HopLimit(uint8_t ipHopLimit) [member function]
+ cls.add_method('SetIpv6HopLimit',
+ 'void',
+ [param('uint8_t', 'ipHopLimit')],
+ is_virtual=True)
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6RecvHopLimit(bool ipv6RecvHopLimit) [member function]
+ cls.add_method('SetIpv6RecvHopLimit',
+ 'void',
+ [param('bool', 'ipv6RecvHopLimit')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6RecvTclass(bool ipv6RecvTclass) [member function]
+ cls.add_method('SetIpv6RecvTclass',
+ 'void',
+ [param('bool', 'ipv6RecvTclass')])
+ ## socket.h (module 'network'): void ns3::Socket::SetIpv6Tclass(int ipTclass) [member function]
+ cls.add_method('SetIpv6Tclass',
+ 'void',
+ [param('int', 'ipTclass')])
## socket.h (module 'network'): void ns3::Socket::SetRecvCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> arg0) [member function]
cls.add_method('SetRecvCallback',
'void',
@@ -7395,6 +7574,26 @@
'void',
[],
visibility='protected', is_virtual=True)
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpTos() const [member function]
+ cls.add_method('IsManualIpTos',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpTtl() const [member function]
+ cls.add_method('IsManualIpTtl',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpv6HopLimit() const [member function]
+ cls.add_method('IsManualIpv6HopLimit',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
+ ## socket.h (module 'network'): bool ns3::Socket::IsManualIpv6Tclass() const [member function]
+ cls.add_method('IsManualIpv6Tclass',
+ 'bool',
+ [],
+ is_const=True, visibility='protected')
## socket.h (module 'network'): void ns3::Socket::NotifyConnectionFailed() [member function]
cls.add_method('NotifyConnectionFailed',
'void',
@@ -7505,6 +7704,52 @@
is_static=True)
return
+def register_Ns3SocketIpTosTag_methods(root_module, cls):
+ ## socket.h (module 'network'): ns3::SocketIpTosTag::SocketIpTosTag(ns3::SocketIpTosTag const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::SocketIpTosTag const &', 'arg0')])
+ ## socket.h (module 'network'): ns3::SocketIpTosTag::SocketIpTosTag() [constructor]
+ cls.add_constructor([])
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::Deserialize(ns3::TagBuffer i) [member function]
+ cls.add_method('Deserialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_virtual=True)
+ ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpTosTag::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint32_t ns3::SocketIpTosTag::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::SocketIpTosTag::GetTos() const [member function]
+ cls.add_method('GetTos',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpTosTag::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::Serialize(ns3::TagBuffer i) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpTosTag::SetTos(uint8_t tos) [member function]
+ cls.add_method('SetTos',
+ 'void',
+ [param('uint8_t', 'tos')])
+ return
+
def register_Ns3SocketIpTtlTag_methods(root_module, cls):
## socket.h (module 'network'): ns3::SocketIpTtlTag::SocketIpTtlTag(ns3::SocketIpTtlTag const & arg0) [copy constructor]
cls.add_constructor([param('ns3::SocketIpTtlTag const &', 'arg0')])
@@ -7551,6 +7796,98 @@
[param('uint8_t', 'ttl')])
return
+def register_Ns3SocketIpv6HopLimitTag_methods(root_module, cls):
+ ## socket.h (module 'network'): ns3::SocketIpv6HopLimitTag::SocketIpv6HopLimitTag(ns3::SocketIpv6HopLimitTag const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::SocketIpv6HopLimitTag const &', 'arg0')])
+ ## socket.h (module 'network'): ns3::SocketIpv6HopLimitTag::SocketIpv6HopLimitTag() [constructor]
+ cls.add_constructor([])
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::Deserialize(ns3::TagBuffer i) [member function]
+ cls.add_method('Deserialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::SocketIpv6HopLimitTag::GetHopLimit() const [member function]
+ cls.add_method('GetHopLimit',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpv6HopLimitTag::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint32_t ns3::SocketIpv6HopLimitTag::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpv6HopLimitTag::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::Serialize(ns3::TagBuffer i) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6HopLimitTag::SetHopLimit(uint8_t hopLimit) [member function]
+ cls.add_method('SetHopLimit',
+ 'void',
+ [param('uint8_t', 'hopLimit')])
+ return
+
+def register_Ns3SocketIpv6TclassTag_methods(root_module, cls):
+ ## socket.h (module 'network'): ns3::SocketIpv6TclassTag::SocketIpv6TclassTag(ns3::SocketIpv6TclassTag const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::SocketIpv6TclassTag const &', 'arg0')])
+ ## socket.h (module 'network'): ns3::SocketIpv6TclassTag::SocketIpv6TclassTag() [constructor]
+ cls.add_constructor([])
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::Deserialize(ns3::TagBuffer i) [member function]
+ cls.add_method('Deserialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_virtual=True)
+ ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpv6TclassTag::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint32_t ns3::SocketIpv6TclassTag::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): uint8_t ns3::SocketIpv6TclassTag::GetTclass() const [member function]
+ cls.add_method('GetTclass',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpv6TclassTag::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::Serialize(ns3::TagBuffer i) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_const=True, is_virtual=True)
+ ## socket.h (module 'network'): void ns3::SocketIpv6TclassTag::SetTclass(uint8_t tclass) [member function]
+ cls.add_method('SetTclass',
+ 'void',
+ [param('uint8_t', 'tclass')])
+ return
+
def register_Ns3SocketSetDontFragmentTag_methods(root_module, cls):
## socket.h (module 'network'): ns3::SocketSetDontFragmentTag::SocketSetDontFragmentTag(ns3::SocketSetDontFragmentTag const & arg0) [copy constructor]
cls.add_constructor([param('ns3::SocketSetDontFragmentTag const &', 'arg0')])
@@ -7868,6 +8205,7 @@
return
def register_Ns3Time_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
@@ -7876,7 +8214,6 @@
cls.add_binary_comparison_operator('>')
cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## nstime.h (module 'core'): ns3::Time::Time() [constructor]
@@ -8237,11 +8574,6 @@
'uint8_t',
[],
is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
- ## udp-socket.h (module 'internet'): uint8_t ns3::UdpSocket::GetIpTtl() const [member function]
- cls.add_method('GetIpTtl',
- 'uint8_t',
- [],
- is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
## udp-socket.h (module 'internet'): bool ns3::UdpSocket::GetMtuDiscover() const [member function]
cls.add_method('GetMtuDiscover',
'bool',
@@ -8267,11 +8599,6 @@
'void',
[param('uint8_t', 'ipTtl')],
is_pure_virtual=True, visibility='private', is_virtual=True)
- ## udp-socket.h (module 'internet'): void ns3::UdpSocket::SetIpTtl(uint8_t ipTtl) [member function]
- cls.add_method('SetIpTtl',
- 'void',
- [param('uint8_t', 'ipTtl')],
- is_pure_virtual=True, visibility='private', is_virtual=True)
## udp-socket.h (module 'internet'): void ns3::UdpSocket::SetMtuDiscover(bool discover) [member function]
cls.add_method('SetMtuDiscover',
'void',
@@ -9325,10 +9652,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_pure_virtual=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
+ ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
is_pure_virtual=True, is_virtual=True)
## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
cls.add_method('ReceiveIcmp',
@@ -11173,6 +11500,10 @@
cls.add_method('SetDefaultTtl',
'void',
[param('uint8_t', 'ttl')])
+ ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetDefaultTclass(uint8_t tclass) [member function]
+ cls.add_method('SetDefaultTclass',
+ 'void',
+ [param('uint8_t', 'tclass')])
## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::Receive(ns3::Ptr<ns3::NetDevice> device, ns3::Ptr<const ns3::Packet> p, uint16_t protocol, ns3::Address const & from, ns3::Address const & to, ns3::NetDevice::PacketType packetType) [member function]
cls.add_method('Receive',
'void',
@@ -12662,10 +12993,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_virtual=True)
- ## tcp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::TcpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
+ ## tcp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::TcpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
is_virtual=True)
## tcp-l4-protocol.h (module 'internet'): void ns3::TcpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
cls.add_method('ReceiveIcmp',
@@ -12881,10 +13212,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'interface')],
is_virtual=True)
- ## udp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::UdpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
+ ## udp-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::UdpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
is_virtual=True)
## udp-l4-protocol.h (module 'internet'): void ns3::UdpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
cls.add_method('ReceiveIcmp',
@@ -13201,10 +13532,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
is_virtual=True)
- ## icmpv4-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::Icmpv4L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
+ ## icmpv4-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::Icmpv4L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
is_virtual=True)
## icmpv4-l4-protocol.h (module 'internet'): void ns3::Icmpv4L4Protocol::SendDestUnreachFragNeeded(ns3::Ipv4Header header, ns3::Ptr<const ns3::Packet> orgData, uint16_t nextHopMtu) [member function]
cls.add_method('SendDestUnreachFragNeeded',
@@ -13323,10 +13654,10 @@
'ns3::IpL4Protocol::RxStatus',
[param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'interface')],
is_virtual=True)
- ## icmpv6-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::Icmpv6L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address & src, ns3::Ipv6Address & dst, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
+ ## icmpv6-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::Icmpv6L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> interface) [member function]
cls.add_method('Receive',
'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address &', 'src'), param('ns3::Ipv6Address &', 'dst'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
+ [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'interface')],
is_virtual=True)
## icmpv6-l4-protocol.h (module 'internet'): void ns3::Icmpv6L4Protocol::SendEchoReply(ns3::Ipv6Address src, ns3::Ipv6Address dst, uint16_t id, uint16_t seq, ns3::Ptr<ns3::Packet> data) [member function]
cls.add_method('SendEchoReply',
--- a/src/internet/model/icmpv4-l4-protocol.cc Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/icmpv4-l4-protocol.cc Tue Nov 20 17:52:39 2012 -0500
@@ -246,11 +246,10 @@
}
enum IpL4Protocol::RxStatus
Icmpv4L4Protocol::Receive (Ptr<Packet> p,
- Ipv6Address &src,
- Ipv6Address &dst,
+ Ipv6Header const &header,
Ptr<Ipv6Interface> incomingInterface)
{
- NS_LOG_FUNCTION (this << p << src << dst << incomingInterface);
+ NS_LOG_FUNCTION (this << p << header.GetSourceAddress () << header.GetDestinationAddress () << incomingInterface);
return IpL4Protocol::RX_ENDPOINT_UNREACH;
}
void
--- a/src/internet/model/icmpv4-l4-protocol.h Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/icmpv4-l4-protocol.h Tue Nov 20 17:52:39 2012 -0500
@@ -28,8 +28,7 @@
Ipv4Header const &header,
Ptr<Ipv4Interface> incomingInterface);
virtual enum IpL4Protocol::RxStatus Receive (Ptr<Packet> p,
- Ipv6Address &src,
- Ipv6Address &dst,
+ Ipv6Header const &header,
Ptr<Ipv6Interface> incomingInterface);
void SendDestUnreachFragNeeded (Ipv4Header header, Ptr<const Packet> orgData, uint16_t nextHopMtu);
--- a/src/internet/model/icmpv6-l4-protocol.cc Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/icmpv6-l4-protocol.cc Tue Nov 20 17:52:39 2012 -0500
@@ -182,9 +182,9 @@
return IpL4Protocol::RX_ENDPOINT_UNREACH;
}
-enum IpL4Protocol::RxStatus Icmpv6L4Protocol::Receive (Ptr<Packet> packet, Ipv6Address &src, Ipv6Address &dst, Ptr<Ipv6Interface> interface)
+enum IpL4Protocol::RxStatus Icmpv6L4Protocol::Receive (Ptr<Packet> packet, Ipv6Header const &header, Ptr<Ipv6Interface> interface)
{
- NS_LOG_FUNCTION (this << packet << src << dst << interface);
+ NS_LOG_FUNCTION (this << packet << header.GetSourceAddress () << header.GetDestinationAddress () << interface);
Ptr<Packet> p = packet->Copy ();
Ptr<Ipv6> ipv6 = m_node->GetObject<Ipv6> ();
@@ -197,26 +197,26 @@
case Icmpv6Header::ICMPV6_ND_ROUTER_SOLICITATION:
if (ipv6->IsForwarding (ipv6->GetInterfaceForDevice (interface->GetDevice ())))
{
- HandleRS (p, src, dst, interface);
+ HandleRS (p, header.GetSourceAddress (), header.GetDestinationAddress (), interface);
}
break;
case Icmpv6Header::ICMPV6_ND_ROUTER_ADVERTISEMENT:
if (!ipv6->IsForwarding (ipv6->GetInterfaceForDevice (interface->GetDevice ())))
{
- HandleRA (p, src, dst, interface);
+ HandleRA (p, header.GetSourceAddress (), header.GetDestinationAddress (), interface);
}
break;
case Icmpv6Header::ICMPV6_ND_NEIGHBOR_SOLICITATION:
- HandleNS (p, src, dst, interface);
+ HandleNS (p, header.GetSourceAddress (), header.GetDestinationAddress (), interface);
break;
case Icmpv6Header::ICMPV6_ND_NEIGHBOR_ADVERTISEMENT:
- HandleNA (p, src, dst, interface);
+ HandleNA (p, header.GetSourceAddress (), header.GetDestinationAddress (), interface);
break;
case Icmpv6Header::ICMPV6_ND_REDIRECTION:
- HandleRedirection (p, src, dst, interface);
+ HandleRedirection (p, header.GetSourceAddress (), header.GetDestinationAddress (), interface);
break;
case Icmpv6Header::ICMPV6_ECHO_REQUEST:
- HandleEchoRequest (p, src, dst, interface);
+ HandleEchoRequest (p, header.GetSourceAddress (), header.GetDestinationAddress (), interface);
break;
case Icmpv6Header::ICMPV6_ECHO_REPLY:
// EchoReply does not contain any info about L4
@@ -224,16 +224,16 @@
// TODO: implement request / reply consistency check.
break;
case Icmpv6Header::ICMPV6_ERROR_DESTINATION_UNREACHABLE:
- HandleDestinationUnreachable (p, src, dst, interface);
+ HandleDestinationUnreachable (p, header.GetSourceAddress (), header.GetDestinationAddress (), interface);
break;
case Icmpv6Header::ICMPV6_ERROR_PACKET_TOO_BIG:
- HandlePacketTooBig (p, src, dst, interface);
+ HandlePacketTooBig (p, header.GetSourceAddress (), header.GetDestinationAddress (), interface);
break;
case Icmpv6Header::ICMPV6_ERROR_TIME_EXCEEDED:
- HandleTimeExceeded (p, src, dst, interface);
+ HandleTimeExceeded (p, header.GetSourceAddress (), header.GetDestinationAddress (), interface);
break;
case Icmpv6Header::ICMPV6_ERROR_PARAMETER_ERROR:
- HandleParameterError (p, src, dst, interface);
+ HandleParameterError (p, header.GetSourceAddress (), header.GetDestinationAddress (), interface);
break;
default:
NS_LOG_LOGIC ("Unknown ICMPv6 message type=" << type);
--- a/src/internet/model/icmpv6-l4-protocol.h Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/icmpv6-l4-protocol.h Tue Nov 20 17:52:39 2012 -0500
@@ -339,7 +339,7 @@
* \param interface the interface from which the packet is coming
*/
virtual enum IpL4Protocol::RxStatus Receive (Ptr<Packet> p,
- Ipv6Address &src, Ipv6Address &dst,
+ Ipv6Header const &header,
Ptr<Ipv6Interface> interface);
/**
--- a/src/internet/model/ip-l4-protocol.h Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/ip-l4-protocol.h Tue Nov 20 17:52:39 2012 -0500
@@ -75,8 +75,7 @@
Ipv4Header const &header,
Ptr<Ipv4Interface> incomingInterface) = 0;
virtual enum RxStatus Receive (Ptr<Packet> p,
- Ipv6Address &src,
- Ipv6Address &dst,
+ Ipv6Header const &header,
Ptr<Ipv6Interface> incomingInterface) = 0;
/**
--- a/src/internet/model/ipv4-l3-protocol.cc Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/ipv4-l3-protocol.cc Tue Nov 20 17:52:39 2012 -0500
@@ -54,6 +54,10 @@
static TypeId tid = TypeId ("ns3::Ipv4L3Protocol")
.SetParent<Ipv4> ()
.AddConstructor<Ipv4L3Protocol> ()
+ .AddAttribute ("DefaultTos", "The TOS value set by default on all outgoing packets generated on this node.",
+ UintegerValue (0),
+ MakeUintegerAccessor (&Ipv4L3Protocol::m_defaultTos),
+ MakeUintegerChecker<uint8_t> ())
.AddAttribute ("DefaultTtl", "The TTL value set by default on all outgoing packets generated on this node.",
UintegerValue (64),
MakeUintegerAccessor (&Ipv4L3Protocol::m_defaultTtl),
@@ -87,6 +91,7 @@
Ipv4L3Protocol::Ipv4L3Protocol()
: m_identification (0)
+
{
NS_LOG_FUNCTION (this);
}
@@ -558,6 +563,14 @@
ttl = tag.GetTtl ();
}
+ uint8_t tos = m_defaultTos;
+ SocketIpTosTag ipTosTag;
+ found = packet->RemovePacketTag (ipTosTag);
+ if (found)
+ {
+ tos = ipTosTag.GetTos ();
+ }
+
// Handle a few cases:
// 1) packet is destined to limited broadcast address
// 2) packet is destined to a subnet-directed broadcast address
@@ -569,7 +582,7 @@
if (destination.IsBroadcast () || destination.IsLocalMulticast ())
{
NS_LOG_LOGIC ("Ipv4L3Protocol::Send case 1: limited broadcast");
- ipHeader = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, mayFragment);
+ ipHeader = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, tos, mayFragment);
uint32_t ifaceIndex = 0;
for (Ipv4InterfaceList::iterator ifaceIter = m_interfaces.begin ();
ifaceIter != m_interfaces.end (); ifaceIter++, ifaceIndex++)
@@ -601,7 +614,7 @@
destination.CombineMask (ifAddr.GetMask ()) == ifAddr.GetLocal ().CombineMask (ifAddr.GetMask ()) )
{
NS_LOG_LOGIC ("Ipv4L3Protocol::Send case 2: subnet directed bcast to " << ifAddr.GetLocal ());
- ipHeader = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, mayFragment);
+ ipHeader = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, tos, mayFragment);
Ptr<Packet> packetCopy = packet->Copy ();
m_sendOutgoingTrace (ipHeader, packetCopy, ifaceIndex);
packetCopy->AddHeader (ipHeader);
@@ -617,7 +630,7 @@
if (route && route->GetGateway () != Ipv4Address ())
{
NS_LOG_LOGIC ("Ipv4L3Protocol::Send case 3: passed in with route");
- ipHeader = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, mayFragment);
+ ipHeader = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, tos, mayFragment);
int32_t interface = GetInterfaceForDevice (route->GetOutputDevice ());
m_sendOutgoingTrace (ipHeader, packet, interface);
SendRealOut (route, packet->Copy (), ipHeader);
@@ -636,7 +649,7 @@
NS_LOG_LOGIC ("Ipv4L3Protocol::Send case 5: passed in with no route " << destination);
Socket::SocketErrno errno_;
Ptr<NetDevice> oif (0); // unused for now
- ipHeader = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, mayFragment);
+ ipHeader = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, tos, mayFragment);
Ptr<Ipv4Route> newRoute;
if (m_routingProtocol != 0)
{
@@ -669,6 +682,7 @@
uint8_t protocol,
uint16_t payloadSize,
uint8_t ttl,
+ uint8_t tos,
bool mayFragment)
{
NS_LOG_FUNCTION (this << source << destination << (uint16_t)protocol << payloadSize << (uint16_t)ttl << mayFragment);
@@ -678,6 +692,7 @@
ipHeader.SetProtocol (protocol);
ipHeader.SetPayloadSize (payloadSize);
ipHeader.SetTtl (ttl);
+ ipHeader.SetTos (tos);
if (mayFragment == true)
{
ipHeader.SetMayFragment ();
@@ -704,7 +719,6 @@
Ipv4Header const &ipHeader)
{
NS_LOG_FUNCTION (this << packet << &ipHeader);
-
if (route == 0)
{
NS_LOG_WARN ("No route to host. Drop.");
--- a/src/internet/model/ipv4-l3-protocol.h Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/ipv4-l3-protocol.h Tue Nov 20 17:52:39 2012 -0500
@@ -234,6 +234,7 @@
uint8_t protocol,
uint16_t payloadSize,
uint8_t ttl,
+ uint8_t tos,
bool mayFragment);
void
@@ -297,6 +298,7 @@
bool m_weakEsModel;
L4List_t m_protocols;
Ipv4InterfaceList m_interfaces;
+ uint8_t m_defaultTos;
uint8_t m_defaultTtl;
uint16_t m_identification;
Ptr<Node> m_node;
--- a/src/internet/model/ipv6-end-point.cc Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/ipv6-end-point.cc Tue Nov 20 17:52:39 2012 -0500
@@ -84,7 +84,7 @@
m_peerPort = port;
}
-void Ipv6EndPoint::SetRxCallback (Callback<void, Ptr<Packet>, Ipv6Address, Ipv6Address, uint16_t> callback)
+void Ipv6EndPoint::SetRxCallback (Callback<void, Ptr<Packet>, Ipv6Header, uint16_t> callback)
{
m_rxCallback = callback;
}
@@ -99,11 +99,11 @@
m_destroyCallback = callback;
}
-void Ipv6EndPoint::ForwardUp (Ptr<Packet> p, Ipv6Address srcAddr, Ipv6Address dstAddr, uint16_t port)
+void Ipv6EndPoint::ForwardUp (Ptr<Packet> p, Ipv6Header header, uint16_t port)
{
if (!m_rxCallback.IsNull ())
{
- m_rxCallback (p, srcAddr, dstAddr, port);
+ m_rxCallback (p, header, port);
}
}
@@ -117,9 +117,9 @@
}
}
-void Ipv6EndPoint::DoForwardUp (Ptr<Packet> p, Ipv6Address saddr, Ipv6Address daddr, uint16_t sport)
+void Ipv6EndPoint::DoForwardUp (Ptr<Packet> p, Ipv6Header header, uint16_t sport)
{
- m_rxCallback (p, saddr, daddr, sport);
+ m_rxCallback (p, header, sport);
}
void Ipv6EndPoint::DoForwardIcmp (Ipv6Address src, uint8_t ttl, uint8_t type,
--- a/src/internet/model/ipv6-end-point.h Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/ipv6-end-point.h Tue Nov 20 17:52:39 2012 -0500
@@ -25,6 +25,7 @@
#include "ns3/ipv6-address.h"
#include "ns3/callback.h"
+#include "ns3/ipv6-header.h"
namespace ns3
{
@@ -98,7 +99,7 @@
* \brief Set the reception callback.
* \param callback callback function
*/
- void SetRxCallback (Callback<void, Ptr<Packet>, Ipv6Address, Ipv6Address, uint16_t> callback);
+ void SetRxCallback (Callback<void, Ptr<Packet>, Ipv6Header, uint16_t> callback);
/**
* \brief Set the ICMP callback.
@@ -119,7 +120,7 @@
* \param dstAddr source address
* \param port source port
*/
- void ForwardUp (Ptr<Packet> p, Ipv6Address srcAddr, Ipv6Address dstAddr, uint16_t port);
+ void ForwardUp (Ptr<Packet> p, Ipv6Header header, uint16_t port);
/**
* \brief Function called from an L4Protocol implementation
@@ -141,7 +142,7 @@
* \param daddr dest IPv6 address
* \param sport source port
*/
- void DoForwardUp (Ptr<Packet> p, Ipv6Address saddr, Ipv6Address daddr, uint16_t sport);
+ void DoForwardUp (Ptr<Packet> p, Ipv6Header header, uint16_t sport);
/**
* \brief ForwardIcmp wrapper.
@@ -177,7 +178,7 @@
/**
* \brief The RX callback.
*/
- Callback<void, Ptr<Packet>, Ipv6Address, Ipv6Address, uint16_t> m_rxCallback;
+ Callback<void, Ptr<Packet>, Ipv6Header, uint16_t> m_rxCallback;
/**
* \brief The ICMPv6 callback.
--- a/src/internet/model/ipv6-l3-protocol.cc Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/ipv6-l3-protocol.cc Tue Nov 20 17:52:39 2012 -0500
@@ -59,6 +59,10 @@
UintegerValue (64),
MakeUintegerAccessor (&Ipv6L3Protocol::m_defaultTtl),
MakeUintegerChecker<uint8_t> ())
+ .AddAttribute ("DefaultTclass", "The TCLASS value set by default on all outgoing packets generated on this node.",
+ UintegerValue (0),
+ MakeUintegerAccessor (&Ipv6L3Protocol::m_defaultTclass),
+ MakeUintegerChecker<uint8_t> ())
.AddAttribute ("InterfaceList", "The set of IPv6 interfaces associated to this IPv6 stack.",
ObjectVectorValue (),
MakeObjectVectorAccessor (&Ipv6L3Protocol::m_interfaces),
@@ -605,17 +609,32 @@
m_defaultTtl = ttl;
}
+void Ipv6L3Protocol::SetDefaultTclass (uint8_t tclass)
+{
+ NS_LOG_FUNCTION (this << tclass);
+ m_defaultTclass = tclass;
+}
+
void Ipv6L3Protocol::Send (Ptr<Packet> packet, Ipv6Address source, Ipv6Address destination, uint8_t protocol, Ptr<Ipv6Route> route)
{
NS_LOG_FUNCTION (this << packet << source << destination << (uint32_t)protocol << route);
Ipv6Header hdr;
uint8_t ttl = m_defaultTtl;
- SocketIpTtlTag tag;
+ SocketIpv6HopLimitTag tag;
bool found = packet->RemovePacketTag (tag);
if (found)
{
- ttl = tag.GetTtl ();
+ ttl = tag.GetHopLimit ();
+ }
+
+ SocketIpv6TclassTag tclassTag;
+ uint8_t tclass = m_defaultTclass;
+ found = packet->RemovePacketTag (tclassTag);
+
+ if (found)
+ {
+ tclass = tclassTag.GetTclass ();
}
/* Handle 3 cases:
@@ -628,7 +647,7 @@
if (route && route->GetGateway () != Ipv6Address::GetZero ())
{
NS_LOG_LOGIC ("Ipv6L3Protocol::Send case 1: passed in with a route");
- hdr = BuildHeader (source, destination, protocol, packet->GetSize (), ttl);
+ hdr = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, tclass);
SendRealOut (route, packet, hdr);
return;
}
@@ -638,7 +657,7 @@
{
NS_LOG_LOGIC ("Ipv6L3Protocol::Send case 1: probably sent to machine on same IPv6 network");
/* NS_FATAL_ERROR ("This case is not yet implemented"); */
- hdr = BuildHeader (source, destination, protocol, packet->GetSize (), ttl);
+ hdr = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, tclass);
SendRealOut (route, packet, hdr);
return;
}
@@ -649,7 +668,7 @@
Ptr<NetDevice> oif (0);
Ptr<Ipv6Route> newRoute = 0;
- hdr = BuildHeader (source, destination, protocol, packet->GetSize (), ttl);
+ hdr = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, tclass);
//for link-local traffic, we need to determine the interface
if (source.IsLinkLocal ()
@@ -1034,7 +1053,7 @@
/* L4 protocol */
Ptr<Packet> copy = p->Copy ();
- enum IpL4Protocol::RxStatus status = protocol->Receive (p, src, dst, GetInterface (iif));
+ enum IpL4Protocol::RxStatus status = protocol->Receive (p, ip, GetInterface (iif));
switch (status)
{
@@ -1067,9 +1086,9 @@
m_dropTrace (ipHeader, p, DROP_ROUTE_ERROR, m_node->GetObject<Ipv6> (), 0);
}
-Ipv6Header Ipv6L3Protocol::BuildHeader (Ipv6Address src, Ipv6Address dst, uint8_t protocol, uint16_t payloadSize, uint8_t ttl)
+Ipv6Header Ipv6L3Protocol::BuildHeader (Ipv6Address src, Ipv6Address dst, uint8_t protocol, uint16_t payloadSize, uint8_t ttl, uint8_t tclass)
{
- NS_LOG_FUNCTION (this << src << dst << (uint32_t)protocol << (uint32_t)payloadSize << (uint32_t)ttl);
+ NS_LOG_FUNCTION (this << src << dst << (uint32_t)protocol << (uint32_t)payloadSize << (uint32_t)ttl << (uint32_t)tclass);
Ipv6Header hdr;
hdr.SetSourceAddress (src);
@@ -1077,6 +1096,7 @@
hdr.SetNextHeader (protocol);
hdr.SetPayloadLength (payloadSize);
hdr.SetHopLimit (ttl);
+ hdr.SetTrafficClass (tclass);
return hdr;
}
--- a/src/internet/model/ipv6-l3-protocol.h Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/ipv6-l3-protocol.h Tue Nov 20 17:52:39 2012 -0500
@@ -136,6 +136,12 @@
void SetDefaultTtl (uint8_t ttl);
/**
+ * \brief Set the default TCLASS.
+ * \param tclass TCLASS to set
+ */
+ void SetDefaultTclass (uint8_t tclass);
+
+ /**
* \brief Receive method when a packet arrive in the stack.
* This method removes IPv6 header and forward up to L4 protocol.
*
@@ -398,11 +404,11 @@
* \param dst destination IPv6 address
* \param protocol L4 protocol
* \param payloadSize payload size
- * \param ttl TTL
+ * \param hopLimit Hop limit
* \return newly created IPv6 header
*/
Ipv6Header BuildHeader (Ipv6Address src, Ipv6Address dst, uint8_t protocol,
- uint16_t payloadSize, uint8_t ttl);
+ uint16_t payloadSize, uint8_t hopLimit, uint8_t tclass);
/**
* \brief Send packet with route.
@@ -511,6 +517,11 @@
uint8_t m_defaultTtl;
/**
+ * \brief Default TCLASS for outgoing packets.
+ */
+ uint8_t m_defaultTclass;
+
+ /**
* \brief Routing protocol.
*/
Ptr<Ipv6RoutingProtocol> m_routingProtocol;
--- a/src/internet/model/tcp-l4-protocol.cc Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/tcp-l4-protocol.cc Tue Nov 20 17:52:39 2012 -0500
@@ -377,9 +377,12 @@
{
NS_LOG_LOGIC (" No Ipv4 endpoints matched on TcpL4Protocol, trying Ipv6 "<<this);
Ptr<Ipv6Interface> fakeInterface;
+ Ipv6Header ipv6Header;
Ipv6Address src = Ipv6Address::MakeIpv4MappedAddress (ipHeader.GetSource ());
Ipv6Address dst = Ipv6Address::MakeIpv4MappedAddress (ipHeader.GetDestination ());
- return (this->Receive (packet, src, dst, fakeInterface));
+ ipv6Header.SetSourceAddress (src);
+ ipv6Header.SetDestinationAddress (dst);
+ return (this->Receive (packet, ipv6Header, fakeInterface));
}
NS_LOG_LOGIC (" No endpoints matched on TcpL4Protocol "<<this);
@@ -427,11 +430,10 @@
enum IpL4Protocol::RxStatus
TcpL4Protocol::Receive (Ptr<Packet> packet,
- Ipv6Address &src,
- Ipv6Address &dst,
+ Ipv6Header const &ipHeader,
Ptr<Ipv6Interface> interface)
{
- NS_LOG_FUNCTION (this << packet << src << dst);
+ NS_LOG_FUNCTION (this << packet << ipHeader.GetSourceAddress () << ipHeader.GetDestinationAddress ());
TcpHeader tcpHeader;
@@ -442,7 +444,7 @@
if(Node::ChecksumEnabled ())
{
tcpHeader.EnableChecksums ();
- tcpHeader.InitializeChecksum (src, dst, PROT_NUMBER);
+ tcpHeader.InitializeChecksum (ipHeader.GetSourceAddress (), ipHeader.GetDestinationAddress (), PROT_NUMBER);
}
packet->PeekHeader (tcpHeader);
@@ -461,16 +463,16 @@
NS_LOG_LOGIC ("TcpL4Protocol "<<this<<" received a packet");
Ipv6EndPointDemux::EndPoints endPoints =
- m_endPoints6->Lookup (dst, tcpHeader.GetDestinationPort (),
- src, tcpHeader.GetSourcePort (),interface);
+ m_endPoints6->Lookup (ipHeader.GetDestinationAddress (), tcpHeader.GetDestinationPort (),
+ ipHeader.GetSourceAddress (), tcpHeader.GetSourcePort (),interface);
if (endPoints.empty ())
{
NS_LOG_LOGIC (" No IPv6 endpoints matched on TcpL4Protocol "<<this);
std::ostringstream oss;
oss<<" destination IP: ";
- dst.Print (oss);
+ (ipHeader.GetDestinationAddress ()).Print (oss);
oss<<" destination port: "<< tcpHeader.GetDestinationPort ()<<" source IP: ";
- src.Print (oss);
+ (ipHeader.GetSourceAddress ()).Print (oss);
oss<<" source port: "<<tcpHeader.GetSourcePort ();
NS_LOG_LOGIC (oss.str ());
@@ -493,7 +495,7 @@
}
header.SetSourcePort (tcpHeader.GetDestinationPort ());
header.SetDestinationPort (tcpHeader.GetSourcePort ());
- SendPacket (rstPacket, header, dst, src);
+ SendPacket (rstPacket, header, ipHeader.GetDestinationAddress (), ipHeader.GetSourceAddress ());
return IpL4Protocol::RX_ENDPOINT_CLOSED;
}
else
@@ -503,7 +505,7 @@
}
NS_ASSERT_MSG (endPoints.size () == 1, "Demux returned more than one endpoint");
NS_LOG_LOGIC ("TcpL4Protocol "<<this<<" forwarding up to endpoint/socket");
- (*endPoints.begin ())->ForwardUp (packet, src, dst, tcpHeader.GetSourcePort ());
+ (*endPoints.begin ())->ForwardUp (packet, ipHeader, tcpHeader.GetSourcePort ());
return IpL4Protocol::RX_OK;
}
--- a/src/internet/model/tcp-l4-protocol.h Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/tcp-l4-protocol.h Tue Nov 20 17:52:39 2012 -0500
@@ -115,8 +115,7 @@
Ipv4Header const &header,
Ptr<Ipv4Interface> incomingInterface);
virtual enum IpL4Protocol::RxStatus Receive (Ptr<Packet> p,
- Ipv6Address &src,
- Ipv6Address &dst,
+ Ipv6Header const &header,
Ptr<Ipv6Interface> interface);
/**
--- a/src/internet/model/tcp-socket-base.cc Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/tcp-socket-base.cc Tue Nov 20 17:52:39 2012 -0500
@@ -777,9 +777,9 @@
}
void
-TcpSocketBase::ForwardUp6 (Ptr<Packet> packet, Ipv6Address saddr, Ipv6Address daddr, uint16_t port)
+TcpSocketBase::ForwardUp6 (Ptr<Packet> packet, Ipv6Header header, uint16_t port)
{
- DoForwardUp (packet, saddr, daddr, port);
+ DoForwardUp (packet, header, port);
}
void
@@ -908,15 +908,15 @@
}
void
-TcpSocketBase::DoForwardUp (Ptr<Packet> packet, Ipv6Address saddr, Ipv6Address daddr, uint16_t port)
+TcpSocketBase::DoForwardUp (Ptr<Packet> packet, Ipv6Header header, uint16_t port)
{
NS_LOG_LOGIC ("Socket " << this << " forward up " <<
m_endPoint6->GetPeerAddress () <<
":" << m_endPoint6->GetPeerPort () <<
" to " << m_endPoint6->GetLocalAddress () <<
":" << m_endPoint6->GetLocalPort ());
- Address fromAddress = Inet6SocketAddress (saddr, port);
- Address toAddress = Inet6SocketAddress (daddr, m_endPoint6->GetLocalPort ());
+ Address fromAddress = Inet6SocketAddress (header.GetSourceAddress (), port);
+ Address toAddress = Inet6SocketAddress (header.GetDestinationAddress (), m_endPoint6->GetLocalPort ());
// Peel off TCP header and do validity checking
TcpHeader tcpHeader;
@@ -977,7 +977,7 @@
h.SetDestinationPort (tcpHeader.GetSourcePort ());
h.SetWindowSize (AdvertisedWindowSize ());
AddOptions (h);
- m_tcp->SendPacket (Create<Packet> (), h, daddr, saddr, m_boundnetdevice);
+ m_tcp->SendPacket (Create<Packet> (), h, header.GetDestinationAddress (), header.GetSourceAddress (), m_boundnetdevice);
}
break;
case SYN_SENT:
@@ -1528,6 +1528,40 @@
TcpHeader header;
SequenceNumber32 s = m_nextTxSequence;
+ /*
+ * Add tags for each socket option.
+ * Note that currently the socket adds both IPv4 tag and IPv6 tag
+ * if both options are set. Once the packet got to layer three, only
+ * the corresponding tags will be read.
+ */
+ if (IsManualIpTos ())
+ {
+ SocketIpTosTag ipTosTag;
+ ipTosTag.SetTos (GetIpTos ());
+ p->AddPacketTag (ipTosTag);
+ }
+
+ if (IsManualIpv6Tclass ())
+ {
+ SocketIpv6TclassTag ipTclassTag;
+ ipTclassTag.SetTclass (GetIpv6Tclass ());
+ p->AddPacketTag (ipTclassTag);
+ }
+
+ if (IsManualIpTtl ())
+ {
+ SocketIpTtlTag ipTtlTag;
+ ipTtlTag.SetTtl (GetIpTtl ());
+ p->AddPacketTag (ipTtlTag);
+ }
+
+ if (IsManualIpv6HopLimit ())
+ {
+ SocketIpv6HopLimitTag ipHopLimitTag;
+ ipHopLimitTag.SetHopLimit (GetIpv6HopLimit ());
+ p->AddPacketTag (ipHopLimitTag);
+ }
+
if (m_endPoint == 0 && m_endPoint6 == 0)
{
NS_LOG_WARN ("Failed to send empty packet due to null endpoint");
@@ -1764,6 +1798,41 @@
uint32_t sz = p->GetSize (); // Size of packet
uint8_t flags = withAck ? TcpHeader::ACK : 0;
uint32_t remainingData = m_txBuffer.SizeFromSequence (seq + SequenceNumber32 (sz));
+
+ /*
+ * Add tags for each socket option.
+ * Note that currently the socket adds both IPv4 tag and IPv6 tag
+ * if both options are set. Once the packet got to layer three, only
+ * the corresponding tags will be read.
+ */
+ if (IsManualIpTos ())
+ {
+ SocketIpTosTag ipTosTag;
+ ipTosTag.SetTos (GetIpTos ());
+ p->AddPacketTag (ipTosTag);
+ }
+
+ if (IsManualIpv6Tclass ())
+ {
+ SocketIpv6TclassTag ipTclassTag;
+ ipTclassTag.SetTclass (GetIpv6Tclass ());
+ p->AddPacketTag (ipTclassTag);
+ }
+
+ if (IsManualIpTtl ())
+ {
+ SocketIpTtlTag ipTtlTag;
+ ipTtlTag.SetTtl (GetIpTtl ());
+ p->AddPacketTag (ipTtlTag);
+ }
+
+ if (IsManualIpv6HopLimit ())
+ {
+ SocketIpv6HopLimitTag ipHopLimitTag;
+ ipHopLimitTag.SetHopLimit (GetIpv6HopLimit ());
+ p->AddPacketTag (ipHopLimitTag);
+ }
+
if (m_closeOnEmpty && (remainingData == 0))
{
flags |= TcpHeader::FIN;
--- a/src/internet/model/tcp-socket-base.h Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/tcp-socket-base.h Tue Nov 20 17:52:39 2012 -0500
@@ -30,6 +30,7 @@
#include "ns3/ipv4-address.h"
#include "ns3/ipv4-header.h"
#include "ns3/ipv4-interface.h"
+#include "ns3/ipv6-header.h"
#include "ns3/event-id.h"
#include "tcp-tx-buffer.h"
#include "tcp-rx-buffer.h"
@@ -135,9 +136,9 @@
// Helper functions: Transfer operation
void ForwardUp (Ptr<Packet> packet, Ipv4Header header, uint16_t port, Ptr<Ipv4Interface> incomingInterface);
- void ForwardUp6 (Ptr<Packet> packet, Ipv6Address saddr, Ipv6Address daddr, uint16_t port);
+ void ForwardUp6 (Ptr<Packet> packet, Ipv6Header header, uint16_t port);
virtual void DoForwardUp (Ptr<Packet> packet, Ipv4Header header, uint16_t port, Ptr<Ipv4Interface> incomingInterface); //Get a pkt from L3
- virtual void DoForwardUp (Ptr<Packet> packet, Ipv6Address saddr, Ipv6Address daddr, uint16_t port); // Ipv6 version
+ virtual void DoForwardUp (Ptr<Packet> packet, Ipv6Header header, uint16_t port); // Ipv6 version
void ForwardIcmp (Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo);
void ForwardIcmp6 (Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo);
bool SendPendingData (bool withAck = false); // Send as much as the window allows
--- a/src/internet/model/udp-l4-protocol.cc Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/udp-l4-protocol.cc Tue Nov 20 17:52:39 2012 -0500
@@ -346,9 +346,12 @@
{
NS_LOG_LOGIC (" No Ipv4 endpoints matched on UdpL4Protocol, trying Ipv6 "<<this);
Ptr<Ipv6Interface> fakeInterface;
+ Ipv6Header ipv6Header;
Ipv6Address src = Ipv6Address::MakeIpv4MappedAddress (header.GetSource ());
Ipv6Address dst = Ipv6Address::MakeIpv4MappedAddress (header.GetDestination ());
- return (this->Receive (packet, src, dst, fakeInterface));
+ ipv6Header.SetSourceAddress (src);
+ ipv6Header.SetDestinationAddress (dst);
+ return (this->Receive (packet, ipv6Header, fakeInterface));
}
NS_LOG_LOGIC ("RX_ENDPOINT_UNREACH");
@@ -367,31 +370,30 @@
enum IpL4Protocol::RxStatus
UdpL4Protocol::Receive (Ptr<Packet> packet,
- Ipv6Address &src,
- Ipv6Address &dst,
+ Ipv6Header const &header,
Ptr<Ipv6Interface> interface)
{
- NS_LOG_FUNCTION (this << packet << src << dst);
+ NS_LOG_FUNCTION (this << packet << header.GetSourceAddress () << header.GetDestinationAddress ());
UdpHeader udpHeader;
if(Node::ChecksumEnabled ())
{
udpHeader.EnableChecksums ();
}
- udpHeader.InitializeChecksum (src, dst, PROT_NUMBER);
+ udpHeader.InitializeChecksum (header.GetSourceAddress (), header.GetDestinationAddress (), PROT_NUMBER);
packet->RemoveHeader (udpHeader);
- if(!udpHeader.IsChecksumOk () && !src.IsIpv4MappedAddress ())
+ if(!udpHeader.IsChecksumOk () && !header.GetSourceAddress ().IsIpv4MappedAddress ())
{
NS_LOG_INFO ("Bad checksum : dropping packet!");
return IpL4Protocol::RX_CSUM_FAILED;
}
- NS_LOG_DEBUG ("Looking up dst " << dst << " port " << udpHeader.GetDestinationPort ());
+ NS_LOG_DEBUG ("Looking up dst " << header.GetDestinationAddress () << " port " << udpHeader.GetDestinationPort ());
Ipv6EndPointDemux::EndPoints endPoints =
- m_endPoints6->Lookup (dst, udpHeader.GetDestinationPort (),
- src, udpHeader.GetSourcePort (), interface);
+ m_endPoints6->Lookup (header.GetDestinationAddress (), udpHeader.GetDestinationPort (),
+ header.GetSourceAddress (), udpHeader.GetSourcePort (), interface);
if (endPoints.empty ())
{
NS_LOG_LOGIC ("RX_ENDPOINT_UNREACH");
@@ -400,7 +402,7 @@
for (Ipv6EndPointDemux::EndPointsI endPoint = endPoints.begin ();
endPoint != endPoints.end (); endPoint++)
{
- (*endPoint)->ForwardUp (packet->Copy (), src, dst, udpHeader.GetSourcePort ());
+ (*endPoint)->ForwardUp (packet->Copy (), header, udpHeader.GetSourcePort ());
}
return IpL4Protocol::RX_OK;
}
--- a/src/internet/model/udp-l4-protocol.h Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/udp-l4-protocol.h Tue Nov 20 17:52:39 2012 -0500
@@ -111,8 +111,7 @@
Ipv4Header const &header,
Ptr<Ipv4Interface> interface);
virtual enum IpL4Protocol::RxStatus Receive (Ptr<Packet> p,
- Ipv6Address &src,
- Ipv6Address &dst,
+ Ipv6Header const &header,
Ptr<Ipv6Interface> interface);
/**
--- a/src/internet/model/udp-socket-impl.cc Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/udp-socket-impl.cc Tue Nov 20 17:52:39 2012 -0500
@@ -351,6 +351,7 @@
m_errno = ERROR_NOTCONN;
return -1;
}
+
return DoSend (p);
}
@@ -458,6 +459,13 @@
return -1;
}
+ if (IsManualIpTos ())
+ {
+ SocketIpTosTag ipTosTag;
+ ipTosTag.SetTos (GetIpTos ());
+ p->AddPacketTag (ipTosTag);
+ }
+
Ptr<Ipv4> ipv4 = m_node->GetObject<Ipv4> ();
// Locally override the IP TTL for this socket
@@ -474,10 +482,10 @@
tag.SetTtl (m_ipMulticastTtl);
p->AddPacketTag (tag);
}
- else if (m_ipTtl != 0 && !dest.IsMulticast () && !dest.IsBroadcast ())
+ else if (IsManualIpTtl () && GetIpTtl () != 0 && !dest.IsMulticast () && !dest.IsBroadcast ())
{
SocketIpTtlTag tag;
- tag.SetTtl (m_ipTtl);
+ tag.SetTtl (GetIpTtl ());
p->AddPacketTag (tag);
}
{
@@ -646,6 +654,13 @@
return -1;
}
+ if (IsManualIpv6Tclass ())
+ {
+ SocketIpv6TclassTag ipTclassTag;
+ ipTclassTag.SetTclass (GetIpv6Tclass ());
+ p->AddPacketTag (ipTclassTag);
+ }
+
Ptr<Ipv6> ipv6 = m_node->GetObject<Ipv6> ();
// Locally override the IP TTL for this socket
@@ -658,14 +673,14 @@
// the same as a unicast, but it will be fixed further down the stack
if (m_ipMulticastTtl != 0 && dest.IsMulticast ())
{
- SocketIpTtlTag tag;
- tag.SetTtl (m_ipMulticastTtl);
+ SocketIpv6HopLimitTag tag;
+ tag.SetHopLimit (m_ipMulticastTtl);
p->AddPacketTag (tag);
}
- else if (m_ipTtl != 0 && !dest.IsMulticast ())
+ else if (IsManualIpv6HopLimit () && GetIpv6HopLimit () != 0 && !dest.IsMulticast ())
{
- SocketIpTtlTag tag;
- tag.SetTtl (m_ipTtl);
+ SocketIpv6HopLimitTag tag;
+ tag.SetHopLimit (GetIpv6HopLimit ());
p->AddPacketTag (tag);
}
// There is no analgous to an IPv4 broadcast address in IPv6.
@@ -736,6 +751,13 @@
NS_LOG_FUNCTION (this << p << flags << address);
if (InetSocketAddress::IsMatchingType (address))
{
+ if (IsManualIpTos ())
+ {
+ SocketIpTosTag ipTosTag;
+ ipTosTag.SetTos (GetIpTos ());
+ p->AddPacketTag (ipTosTag);
+ }
+
InetSocketAddress transport = InetSocketAddress::ConvertFrom (address);
Ipv4Address ipv4 = transport.GetIpv4 ();
uint16_t port = transport.GetPort ();
@@ -743,6 +765,13 @@
}
else if (Inet6SocketAddress::IsMatchingType (address))
{
+ if (IsManualIpv6Tclass ())
+ {
+ SocketIpv6TclassTag ipTclassTag;
+ ipTclassTag.SetTclass (GetIpv6Tclass ());
+ p->AddPacketTag (ipTclassTag);
+ }
+
Inet6SocketAddress transport = Inet6SocketAddress::ConvertFrom (address);
Ipv6Address ipv6 = transport.GetIpv6 ();
uint16_t port = transport.GetPort ();
@@ -882,6 +911,21 @@
packet->AddPacketTag (tag);
}
+ //Check only version 4 options
+ if (IsIpRecvTos ())
+ {
+ SocketIpTosTag ipTosTag;
+ ipTosTag.SetTos (header.GetTos ());
+ packet->AddPacketTag (ipTosTag);
+ }
+
+ if (IsIpRecvTtl ())
+ {
+ SocketIpTtlTag ipTtlTag;
+ ipTtlTag.SetTtl (header.GetTtl ());
+ packet->AddPacketTag (ipTtlTag);
+ }
+
if ((m_rxAvailable + packet->GetSize ()) <= m_rcvBufSize)
{
Address address = InetSocketAddress (header.GetSource (), port);
@@ -905,18 +949,34 @@
}
void
-UdpSocketImpl::ForwardUp6 (Ptr<Packet> packet, Ipv6Address saddr, Ipv6Address daddr, uint16_t port)
+UdpSocketImpl::ForwardUp6 (Ptr<Packet> packet, Ipv6Header header, uint16_t port)
{
- NS_LOG_FUNCTION (this << packet << saddr << port);
+ NS_LOG_FUNCTION (this << packet << header.GetSourceAddress () << port);
if (m_shutdownRecv)
{
return;
}
+
+ //Check only version 6 options
+ if (IsIpv6RecvTclass ())
+ {
+ SocketIpv6TclassTag ipTclassTag;
+ ipTclassTag.SetTclass (header.GetTrafficClass ());
+ packet->AddPacketTag (ipTclassTag);
+ }
+
+ if (IsIpv6RecvHopLimit ())
+ {
+ SocketIpv6HopLimitTag ipHopLimitTag;
+ ipHopLimitTag.SetHopLimit (header.GetHopLimit ());
+ packet->AddPacketTag (ipHopLimitTag);
+ }
+
if ((m_rxAvailable + packet->GetSize ()) <= m_rcvBufSize)
{
- Address address = Inet6SocketAddress (saddr, port);
+ Address address = Inet6SocketAddress (header.GetSourceAddress (), port);
SocketAddressTag tag;
tag.SetAddress (address);
packet->AddPacketTag (tag);
@@ -962,7 +1022,6 @@
}
}
-
void
UdpSocketImpl::SetRcvBufSize (uint32_t size)
{
@@ -976,18 +1035,6 @@
}
void
-UdpSocketImpl::SetIpTtl (uint8_t ipTtl)
-{
- m_ipTtl = ipTtl;
-}
-
-uint8_t
-UdpSocketImpl::GetIpTtl (void) const
-{
- return m_ipTtl;
-}
-
-void
UdpSocketImpl::SetIpMulticastTtl (uint8_t ipTtl)
{
m_ipMulticastTtl = ipTtl;
--- a/src/internet/model/udp-socket-impl.h Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/udp-socket-impl.h Tue Nov 20 17:52:39 2012 -0500
@@ -89,8 +89,6 @@
// Attributes set through UdpSocket base class
virtual void SetRcvBufSize (uint32_t size);
virtual uint32_t GetRcvBufSize (void) const;
- virtual void SetIpTtl (uint8_t ipTtl);
- virtual uint8_t GetIpTtl (void) const;
virtual void SetIpMulticastTtl (uint8_t ipTtl);
virtual uint8_t GetIpMulticastTtl (void) const;
virtual void SetIpMulticastIf (int32_t ipIf);
@@ -106,7 +104,7 @@
int FinishBind (void);
void ForwardUp (Ptr<Packet> p, Ipv4Header header, uint16_t port,
Ptr<Ipv4Interface> incomingInterface);
- void ForwardUp6 (Ptr<Packet> p, Ipv6Address saddr, Ipv6Address daddr, uint16_t port);
+ void ForwardUp6 (Ptr<Packet> p, Ipv6Header header, uint16_t port);
void Destroy (void);
void Destroy6 (void);
int DoSend (Ptr<Packet> p);
@@ -139,7 +137,6 @@
// Socket attributes
uint32_t m_rcvBufSize;
- uint8_t m_ipTtl;
uint8_t m_ipMulticastTtl;
int32_t m_ipMulticastIf;
bool m_ipMulticastLoop;
--- a/src/internet/model/udp-socket.h Fri Nov 16 22:27:18 2012 +0100
+++ b/src/internet/model/udp-socket.h Tue Nov 20 17:52:39 2012 -0500
@@ -101,8 +101,6 @@
// Indirect the attribute setting and getting through private virtual methods
virtual void SetRcvBufSize (uint32_t size) = 0;
virtual uint32_t GetRcvBufSize (void) const = 0;
- virtual void SetIpTtl (uint8_t ipTtl) = 0;
- virtual uint8_t GetIpTtl (void) const = 0;
virtual void SetIpMulticastTtl (uint8_t ipTtl) = 0;
virtual uint8_t GetIpMulticastTtl (void) const = 0;
virtual void SetIpMulticastIf (int32_t ipIf) = 0;
--- a/src/network/model/socket.cc Fri Nov 16 22:27:18 2012 +0100
+++ b/src/network/model/socket.cc Tue Nov 20 17:52:39 2012 -0500
@@ -42,10 +42,23 @@
}
Socket::Socket (void)
+ : m_manualIpTos (false),
+ m_manualIpTtl (false),
+ m_ipRecvTos (false),
+ m_ipRecvTtl (false),
+ m_manualIpv6Tclass (false),
+ m_manualIpv6HopLimit (false),
+ m_ipv6RecvTclass (false),
+ m_ipv6RecvHopLimit (false)
{
+ NS_LOG_FUNCTION_NOARGS ();
m_boundnetdevice = 0;
m_recvPktInfo = false;
- NS_LOG_FUNCTION (this);
+
+ m_ipTos = 0;
+ m_ipTtl = 0;
+ m_ipv6Tclass = 0;
+ m_ipv6HopLimit = 0;
}
Socket::~Socket ()
@@ -353,6 +366,149 @@
return m_recvPktInfo;
}
+bool
+Socket::IsManualIpTos (void) const
+{
+ return m_manualIpTos;
+}
+
+bool
+Socket::IsManualIpv6Tclass (void) const
+{
+ return m_manualIpv6Tclass;
+}
+
+bool
+Socket::IsManualIpTtl (void) const
+{
+ return m_manualIpTtl;
+}
+
+bool
+Socket::IsManualIpv6HopLimit (void) const
+{
+ return m_manualIpv6HopLimit;
+}
+
+void
+Socket::SetIpTos (uint8_t tos)
+{
+ Address address;
+ GetSockName (address);
+ m_manualIpTos = true;
+ m_ipTos = tos;
+}
+
+uint8_t
+Socket::GetIpTos (void) const
+{
+ return m_ipTos;
+}
+
+void
+Socket::SetIpRecvTos (bool ipv4RecvTos)
+{
+ m_ipRecvTos = ipv4RecvTos;
+}
+
+bool
+Socket::IsIpRecvTos (void) const
+{
+ return m_ipRecvTos;
+}
+
+void
+Socket::SetIpv6Tclass (int tclass)
+{
+ Address address;
+ GetSockName (address);
+
+ //If -1 or invalid values, use default
+ if (tclass == -1 || tclass < -1 || tclass > 0xff)
+ {
+ //Print a warning
+ if (tclass < -1 || tclass > 0xff)
+ {
+ NS_LOG_WARN ("Invalid IPV6_TCLASS value. Using default.");
+ }
+ m_manualIpv6Tclass = false;
+ m_ipv6Tclass = 0;
+ }
+ else
+ {
+ m_manualIpv6Tclass = true;
+ m_ipv6Tclass = tclass;
+ }
+}
+
+uint8_t
+Socket::GetIpv6Tclass (void) const
+{
+ return m_ipv6Tclass;
+}
+
+void
+Socket::SetIpv6RecvTclass (bool ipv6RecvTclass)
+{
+ m_ipv6RecvTclass = ipv6RecvTclass;
+}
+
+bool
+Socket::IsIpv6RecvTclass (void) const
+{
+ return m_ipv6RecvTclass;
+}
+
+void
+Socket::SetIpTtl (uint8_t ttl)
+{
+ m_manualIpTtl = true;
+ m_ipTtl = ttl;
+}
+
+uint8_t
+Socket::GetIpTtl (void) const
+{
+ return m_ipTtl;
+}
+
+void
+Socket::SetIpRecvTtl (bool ipv4RecvTtl)
+{
+ m_ipRecvTtl = ipv4RecvTtl;
+}
+
+bool
+Socket::IsIpRecvTtl (void) const
+{
+ return m_ipRecvTtl;
+}
+
+void
+Socket::SetIpv6HopLimit (uint8_t ipHopLimit)
+{
+ m_manualIpv6HopLimit = true;
+ m_ipv6HopLimit = ipHopLimit;
+}
+
+uint8_t
+Socket::GetIpv6HopLimit (void) const
+{
+ return m_ipv6HopLimit;
+}
+
+void
+Socket::SetIpv6RecvHopLimit (bool ipv6RecvHopLimit)
+{
+ m_ipv6RecvHopLimit = ipv6RecvHopLimit;
+}
+
+bool
+Socket::IsIpv6RecvHopLimit (void) const
+{
+ return m_ipv6RecvHopLimit;
+}
+
/***************************************************************
* Socket Tags
***************************************************************/
@@ -478,6 +634,59 @@
os << "Ttl=" << (uint32_t) m_ttl;
}
+SocketIpv6HopLimitTag::SocketIpv6HopLimitTag ()
+{
+}
+
+void
+SocketIpv6HopLimitTag::SetHopLimit (uint8_t hopLimit)
+{
+ m_hopLimit = hopLimit;
+}
+
+uint8_t
+SocketIpv6HopLimitTag::GetHopLimit (void) const
+{
+ return m_hopLimit;
+}
+
+NS_OBJECT_ENSURE_REGISTERED (SocketIpv6HopLimitTag);
+
+TypeId
+SocketIpv6HopLimitTag::GetTypeId (void)
+{
+ static TypeId tid = TypeId ("ns3::SocketIpv6HopLimitTag")
+ .SetParent<Tag> ()
+ .AddConstructor<SocketIpv6HopLimitTag> ()
+ ;
+ return tid;
+}
+TypeId
+SocketIpv6HopLimitTag::GetInstanceTypeId (void) const
+{
+ return GetTypeId ();
+}
+
+uint32_t
+SocketIpv6HopLimitTag::GetSerializedSize (void) const
+{
+ return 1;
+}
+void
+SocketIpv6HopLimitTag::Serialize (TagBuffer i) const
+{
+ i.WriteU8 (m_hopLimit);
+}
+void
+SocketIpv6HopLimitTag::Deserialize (TagBuffer i)
+{
+ m_hopLimit = i.ReadU8 ();
+}
+void
+SocketIpv6HopLimitTag::Print (std::ostream &os) const
+{
+ os << "HopLimit=" << (uint32_t) m_hopLimit;
+}
SocketSetDontFragmentTag::SocketSetDontFragmentTag ()
{
@@ -542,4 +751,116 @@
os << (m_dontFragment ? "true" : "false");
}
+
+SocketIpTosTag::SocketIpTosTag ()
+{
+}
+
+void
+SocketIpTosTag::SetTos (uint8_t ipTos)
+{
+ m_ipTos = ipTos;
+}
+
+uint8_t
+SocketIpTosTag::GetTos (void) const
+{
+ return m_ipTos;
+}
+
+TypeId
+SocketIpTosTag::GetTypeId (void)
+{
+ static TypeId tid = TypeId ("ns3::SocketIpTosTag")
+ .SetParent<Tag> ()
+ .AddConstructor<SocketIpTosTag> ()
+ ;
+ return tid;
+}
+
+TypeId
+SocketIpTosTag::GetInstanceTypeId (void) const
+{
+ return GetTypeId ();
+}
+
+uint32_t
+SocketIpTosTag::GetSerializedSize (void) const
+{
+ return sizeof (uint8_t);
+}
+
+void
+SocketIpTosTag::Serialize (TagBuffer i) const
+{
+ i.WriteU8 (m_ipTos);
+}
+
+void
+SocketIpTosTag::Deserialize (TagBuffer i)
+{
+ m_ipTos = i.ReadU8();
+}
+void
+SocketIpTosTag::Print (std::ostream &os) const
+{
+ os << "IP_TOS = " << m_ipTos;
+}
+
+
+SocketIpv6TclassTag::SocketIpv6TclassTag ()
+{
+}
+
+void
+SocketIpv6TclassTag::SetTclass (uint8_t tclass)
+{
+ m_ipv6Tclass = tclass;
+}
+
+uint8_t
+SocketIpv6TclassTag::GetTclass (void) const
+{
+ return m_ipv6Tclass;
+}
+
+TypeId
+SocketIpv6TclassTag::GetTypeId (void)
+{
+ static TypeId tid = TypeId ("ns3::SocketIpv6TclassTag")
+ .SetParent<Tag> ()
+ .AddConstructor<SocketIpv6TclassTag> ()
+ ;
+ return tid;
+}
+
+TypeId
+SocketIpv6TclassTag::GetInstanceTypeId (void) const
+{
+ return GetTypeId ();
+}
+
+uint32_t
+SocketIpv6TclassTag::GetSerializedSize (void) const
+{
+ return sizeof (uint8_t);
+}
+
+void
+SocketIpv6TclassTag::Serialize (TagBuffer i) const
+{
+ i.WriteU8 (m_ipv6Tclass);
+}
+
+void
+SocketIpv6TclassTag::Deserialize (TagBuffer i)
+{
+ m_ipv6Tclass = i.ReadU8();
+}
+void
+SocketIpv6TclassTag::Print (std::ostream &os) const
+{
+ os << "IPV6_TCLASS = " << m_ipv6Tclass;
+}
+
} // namespace ns3
--- a/src/network/model/socket.h Fri Nov 16 22:27:18 2012 +0100
+++ b/src/network/model/socket.h Tue Nov 20 17:52:39 2012 -0500
@@ -30,6 +30,8 @@
#include "ns3/net-device.h"
#include "address.h"
#include <stdint.h>
+#include "ns3/inet-socket-address.h"
+#include "ns3/inet6-socket-address.h"
namespace ns3 {
@@ -610,6 +612,183 @@
* \returns True if packet information should be sent to socket
*/
bool IsRecvPktInfo () const;
+
+ /*
+ * \brief Manually set IP Type of Service field
+ *
+ * This method corresponds to using setsockopt () IP_TOS of
+ * real network or BSD sockets. This option is for IPv4 only.
+ * Setting the IP TOS should also change the socket queueing
+ * priority as stated in the man page. However, socket priority
+ * is not yet supported.
+ *
+ * \param ipTos The desired TOS value for IP headers
+ */
+ void SetIpTos (uint8_t ipTos);
+
+ /*
+ * \brief Query the value of IP Type of Service of this socket
+ *
+ * This method corresponds to using getsockopt () IP_TOS of real network
+ * or BSD sockets.
+ *
+ * \return The raw IP TOS value
+ */
+ uint8_t GetIpTos (void) const;
+
+ /**
+ * \brief Tells a socket to pass information about IP Type of Service up the stack
+ *
+ * This method corresponds to using setsockopt () IP_RECVTOS of real
+ * network or BSD sockets. In our implementation, the socket simply
+ * adds a SocketIpTosTag tag to the packet before passing the
+ * packet up the stack.
+ *
+ * \param ipv4RecvTos Whether the socket should add SocketIpv4TosTag tag
+ * to the packet
+ */
+ void SetIpRecvTos (bool ipv4RecvTos);
+
+ /**
+ * \brief Ask if the socket is currently passing information about IP Type of Service up the stack
+ *
+ * This method corresponds to using getsockopt () IP_RECVTOS of real
+ * network or BSD sockets.
+ *
+ * \return Wheter the IP_RECVTOS is set
+ */
+ bool IsIpRecvTos (void) const;
+
+ /*
+ * \brief Manually set IPv6 Traffic Class field
+ *
+ * This method corresponds to using setsockopt () IPV6_TCLASS of
+ * real network or BSD sockets. This option is for IPv6 only.
+ * Setting the IPV6_TCLASSS to -1 clears the option and let the socket
+ * uses the default value.
+ *
+ * \param ipTclass The desired TCLASS value for IPv6 headers
+ */
+ void SetIpv6Tclass (int ipTclass);
+
+ /*
+ * \brief Query the value of IPv6 Traffic Class field of this socket
+ *
+ * This method corresponds to using getsockopt () IPV6_TCLASS of real network
+ * or BSD sockets.
+ *
+ * \return The raw IPV6_TCLASS value
+ */
+ uint8_t GetIpv6Tclass (void) const;
+
+ /**
+ * \brief Tells a socket to pass information about IPv6 Traffic Class up the stack
+ *
+ * This method corresponds to using setsockopt () IPV6_RECVTCLASS of real
+ * network or BSD sockets. In our implementation, the socket simply
+ * adds a SocketIpv6TclasssTag tag to the packet before passing the
+ * packet up the stack.
+ *
+ * \param ipv6RecvTclass Whether the socket should add SocketIpv6TclassTag tag
+ * to the packet
+ */
+ void SetIpv6RecvTclass (bool ipv6RecvTclass);
+
+ /**
+ * \brief Ask if the socket is currently passing information about IPv6 Traffic Class up the stack
+ *
+ * This method corresponds to using getsockopt () IPV6_RECVTCLASS of real
+ * network or BSD sockets.
+ *
+ * \return Wheter the IPV6_RECVTCLASS is set
+ */
+ bool IsIpv6RecvTclass (void) const;
+
+ /*
+ * \brief Manually set IP Time to Live field
+ *
+ * This method corresponds to using setsockopt () IP_TTL of
+ * real network or BSD sockets.
+ *
+ * \param ipTtl The desired TTL value for IP headers
+ */
+ virtual void SetIpTtl (uint8_t ipTtl);
+
+ /*
+ * \brief Query the value of IP Time to Live field of this socket
+ *
+ * This method corresponds to using getsockopt () IP_TTL of real network
+ * or BSD sockets.
+ *
+ * \return The raw IP TTL value
+ */
+ virtual uint8_t GetIpTtl (void) const;
+
+ /**
+ * \brief Tells a socket to pass information about IP_TTL up the stack
+ *
+ * This method corresponds to using setsockopt () IP_RECVTTL of real
+ * network or BSD sockets. In our implementation, the socket simply
+ * adds a SocketIpTtlTag tag to the packet before passing the
+ * packet up the stack.
+ *
+ * \param ipv4RecvTtl Whether the socket should add SocketIpv4TtlTag tag
+ * to the packet
+ */
+ void SetIpRecvTtl (bool ipv4RecvTtl);
+
+ /**
+ * \brief Ask if the socket is currently passing information about IP_TTL up the stack
+ *
+ * This method corresponds to using getsockopt () IP_RECVTTL of real
+ * network or BSD sockets.
+ *
+ * \return Wheter the IP_RECVTTL is set
+ */
+ bool IsIpRecvTtl (void) const;
+
+ /*
+ * \brief Manually set IPv6 Hop Limit
+ *
+ * This method corresponds to using setsockopt () IPV6_HOPLIMIT of
+ * real network or BSD sockets.
+ *
+ * \param ipHopLimit The desired Hop Limit value for IPv6 headers
+ */
+ virtual void SetIpv6HopLimit (uint8_t ipHopLimit);
+
+ /*
+ * \brief Query the value of IP Hop Limit field of this socket
+ *
+ * This method corresponds to using getsockopt () IPV6_HOPLIMIT of real network
+ * or BSD sockets.
+ *
+ * \return The raw IPv6 Hop Limit value
+ */
+ virtual uint8_t GetIpv6HopLimit (void) const;
+
+ /**
+ * \brief Tells a socket to pass information about IPv6 Hop Limit up the stack
+ *
+ * This method corresponds to using setsockopt () IPV6_RECVHOPLIMIT of real
+ * network or BSD sockets. In our implementation, the socket simply
+ * adds a SocketIpv6HopLimitTag tag to the packet before passing the
+ * packet up the stack.
+ *
+ * \param ipv6RecvHopLimit Whether the socket should add SocketIpv6HopLimitTag tag
+ * to the packet
+ */
+ void SetIpv6RecvHopLimit (bool ipv6RecvHopLimit);
+
+ /**
+ * \brief Ask if the socket is currently passing information about IPv6 Hop Limit up the stack
+ *
+ * This method corresponds to using getsockopt () IPV6_RECVHOPLIMIT of real
+ * network or BSD sockets.
+ *
+ * \return Wheter the IPV6_RECVHOPLIMIT is set
+ */
+ bool IsIpv6RecvHopLimit (void) const;
protected:
void NotifyConnectionSucceeded (void);
@@ -622,8 +801,15 @@
void NotifySend (uint32_t spaceAvailable);
void NotifyDataRecv (void);
virtual void DoDispose (void);
+
+ bool IsManualIpTos (void) const;
+ bool IsManualIpv6Tclass (void) const;
+ bool IsManualIpTtl (void) const;
+ bool IsManualIpv6HopLimit (void) const;
+
Ptr<NetDevice> m_boundnetdevice;
bool m_recvPktInfo;
+
private:
Callback<void, Ptr<Socket> > m_connectionSucceeded;
Callback<void, Ptr<Socket> > m_connectionFailed;
@@ -635,6 +821,23 @@
Callback<void, Ptr<Socket>, uint32_t > m_sendCb;
Callback<void, Ptr<Socket> > m_receivedData;
+ //IPv4 options
+ bool m_manualIpTos;
+ bool m_manualIpTtl;
+ bool m_ipRecvTos;
+ bool m_ipRecvTtl;
+
+ uint8_t m_ipTos;
+ uint8_t m_ipTtl;
+
+ //IPv6 options
+ bool m_manualIpv6Tclass;
+ bool m_manualIpv6HopLimit;
+ bool m_ipv6RecvTclass;
+ bool m_ipv6RecvHopLimit;
+
+ uint8_t m_ipv6Tclass;
+ uint8_t m_ipv6HopLimit;
};
/**
@@ -681,6 +884,27 @@
uint8_t m_ttl;
};
+/**
+ * \brief This class implements a tag that carries the socket-specific
+ * HOPLIMIT of a packet to the IPv6 layer
+ */
+class SocketIpv6HopLimitTag : public Tag
+{
+public:
+ SocketIpv6HopLimitTag ();
+ void SetHopLimit (uint8_t hopLimit);
+ uint8_t GetHopLimit (void) const;
+
+ static TypeId GetTypeId (void);
+ virtual TypeId GetInstanceTypeId (void) const;
+ virtual uint32_t GetSerializedSize (void) const;
+ virtual void Serialize (TagBuffer i) const;
+ virtual void Deserialize (TagBuffer i);
+ virtual void Print (std::ostream &os) const;
+
+private:
+ uint8_t m_hopLimit;
+};
/**
* \brief indicated whether packets should be sent out with
@@ -704,6 +928,48 @@
bool m_dontFragment;
};
+/*
+ * \brief indicated whether the socket has IP_TOS set.
+ * This tag is for IPv4 socket.
+ */
+class SocketIpTosTag : public Tag
+{
+public:
+ SocketIpTosTag ();
+ void SetTos (uint8_t tos);
+ uint8_t GetTos (void) const;
+
+ static TypeId GetTypeId (void);
+ virtual TypeId GetInstanceTypeId (void) const;
+ virtual uint32_t GetSerializedSize (void) const;
+ virtual void Serialize (TagBuffer i) const;
+ virtual void Deserialize (TagBuffer i);
+ virtual void Print (std::ostream &os) const;
+private:
+ uint8_t m_ipTos;
+};
+
+/*
+ * \brief indicated whether the socket has IPV6_TCLASS set.
+ * This tag is for IPv6 socket.
+ */
+class SocketIpv6TclassTag : public Tag
+{
+public:
+ SocketIpv6TclassTag ();
+ void SetTclass (uint8_t tclass);
+ uint8_t GetTclass (void) const;
+
+ static TypeId GetTypeId (void);
+ virtual TypeId GetInstanceTypeId (void) const;
+ virtual uint32_t GetSerializedSize (void) const;
+ virtual void Serialize (TagBuffer i) const;
+ virtual void Deserialize (TagBuffer i);
+ virtual void Print (std::ostream &os) const;
+private:
+ uint8_t m_ipv6Tclass;
+};
+
} // namespace ns3
#endif /* NS3_SOCKET_H */