View | Details | Raw Unified | Return to bug 742
Collapse All | Expand All

(-)a/CHANGES.html (+16 lines)
 Lines 52-57    Link Here 
52
<h2>New API:</h2>
52
<h2>New API:</h2>
53
53
54
<ul>
54
<ul>
55
<li><b>Binding sockets to devices:</b> A method analogous to a SO_BINDTODEVICE
56
socket option has been introduced to class Socket:  <pre>virtual void Socket::BindToNetDevice (Ptr<NetDevice> netdevice);</pre>
55
<li><b>Simulator event contexts</b>: The Simulator API now keeps track of a per-event
57
<li><b>Simulator event contexts</b>: The Simulator API now keeps track of a per-event
56
'context' (a 32bit integer which, by convention identifies a node by its id). Simulator::GetContext
58
'context' (a 32bit integer which, by convention identifies a node by its id). Simulator::GetContext
57
returns the context of the currently-executing event while Simulator::ScheduleWithContext creates an
59
returns the context of the currently-executing event while Simulator::ScheduleWithContext creates an
 Lines 76-81    Link Here 
76
78
77
<h2>Changes to existing API:</h2>
79
<h2>Changes to existing API:</h2>
78
<ul>
80
<ul>
81
<li><b>Ipv4RoutingProtocol::RouteOutput</b> no longer takes an outgoing 
82
interface index but instead takes an outgoing device pointer; this affects all
83
subclasses of Ipv4RoutingProtocol.
84
<pre>
85
-  virtual Ptr&lt;Ipv4Route&gt; RouteOutput (Ptr&lt;Packet&gt; p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr) = 0;
86
+  virtual Ptr&lt;Ipv4Route&gt; RouteOutput (Ptr&lt;Packet&gt; p, const Ipv4Header &header, Ptr&lt;NetDevice&gt; oif, Socket::SocketErrno &sockerr) = 0;
87
</pre>
88
<li><b>Ipv6RoutingProtocol::RouteOutput</b> no longer takes an outgoing 
89
interface index but instead takes an outgoing device pointer; this affects all
90
subclasses of Ipv6RoutingProtocol.
91
<pre>
92
-  virtual Ptr&lt;Ipv6Route&gt; RouteOutput (Ptr&lt;Packet&gt; p, const Ipv6Header &header, uint32_t oif, Socket::SocketErrno &sockerr) = 0;
93
+  virtual Ptr&lt;Ipv6Route&gt; RouteOutput (Ptr&lt;Packet&gt; p, const Ipv6Header &header, Ptr&lt;NetDevice&gt; oif, Socket::SocketErrno &sockerr) = 0;
94
</pre>
79
<li><b>Application::Start</b> and <b>Application::Stop</b> have been renamed to
95
<li><b>Application::Start</b> and <b>Application::Stop</b> have been renamed to
80
<b>Application::SetStartTime</b> and <b>Application::SetStopTime</b>.
96
<b>Application::SetStartTime</b> and <b>Application::SetStopTime</b>.
81
<li><b>Channel::Send</b>: this method does not really exist but each subclass of the Channel
97
<li><b>Channel::Send</b>: this method does not really exist but each subclass of the Channel
(-)a/bindings/python/apidefs/gcc-ILP32/ns3_module_aodv.py (-2 / +2 lines)
 Lines 467-476    Link Here 
467
                   'bool', 
467
                   'bool', 
468
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
468
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
469
                   is_virtual=True)
469
                   is_virtual=True)
470
    ## aodv-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::aodv::RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
470
    ## aodv-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::aodv::RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
471
    cls.add_method('RouteOutput', 
471
    cls.add_method('RouteOutput', 
472
                   'ns3::Ptr< ns3::Ipv4Route >', 
472
                   'ns3::Ptr< ns3::Ipv4Route >', 
473
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
473
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
474
                   is_virtual=True)
474
                   is_virtual=True)
475
    ## aodv-routing-protocol.h: void ns3::aodv::RoutingProtocol::SetBroadcastEnable(bool f) [member function]
475
    ## aodv-routing-protocol.h: void ns3::aodv::RoutingProtocol::SetBroadcastEnable(bool f) [member function]
476
    cls.add_method('SetBroadcastEnable', 
476
    cls.add_method('SetBroadcastEnable', 
(-)a/bindings/python/apidefs/gcc-ILP32/ns3_module_core.py (-2 / +2 lines)
 Lines 489-496    Link Here 
489
def register_Ns3CommandLine_methods(root_module, cls):
489
def register_Ns3CommandLine_methods(root_module, cls):
490
    ## command-line.h: ns3::CommandLine::CommandLine() [constructor]
490
    ## command-line.h: ns3::CommandLine::CommandLine() [constructor]
491
    cls.add_constructor([])
491
    cls.add_constructor([])
492
    ## command-line.h: ns3::CommandLine::CommandLine(ns3::CommandLine const & arg0) [copy constructor]
492
    ## command-line.h: ns3::CommandLine::CommandLine(ns3::CommandLine const & cmd) [copy constructor]
493
    cls.add_constructor([param('ns3::CommandLine const &', 'arg0')])
493
    cls.add_constructor([param('ns3::CommandLine const &', 'cmd')])
494
    ## command-line.h: void ns3::CommandLine::AddValue(std::string const & name, std::string const & help, ns3::Callback<bool, std::string, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
494
    ## command-line.h: void ns3::CommandLine::AddValue(std::string const & name, std::string const & help, ns3::Callback<bool, std::string, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
495
    cls.add_method('AddValue', 
495
    cls.add_method('AddValue', 
496
                   'void', 
496
                   'void', 
(-)a/bindings/python/apidefs/gcc-ILP32/ns3_module_global_routing.py (-2 / +2 lines)
 Lines 415-424    Link Here 
415
                   'bool', 
415
                   'bool', 
416
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
416
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
417
                   is_virtual=True)
417
                   is_virtual=True)
418
    ## ipv4-global-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4GlobalRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
418
    ## ipv4-global-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4GlobalRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
419
    cls.add_method('RouteOutput', 
419
    cls.add_method('RouteOutput', 
420
                   'ns3::Ptr< ns3::Ipv4Route >', 
420
                   'ns3::Ptr< ns3::Ipv4Route >', 
421
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
421
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
422
                   is_virtual=True)
422
                   is_virtual=True)
423
    ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
423
    ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
424
    cls.add_method('SetIpv4', 
424
    cls.add_method('SetIpv4', 
(-)a/bindings/python/apidefs/gcc-ILP32/ns3_module_internet_stack.py (-2 / +142 lines)
 Lines 127-132    Link Here 
127
    module.add_class('Icmpv4L4Protocol', parent=root_module['ns3::Ipv4L4Protocol'])
127
    module.add_class('Icmpv4L4Protocol', parent=root_module['ns3::Ipv4L4Protocol'])
128
    ## icmpv6-l4-protocol.h: ns3::Icmpv6L4Protocol [class]
128
    ## icmpv6-l4-protocol.h: ns3::Icmpv6L4Protocol [class]
129
    module.add_class('Icmpv6L4Protocol', parent=root_module['ns3::Ipv6L4Protocol'])
129
    module.add_class('Icmpv6L4Protocol', parent=root_module['ns3::Ipv6L4Protocol'])
130
    ## loopback-net-device.h: ns3::LoopbackNetDevice [class]
131
    module.add_class('LoopbackNetDevice', parent=root_module['ns3::NetDevice'])
130
    
132
    
131
    ## Register a nested module for the namespace Config
133
    ## Register a nested module for the namespace Config
132
    
134
    
 Lines 258-263    Link Here 
258
    register_Ns3UdpL4Protocol_methods(root_module, root_module['ns3::UdpL4Protocol'])
260
    register_Ns3UdpL4Protocol_methods(root_module, root_module['ns3::UdpL4Protocol'])
259
    register_Ns3Icmpv4L4Protocol_methods(root_module, root_module['ns3::Icmpv4L4Protocol'])
261
    register_Ns3Icmpv4L4Protocol_methods(root_module, root_module['ns3::Icmpv4L4Protocol'])
260
    register_Ns3Icmpv6L4Protocol_methods(root_module, root_module['ns3::Icmpv6L4Protocol'])
262
    register_Ns3Icmpv6L4Protocol_methods(root_module, root_module['ns3::Icmpv6L4Protocol'])
263
    register_Ns3LoopbackNetDevice_methods(root_module, root_module['ns3::LoopbackNetDevice'])
261
    return
264
    return
262
265
263
def register_Ns3OptionField_methods(root_module, cls):
266
def register_Ns3OptionField_methods(root_module, cls):
 Lines 3254-3263    Link Here 
3254
    cls.add_method('DeAllocate', 
3257
    cls.add_method('DeAllocate', 
3255
                   'void', 
3258
                   'void', 
3256
                   [param('ns3::Ipv4EndPoint *', 'endPoint')])
3259
                   [param('ns3::Ipv4EndPoint *', 'endPoint')])
3257
    ## tcp-l4-protocol.h: void ns3::TcpL4Protocol::Send(ns3::Ptr<ns3::Packet> packet, ns3::Ipv4Address saddr, ns3::Ipv4Address daddr, uint16_t sport, uint16_t dport) [member function]
3260
    ## tcp-l4-protocol.h: void ns3::TcpL4Protocol::Send(ns3::Ptr<ns3::Packet> packet, ns3::Ipv4Address saddr, ns3::Ipv4Address daddr, uint16_t sport, uint16_t dport, ns3::Ptr<ns3::NetDevice> oif=0) [member function]
3258
    cls.add_method('Send', 
3261
    cls.add_method('Send', 
3259
                   'void', 
3262
                   'void', 
3260
                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Address', 'saddr'), param('ns3::Ipv4Address', 'daddr'), param('uint16_t', 'sport'), param('uint16_t', 'dport')])
3263
                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Address', 'saddr'), param('ns3::Ipv4Address', 'daddr'), param('uint16_t', 'sport'), param('uint16_t', 'dport'), param('ns3::Ptr< ns3::NetDevice >', 'oif', default_value='0')])
3261
    ## tcp-l4-protocol.h: ns3::Ipv4L4Protocol::RxStatus ns3::TcpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Address const & source, ns3::Ipv4Address const & destination, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
3264
    ## tcp-l4-protocol.h: ns3::Ipv4L4Protocol::RxStatus ns3::TcpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Address const & source, ns3::Ipv4Address const & destination, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
3262
    cls.add_method('Receive', 
3265
    cls.add_method('Receive', 
3263
                   'ns3::Ipv4L4Protocol::RxStatus', 
3266
                   'ns3::Ipv4L4Protocol::RxStatus', 
 Lines 3581-3586    Link Here 
3581
                   visibility='protected', is_virtual=True)
3584
                   visibility='protected', is_virtual=True)
3582
    return
3585
    return
3583
3586
3587
def register_Ns3LoopbackNetDevice_methods(root_module, cls):
3588
    ## loopback-net-device.h: ns3::LoopbackNetDevice::LoopbackNetDevice(ns3::LoopbackNetDevice const & arg0) [copy constructor]
3589
    cls.add_constructor([param('ns3::LoopbackNetDevice const &', 'arg0')])
3590
    ## loopback-net-device.h: ns3::LoopbackNetDevice::LoopbackNetDevice() [constructor]
3591
    cls.add_constructor([])
3592
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::AddLinkChangeCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
3593
    cls.add_method('AddLinkChangeCallback', 
3594
                   'void', 
3595
                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
3596
                   is_virtual=True)
3597
    ## loopback-net-device.h: ns3::Address ns3::LoopbackNetDevice::GetAddress() const [member function]
3598
    cls.add_method('GetAddress', 
3599
                   'ns3::Address', 
3600
                   [], 
3601
                   is_const=True, is_virtual=True)
3602
    ## loopback-net-device.h: ns3::Address ns3::LoopbackNetDevice::GetBroadcast() const [member function]
3603
    cls.add_method('GetBroadcast', 
3604
                   'ns3::Address', 
3605
                   [], 
3606
                   is_const=True, is_virtual=True)
3607
    ## loopback-net-device.h: ns3::Ptr<ns3::Channel> ns3::LoopbackNetDevice::GetChannel() const [member function]
3608
    cls.add_method('GetChannel', 
3609
                   'ns3::Ptr< ns3::Channel >', 
3610
                   [], 
3611
                   is_const=True, is_virtual=True)
3612
    ## loopback-net-device.h: uint32_t ns3::LoopbackNetDevice::GetIfIndex() const [member function]
3613
    cls.add_method('GetIfIndex', 
3614
                   'uint32_t', 
3615
                   [], 
3616
                   is_const=True, is_virtual=True)
3617
    ## loopback-net-device.h: uint16_t ns3::LoopbackNetDevice::GetMtu() const [member function]
3618
    cls.add_method('GetMtu', 
3619
                   'uint16_t', 
3620
                   [], 
3621
                   is_const=True, is_virtual=True)
3622
    ## loopback-net-device.h: ns3::Address ns3::LoopbackNetDevice::GetMulticast(ns3::Ipv4Address multicastGroup) const [member function]
3623
    cls.add_method('GetMulticast', 
3624
                   'ns3::Address', 
3625
                   [param('ns3::Ipv4Address', 'multicastGroup')], 
3626
                   is_const=True, is_virtual=True)
3627
    ## loopback-net-device.h: ns3::Address ns3::LoopbackNetDevice::GetMulticast(ns3::Ipv6Address addr) const [member function]
3628
    cls.add_method('GetMulticast', 
3629
                   'ns3::Address', 
3630
                   [param('ns3::Ipv6Address', 'addr')], 
3631
                   is_const=True, is_virtual=True)
3632
    ## loopback-net-device.h: ns3::Ptr<ns3::Node> ns3::LoopbackNetDevice::GetNode() const [member function]
3633
    cls.add_method('GetNode', 
3634
                   'ns3::Ptr< ns3::Node >', 
3635
                   [], 
3636
                   is_const=True, is_virtual=True)
3637
    ## loopback-net-device.h: static ns3::TypeId ns3::LoopbackNetDevice::GetTypeId() [member function]
3638
    cls.add_method('GetTypeId', 
3639
                   'ns3::TypeId', 
3640
                   [], 
3641
                   is_static=True)
3642
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::IsBridge() const [member function]
3643
    cls.add_method('IsBridge', 
3644
                   'bool', 
3645
                   [], 
3646
                   is_const=True, is_virtual=True)
3647
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::IsBroadcast() const [member function]
3648
    cls.add_method('IsBroadcast', 
3649
                   'bool', 
3650
                   [], 
3651
                   is_const=True, is_virtual=True)
3652
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::IsLinkUp() const [member function]
3653
    cls.add_method('IsLinkUp', 
3654
                   'bool', 
3655
                   [], 
3656
                   is_const=True, is_virtual=True)
3657
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::IsMulticast() const [member function]
3658
    cls.add_method('IsMulticast', 
3659
                   'bool', 
3660
                   [], 
3661
                   is_const=True, is_virtual=True)
3662
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::IsPointToPoint() const [member function]
3663
    cls.add_method('IsPointToPoint', 
3664
                   'bool', 
3665
                   [], 
3666
                   is_const=True, is_virtual=True)
3667
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::NeedsArp() const [member function]
3668
    cls.add_method('NeedsArp', 
3669
                   'bool', 
3670
                   [], 
3671
                   is_const=True, is_virtual=True)
3672
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::Send(ns3::Ptr<ns3::Packet> packet, ns3::Address const & dest, uint16_t protocolNumber) [member function]
3673
    cls.add_method('Send', 
3674
                   'bool', 
3675
                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
3676
                   is_virtual=True)
3677
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::SendFrom(ns3::Ptr<ns3::Packet> packet, ns3::Address const & source, ns3::Address const & dest, uint16_t protocolNumber) [member function]
3678
    cls.add_method('SendFrom', 
3679
                   'bool', 
3680
                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'source'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
3681
                   is_virtual=True)
3682
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::SetAddress(ns3::Address address) [member function]
3683
    cls.add_method('SetAddress', 
3684
                   'void', 
3685
                   [param('ns3::Address', 'address')], 
3686
                   is_virtual=True)
3687
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::SetIfIndex(uint32_t const index) [member function]
3688
    cls.add_method('SetIfIndex', 
3689
                   'void', 
3690
                   [param('uint32_t const', 'index')], 
3691
                   is_virtual=True)
3692
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::SetMtu(uint16_t const mtu) [member function]
3693
    cls.add_method('SetMtu', 
3694
                   'bool', 
3695
                   [param('uint16_t const', 'mtu')], 
3696
                   is_virtual=True)
3697
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::SetNode(ns3::Ptr<ns3::Node> node) [member function]
3698
    cls.add_method('SetNode', 
3699
                   'void', 
3700
                   [param('ns3::Ptr< ns3::Node >', 'node')], 
3701
                   is_virtual=True)
3702
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::SetPromiscReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty> cb) [member function]
3703
    cls.add_method('SetPromiscReceiveCallback', 
3704
                   'void', 
3705
                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
3706
                   is_virtual=True)
3707
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> cb) [member function]
3708
    cls.add_method('SetReceiveCallback', 
3709
                   'void', 
3710
                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
3711
                   is_virtual=True)
3712
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::SupportsSendFrom() const [member function]
3713
    cls.add_method('SupportsSendFrom', 
3714
                   'bool', 
3715
                   [], 
3716
                   is_const=True, is_virtual=True)
3717
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::DoDispose() [member function]
3718
    cls.add_method('DoDispose', 
3719
                   'void', 
3720
                   [], 
3721
                   visibility='protected', is_virtual=True)
3722
    return
3723
3584
def register_functions(root_module):
3724
def register_functions(root_module):
3585
    module = root_module
3725
    module = root_module
3586
    register_functions_ns3_Config(module.get_submodule('Config'), root_module)
3726
    register_functions_ns3_Config(module.get_submodule('Config'), root_module)
(-)a/bindings/python/apidefs/gcc-ILP32/ns3_module_list_routing.py (-4 / +4 lines)
 Lines 143-152    Link Here 
143
                   'bool', 
143
                   'bool', 
144
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
144
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
145
                   is_virtual=True)
145
                   is_virtual=True)
146
    ## ipv4-list-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4ListRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
146
    ## ipv4-list-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4ListRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
147
    cls.add_method('RouteOutput', 
147
    cls.add_method('RouteOutput', 
148
                   'ns3::Ptr< ns3::Ipv4Route >', 
148
                   'ns3::Ptr< ns3::Ipv4Route >', 
149
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
149
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
150
                   is_virtual=True)
150
                   is_virtual=True)
151
    ## ipv4-list-routing.h: void ns3::Ipv4ListRouting::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
151
    ## ipv4-list-routing.h: void ns3::Ipv4ListRouting::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
152
    cls.add_method('SetIpv4', 
152
    cls.add_method('SetIpv4', 
 Lines 225-234    Link Here 
225
                   'bool', 
225
                   'bool', 
226
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
226
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
227
                   is_virtual=True)
227
                   is_virtual=True)
228
    ## ipv6-list-routing.h: ns3::Ptr<ns3::Ipv6Route> ns3::Ipv6ListRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
228
    ## ipv6-list-routing.h: ns3::Ptr<ns3::Ipv6Route> ns3::Ipv6ListRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
229
    cls.add_method('RouteOutput', 
229
    cls.add_method('RouteOutput', 
230
                   'ns3::Ptr< ns3::Ipv6Route >', 
230
                   'ns3::Ptr< ns3::Ipv6Route >', 
231
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
231
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
232
                   is_virtual=True)
232
                   is_virtual=True)
233
    ## ipv6-list-routing.h: void ns3::Ipv6ListRouting::SetIpv6(ns3::Ptr<ns3::Ipv6> ipv6) [member function]
233
    ## ipv6-list-routing.h: void ns3::Ipv6ListRouting::SetIpv6(ns3::Ptr<ns3::Ipv6> ipv6) [member function]
234
    cls.add_method('SetIpv6', 
234
    cls.add_method('SetIpv6', 
(-)a/bindings/python/apidefs/gcc-ILP32/ns3_module_nix_vector_routing.py (-2 / +2 lines)
 Lines 144-153    Link Here 
144
                   'bool', 
144
                   'bool', 
145
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
145
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
146
                   visibility='private', is_virtual=True)
146
                   visibility='private', is_virtual=True)
147
    ## ipv4-nix-vector-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4NixVectorRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
147
    ## ipv4-nix-vector-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4NixVectorRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
148
    cls.add_method('RouteOutput', 
148
    cls.add_method('RouteOutput', 
149
                   'ns3::Ptr< ns3::Ipv4Route >', 
149
                   'ns3::Ptr< ns3::Ipv4Route >', 
150
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
150
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
151
                   visibility='private', is_virtual=True)
151
                   visibility='private', is_virtual=True)
152
    ## ipv4-nix-vector-routing.h: void ns3::Ipv4NixVectorRouting::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
152
    ## ipv4-nix-vector-routing.h: void ns3::Ipv4NixVectorRouting::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
153
    cls.add_method('SetIpv4', 
153
    cls.add_method('SetIpv4', 
(-)a/bindings/python/apidefs/gcc-ILP32/ns3_module_node.py (-4 / +13 lines)
 Lines 1879-1884    Link Here 
1879
                   'int', 
1879
                   'int', 
1880
                   [], 
1880
                   [], 
1881
                   is_pure_virtual=True, is_virtual=True)
1881
                   is_pure_virtual=True, is_virtual=True)
1882
    ## socket.h: void ns3::Socket::BindToNetDevice(ns3::Ptr<ns3::NetDevice> netdevice) [member function]
1883
    cls.add_method('BindToNetDevice', 
1884
                   'void', 
1885
                   [param('ns3::Ptr< ns3::NetDevice >', 'netdevice')], 
1886
                   is_virtual=True)
1882
    ## socket.h: int ns3::Socket::Close() [member function]
1887
    ## socket.h: int ns3::Socket::Close() [member function]
1883
    cls.add_method('Close', 
1888
    cls.add_method('Close', 
1884
                   'int', 
1889
                   'int', 
 Lines 1894-1899    Link Here 
1894
                   'ns3::Ptr< ns3::Socket >', 
1899
                   'ns3::Ptr< ns3::Socket >', 
1895
                   [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::TypeId', 'tid')], 
1900
                   [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::TypeId', 'tid')], 
1896
                   is_static=True)
1901
                   is_static=True)
1902
    ## socket.h: ns3::Ptr<ns3::NetDevice> ns3::Socket::GetBoundNetDevice() [member function]
1903
    cls.add_method('GetBoundNetDevice', 
1904
                   'ns3::Ptr< ns3::NetDevice >', 
1905
                   [])
1897
    ## socket.h: ns3::Socket::SocketErrno ns3::Socket::GetErrno() const [member function]
1906
    ## socket.h: ns3::Socket::SocketErrno ns3::Socket::GetErrno() const [member function]
1898
    cls.add_method('GetErrno', 
1907
    cls.add_method('GetErrno', 
1899
                   'ns3::Socket::SocketErrno', 
1908
                   'ns3::Socket::SocketErrno', 
 Lines 3041-3050    Link Here 
3041
                   'bool', 
3050
                   'bool', 
3042
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
3051
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
3043
                   is_pure_virtual=True, is_virtual=True)
3052
                   is_pure_virtual=True, is_virtual=True)
3044
    ## ipv4-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
3053
    ## ipv4-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
3045
    cls.add_method('RouteOutput', 
3054
    cls.add_method('RouteOutput', 
3046
                   'ns3::Ptr< ns3::Ipv4Route >', 
3055
                   'ns3::Ptr< ns3::Ipv4Route >', 
3047
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
3056
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
3048
                   is_pure_virtual=True, is_virtual=True)
3057
                   is_pure_virtual=True, is_virtual=True)
3049
    ## ipv4-routing-protocol.h: void ns3::Ipv4RoutingProtocol::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
3058
    ## ipv4-routing-protocol.h: void ns3::Ipv4RoutingProtocol::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
3050
    cls.add_method('SetIpv4', 
3059
    cls.add_method('SetIpv4', 
 Lines 3416-3425    Link Here 
3416
                   'bool', 
3425
                   'bool', 
3417
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
3426
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
3418
                   is_pure_virtual=True, is_virtual=True)
3427
                   is_pure_virtual=True, is_virtual=True)
3419
    ## ipv6-routing-protocol.h: ns3::Ptr<ns3::Ipv6Route> ns3::Ipv6RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
3428
    ## ipv6-routing-protocol.h: ns3::Ptr<ns3::Ipv6Route> ns3::Ipv6RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
3420
    cls.add_method('RouteOutput', 
3429
    cls.add_method('RouteOutput', 
3421
                   'ns3::Ptr< ns3::Ipv6Route >', 
3430
                   'ns3::Ptr< ns3::Ipv6Route >', 
3422
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
3431
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
3423
                   is_pure_virtual=True, is_virtual=True)
3432
                   is_pure_virtual=True, is_virtual=True)
3424
    ## ipv6-routing-protocol.h: void ns3::Ipv6RoutingProtocol::SetIpv6(ns3::Ptr<ns3::Ipv6> ipv6) [member function]
3433
    ## ipv6-routing-protocol.h: void ns3::Ipv6RoutingProtocol::SetIpv6(ns3::Ptr<ns3::Ipv6> ipv6) [member function]
3425
    cls.add_method('SetIpv6', 
3434
    cls.add_method('SetIpv6', 
(-)a/bindings/python/apidefs/gcc-ILP32/ns3_module_olsr.py (-2 / +2 lines)
 Lines 852-861    Link Here 
852
                   'bool', 
852
                   'bool', 
853
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
853
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
854
                   visibility='private', is_virtual=True)
854
                   visibility='private', is_virtual=True)
855
    ## olsr-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::olsr::RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
855
    ## olsr-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::olsr::RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
856
    cls.add_method('RouteOutput', 
856
    cls.add_method('RouteOutput', 
857
                   'ns3::Ptr< ns3::Ipv4Route >', 
857
                   'ns3::Ptr< ns3::Ipv4Route >', 
858
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
858
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
859
                   visibility='private', is_virtual=True)
859
                   visibility='private', is_virtual=True)
860
    ## olsr-routing-protocol.h: void ns3::olsr::RoutingProtocol::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
860
    ## olsr-routing-protocol.h: void ns3::olsr::RoutingProtocol::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
861
    cls.add_method('SetIpv4', 
861
    cls.add_method('SetIpv4', 
(-)a/bindings/python/apidefs/gcc-ILP32/ns3_module_static_routing.py (-4 / +4 lines)
 Lines 462-471    Link Here 
462
                   'bool', 
462
                   'bool', 
463
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
463
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
464
                   is_virtual=True)
464
                   is_virtual=True)
465
    ## ipv4-static-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4StaticRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
465
    ## ipv4-static-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4StaticRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
466
    cls.add_method('RouteOutput', 
466
    cls.add_method('RouteOutput', 
467
                   'ns3::Ptr< ns3::Ipv4Route >', 
467
                   'ns3::Ptr< ns3::Ipv4Route >', 
468
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
468
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
469
                   is_virtual=True)
469
                   is_virtual=True)
470
    ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::SetDefaultMulticastRoute(uint32_t outputInterface) [member function]
470
    ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::SetDefaultMulticastRoute(uint32_t outputInterface) [member function]
471
    cls.add_method('SetDefaultMulticastRoute', 
471
    cls.add_method('SetDefaultMulticastRoute', 
 Lines 602-611    Link Here 
602
                   'bool', 
602
                   'bool', 
603
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
603
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
604
                   is_virtual=True)
604
                   is_virtual=True)
605
    ## ipv6-static-routing.h: ns3::Ptr<ns3::Ipv6Route> ns3::Ipv6StaticRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
605
    ## ipv6-static-routing.h: ns3::Ptr<ns3::Ipv6Route> ns3::Ipv6StaticRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
606
    cls.add_method('RouteOutput', 
606
    cls.add_method('RouteOutput', 
607
                   'ns3::Ptr< ns3::Ipv6Route >', 
607
                   'ns3::Ptr< ns3::Ipv6Route >', 
608
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
608
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
609
                   is_virtual=True)
609
                   is_virtual=True)
610
    ## ipv6-static-routing.h: void ns3::Ipv6StaticRouting::SetDefaultMulticastRoute(uint32_t outputInterface) [member function]
610
    ## ipv6-static-routing.h: void ns3::Ipv6StaticRouting::SetDefaultMulticastRoute(uint32_t outputInterface) [member function]
611
    cls.add_method('SetDefaultMulticastRoute', 
611
    cls.add_method('SetDefaultMulticastRoute', 
(-)a/bindings/python/apidefs/gcc-LP64/ns3_module_aodv.py (-2 / +2 lines)
 Lines 467-476    Link Here 
467
                   'bool', 
467
                   'bool', 
468
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
468
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
469
                   is_virtual=True)
469
                   is_virtual=True)
470
    ## aodv-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::aodv::RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
470
    ## aodv-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::aodv::RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
471
    cls.add_method('RouteOutput', 
471
    cls.add_method('RouteOutput', 
472
                   'ns3::Ptr< ns3::Ipv4Route >', 
472
                   'ns3::Ptr< ns3::Ipv4Route >', 
473
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
473
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
474
                   is_virtual=True)
474
                   is_virtual=True)
475
    ## aodv-routing-protocol.h: void ns3::aodv::RoutingProtocol::SetBroadcastEnable(bool f) [member function]
475
    ## aodv-routing-protocol.h: void ns3::aodv::RoutingProtocol::SetBroadcastEnable(bool f) [member function]
476
    cls.add_method('SetBroadcastEnable', 
476
    cls.add_method('SetBroadcastEnable', 
(-)a/bindings/python/apidefs/gcc-LP64/ns3_module_core.py (-2 / +2 lines)
 Lines 489-496    Link Here 
489
def register_Ns3CommandLine_methods(root_module, cls):
489
def register_Ns3CommandLine_methods(root_module, cls):
490
    ## command-line.h: ns3::CommandLine::CommandLine() [constructor]
490
    ## command-line.h: ns3::CommandLine::CommandLine() [constructor]
491
    cls.add_constructor([])
491
    cls.add_constructor([])
492
    ## command-line.h: ns3::CommandLine::CommandLine(ns3::CommandLine const & arg0) [copy constructor]
492
    ## command-line.h: ns3::CommandLine::CommandLine(ns3::CommandLine const & cmd) [copy constructor]
493
    cls.add_constructor([param('ns3::CommandLine const &', 'arg0')])
493
    cls.add_constructor([param('ns3::CommandLine const &', 'cmd')])
494
    ## command-line.h: void ns3::CommandLine::AddValue(std::string const & name, std::string const & help, ns3::Callback<bool, std::string, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
494
    ## command-line.h: void ns3::CommandLine::AddValue(std::string const & name, std::string const & help, ns3::Callback<bool, std::string, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
495
    cls.add_method('AddValue', 
495
    cls.add_method('AddValue', 
496
                   'void', 
496
                   'void', 
(-)a/bindings/python/apidefs/gcc-LP64/ns3_module_global_routing.py (-2 / +2 lines)
 Lines 415-424    Link Here 
415
                   'bool', 
415
                   'bool', 
416
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
416
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
417
                   is_virtual=True)
417
                   is_virtual=True)
418
    ## ipv4-global-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4GlobalRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
418
    ## ipv4-global-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4GlobalRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
419
    cls.add_method('RouteOutput', 
419
    cls.add_method('RouteOutput', 
420
                   'ns3::Ptr< ns3::Ipv4Route >', 
420
                   'ns3::Ptr< ns3::Ipv4Route >', 
421
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
421
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
422
                   is_virtual=True)
422
                   is_virtual=True)
423
    ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
423
    ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
424
    cls.add_method('SetIpv4', 
424
    cls.add_method('SetIpv4', 
(-)a/bindings/python/apidefs/gcc-LP64/ns3_module_internet_stack.py (-2 / +142 lines)
 Lines 127-132    Link Here 
127
    module.add_class('Icmpv4L4Protocol', parent=root_module['ns3::Ipv4L4Protocol'])
127
    module.add_class('Icmpv4L4Protocol', parent=root_module['ns3::Ipv4L4Protocol'])
128
    ## icmpv6-l4-protocol.h: ns3::Icmpv6L4Protocol [class]
128
    ## icmpv6-l4-protocol.h: ns3::Icmpv6L4Protocol [class]
129
    module.add_class('Icmpv6L4Protocol', parent=root_module['ns3::Ipv6L4Protocol'])
129
    module.add_class('Icmpv6L4Protocol', parent=root_module['ns3::Ipv6L4Protocol'])
130
    ## loopback-net-device.h: ns3::LoopbackNetDevice [class]
131
    module.add_class('LoopbackNetDevice', parent=root_module['ns3::NetDevice'])
130
    
132
    
131
    ## Register a nested module for the namespace Config
133
    ## Register a nested module for the namespace Config
132
    
134
    
 Lines 258-263    Link Here 
258
    register_Ns3UdpL4Protocol_methods(root_module, root_module['ns3::UdpL4Protocol'])
260
    register_Ns3UdpL4Protocol_methods(root_module, root_module['ns3::UdpL4Protocol'])
259
    register_Ns3Icmpv4L4Protocol_methods(root_module, root_module['ns3::Icmpv4L4Protocol'])
261
    register_Ns3Icmpv4L4Protocol_methods(root_module, root_module['ns3::Icmpv4L4Protocol'])
260
    register_Ns3Icmpv6L4Protocol_methods(root_module, root_module['ns3::Icmpv6L4Protocol'])
262
    register_Ns3Icmpv6L4Protocol_methods(root_module, root_module['ns3::Icmpv6L4Protocol'])
263
    register_Ns3LoopbackNetDevice_methods(root_module, root_module['ns3::LoopbackNetDevice'])
261
    return
264
    return
262
265
263
def register_Ns3OptionField_methods(root_module, cls):
266
def register_Ns3OptionField_methods(root_module, cls):
 Lines 3254-3263    Link Here 
3254
    cls.add_method('DeAllocate', 
3257
    cls.add_method('DeAllocate', 
3255
                   'void', 
3258
                   'void', 
3256
                   [param('ns3::Ipv4EndPoint *', 'endPoint')])
3259
                   [param('ns3::Ipv4EndPoint *', 'endPoint')])
3257
    ## tcp-l4-protocol.h: void ns3::TcpL4Protocol::Send(ns3::Ptr<ns3::Packet> packet, ns3::Ipv4Address saddr, ns3::Ipv4Address daddr, uint16_t sport, uint16_t dport) [member function]
3260
    ## tcp-l4-protocol.h: void ns3::TcpL4Protocol::Send(ns3::Ptr<ns3::Packet> packet, ns3::Ipv4Address saddr, ns3::Ipv4Address daddr, uint16_t sport, uint16_t dport, ns3::Ptr<ns3::NetDevice> oif=0) [member function]
3258
    cls.add_method('Send', 
3261
    cls.add_method('Send', 
3259
                   'void', 
3262
                   'void', 
3260
                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Address', 'saddr'), param('ns3::Ipv4Address', 'daddr'), param('uint16_t', 'sport'), param('uint16_t', 'dport')])
3263
                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Address', 'saddr'), param('ns3::Ipv4Address', 'daddr'), param('uint16_t', 'sport'), param('uint16_t', 'dport'), param('ns3::Ptr< ns3::NetDevice >', 'oif', default_value='0')])
3261
    ## tcp-l4-protocol.h: ns3::Ipv4L4Protocol::RxStatus ns3::TcpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Address const & source, ns3::Ipv4Address const & destination, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
3264
    ## tcp-l4-protocol.h: ns3::Ipv4L4Protocol::RxStatus ns3::TcpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Address const & source, ns3::Ipv4Address const & destination, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
3262
    cls.add_method('Receive', 
3265
    cls.add_method('Receive', 
3263
                   'ns3::Ipv4L4Protocol::RxStatus', 
3266
                   'ns3::Ipv4L4Protocol::RxStatus', 
 Lines 3581-3586    Link Here 
3581
                   visibility='protected', is_virtual=True)
3584
                   visibility='protected', is_virtual=True)
3582
    return
3585
    return
3583
3586
3587
def register_Ns3LoopbackNetDevice_methods(root_module, cls):
3588
    ## loopback-net-device.h: ns3::LoopbackNetDevice::LoopbackNetDevice(ns3::LoopbackNetDevice const & arg0) [copy constructor]
3589
    cls.add_constructor([param('ns3::LoopbackNetDevice const &', 'arg0')])
3590
    ## loopback-net-device.h: ns3::LoopbackNetDevice::LoopbackNetDevice() [constructor]
3591
    cls.add_constructor([])
3592
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::AddLinkChangeCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
3593
    cls.add_method('AddLinkChangeCallback', 
3594
                   'void', 
3595
                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
3596
                   is_virtual=True)
3597
    ## loopback-net-device.h: ns3::Address ns3::LoopbackNetDevice::GetAddress() const [member function]
3598
    cls.add_method('GetAddress', 
3599
                   'ns3::Address', 
3600
                   [], 
3601
                   is_const=True, is_virtual=True)
3602
    ## loopback-net-device.h: ns3::Address ns3::LoopbackNetDevice::GetBroadcast() const [member function]
3603
    cls.add_method('GetBroadcast', 
3604
                   'ns3::Address', 
3605
                   [], 
3606
                   is_const=True, is_virtual=True)
3607
    ## loopback-net-device.h: ns3::Ptr<ns3::Channel> ns3::LoopbackNetDevice::GetChannel() const [member function]
3608
    cls.add_method('GetChannel', 
3609
                   'ns3::Ptr< ns3::Channel >', 
3610
                   [], 
3611
                   is_const=True, is_virtual=True)
3612
    ## loopback-net-device.h: uint32_t ns3::LoopbackNetDevice::GetIfIndex() const [member function]
3613
    cls.add_method('GetIfIndex', 
3614
                   'uint32_t', 
3615
                   [], 
3616
                   is_const=True, is_virtual=True)
3617
    ## loopback-net-device.h: uint16_t ns3::LoopbackNetDevice::GetMtu() const [member function]
3618
    cls.add_method('GetMtu', 
3619
                   'uint16_t', 
3620
                   [], 
3621
                   is_const=True, is_virtual=True)
3622
    ## loopback-net-device.h: ns3::Address ns3::LoopbackNetDevice::GetMulticast(ns3::Ipv4Address multicastGroup) const [member function]
3623
    cls.add_method('GetMulticast', 
3624
                   'ns3::Address', 
3625
                   [param('ns3::Ipv4Address', 'multicastGroup')], 
3626
                   is_const=True, is_virtual=True)
3627
    ## loopback-net-device.h: ns3::Address ns3::LoopbackNetDevice::GetMulticast(ns3::Ipv6Address addr) const [member function]
3628
    cls.add_method('GetMulticast', 
3629
                   'ns3::Address', 
3630
                   [param('ns3::Ipv6Address', 'addr')], 
3631
                   is_const=True, is_virtual=True)
3632
    ## loopback-net-device.h: ns3::Ptr<ns3::Node> ns3::LoopbackNetDevice::GetNode() const [member function]
3633
    cls.add_method('GetNode', 
3634
                   'ns3::Ptr< ns3::Node >', 
3635
                   [], 
3636
                   is_const=True, is_virtual=True)
3637
    ## loopback-net-device.h: static ns3::TypeId ns3::LoopbackNetDevice::GetTypeId() [member function]
3638
    cls.add_method('GetTypeId', 
3639
                   'ns3::TypeId', 
3640
                   [], 
3641
                   is_static=True)
3642
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::IsBridge() const [member function]
3643
    cls.add_method('IsBridge', 
3644
                   'bool', 
3645
                   [], 
3646
                   is_const=True, is_virtual=True)
3647
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::IsBroadcast() const [member function]
3648
    cls.add_method('IsBroadcast', 
3649
                   'bool', 
3650
                   [], 
3651
                   is_const=True, is_virtual=True)
3652
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::IsLinkUp() const [member function]
3653
    cls.add_method('IsLinkUp', 
3654
                   'bool', 
3655
                   [], 
3656
                   is_const=True, is_virtual=True)
3657
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::IsMulticast() const [member function]
3658
    cls.add_method('IsMulticast', 
3659
                   'bool', 
3660
                   [], 
3661
                   is_const=True, is_virtual=True)
3662
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::IsPointToPoint() const [member function]
3663
    cls.add_method('IsPointToPoint', 
3664
                   'bool', 
3665
                   [], 
3666
                   is_const=True, is_virtual=True)
3667
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::NeedsArp() const [member function]
3668
    cls.add_method('NeedsArp', 
3669
                   'bool', 
3670
                   [], 
3671
                   is_const=True, is_virtual=True)
3672
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::Send(ns3::Ptr<ns3::Packet> packet, ns3::Address const & dest, uint16_t protocolNumber) [member function]
3673
    cls.add_method('Send', 
3674
                   'bool', 
3675
                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
3676
                   is_virtual=True)
3677
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::SendFrom(ns3::Ptr<ns3::Packet> packet, ns3::Address const & source, ns3::Address const & dest, uint16_t protocolNumber) [member function]
3678
    cls.add_method('SendFrom', 
3679
                   'bool', 
3680
                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'source'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
3681
                   is_virtual=True)
3682
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::SetAddress(ns3::Address address) [member function]
3683
    cls.add_method('SetAddress', 
3684
                   'void', 
3685
                   [param('ns3::Address', 'address')], 
3686
                   is_virtual=True)
3687
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::SetIfIndex(uint32_t const index) [member function]
3688
    cls.add_method('SetIfIndex', 
3689
                   'void', 
3690
                   [param('uint32_t const', 'index')], 
3691
                   is_virtual=True)
3692
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::SetMtu(uint16_t const mtu) [member function]
3693
    cls.add_method('SetMtu', 
3694
                   'bool', 
3695
                   [param('uint16_t const', 'mtu')], 
3696
                   is_virtual=True)
3697
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::SetNode(ns3::Ptr<ns3::Node> node) [member function]
3698
    cls.add_method('SetNode', 
3699
                   'void', 
3700
                   [param('ns3::Ptr< ns3::Node >', 'node')], 
3701
                   is_virtual=True)
3702
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::SetPromiscReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty> cb) [member function]
3703
    cls.add_method('SetPromiscReceiveCallback', 
3704
                   'void', 
3705
                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
3706
                   is_virtual=True)
3707
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> cb) [member function]
3708
    cls.add_method('SetReceiveCallback', 
3709
                   'void', 
3710
                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
3711
                   is_virtual=True)
3712
    ## loopback-net-device.h: bool ns3::LoopbackNetDevice::SupportsSendFrom() const [member function]
3713
    cls.add_method('SupportsSendFrom', 
3714
                   'bool', 
3715
                   [], 
3716
                   is_const=True, is_virtual=True)
3717
    ## loopback-net-device.h: void ns3::LoopbackNetDevice::DoDispose() [member function]
3718
    cls.add_method('DoDispose', 
3719
                   'void', 
3720
                   [], 
3721
                   visibility='protected', is_virtual=True)
3722
    return
3723
3584
def register_functions(root_module):
3724
def register_functions(root_module):
3585
    module = root_module
3725
    module = root_module
3586
    register_functions_ns3_Config(module.get_submodule('Config'), root_module)
3726
    register_functions_ns3_Config(module.get_submodule('Config'), root_module)
(-)a/bindings/python/apidefs/gcc-LP64/ns3_module_list_routing.py (-4 / +4 lines)
 Lines 143-152    Link Here 
143
                   'bool', 
143
                   'bool', 
144
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
144
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
145
                   is_virtual=True)
145
                   is_virtual=True)
146
    ## ipv4-list-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4ListRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
146
    ## ipv4-list-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4ListRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
147
    cls.add_method('RouteOutput', 
147
    cls.add_method('RouteOutput', 
148
                   'ns3::Ptr< ns3::Ipv4Route >', 
148
                   'ns3::Ptr< ns3::Ipv4Route >', 
149
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
149
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
150
                   is_virtual=True)
150
                   is_virtual=True)
151
    ## ipv4-list-routing.h: void ns3::Ipv4ListRouting::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
151
    ## ipv4-list-routing.h: void ns3::Ipv4ListRouting::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
152
    cls.add_method('SetIpv4', 
152
    cls.add_method('SetIpv4', 
 Lines 225-234    Link Here 
225
                   'bool', 
225
                   'bool', 
226
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
226
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
227
                   is_virtual=True)
227
                   is_virtual=True)
228
    ## ipv6-list-routing.h: ns3::Ptr<ns3::Ipv6Route> ns3::Ipv6ListRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
228
    ## ipv6-list-routing.h: ns3::Ptr<ns3::Ipv6Route> ns3::Ipv6ListRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
229
    cls.add_method('RouteOutput', 
229
    cls.add_method('RouteOutput', 
230
                   'ns3::Ptr< ns3::Ipv6Route >', 
230
                   'ns3::Ptr< ns3::Ipv6Route >', 
231
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
231
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
232
                   is_virtual=True)
232
                   is_virtual=True)
233
    ## ipv6-list-routing.h: void ns3::Ipv6ListRouting::SetIpv6(ns3::Ptr<ns3::Ipv6> ipv6) [member function]
233
    ## ipv6-list-routing.h: void ns3::Ipv6ListRouting::SetIpv6(ns3::Ptr<ns3::Ipv6> ipv6) [member function]
234
    cls.add_method('SetIpv6', 
234
    cls.add_method('SetIpv6', 
(-)a/bindings/python/apidefs/gcc-LP64/ns3_module_nix_vector_routing.py (-2 / +2 lines)
 Lines 144-153    Link Here 
144
                   'bool', 
144
                   'bool', 
145
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
145
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
146
                   visibility='private', is_virtual=True)
146
                   visibility='private', is_virtual=True)
147
    ## ipv4-nix-vector-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4NixVectorRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
147
    ## ipv4-nix-vector-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4NixVectorRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
148
    cls.add_method('RouteOutput', 
148
    cls.add_method('RouteOutput', 
149
                   'ns3::Ptr< ns3::Ipv4Route >', 
149
                   'ns3::Ptr< ns3::Ipv4Route >', 
150
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
150
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
151
                   visibility='private', is_virtual=True)
151
                   visibility='private', is_virtual=True)
152
    ## ipv4-nix-vector-routing.h: void ns3::Ipv4NixVectorRouting::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
152
    ## ipv4-nix-vector-routing.h: void ns3::Ipv4NixVectorRouting::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
153
    cls.add_method('SetIpv4', 
153
    cls.add_method('SetIpv4', 
(-)a/bindings/python/apidefs/gcc-LP64/ns3_module_node.py (-4 / +13 lines)
 Lines 1879-1884    Link Here 
1879
                   'int', 
1879
                   'int', 
1880
                   [], 
1880
                   [], 
1881
                   is_pure_virtual=True, is_virtual=True)
1881
                   is_pure_virtual=True, is_virtual=True)
1882
    ## socket.h: void ns3::Socket::BindToNetDevice(ns3::Ptr<ns3::NetDevice> netdevice) [member function]
1883
    cls.add_method('BindToNetDevice', 
1884
                   'void', 
1885
                   [param('ns3::Ptr< ns3::NetDevice >', 'netdevice')], 
1886
                   is_virtual=True)
1882
    ## socket.h: int ns3::Socket::Close() [member function]
1887
    ## socket.h: int ns3::Socket::Close() [member function]
1883
    cls.add_method('Close', 
1888
    cls.add_method('Close', 
1884
                   'int', 
1889
                   'int', 
 Lines 1894-1899    Link Here 
1894
                   'ns3::Ptr< ns3::Socket >', 
1899
                   'ns3::Ptr< ns3::Socket >', 
1895
                   [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::TypeId', 'tid')], 
1900
                   [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::TypeId', 'tid')], 
1896
                   is_static=True)
1901
                   is_static=True)
1902
    ## socket.h: ns3::Ptr<ns3::NetDevice> ns3::Socket::GetBoundNetDevice() [member function]
1903
    cls.add_method('GetBoundNetDevice', 
1904
                   'ns3::Ptr< ns3::NetDevice >', 
1905
                   [])
1897
    ## socket.h: ns3::Socket::SocketErrno ns3::Socket::GetErrno() const [member function]
1906
    ## socket.h: ns3::Socket::SocketErrno ns3::Socket::GetErrno() const [member function]
1898
    cls.add_method('GetErrno', 
1907
    cls.add_method('GetErrno', 
1899
                   'ns3::Socket::SocketErrno', 
1908
                   'ns3::Socket::SocketErrno', 
 Lines 3041-3050    Link Here 
3041
                   'bool', 
3050
                   'bool', 
3042
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
3051
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
3043
                   is_pure_virtual=True, is_virtual=True)
3052
                   is_pure_virtual=True, is_virtual=True)
3044
    ## ipv4-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
3053
    ## ipv4-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
3045
    cls.add_method('RouteOutput', 
3054
    cls.add_method('RouteOutput', 
3046
                   'ns3::Ptr< ns3::Ipv4Route >', 
3055
                   'ns3::Ptr< ns3::Ipv4Route >', 
3047
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
3056
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
3048
                   is_pure_virtual=True, is_virtual=True)
3057
                   is_pure_virtual=True, is_virtual=True)
3049
    ## ipv4-routing-protocol.h: void ns3::Ipv4RoutingProtocol::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
3058
    ## ipv4-routing-protocol.h: void ns3::Ipv4RoutingProtocol::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
3050
    cls.add_method('SetIpv4', 
3059
    cls.add_method('SetIpv4', 
 Lines 3416-3425    Link Here 
3416
                   'bool', 
3425
                   'bool', 
3417
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
3426
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
3418
                   is_pure_virtual=True, is_virtual=True)
3427
                   is_pure_virtual=True, is_virtual=True)
3419
    ## ipv6-routing-protocol.h: ns3::Ptr<ns3::Ipv6Route> ns3::Ipv6RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
3428
    ## ipv6-routing-protocol.h: ns3::Ptr<ns3::Ipv6Route> ns3::Ipv6RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
3420
    cls.add_method('RouteOutput', 
3429
    cls.add_method('RouteOutput', 
3421
                   'ns3::Ptr< ns3::Ipv6Route >', 
3430
                   'ns3::Ptr< ns3::Ipv6Route >', 
3422
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
3431
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
3423
                   is_pure_virtual=True, is_virtual=True)
3432
                   is_pure_virtual=True, is_virtual=True)
3424
    ## ipv6-routing-protocol.h: void ns3::Ipv6RoutingProtocol::SetIpv6(ns3::Ptr<ns3::Ipv6> ipv6) [member function]
3433
    ## ipv6-routing-protocol.h: void ns3::Ipv6RoutingProtocol::SetIpv6(ns3::Ptr<ns3::Ipv6> ipv6) [member function]
3425
    cls.add_method('SetIpv6', 
3434
    cls.add_method('SetIpv6', 
(-)a/bindings/python/apidefs/gcc-LP64/ns3_module_olsr.py (-2 / +2 lines)
 Lines 852-861    Link Here 
852
                   'bool', 
852
                   'bool', 
853
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
853
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
854
                   visibility='private', is_virtual=True)
854
                   visibility='private', is_virtual=True)
855
    ## olsr-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::olsr::RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
855
    ## olsr-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::olsr::RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
856
    cls.add_method('RouteOutput', 
856
    cls.add_method('RouteOutput', 
857
                   'ns3::Ptr< ns3::Ipv4Route >', 
857
                   'ns3::Ptr< ns3::Ipv4Route >', 
858
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
858
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
859
                   visibility='private', is_virtual=True)
859
                   visibility='private', is_virtual=True)
860
    ## olsr-routing-protocol.h: void ns3::olsr::RoutingProtocol::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
860
    ## olsr-routing-protocol.h: void ns3::olsr::RoutingProtocol::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
861
    cls.add_method('SetIpv4', 
861
    cls.add_method('SetIpv4', 
(-)a/bindings/python/apidefs/gcc-LP64/ns3_module_static_routing.py (-4 / +4 lines)
 Lines 462-471    Link Here 
462
                   'bool', 
462
                   'bool', 
463
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
463
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
464
                   is_virtual=True)
464
                   is_virtual=True)
465
    ## ipv4-static-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4StaticRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
465
    ## ipv4-static-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4StaticRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
466
    cls.add_method('RouteOutput', 
466
    cls.add_method('RouteOutput', 
467
                   'ns3::Ptr< ns3::Ipv4Route >', 
467
                   'ns3::Ptr< ns3::Ipv4Route >', 
468
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
468
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
469
                   is_virtual=True)
469
                   is_virtual=True)
470
    ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::SetDefaultMulticastRoute(uint32_t outputInterface) [member function]
470
    ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::SetDefaultMulticastRoute(uint32_t outputInterface) [member function]
471
    cls.add_method('SetDefaultMulticastRoute', 
471
    cls.add_method('SetDefaultMulticastRoute', 
 Lines 602-611    Link Here 
602
                   'bool', 
602
                   'bool', 
603
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
603
                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
604
                   is_virtual=True)
604
                   is_virtual=True)
605
    ## ipv6-static-routing.h: ns3::Ptr<ns3::Ipv6Route> ns3::Ipv6StaticRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
605
    ## ipv6-static-routing.h: ns3::Ptr<ns3::Ipv6Route> ns3::Ipv6StaticRouting::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
606
    cls.add_method('RouteOutput', 
606
    cls.add_method('RouteOutput', 
607
                   'ns3::Ptr< ns3::Ipv6Route >', 
607
                   'ns3::Ptr< ns3::Ipv6Route >', 
608
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
608
                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
609
                   is_virtual=True)
609
                   is_virtual=True)
610
    ## ipv6-static-routing.h: void ns3::Ipv6StaticRouting::SetDefaultMulticastRoute(uint32_t outputInterface) [member function]
610
    ## ipv6-static-routing.h: void ns3::Ipv6StaticRouting::SetDefaultMulticastRoute(uint32_t outputInterface) [member function]
611
    cls.add_method('SetDefaultMulticastRoute', 
611
    cls.add_method('SetDefaultMulticastRoute', 
(-)a/examples/wscript (+1 lines)
 Lines 13-18    Link Here 
13
        bld.add_subdirs('naming')
13
        bld.add_subdirs('naming')
14
        bld.add_subdirs('realtime')
14
        bld.add_subdirs('realtime')
15
        bld.add_subdirs('routing')
15
        bld.add_subdirs('routing')
16
        bld.add_subdirs('socket')
16
        bld.add_subdirs('stats')
17
        bld.add_subdirs('stats')
17
        bld.add_subdirs('tap')
18
        bld.add_subdirs('tap')
18
        bld.add_subdirs('tcp')
19
        bld.add_subdirs('tcp')
(-)a/src/internet-stack/arp-l3-protocol.cc (-2 / +2 lines)
 Lines 316-323    Link Here 
316
  ArpHeader arp;
316
  ArpHeader arp;
317
  // need to pick a source address; use routing implementation to select
317
  // need to pick a source address; use routing implementation to select
318
  Ptr<Ipv4L3Protocol> ipv4 = m_node->GetObject<Ipv4L3Protocol> ();
318
  Ptr<Ipv4L3Protocol> ipv4 = m_node->GetObject<Ipv4L3Protocol> ();
319
  int32_t interface = ipv4->GetInterfaceForDevice (cache->GetDevice ());
319
  Ptr<NetDevice> interface = cache->GetDevice ();
320
  NS_ASSERT (interface >= 0);
320
  NS_ASSERT (interface != 0);
321
  Ipv4Header header;
321
  Ipv4Header header;
322
  header.SetDestination (to);
322
  header.SetDestination (to);
323
  Socket::SocketErrno errno_;
323
  Socket::SocketErrno errno_;
(-)a/src/internet-stack/icmpv4-l4-protocol.cc (-1 / +1 lines)
 Lines 89-95    Link Here 
89
  header.SetProtocol (PROT_NUMBER);
89
  header.SetProtocol (PROT_NUMBER);
90
  Socket::SocketErrno errno_;
90
  Socket::SocketErrno errno_;
91
  Ptr<Ipv4Route> route;
91
  Ptr<Ipv4Route> route;
92
  uint32_t oif = 0; //specify non-zero if bound to a source address
92
  Ptr<NetDevice> oif (0); //specify non-zero if bound to a source address
93
  route = ipv4->GetRoutingProtocol ()->RouteOutput (packet, header, oif, errno_);
93
  route = ipv4->GetRoutingProtocol ()->RouteOutput (packet, header, oif, errno_);
94
  if (route != 0)
94
  if (route != 0)
95
    {
95
    {
(-)a/src/internet-stack/icmpv6-l4-protocol.cc (-1 / +1 lines)
 Lines 747-753    Link Here 
747
  SocketIpTtlTag tag;
747
  SocketIpTtlTag tag;
748
  Socket::SocketErrno err;
748
  Socket::SocketErrno err;
749
  Ptr<Ipv6Route> route;
749
  Ptr<Ipv6Route> route;
750
  uint32_t oif = 0; //specify non-zero if bound to a source address
750
  Ptr<NetDevice> oif (0); //specify non-zero if bound to a source address
751
  
751
  
752
  header.SetDestinationAddress (dst);
752
  header.SetDestinationAddress (dst);
753
  route = ipv6->GetRoutingProtocol ()->RouteOutput (packet, header, oif, err);
753
  route = ipv6->GetRoutingProtocol ()->RouteOutput (packet, header, oif, err);
(-)a/src/internet-stack/ipv4-end-point-demux.cc (+11 lines)
 Lines 219-224    Link Here 
219
                        << " does not match packet dport " << dport);
219
                        << " does not match packet dport " << dport);
220
          continue;
220
          continue;
221
        }
221
        }
222
      if (endP->GetBoundNetDevice ())
223
        {
224
          if (endP->GetBoundNetDevice () != incomingInterface->GetDevice ())
225
            {
226
              NS_LOG_LOGIC ("Skipping endpoint " << &endP
227
                            << " because endpoint is bound to specific device and"
228
                            << endP->GetBoundNetDevice ()
229
                            << " does not match packet device " << incomingInterface->GetDevice ());
230
              continue;
231
            }
232
        }
222
      bool subnetDirected = false;
233
      bool subnetDirected = false;
223
      Ipv4Address incomingInterfaceAddr = daddr;  // may be a broadcast
234
      Ipv4Address incomingInterfaceAddr = daddr;  // may be a broadcast
224
      for (uint32_t i = 0; i < incomingInterface->GetNAddresses (); i++)
235
      for (uint32_t i = 0; i < incomingInterface->GetNAddresses (); i++)
(-)a/src/internet-stack/ipv4-end-point.cc (+13 lines)
 Lines 75-80    Link Here 
75
  m_peerPort = port;
75
  m_peerPort = port;
76
}
76
}
77
77
78
void
79
Ipv4EndPoint::BindToNetDevice (Ptr<NetDevice> netdevice)
80
{
81
  m_boundnetdevice = netdevice;
82
  return;
83
}
84
85
Ptr<NetDevice> 
86
Ipv4EndPoint::GetBoundNetDevice (void)
87
{
88
 return m_boundnetdevice;
89
}
90
78
void 
91
void 
79
Ipv4EndPoint::SetRxCallback (Callback<void,Ptr<Packet>, Ipv4Address, uint16_t> callback)
92
Ipv4EndPoint::SetRxCallback (Callback<void,Ptr<Packet>, Ipv4Address, uint16_t> callback)
80
{
93
{
(-)a/src/internet-stack/ipv4-end-point.h (+5 lines)
 Lines 24-29    Link Here 
24
#include <stdint.h>
24
#include <stdint.h>
25
#include "ns3/ipv4-address.h"
25
#include "ns3/ipv4-address.h"
26
#include "ns3/callback.h"
26
#include "ns3/callback.h"
27
#include "ns3/net-device.h"
27
28
28
namespace ns3 {
29
namespace ns3 {
29
30
 Lines 53-58    Link Here 
53
  uint16_t GetPeerPort (void);
54
  uint16_t GetPeerPort (void);
54
55
55
  void SetPeer (Ipv4Address address, uint16_t port);
56
  void SetPeer (Ipv4Address address, uint16_t port);
57
  
58
  void BindToNetDevice (Ptr<NetDevice> netdevice);
59
  Ptr<NetDevice> GetBoundNetDevice (void);
56
60
57
  // Called from socket implementations to get notified about important events.
61
  // Called from socket implementations to get notified about important events.
58
  void SetRxCallback (Callback<void,Ptr<Packet>, Ipv4Address, uint16_t> callback);
62
  void SetRxCallback (Callback<void,Ptr<Packet>, Ipv4Address, uint16_t> callback);
 Lines 77-82    Link Here 
77
  uint16_t m_localPort;
81
  uint16_t m_localPort;
78
  Ipv4Address m_peerAddr;
82
  Ipv4Address m_peerAddr;
79
  uint16_t m_peerPort;
83
  uint16_t m_peerPort;
84
  Ptr<NetDevice> m_boundnetdevice;
80
  Callback<void,Ptr<Packet>, Ipv4Address, uint16_t> m_rxCallback;
85
  Callback<void,Ptr<Packet>, Ipv4Address, uint16_t> m_rxCallback;
81
  Callback<void,Ipv4Address,uint8_t,uint8_t,uint8_t,uint32_t> m_icmpCallback;
86
  Callback<void,Ipv4Address,uint8_t,uint8_t,uint8_t,uint32_t> m_icmpCallback;
82
  Callback<void> m_destroyCallback;
87
  Callback<void> m_destroyCallback;
(-)a/src/internet-stack/ipv4-l3-protocol.cc (-1 / +1 lines)
 Lines 600-606    Link Here 
600
  // 5) packet is not broadcast, and route is NULL (e.g., a raw socket call)
600
  // 5) packet is not broadcast, and route is NULL (e.g., a raw socket call)
601
  NS_LOG_LOGIC ("Ipv4L3Protocol::Send case 4:  passed in with no route " << destination);
601
  NS_LOG_LOGIC ("Ipv4L3Protocol::Send case 4:  passed in with no route " << destination);
602
  Socket::SocketErrno errno_; 
602
  Socket::SocketErrno errno_; 
603
  uint32_t oif = 0; // unused for now
603
  Ptr<NetDevice> oif (0); // unused for now
604
  ipHeader = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, mayFragment);
604
  ipHeader = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, mayFragment);
605
  Ptr<Ipv4Route> newRoute = m_routingProtocol->RouteOutput (packet, ipHeader, oif, errno_);
605
  Ptr<Ipv4Route> newRoute = m_routingProtocol->RouteOutput (packet, ipHeader, oif, errno_);
606
  if (newRoute)
606
  if (newRoute)
(-)a/src/internet-stack/ipv4-raw-socket-impl.cc (-1 / +1 lines)
 Lines 177-183    Link Here 
177
      header.SetProtocol (m_protocol);
177
      header.SetProtocol (m_protocol);
178
      SocketErrno errno_ = ERROR_NOTERROR;//do not use errno as it is the standard C last error number 
178
      SocketErrno errno_ = ERROR_NOTERROR;//do not use errno as it is the standard C last error number 
179
      Ptr<Ipv4Route> route;
179
      Ptr<Ipv4Route> route;
180
      uint32_t oif = 0; //specify non-zero if bound to a source address
180
      Ptr<NetDevice> oif = m_boundnetdevice; //specify non-zero if bound to a source address
181
      // TBD-- we could cache the route and just check its validity
181
      // TBD-- we could cache the route and just check its validity
182
      route = ipv4->GetRoutingProtocol ()->RouteOutput (p, header, oif, errno_);
182
      route = ipv4->GetRoutingProtocol ()->RouteOutput (p, header, oif, errno_);
183
      if (route != 0)
183
      if (route != 0)
(-)a/src/internet-stack/ipv6-l3-protocol.cc (-3 / +3 lines)
 Lines 630-636    Link Here 
630
  /* 3) */
630
  /* 3) */
631
  NS_LOG_LOGIC ("Ipv6L3Protocol::Send case 3: passed in with no route " << destination);
631
  NS_LOG_LOGIC ("Ipv6L3Protocol::Send case 3: passed in with no route " << destination);
632
  Socket::SocketErrno err;
632
  Socket::SocketErrno err;
633
  uint32_t oif = 0;
633
  Ptr<NetDevice> oif (0);
634
  Ptr<Ipv6Route> newRoute = 0;
634
  Ptr<Ipv6Route> newRoute = 0;
635
635
636
  hdr = BuildHeader (source, destination, protocol, packet->GetSize (), ttl);
636
  hdr = BuildHeader (source, destination, protocol, packet->GetSize (), ttl);
 Lines 639-645    Link Here 
639
  {
639
  {
640
    int32_t index = GetInterfaceForAddress (source);
640
    int32_t index = GetInterfaceForAddress (source);
641
    NS_ASSERT (index >= 0);
641
    NS_ASSERT (index >= 0);
642
    oif = index;
642
    oif = GetNetDevice(index);
643
  }
643
  }
644
644
645
  newRoute = m_routingProtocol->RouteOutput (packet, hdr, oif, err);
645
  newRoute = m_routingProtocol->RouteOutput (packet, hdr, oif, err);
 Lines 651-657    Link Here 
651
  else
651
  else
652
  {
652
  {
653
    NS_LOG_WARN ("No route to host, drop!");
653
    NS_LOG_WARN ("No route to host, drop!");
654
    m_dropTrace (hdr, packet, DROP_NO_ROUTE, oif);
654
    m_dropTrace (hdr, packet, DROP_NO_ROUTE, GetInterfaceForDevice(oif));
655
  }
655
  }
656
}
656
}
657
657
(-)a/src/internet-stack/ipv6-raw-socket-impl.cc (-2 / +2 lines)
 Lines 203-215    Link Here 
203
    hdr.SetDestinationAddress (dst);
203
    hdr.SetDestinationAddress (dst);
204
    SocketErrno err = ERROR_NOTERROR;
204
    SocketErrno err = ERROR_NOTERROR;
205
    Ptr<Ipv6Route> route = 0;
205
    Ptr<Ipv6Route> route = 0;
206
    uint32_t oif = 0; /* specify non-zero if bound to a source address */
206
    Ptr<NetDevice> oif (0); /*specify non-zero if bound to a source address */
207
207
208
    if (!m_src.IsAny ())
208
    if (!m_src.IsAny ())
209
    {
209
    {
210
      int32_t index = ipv6->GetInterfaceForAddress (m_src);
210
      int32_t index = ipv6->GetInterfaceForAddress (m_src);
211
      NS_ASSERT (index >= 0);
211
      NS_ASSERT (index >= 0);
212
      oif = index;
212
      oif = ipv6->GetNetDevice (index);
213
    }
213
    }
214
214
215
    route = ipv6->GetRoutingProtocol ()->RouteOutput (p, hdr, oif, err);
215
    route = ipv6->GetRoutingProtocol ()->RouteOutput (p, hdr, oif, err);
(-)a/src/internet-stack/tcp-l4-protocol.cc (-6 / +5 lines)
 Lines 549-557    Link Here 
549
void
549
void
550
TcpL4Protocol::Send (Ptr<Packet> packet, 
550
TcpL4Protocol::Send (Ptr<Packet> packet, 
551
           Ipv4Address saddr, Ipv4Address daddr, 
551
           Ipv4Address saddr, Ipv4Address daddr, 
552
           uint16_t sport, uint16_t dport)
552
           uint16_t sport, uint16_t dport, Ptr<NetDevice> oif)
553
{
553
{
554
  NS_LOG_FUNCTION (this << packet << saddr << daddr << sport << dport);
554
  NS_LOG_FUNCTION (this << packet << saddr << daddr << sport << dport << oif);
555
555
556
  TcpHeader tcpHeader;
556
  TcpHeader tcpHeader;
557
  tcpHeader.SetDestinationPort (dport);
557
  tcpHeader.SetDestinationPort (dport);
 Lines 579-585    Link Here 
579
      header.SetProtocol (PROT_NUMBER);
579
      header.SetProtocol (PROT_NUMBER);
580
      Socket::SocketErrno errno_;
580
      Socket::SocketErrno errno_;
581
      Ptr<Ipv4Route> route;
581
      Ptr<Ipv4Route> route;
582
      uint32_t oif = 0; //specify non-zero if bound to a source address
582
      Ptr<NetDevice> oif (0); //specify non-zero if bound to a source address
583
      route = ipv4->GetRoutingProtocol ()->RouteOutput (packet, header, oif, errno_);
583
      route = ipv4->GetRoutingProtocol ()->RouteOutput (packet, header, oif, errno_);
584
      ipv4->Send (packet, saddr, daddr, PROT_NUMBER, route);
584
      ipv4->Send (packet, saddr, daddr, PROT_NUMBER, route);
585
    }
585
    }
 Lines 587-600    Link Here 
587
587
588
void
588
void
589
TcpL4Protocol::SendPacket (Ptr<Packet> packet, const TcpHeader &outgoing,
589
TcpL4Protocol::SendPacket (Ptr<Packet> packet, const TcpHeader &outgoing,
590
                               Ipv4Address saddr, Ipv4Address daddr)
590
                               Ipv4Address saddr, Ipv4Address daddr, Ptr<NetDevice> oif)
591
{
591
{
592
  NS_LOG_LOGIC("TcpL4Protocol " << this
592
  NS_LOG_LOGIC("TcpL4Protocol " << this
593
              << " sending seq " << outgoing.GetSequenceNumber()
593
              << " sending seq " << outgoing.GetSequenceNumber()
594
              << " ack " << outgoing.GetAckNumber()
594
              << " ack " << outgoing.GetAckNumber()
595
              << " flags " << std::hex << (int)outgoing.GetFlags() << std::dec
595
              << " flags " << std::hex << (int)outgoing.GetFlags() << std::dec
596
              << " data size " << packet->GetSize());
596
              << " data size " << packet->GetSize());
597
  NS_LOG_FUNCTION (this << packet << saddr << daddr);
597
  NS_LOG_FUNCTION (this << packet << saddr << daddr << oif);
598
  // XXX outgoingHeader cannot be logged
598
  // XXX outgoingHeader cannot be logged
599
599
600
  TcpHeader outgoingHeader = outgoing;
600
  TcpHeader outgoingHeader = outgoing;
 Lines 619-625    Link Here 
619
      header.SetProtocol (PROT_NUMBER);
619
      header.SetProtocol (PROT_NUMBER);
620
      Socket::SocketErrno errno_;
620
      Socket::SocketErrno errno_;
621
      Ptr<Ipv4Route> route;
621
      Ptr<Ipv4Route> route;
622
      uint32_t oif = 0; //specify non-zero if bound to a source address
623
      route = ipv4->GetRoutingProtocol ()->RouteOutput (packet, header, oif, errno_);
622
      route = ipv4->GetRoutingProtocol ()->RouteOutput (packet, header, oif, errno_);
624
      ipv4->Send (packet, saddr, daddr, PROT_NUMBER, route);
623
      ipv4->Send (packet, saddr, daddr, PROT_NUMBER, route);
625
    }
624
    }
(-)a/src/internet-stack/tcp-l4-protocol.h (-2 / +3 lines)
 Lines 28-33    Link Here 
28
#include "ns3/ptr.h"
28
#include "ns3/ptr.h"
29
#include "ns3/object-factory.h"
29
#include "ns3/object-factory.h"
30
#include "ipv4-l4-protocol.h"
30
#include "ipv4-l4-protocol.h"
31
#include "ns3/net-device.h"
31
32
32
namespace ns3 {
33
namespace ns3 {
33
34
 Lines 92-98    Link Here 
92
   */
93
   */
93
  void Send (Ptr<Packet> packet,
94
  void Send (Ptr<Packet> packet,
94
             Ipv4Address saddr, Ipv4Address daddr, 
95
             Ipv4Address saddr, Ipv4Address daddr, 
95
             uint16_t sport, uint16_t dport);
96
             uint16_t sport, uint16_t dport, Ptr<NetDevice> oif = 0);
96
  /**
97
  /**
97
   * \brief Recieve a packet up the protocol stack
98
   * \brief Recieve a packet up the protocol stack
98
   * \param p The Packet to dump the contents into
99
   * \param p The Packet to dump the contents into
 Lines 119-125    Link Here 
119
private:
120
private:
120
  friend class TcpSocketImpl;
121
  friend class TcpSocketImpl;
121
  void SendPacket (Ptr<Packet>, const TcpHeader &,
122
  void SendPacket (Ptr<Packet>, const TcpHeader &,
122
                  Ipv4Address, Ipv4Address);
123
                  Ipv4Address, Ipv4Address, Ptr<NetDevice> oif = 0);
123
  static ObjectFactory GetDefaultRttEstimatorFactory (void);
124
  static ObjectFactory GetDefaultRttEstimatorFactory (void);
124
  TcpL4Protocol (const TcpL4Protocol &o);
125
  TcpL4Protocol (const TcpL4Protocol &o);
125
  TcpL4Protocol &operator = (const TcpL4Protocol &o);
126
  TcpL4Protocol &operator = (const TcpL4Protocol &o);
(-)a/src/internet-stack/tcp-socket-impl.cc (-7 / +25 lines)
 Lines 384-390    Link Here 
384
      header.SetDestination (m_remoteAddress);
384
      header.SetDestination (m_remoteAddress);
385
      Socket::SocketErrno errno_;
385
      Socket::SocketErrno errno_;
386
      Ptr<Ipv4Route> route;
386
      Ptr<Ipv4Route> route;
387
      uint32_t oif = 0; //specify non-zero if bound to a source address
387
      Ptr<NetDevice> oif = m_boundnetdevice; //specify non-zero if bound to a source address
388
      // XXX here, cache the route in the endpoint?
388
      // XXX here, cache the route in the endpoint?
389
      route = ipv4->GetRoutingProtocol ()->RouteOutput (Ptr<Packet> (), header, oif, errno_);
389
      route = ipv4->GetRoutingProtocol ()->RouteOutput (Ptr<Packet> (), header, oif, errno_);
390
      if (route != 0)
390
      if (route != 0)
 Lines 480-486    Link Here 
480
  // about payload sent, not with headers
480
  // about payload sent, not with headers
481
  uint32_t sentSize = p->GetSize();
481
  uint32_t sentSize = p->GetSize();
482
  m_tcp->Send (p, m_endPoint->GetLocalAddress (), ipv4,
482
  m_tcp->Send (p, m_endPoint->GetLocalAddress (), ipv4,
483
                  m_endPoint->GetLocalPort (), port);
483
                  m_endPoint->GetLocalPort (), port, m_boundnetdevice);
484
  NotifyDataSent (sentSize);
484
  NotifyDataSent (sentSize);
485
  return 0;
485
  return 0;
486
}
486
}
 Lines 641-646    Link Here 
641
}
641
}
642
642
643
void
643
void
644
TcpSocketImpl::BindToNetDevice (Ptr<NetDevice> netdevice)
645
{
646
  NS_LOG_FUNCTION (netdevice);
647
  Socket::BindToNetDevice (netdevice); // Includes sanity check
648
  if (m_endPoint == 0)
649
    {
650
      if (Bind () == -1)
651
       {
652
         NS_ASSERT (m_endPoint == 0);
653
         return;
654
       }
655
      NS_ASSERT (m_endPoint != 0);
656
    }
657
  m_endPoint->BindToNetDevice (netdevice);
658
  return;
659
}
660
661
void
644
TcpSocketImpl::ForwardUp (Ptr<Packet> packet, Ipv4Address ipv4, uint16_t port)
662
TcpSocketImpl::ForwardUp (Ptr<Packet> packet, Ipv4Address ipv4, uint16_t port)
645
{
663
{
646
  NS_LOG_DEBUG("Socket " << this << " got forward up" <<
664
  NS_LOG_DEBUG("Socket " << this << " got forward up" <<
 Lines 787-793    Link Here 
787
  header.SetDestinationPort (m_remotePort);
805
  header.SetDestinationPort (m_remotePort);
788
  header.SetWindowSize (AdvertisedWindowSize());
806
  header.SetWindowSize (AdvertisedWindowSize());
789
  m_tcp->SendPacket (p, header, m_endPoint->GetLocalAddress (), 
807
  m_tcp->SendPacket (p, header, m_endPoint->GetLocalAddress (), 
790
    m_remoteAddress);
808
    m_remoteAddress, m_boundnetdevice);
791
  Time rto = m_rtt->RetransmitTimeout ();
809
  Time rto = m_rtt->RetransmitTimeout ();
792
  bool hasSyn = flags & TcpHeader::SYN;
810
  bool hasSyn = flags & TcpHeader::SYN;
793
  bool hasFin = flags & TcpHeader::FIN;
811
  bool hasFin = flags & TcpHeader::FIN;
 Lines 938-944    Link Here 
938
            Ipv4Header header;
956
            Ipv4Header header;
939
            Socket::SocketErrno errno_;
957
            Socket::SocketErrno errno_;
940
            Ptr<Ipv4Route> route;
958
            Ptr<Ipv4Route> route;
941
            uint32_t oif = 0; //specify non-zero if bound to a source address
959
            Ptr<NetDevice> oif = m_boundnetdevice; //specify non-zero if bound to a source address
942
            header.SetDestination (m_remoteAddress);
960
            header.SetDestination (m_remoteAddress);
943
            route = ipv4->GetRoutingProtocol ()->RouteOutput (Ptr<Packet> (), header, oif, errno_);
961
            route = ipv4->GetRoutingProtocol ()->RouteOutput (Ptr<Packet> (), header, oif, errno_);
944
            if (route != 0)
962
            if (route != 0)
 Lines 1176-1182    Link Here 
1176
      NS_LOG_LOGIC ("About to send a packet with flags: " << flags);
1194
      NS_LOG_LOGIC ("About to send a packet with flags: " << flags);
1177
      m_tcp->SendPacket (p, header,
1195
      m_tcp->SendPacket (p, header,
1178
                         m_endPoint->GetLocalAddress (),
1196
                         m_endPoint->GetLocalAddress (),
1179
                         m_remoteAddress);
1197
                         m_remoteAddress, m_boundnetdevice);
1180
      m_rtt->SentSeq(m_nextTxSequence, sz);       // notify the RTT
1198
      m_rtt->SentSeq(m_nextTxSequence, sz);       // notify the RTT
1181
      // Notify the application of the data being sent
1199
      // Notify the application of the data being sent
1182
      Simulator::ScheduleNow(&TcpSocketImpl::NotifyDataSent, this, sz);
1200
      Simulator::ScheduleNow(&TcpSocketImpl::NotifyDataSent, this, sz);
 Lines 1622-1628    Link Here 
1622
  tcpHeader.SetWindowSize (AdvertisedWindowSize());
1640
  tcpHeader.SetWindowSize (AdvertisedWindowSize());
1623
1641
1624
  m_tcp->SendPacket (p, tcpHeader, m_endPoint->GetLocalAddress (),
1642
  m_tcp->SendPacket (p, tcpHeader, m_endPoint->GetLocalAddress (),
1625
    m_remoteAddress);
1643
    m_remoteAddress, m_boundnetdevice);
1626
  NS_LOG_LOGIC ("Schedule persist timeout at time " 
1644
  NS_LOG_LOGIC ("Schedule persist timeout at time " 
1627
                    <<Simulator::Now ().GetSeconds () << " to expire at time "
1645
                    <<Simulator::Now ().GetSeconds () << " to expire at time "
1628
                    << (Simulator::Now () + m_persistTime).GetSeconds());
1646
                    << (Simulator::Now () + m_persistTime).GetSeconds());
 Lines 1688-1694    Link Here 
1688
  tcpHeader.SetWindowSize (AdvertisedWindowSize());
1706
  tcpHeader.SetWindowSize (AdvertisedWindowSize());
1689
1707
1690
  m_tcp->SendPacket (p, tcpHeader, m_endPoint->GetLocalAddress (),
1708
  m_tcp->SendPacket (p, tcpHeader, m_endPoint->GetLocalAddress (),
1691
    m_remoteAddress);
1709
    m_remoteAddress, m_boundnetdevice);
1692
}
1710
}
1693
1711
1694
void
1712
void
(-)a/src/internet-stack/tcp-socket-impl.h (+1 lines)
 Lines 95-100    Link Here 
95
  virtual Ptr<Packet> RecvFrom (uint32_t maxSize, uint32_t flags,
95
  virtual Ptr<Packet> RecvFrom (uint32_t maxSize, uint32_t flags,
96
    Address &fromAddress);
96
    Address &fromAddress);
97
  virtual int GetSockName (Address &address) const; 
97
  virtual int GetSockName (Address &address) const; 
98
  virtual void BindToNetDevice (Ptr<NetDevice> netdevice);
98
99
99
private:
100
private:
100
  friend class Tcp;
101
  friend class Tcp;
(-)a/src/internet-stack/udp-socket-impl.cc (-2 / +29 lines)
 Lines 296-302    Link Here 
296
UdpSocketImpl::DoSendTo (Ptr<Packet> p, Ipv4Address dest, uint16_t port)
296
UdpSocketImpl::DoSendTo (Ptr<Packet> p, Ipv4Address dest, uint16_t port)
297
{
297
{
298
  NS_LOG_FUNCTION (this << p << dest << port);
298
  NS_LOG_FUNCTION (this << p << dest << port);
299
299
  if (m_boundnetdevice)
300
    {
301
      NS_LOG_LOGIC("Bound interface number " << m_boundnetdevice->GetIfIndex());
302
    }
300
  if (m_endPoint == 0)
303
  if (m_endPoint == 0)
301
    {
304
    {
302
      if (Bind () == -1)
305
      if (Bind () == -1)
 Lines 375-380    Link Here 
375
          Ipv4Address addri = iaddr.GetLocal ();
378
          Ipv4Address addri = iaddr.GetLocal ();
376
          if (addri == Ipv4Address ("127.0.0.1"))
379
          if (addri == Ipv4Address ("127.0.0.1"))
377
            continue;
380
            continue;
381
          // Check if interface-bound socket
382
          if (m_boundnetdevice) 
383
            {
384
              if (ipv4->GetNetDevice(i) != m_boundnetdevice)
385
                continue;
386
            }
378
          Ipv4Mask maski = iaddr.GetMask ();
387
          Ipv4Mask maski = iaddr.GetMask ();
379
          if (maski == Ipv4Mask::GetOnes ())
388
          if (maski == Ipv4Mask::GetOnes ())
380
            {
389
            {
 Lines 413-419    Link Here 
413
      header.SetProtocol (UdpL4Protocol::PROT_NUMBER);
422
      header.SetProtocol (UdpL4Protocol::PROT_NUMBER);
414
      Socket::SocketErrno errno_;
423
      Socket::SocketErrno errno_;
415
      Ptr<Ipv4Route> route;
424
      Ptr<Ipv4Route> route;
416
      uint32_t oif = 0; //specify non-zero if bound to a source address
425
      Ptr<NetDevice> oif = m_boundnetdevice; //specify non-zero if bound to a specific device
417
      // TBD-- we could cache the route and just check its validity
426
      // TBD-- we could cache the route and just check its validity
418
      route = ipv4->GetRoutingProtocol ()->RouteOutput (p, header, oif, errno_); 
427
      route = ipv4->GetRoutingProtocol ()->RouteOutput (p, header, oif, errno_); 
419
      if (route != 0)
428
      if (route != 0)
 Lines 555-560    Link Here 
555
  return 0;
564
  return 0;
556
}
565
}
557
566
567
void
568
UdpSocketImpl::BindToNetDevice (Ptr<NetDevice> netdevice)
569
{
570
  NS_LOG_FUNCTION (netdevice);
571
  Socket::BindToNetDevice (netdevice); // Includes sanity check
572
  if (m_endPoint == 0)
573
    {
574
      if (Bind () == -1)
575
       {
576
         NS_ASSERT (m_endPoint == 0);
577
         return;
578
       }
579
      NS_ASSERT (m_endPoint != 0);
580
    }
581
  m_endPoint->BindToNetDevice (netdevice);
582
  return;
583
}
584
558
void 
585
void 
559
UdpSocketImpl::ForwardUp (Ptr<Packet> packet, Ipv4Address ipv4, uint16_t port)
586
UdpSocketImpl::ForwardUp (Ptr<Packet> packet, Ipv4Address ipv4, uint16_t port)
560
{
587
{
(-)a/src/internet-stack/udp-socket-impl.h (+1 lines)
 Lines 77-82    Link Here 
77
  virtual int GetSockName (Address &address) const; 
77
  virtual int GetSockName (Address &address) const; 
78
  virtual int MulticastJoinGroup (uint32_t interfaceIndex, const Address &groupAddress);
78
  virtual int MulticastJoinGroup (uint32_t interfaceIndex, const Address &groupAddress);
79
  virtual int MulticastLeaveGroup (uint32_t interfaceIndex, const Address &groupAddress);
79
  virtual int MulticastLeaveGroup (uint32_t interfaceIndex, const Address &groupAddress);
80
  virtual void BindToNetDevice (Ptr<NetDevice> netdevice);
80
81
81
private:
82
private:
82
  // Attributes set through UdpSocket base class 
83
  // Attributes set through UdpSocket base class 
(-)a/src/internet-stack/wscript (+1 lines)
 Lines 143-148    Link Here 
143
        'icmpv6-l4-protocol.h',
143
        'icmpv6-l4-protocol.h',
144
        'ipv6-l4-protocol.h',
144
        'ipv6-l4-protocol.h',
145
        'ndisc-cache.h',
145
        'ndisc-cache.h',
146
	'loopback-net-device.h'
146
       ]
147
       ]
147
148
148
    if bld.env['NSC_ENABLED']:
149
    if bld.env['NSC_ENABLED']:
(-)a/src/node/ipv4-routing-protocol.h (-2 / +2 lines)
 Lines 66-78    Link Here 
66
   * \param p packet to be routed.  Note that this method may modify the packet.
66
   * \param p packet to be routed.  Note that this method may modify the packet.
67
   *          Callers may also pass in a null pointer. 
67
   *          Callers may also pass in a null pointer. 
68
   * \param header input parameter (used to form key to search for the route)
68
   * \param header input parameter (used to form key to search for the route)
69
   * \param oif Output interface index.  May be zero, or may be bound via
69
   * \param oif Output interface Netdevice.  May be zero, or may be bound via
70
   *            socket options to a particular output interface.
70
   *            socket options to a particular output interface.
71
   * \param sockerr Output parameter; socket errno 
71
   * \param sockerr Output parameter; socket errno 
72
   *
72
   *
73
   * \returns a code that indicates what happened in the lookup
73
   * \returns a code that indicates what happened in the lookup
74
   */
74
   */
75
  virtual Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr) = 0;
75
  virtual Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr) = 0;
76
  
76
  
77
  /**
77
  /**
78
   * \brief Route an input packet (to be forwarded or locally delivered)
78
   * \brief Route an input packet (to be forwarded or locally delivered)
(-)a/src/node/ipv6-routing-protocol.h (-2 / +2 lines)
 Lines 70-82    Link Here 
70
   * \param p packet to be routed.  Note that this method may modify the packet.
70
   * \param p packet to be routed.  Note that this method may modify the packet.
71
   *          Callers may also pass in a null pointer. 
71
   *          Callers may also pass in a null pointer. 
72
   * \param header input parameter (used to form key to search for the route)
72
   * \param header input parameter (used to form key to search for the route)
73
   * \param oif Output interface index.  May be zero, or may be bound via
73
   * \param oif Output interface device.  May be zero, or may be bound via
74
   *            socket options to a particular output interface.
74
   *            socket options to a particular output interface.
75
   * \param sockerr Output parameter; socket errno 
75
   * \param sockerr Output parameter; socket errno 
76
   *
76
   *
77
   * \returns a code that indicates what happened in the lookup
77
   * \returns a code that indicates what happened in the lookup
78
   */
78
   */
79
  virtual Ptr<Ipv6Route> RouteOutput (Ptr<Packet> p, const Ipv6Header &header, uint32_t oif, Socket::SocketErrno &sockerr) = 0;
79
  virtual Ptr<Ipv6Route> RouteOutput (Ptr<Packet> p, const Ipv6Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr) = 0;
80
  
80
  
81
  /**
81
  /**
82
   * \brief Route an input packet (to be forwarded or locally delivered)
82
   * \brief Route an input packet (to be forwarded or locally delivered)
(-)a/src/node/socket.cc (+27 lines)
 Lines 33-38    Link Here 
33
33
34
Socket::Socket (void)
34
Socket::Socket (void)
35
{
35
{
36
  m_boundnetdevice = 0;
36
  NS_LOG_FUNCTION_NOARGS ();
37
  NS_LOG_FUNCTION_NOARGS ();
37
}
38
}
38
39
 Lines 297-302    Link Here 
297
  m_receivedData = MakeNullCallback<void,Ptr<Socket> > ();
298
  m_receivedData = MakeNullCallback<void,Ptr<Socket> > ();
298
}
299
}
299
300
301
void
302
Socket::BindToNetDevice (Ptr<NetDevice> netdevice)
303
{
304
  if (netdevice != 0)
305
    {
306
      bool found = false;
307
      for (uint32_t i = 0; i < GetNode()->GetNDevices (); i++)
308
        {
309
          if (GetNode()->GetDevice (i) == netdevice)
310
            {
311
              found = true;
312
              break;
313
            }
314
        }
315
        NS_ASSERT_MSG (found, "Socket cannot be bound to a NetDevice not existing on the Node");
316
    }
317
  m_boundnetdevice = netdevice;
318
  return;
319
}
320
321
Ptr<NetDevice>
322
Socket::GetBoundNetDevice ()
323
{
324
  return m_boundnetdevice;
325
}
326
300
/***************************************************************
327
/***************************************************************
301
 *           Socket Tags
328
 *           Socket Tags
302
 ***************************************************************/
329
 ***************************************************************/
(-)a/src/node/socket.h (+23 lines)
 Lines 27-32    Link Here 
27
#include "ns3/ptr.h"
27
#include "ns3/ptr.h"
28
#include "ns3/tag.h"
28
#include "ns3/tag.h"
29
#include "ns3/object.h"
29
#include "ns3/object.h"
30
#include "ns3/net-device.h"
30
#include "address.h"
31
#include "address.h"
31
#include <stdint.h>
32
#include <stdint.h>
32
33
 Lines 511-516    Link Here 
511
   * \returns 0 if success, -1 otherwise
512
   * \returns 0 if success, -1 otherwise
512
   */
513
   */
513
  virtual int GetSockName (Address &address) const = 0; 
514
  virtual int GetSockName (Address &address) const = 0; 
515
516
  /**
517
   * \brief Bind a socket to specific device.
518
   *
519
   * This method corresponds to using setsockopt() SO_BINDTODEVICE
520
   * of real network or BSD sockets. 
521
   * 
522
   * \param Netdevice Pointer to Netdevice of desired interface
523
   * \returns nothing
524
   */
525
  virtual void BindToNetDevice (Ptr<NetDevice> netdevice);
526
527
  /**
528
   * \brief Returns socket's bound netdevice, if any.
529
   *
530
   * This method corresponds to using getsockopt() SO_BINDTODEVICE
531
   * of real network or BSD sockets. 
532
   * 
533
   * \returns Pointer to interface.
534
   */
535
  Ptr<NetDevice> GetBoundNetDevice (); 
514
 
536
 
515
protected:
537
protected:
516
  void NotifyConnectionSucceeded (void);
538
  void NotifyConnectionSucceeded (void);
 Lines 523-528    Link Here 
523
  void NotifySend (uint32_t spaceAvailable);
545
  void NotifySend (uint32_t spaceAvailable);
524
  void NotifyDataRecv (void);
546
  void NotifyDataRecv (void);
525
  virtual void DoDispose (void);
547
  virtual void DoDispose (void);
548
  Ptr<NetDevice> m_boundnetdevice;
526
private:
549
private:
527
  Callback<void, Ptr<Socket> >                   m_connectionSucceeded;
550
  Callback<void, Ptr<Socket> >                   m_connectionSucceeded;
528
  Callback<void, Ptr<Socket> >                   m_connectionFailed;
551
  Callback<void, Ptr<Socket> >                   m_connectionFailed;
(-)a/src/routing/aodv/aodv-routing-protocol.cc (-1 / +1 lines)
 Lines 215-221    Link Here 
215
215
216
Ptr<Ipv4Route>
216
Ptr<Ipv4Route>
217
RoutingProtocol::RouteOutput (Ptr<Packet> p, const Ipv4Header &header,
217
RoutingProtocol::RouteOutput (Ptr<Packet> p, const Ipv4Header &header,
218
    uint32_t oif, Socket::SocketErrno &sockerr)
218
    Ptr<NetDevice> oif, Socket::SocketErrno &sockerr)
219
{
219
{
220
  NS_LOG_FUNCTION (this << header.GetDestination ());
220
  NS_LOG_FUNCTION (this << header.GetDestination ());
221
  if (m_socketAddresses.empty ())
221
  if (m_socketAddresses.empty ())
(-)a/src/routing/aodv/aodv-routing-protocol.h (-1 / +1 lines)
 Lines 61-67    Link Here 
61
  
61
  
62
  ///\name From Ipv4RoutingProtocol
62
  ///\name From Ipv4RoutingProtocol
63
  //\{
63
  //\{
64
  Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr);
64
  Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr);
65
  bool RouteInput (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
65
  bool RouteInput (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
66
                           UnicastForwardCallback ucb, MulticastForwardCallback mcb,
66
                           UnicastForwardCallback ucb, MulticastForwardCallback mcb,
67
                           LocalDeliverCallback lcb, ErrorCallback ecb);  
67
                           LocalDeliverCallback lcb, ErrorCallback ecb);  
(-)a/src/routing/global-routing/ipv4-global-routing.cc (-3 / +27 lines)
 Lines 115-121    Link Here 
115
115
116
116
117
Ptr<Ipv4Route>
117
Ptr<Ipv4Route>
118
Ipv4GlobalRouting::LookupGlobal (Ipv4Address dest)
118
Ipv4GlobalRouting::LookupGlobal (Ipv4Address dest, Ptr<NetDevice> oif)
119
{
119
{
120
  NS_LOG_FUNCTION_NOARGS ();
120
  NS_LOG_FUNCTION_NOARGS ();
121
  NS_LOG_LOGIC ("Looking for route for destination " << dest);
121
  NS_LOG_LOGIC ("Looking for route for destination " << dest);
 Lines 131-136    Link Here 
131
      if ((*i)->GetDest ().IsEqual (dest)) 
131
      if ((*i)->GetDest ().IsEqual (dest)) 
132
        {
132
        {
133
          NS_LOG_LOGIC ("Found global host route" << *i); 
133
          NS_LOG_LOGIC ("Found global host route" << *i); 
134
          if (oif != 0)
135
            {
136
              if (oif != m_ipv4->GetNetDevice(route->GetInterface ()))
137
                {
138
                  NS_LOG_LOGIC ("Not on requested interface, skipping");
139
                  continue;
140
                }
141
            }
134
          route = (*i);
142
          route = (*i);
135
          found = true; 
143
          found = true; 
136
          break;
144
          break;
 Lines 148-153    Link Here 
148
          if (mask.IsMatch (dest, entry)) 
156
          if (mask.IsMatch (dest, entry)) 
149
            {
157
            {
150
              NS_LOG_LOGIC ("Found global network route" << *j); 
158
              NS_LOG_LOGIC ("Found global network route" << *j); 
159
              if (oif != 0)
160
                {
161
                  if (oif != m_ipv4->GetNetDevice(route->GetInterface ()))
162
                    {
163
                      NS_LOG_LOGIC ("Not on requested interface, skipping");
164
                      continue;
165
                    }
166
                }
151
              route = (*j);
167
              route = (*j);
152
              found = true;
168
              found = true;
153
              break;
169
              break;
 Lines 165-170    Link Here 
165
          if (mask.IsMatch (dest, entry))
181
          if (mask.IsMatch (dest, entry))
166
            {
182
            {
167
              NS_LOG_LOGIC ("Found external route" << *k);
183
              NS_LOG_LOGIC ("Found external route" << *k);
184
              if (oif != 0)
185
                {
186
                  if (oif != m_ipv4->GetNetDevice(route->GetInterface ()))
187
                    {
188
                      NS_LOG_LOGIC ("Not on requested interface, skipping");
189
                      continue;
190
                    }
191
                }
168
              route = (*k);
192
              route = (*k);
169
              found = true;
193
              found = true;
170
              break;
194
              break;
 Lines 332-338    Link Here 
332
}
356
}
333
357
334
Ptr<Ipv4Route>
358
Ptr<Ipv4Route>
335
Ipv4GlobalRouting::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr)
359
Ipv4GlobalRouting::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr)
336
{      
360
{      
337
361
338
//
362
//
 Lines 348-354    Link Here 
348
// See if this is a unicast packet we have a route for.
372
// See if this is a unicast packet we have a route for.
349
//
373
//
350
  NS_LOG_LOGIC ("Unicast destination- looking up");
374
  NS_LOG_LOGIC ("Unicast destination- looking up");
351
  Ptr<Ipv4Route> rtentry = LookupGlobal (header.GetDestination());
375
  Ptr<Ipv4Route> rtentry = LookupGlobal (header.GetDestination (), oif);
352
  if (rtentry)
376
  if (rtentry)
353
    {
377
    {
354
      sockerr = Socket::ERROR_NOTERROR;
378
      sockerr = Socket::ERROR_NOTERROR;
(-)a/src/routing/global-routing/ipv4-global-routing.h (-2 / +2 lines)
 Lines 80-86    Link Here 
80
  Ipv4GlobalRouting ();
80
  Ipv4GlobalRouting ();
81
  virtual ~Ipv4GlobalRouting ();
81
  virtual ~Ipv4GlobalRouting ();
82
82
83
  virtual Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr);
83
  virtual Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr);
84
84
85
  virtual bool RouteInput  (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
85
  virtual bool RouteInput  (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
86
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
86
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
 Lines 222-228    Link Here 
222
  typedef std::list<Ipv4RoutingTableEntry *>::const_iterator ASExternalRoutesCI;
222
  typedef std::list<Ipv4RoutingTableEntry *>::const_iterator ASExternalRoutesCI;
223
  typedef std::list<Ipv4RoutingTableEntry *>::iterator ASExternalRoutesI;
223
  typedef std::list<Ipv4RoutingTableEntry *>::iterator ASExternalRoutesI;
224
224
225
  Ptr<Ipv4Route> LookupGlobal (Ipv4Address dest);
225
  Ptr<Ipv4Route> LookupGlobal (Ipv4Address dest, Ptr<NetDevice> oif = 0);
226
226
227
  HostRoutes m_hostRoutes;
227
  HostRoutes m_hostRoutes;
228
  NetworkRoutes m_networkRoutes;
228
  NetworkRoutes m_networkRoutes;
(-)a/src/routing/list-routing/ipv4-list-routing.cc (-3 / +3 lines)
 Lines 82-88    Link Here 
82
82
83
83
84
Ptr<Ipv4Route>
84
Ptr<Ipv4Route>
85
Ipv4ListRouting::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, enum Socket::SocketErrno &sockerr)
85
Ipv4ListRouting::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, enum Socket::SocketErrno &sockerr)
86
{
86
{
87
  NS_LOG_FUNCTION (this << header.GetDestination () << " " << header.GetSource () << " " << oif);
87
  NS_LOG_FUNCTION (this << header.GetDestination () << " " << header.GetSource () << " " << oif);
88
  Ptr<Ipv4Route> route;
88
  Ptr<Ipv4Route> route;
 Lines 288-294    Link Here 
288
288
289
class Ipv4ARouting : public Ipv4RoutingProtocol {
289
class Ipv4ARouting : public Ipv4RoutingProtocol {
290
public:
290
public:
291
  Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr)  { return 0;}
291
  Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr)  { return 0;}
292
  bool RouteInput  (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
292
  bool RouteInput  (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
293
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
293
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
294
                             LocalDeliverCallback lcb, ErrorCallback ecb) {return false;}
294
                             LocalDeliverCallback lcb, ErrorCallback ecb) {return false;}
 Lines 301-307    Link Here 
301
301
302
class Ipv4BRouting : public Ipv4RoutingProtocol {
302
class Ipv4BRouting : public Ipv4RoutingProtocol {
303
public:
303
public:
304
  Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr)  { return 0;}
304
  Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr)  { return 0;}
305
  bool RouteInput  (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
305
  bool RouteInput  (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
306
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
306
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
307
                             LocalDeliverCallback lcb, ErrorCallback ecb) {return false;}
307
                             LocalDeliverCallback lcb, ErrorCallback ecb) {return false;}
(-)a/src/routing/list-routing/ipv4-list-routing.h (-1 / +1 lines)
 Lines 75-81    Link Here 
75
  virtual Ptr<Ipv4RoutingProtocol> GetRoutingProtocol (uint32_t index, int16_t& priority) const;
75
  virtual Ptr<Ipv4RoutingProtocol> GetRoutingProtocol (uint32_t index, int16_t& priority) const;
76
76
77
  // Below are from Ipv4RoutingProtocol
77
  // Below are from Ipv4RoutingProtocol
78
  virtual Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr);
78
  virtual Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr);
79
79
80
  virtual bool RouteInput (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
80
  virtual bool RouteInput (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
81
                           UnicastForwardCallback ucb, MulticastForwardCallback mcb,
81
                           UnicastForwardCallback ucb, MulticastForwardCallback mcb,
(-)a/src/routing/list-routing/ipv6-list-routing.cc (-3 / +3 lines)
 Lines 69-75    Link Here 
69
}
69
}
70
70
71
Ptr<Ipv6Route>
71
Ptr<Ipv6Route>
72
Ipv6ListRouting::RouteOutput (Ptr<Packet> p, const Ipv6Header &header, uint32_t oif, enum Socket::SocketErrno &sockerr)
72
Ipv6ListRouting::RouteOutput (Ptr<Packet> p, const Ipv6Header &header, Ptr<NetDevice> oif, enum Socket::SocketErrno &sockerr)
73
{
73
{
74
  NS_LOG_FUNCTION (this << header.GetDestinationAddress () << header.GetSourceAddress () << oif);
74
  NS_LOG_FUNCTION (this << header.GetDestinationAddress () << header.GetSourceAddress () << oif);
75
  Ptr<Ipv6Route> route;
75
  Ptr<Ipv6Route> route;
 Lines 342-348    Link Here 
342
342
343
class Ipv6ARouting : public Ipv6RoutingProtocol {
343
class Ipv6ARouting : public Ipv6RoutingProtocol {
344
public:
344
public:
345
  Ptr<Ipv6Route> RouteOutput (Ptr<Packet> p, const Ipv6Header &header, uint32_t oif, Socket::SocketErrno &sockerr)  { return 0;}
345
  Ptr<Ipv6Route> RouteOutput (Ptr<Packet> p, const Ipv6Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr)  { return 0;}
346
  bool RouteInput  (Ptr<const Packet> p, const Ipv6Header &header, Ptr<const NetDevice> idev,
346
  bool RouteInput  (Ptr<const Packet> p, const Ipv6Header &header, Ptr<const NetDevice> idev,
347
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
347
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
348
                             LocalDeliverCallback lcb, ErrorCallback ecb) {return false;}
348
                             LocalDeliverCallback lcb, ErrorCallback ecb) {return false;}
 Lines 358-364    Link Here 
358
358
359
class Ipv6BRouting : public Ipv6RoutingProtocol {
359
class Ipv6BRouting : public Ipv6RoutingProtocol {
360
public:
360
public:
361
  Ptr<Ipv6Route> RouteOutput (Ptr<Packet> p, const Ipv6Header &header, uint32_t oif, Socket::SocketErrno &sockerr)  { return 0;}
361
  Ptr<Ipv6Route> RouteOutput (Ptr<Packet> p, const Ipv6Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr)  { return 0;}
362
  bool RouteInput  (Ptr<const Packet> p, const Ipv6Header &header, Ptr<const NetDevice> idev,
362
  bool RouteInput  (Ptr<const Packet> p, const Ipv6Header &header, Ptr<const NetDevice> idev,
363
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
363
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
364
                             LocalDeliverCallback lcb, ErrorCallback ecb) {return false;}
364
                             LocalDeliverCallback lcb, ErrorCallback ecb) {return false;}
(-)a/src/routing/list-routing/ipv6-list-routing.h (-1 / +1 lines)
 Lines 91-97    Link Here 
91
  virtual Ptr<Ipv6RoutingProtocol> GetRoutingProtocol (uint32_t index, int16_t& priority) const;
91
  virtual Ptr<Ipv6RoutingProtocol> GetRoutingProtocol (uint32_t index, int16_t& priority) const;
92
92
93
  // Below are from Ipv6RoutingProtocol
93
  // Below are from Ipv6RoutingProtocol
94
  virtual Ptr<Ipv6Route> RouteOutput (Ptr<Packet> p, const Ipv6Header &header, uint32_t oif, Socket::SocketErrno &sockerr);
94
  virtual Ptr<Ipv6Route> RouteOutput (Ptr<Packet> p, const Ipv6Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr);
95
95
96
  virtual bool RouteInput (Ptr<const Packet> p, const Ipv6Header &header, Ptr<const NetDevice> idev,
96
  virtual bool RouteInput (Ptr<const Packet> p, const Ipv6Header &header, Ptr<const NetDevice> idev,
97
                           UnicastForwardCallback ucb, MulticastForwardCallback mcb,
97
                           UnicastForwardCallback ucb, MulticastForwardCallback mcb,
(-)a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.cc (-1 / +1 lines)
 Lines 478-484    Link Here 
478
}
478
}
479
479
480
Ptr<Ipv4Route> 
480
Ptr<Ipv4Route> 
481
Ipv4NixVectorRouting::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr)
481
Ipv4NixVectorRouting::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr)
482
{
482
{
483
  NS_LOG_FUNCTION_NOARGS ();
483
  NS_LOG_FUNCTION_NOARGS ();
484
  Ptr<Ipv4Route> rtentry;
484
  Ptr<Ipv4Route> rtentry;
(-)a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.h (-1 / +1 lines)
 Lines 129-135    Link Here 
129
    void DoDispose (void);
129
    void DoDispose (void);
130
130
131
    /* From Ipv4RoutingProtocol */
131
    /* From Ipv4RoutingProtocol */
132
    virtual Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr);
132
    virtual Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr);
133
    virtual bool RouteInput (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
133
    virtual bool RouteInput (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
134
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
134
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
135
                             LocalDeliverCallback lcb, ErrorCallback ecb);  
135
                             LocalDeliverCallback lcb, ErrorCallback ecb);  
(-)a/src/routing/olsr/olsr-routing-protocol.cc (-1 / +1 lines)
 Lines 2607-2613    Link Here 
2607
}
2607
}
2608
2608
2609
Ptr<Ipv4Route>
2609
Ptr<Ipv4Route>
2610
RoutingProtocol::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr)
2610
RoutingProtocol::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr)
2611
{  
2611
{  
2612
  NS_LOG_FUNCTION (this << " " << m_ipv4->GetObject<Node> ()->GetId() << " " << header.GetDestination () << " " << oif);
2612
  NS_LOG_FUNCTION (this << " " << m_ipv4->GetObject<Node> ()->GetId() << " " << header.GetDestination () << " " << oif);
2613
  // TBD:  oif is unused; can be used to restrict the outgoing interface
2613
  // TBD:  oif is unused; can be used to restrict the outgoing interface
(-)a/src/routing/olsr/olsr-routing-protocol.h (-1 / +1 lines)
 Lines 132-138    Link Here 
132
                      RoutingTableEntry &outEntry) const;
132
                      RoutingTableEntry &outEntry) const;
133
133
134
  // From Ipv4RoutingProtocol
134
  // From Ipv4RoutingProtocol
135
  virtual Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr);
135
  virtual Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr);
136
   virtual bool RouteInput  (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
136
   virtual bool RouteInput  (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
137
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
137
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
138
                             LocalDeliverCallback lcb, ErrorCallback ecb);  
138
                             LocalDeliverCallback lcb, ErrorCallback ecb);  
(-)a/src/routing/static-routing/ipv4-static-routing.cc (-4 / +12 lines)
 Lines 210-216    Link Here 
210
}
210
}
211
211
212
Ptr<Ipv4Route>
212
Ptr<Ipv4Route>
213
Ipv4StaticRouting::LookupStatic (Ipv4Address dest)
213
Ipv4StaticRouting::LookupStatic (Ipv4Address dest, Ptr<NetDevice> oif)
214
{
214
{
215
  NS_LOG_FUNCTION_NOARGS ();
215
  NS_LOG_FUNCTION_NOARGS ();
216
  Ptr<Ipv4Route> rtentry = 0;
216
  Ptr<Ipv4Route> rtentry = 0;
 Lines 229-234    Link Here 
229
      if (mask.IsMatch (dest, entry)) 
229
      if (mask.IsMatch (dest, entry)) 
230
        {
230
        {
231
          NS_LOG_LOGIC ("Found global network route " << j << ", mask length " << masklen << ", metric " << metric);
231
          NS_LOG_LOGIC ("Found global network route " << j << ", mask length " << masklen << ", metric " << metric);
232
          if (oif != 0)
233
            {
234
              if (oif != m_ipv4->GetNetDevice (j->GetInterface ()))
235
                {
236
                  NS_LOG_LOGIC ("Not on requested interface, skipping");
237
                  continue;
238
                }
239
            }
232
          if (masklen < longest_mask) // Not interested if got shorter mask
240
          if (masklen < longest_mask) // Not interested if got shorter mask
233
            {
241
            {
234
              NS_LOG_LOGIC ("Previous match longer, skipping");
242
              NS_LOG_LOGIC ("Previous match longer, skipping");
 Lines 254-260    Link Here 
254
          rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIdx));
262
          rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIdx));
255
        }
263
        }
256
    }
264
    }
257
  NS_LOG_LOGIC ("Matching route via " << rtentry << " at the end");
265
  NS_LOG_LOGIC ("Matching route via " << rtentry->GetGateway () << " at the end");
258
  return rtentry;
266
  return rtentry;
259
}
267
}
260
268
 Lines 415-421    Link Here 
415
}
423
}
416
424
417
Ptr<Ipv4Route> 
425
Ptr<Ipv4Route> 
418
Ipv4StaticRouting::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr)
426
Ipv4StaticRouting::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr)
419
{
427
{
420
  NS_LOG_FUNCTION (this << header << oif);
428
  NS_LOG_FUNCTION (this << header << oif);
421
  Ipv4Address destination = header.GetDestination ();
429
  Ipv4Address destination = header.GetDestination ();
 Lines 432-438    Link Here 
432
      // So, we just log it and fall through to LookupStatic ()
440
      // So, we just log it and fall through to LookupStatic ()
433
      NS_LOG_LOGIC ("RouteOutput()::Multicast destination");
441
      NS_LOG_LOGIC ("RouteOutput()::Multicast destination");
434
    }
442
    }
435
  rtentry = LookupStatic (destination);
443
  rtentry = LookupStatic (destination, oif);
436
  if (rtentry)
444
  if (rtentry)
437
    { 
445
    { 
438
      sockerr = Socket::ERROR_NOTERROR;
446
      sockerr = Socket::ERROR_NOTERROR;
(-)a/src/routing/static-routing/ipv4-static-routing.h (-2 / +2 lines)
 Lines 74-80    Link Here 
74
  Ipv4StaticRouting ();
74
  Ipv4StaticRouting ();
75
  virtual ~Ipv4StaticRouting ();
75
  virtual ~Ipv4StaticRouting ();
76
76
77
  virtual Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &sockerr);
77
  virtual Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr);
78
78
79
  virtual bool RouteInput  (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
79
  virtual bool RouteInput  (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
80
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
80
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
 Lines 382-388    Link Here 
382
  typedef std::list<Ipv4MulticastRoutingTableEntry *>::const_iterator MulticastRoutesCI;
382
  typedef std::list<Ipv4MulticastRoutingTableEntry *>::const_iterator MulticastRoutesCI;
383
  typedef std::list<Ipv4MulticastRoutingTableEntry *>::iterator MulticastRoutesI;
383
  typedef std::list<Ipv4MulticastRoutingTableEntry *>::iterator MulticastRoutesI;
384
  
384
  
385
  Ptr<Ipv4Route> LookupStatic (Ipv4Address dest);
385
  Ptr<Ipv4Route> LookupStatic (Ipv4Address dest, Ptr<NetDevice> oif = 0);
386
  Ptr<Ipv4MulticastRoute> LookupStatic (Ipv4Address origin, Ipv4Address group,
386
  Ptr<Ipv4MulticastRoute> LookupStatic (Ipv4Address origin, Ipv4Address group,
387
                                    uint32_t interface);
387
                                    uint32_t interface);
388
388
(-)a/src/routing/static-routing/ipv6-static-routing.cc (-6 / +6 lines)
 Lines 213-219    Link Here 
213
  return false;
213
  return false;
214
}
214
}
215
215
216
Ptr<Ipv6Route> Ipv6StaticRouting::LookupStatic (Ipv6Address dst, uint32_t interface)
216
Ptr<Ipv6Route> Ipv6StaticRouting::LookupStatic (Ipv6Address dst, Ptr <NetDevice> interface)
217
{
217
{
218
  NS_LOG_FUNCTION (this << dst << interface);
218
  NS_LOG_FUNCTION (this << dst << interface);
219
  Ptr<Ipv6Route> rtentry = 0;
219
  Ptr<Ipv6Route> rtentry = 0;
 Lines 224-235    Link Here 
224
  if (dst == Ipv6Address::GetAllNodesMulticast () || dst.IsSolicitedMulticast () || 
224
  if (dst == Ipv6Address::GetAllNodesMulticast () || dst.IsSolicitedMulticast () || 
225
      dst == Ipv6Address::GetAllRoutersMulticast () || dst == Ipv6Address::GetAllHostsMulticast ())
225
      dst == Ipv6Address::GetAllRoutersMulticast () || dst == Ipv6Address::GetAllHostsMulticast ())
226
  {
226
  {
227
    NS_ASSERT_MSG (interface > 0, "Try to send on link-local multicast address, and no interface index is given!");
227
    NS_ASSERT_MSG (interface, "Try to send on link-local multicast address, and no interface index is given!");
228
    rtentry = Create<Ipv6Route> ();
228
    rtentry = Create<Ipv6Route> ();
229
    rtentry->SetSource (SourceAddressSelection (interface, dst));
229
    rtentry->SetSource (SourceAddressSelection (m_ipv6->GetInterfaceForDevice (interface), dst));
230
    rtentry->SetDestination (dst);
230
    rtentry->SetDestination (dst);
231
    rtentry->SetGateway (Ipv6Address::GetZero ());
231
    rtentry->SetGateway (Ipv6Address::GetZero ());
232
    rtentry->SetOutputDevice (m_ipv6->GetNetDevice (interface));
232
    rtentry->SetOutputDevice (interface);
233
    return rtentry;
233
    return rtentry;
234
  }
234
  }
235
235
 Lines 248-254    Link Here 
248
      NS_LOG_LOGIC ("Found global network route " << j << ", mask length " << maskLen << ", metric " << metric);
248
      NS_LOG_LOGIC ("Found global network route " << j << ", mask length " << maskLen << ", metric " << metric);
249
249
250
      /* if interface is given, check the route will output on this interface */
250
      /* if interface is given, check the route will output on this interface */
251
      if (!interface || interface == j->GetInterface ())
251
      if (!interface || interface == m_ipv6->GetNetDevice (j->GetInterface ()))
252
      {
252
      {
253
        if (maskLen < longestMask)
253
        if (maskLen < longestMask)
254
        {
254
        {
 Lines 483-489    Link Here 
483
  }
483
  }
484
}
484
}
485
485
486
Ptr<Ipv6Route> Ipv6StaticRouting::RouteOutput (Ptr<Packet> p, const Ipv6Header &header, uint32_t oif, Socket::SocketErrno &sockerr)
486
Ptr<Ipv6Route> Ipv6StaticRouting::RouteOutput (Ptr<Packet> p, const Ipv6Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr)
487
{
487
{
488
  NS_LOG_FUNCTION (this << header << oif);
488
  NS_LOG_FUNCTION (this << header << oif);
489
  Ipv6Address destination = header.GetDestinationAddress ();
489
  Ipv6Address destination = header.GetDestinationAddress ();
(-)a/src/routing/static-routing/ipv6-static-routing.h (-2 / +2 lines)
 Lines 223-229    Link Here 
223
     */
223
     */
224
    bool HasNetworkDest (Ipv6Address dest, uint32_t interfaceIndex);
224
    bool HasNetworkDest (Ipv6Address dest, uint32_t interfaceIndex);
225
225
226
    virtual Ptr<Ipv6Route> RouteOutput (Ptr<Packet> p, const Ipv6Header &header, uint32_t oif, Socket::SocketErrno &sockerr);
226
    virtual Ptr<Ipv6Route> RouteOutput (Ptr<Packet> p, const Ipv6Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr);
227
227
228
    virtual bool RouteInput  (Ptr<const Packet> p, const Ipv6Header &header, Ptr<const NetDevice> idev,
228
    virtual bool RouteInput  (Ptr<const Packet> p, const Ipv6Header &header, Ptr<const NetDevice> idev,
229
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
229
                             UnicastForwardCallback ucb, MulticastForwardCallback mcb,
 Lines 258-264    Link Here 
258
     * \param interface output interface if any (put 0 otherwise)
258
     * \param interface output interface if any (put 0 otherwise)
259
     * \return Ipv6Route to route the packet to reach dest address
259
     * \return Ipv6Route to route the packet to reach dest address
260
     */
260
     */
261
    Ptr<Ipv6Route> LookupStatic (Ipv6Address dest, uint32_t interface = 0);
261
    Ptr<Ipv6Route> LookupStatic (Ipv6Address dest, Ptr<NetDevice> = 0);
262
262
263
    /**
263
    /**
264
     * \brief Lookup in the multicast forwarding table for destination.
264
     * \brief Lookup in the multicast forwarding table for destination.
(-)a/src/wscript (+1 lines)
 Lines 46-51    Link Here 
46
    'test',
46
    'test',
47
    'test/ns3tcp',
47
    'test/ns3tcp',
48
    'test/ns3wifi',
48
    'test/ns3wifi',
49
    'test/ns3socket',
49
    'contrib/flow-monitor',
50
    'contrib/flow-monitor',
50
    'applications/udp-client-server',
51
    'applications/udp-client-server',
51
    )
52
    )

Return to bug 742