apply patch for bug 294 (GetMulticastAddr) + emu device update + rescan
authorvincent@clarinet.u-strasbg.fr
Wed, 05 Nov 2008 14:49:21 -0800
changeset 3842545ddf9398ed
parent 3841 1e7abf5fca79
child 3843 ca2159d54d75
apply patch for bug 294 (GetMulticastAddr) + emu device update + rescan
bindings/python/ns3_module_bridge.py
bindings/python/ns3_module_core.py
bindings/python/ns3_module_csma.py
bindings/python/ns3_module_emu.py
bindings/python/ns3_module_helper.py
bindings/python/ns3_module_node.py
bindings/python/ns3_module_point_to_point.py
bindings/python/ns3_module_wifi.py
bindings/python/ns3modulegen_generated.py
src/devices/emu/emu-net-device.cc
src/devices/emu/emu-net-device.h
     1.1 --- a/bindings/python/ns3_module_bridge.py	Wed Nov 05 14:33:20 2008 -0800
     1.2 +++ b/bindings/python/ns3_module_bridge.py	Wed Nov 05 14:49:21 2008 -0800
     1.3 @@ -158,14 +158,9 @@
     1.4                     'bool', 
     1.5                     [], 
     1.6                     is_const=True, is_virtual=True)
     1.7 -    ## bridge-net-device.h: ns3::Address ns3::BridgeNetDevice::GetMulticast() const [member function]
     1.8 +    ## bridge-net-device.h: ns3::Address ns3::BridgeNetDevice::GetMulticast(ns3::Ipv4Address multicastGroup) const [member function]
     1.9      cls.add_method('GetMulticast', 
    1.10                     'ns3::Address', 
    1.11 -                   [], 
    1.12 -                   is_const=True, is_virtual=True)
    1.13 -    ## bridge-net-device.h: ns3::Address ns3::BridgeNetDevice::MakeMulticastAddress(ns3::Ipv4Address multicastGroup) const [member function]
    1.14 -    cls.add_method('MakeMulticastAddress', 
    1.15 -                   'ns3::Address', 
    1.16                     [param('ns3::Ipv4Address', 'multicastGroup')], 
    1.17                     is_const=True, is_virtual=True)
    1.18      ## bridge-net-device.h: bool ns3::BridgeNetDevice::IsPointToPoint() const [member function]
     2.1 --- a/bindings/python/ns3_module_core.py	Wed Nov 05 14:33:20 2008 -0800
     2.2 +++ b/bindings/python/ns3_module_core.py	Wed Nov 05 14:49:21 2008 -0800
     2.3 @@ -1879,7 +1879,7 @@
     2.4      cls.add_method('ConnectWithoutContext', 
     2.5                     'void', 
     2.6                     [param('ns3::CallbackBase const &', 'cb')])
     2.7 -    ## traced-value.h: void ns3::TracedValue<unsigned int>::Connect(ns3::CallbackBase const & cb, std::string path) [member function]
     2.8 +    ## traced-value.h: void ns3::TracedValue<unsigned int>::Connect(ns3::CallbackBase const & cb, std::basic_string<char,std::char_traits<char>,std::allocator<char> > path) [member function]
     2.9      cls.add_method('Connect', 
    2.10                     'void', 
    2.11                     [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')])
    2.12 @@ -1887,7 +1887,7 @@
    2.13      cls.add_method('DisconnectWithoutContext', 
    2.14                     'void', 
    2.15                     [param('ns3::CallbackBase const &', 'cb')])
    2.16 -    ## traced-value.h: void ns3::TracedValue<unsigned int>::Disconnect(ns3::CallbackBase const & cb, std::string path) [member function]
    2.17 +    ## traced-value.h: void ns3::TracedValue<unsigned int>::Disconnect(ns3::CallbackBase const & cb, std::basic_string<char,std::char_traits<char>,std::allocator<char> > path) [member function]
    2.18      cls.add_method('Disconnect', 
    2.19                     'void', 
    2.20                     [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')])
    2.21 @@ -1981,7 +1981,7 @@
    2.22      module.add_function('TypeNameGet', 
    2.23                          'std::string', 
    2.24                          [], 
    2.25 -                        template_parameters=['long long'])
    2.26 +                        template_parameters=['long'])
    2.27      ## type-name.h: extern std::string ns3::TypeNameGet() [free function]
    2.28      module.add_function('TypeNameGet', 
    2.29                          'std::string', 
    2.30 @@ -2001,7 +2001,7 @@
    2.31      module.add_function('TypeNameGet', 
    2.32                          'std::string', 
    2.33                          [], 
    2.34 -                        template_parameters=['unsigned long long'])
    2.35 +                        template_parameters=['unsigned long'])
    2.36      ## type-name.h: extern std::string ns3::TypeNameGet() [free function]
    2.37      module.add_function('TypeNameGet', 
    2.38                          'std::string', 
    2.39 @@ -2017,18 +2017,22 @@
    2.40                          'std::string', 
    2.41                          [], 
    2.42                          template_parameters=['unsigned char'])
    2.43 -    ## log.h: extern void ns3::LogComponentDisable(char const * name, ns3::LogLevel level) [free function]
    2.44 -    module.add_function('LogComponentDisable', 
    2.45 -                        'void', 
    2.46 -                        [param('char const *', 'name'), param('ns3::LogLevel', 'level')])
    2.47      ## string.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeStringChecker() [free function]
    2.48      module.add_function('MakeStringChecker', 
    2.49                          'ns3::Ptr< ns3::AttributeChecker const >', 
    2.50                          [])
    2.51 +    ## enum.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeEnumChecker(int v1, std::string n1, int v2=0, std::string n2="", int v3=0, std::string n3="", int v4=0, std::string n4="", int v5=0, std::string n5="", int v6=0, std::string n6="", int v7=0, std::string n7="", int v8=0, std::string n8="", int v9=0, std::string n9="", int v10=0, std::string n10="", int v11=0, std::string n11="", int v12=0, std::string n12="") [free function]
    2.52 +    module.add_function('MakeEnumChecker', 
    2.53 +                        'ns3::Ptr< ns3::AttributeChecker const >', 
    2.54 +                        [param('int', 'v1'), param('std::string', 'n1'), param('int', 'v2', default_value='0'), param('std::string', 'n2', default_value='""'), param('int', 'v3', default_value='0'), param('std::string', 'n3', default_value='""'), param('int', 'v4', default_value='0'), param('std::string', 'n4', default_value='""'), param('int', 'v5', default_value='0'), param('std::string', 'n5', default_value='""'), param('int', 'v6', default_value='0'), param('std::string', 'n6', default_value='""'), param('int', 'v7', default_value='0'), param('std::string', 'n7', default_value='""'), param('int', 'v8', default_value='0'), param('std::string', 'n8', default_value='""'), param('int', 'v9', default_value='0'), param('std::string', 'n9', default_value='""'), param('int', 'v10', default_value='0'), param('std::string', 'n10', default_value='""'), param('int', 'v11', default_value='0'), param('std::string', 'n11', default_value='""'), param('int', 'v12', default_value='0'), param('std::string', 'n12', default_value='""')])
    2.55      ## type-id.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeTypeIdChecker() [free function]
    2.56      module.add_function('MakeTypeIdChecker', 
    2.57                          'ns3::Ptr< ns3::AttributeChecker const >', 
    2.58                          [])
    2.59 +    ## log.h: extern void ns3::LogComponentEnableAll(ns3::LogLevel level) [free function]
    2.60 +    module.add_function('LogComponentEnableAll', 
    2.61 +                        'void', 
    2.62 +                        [param('ns3::LogLevel', 'level')])
    2.63      ## ptr.h: extern ns3::Ptr<ns3::PointerValue> ns3::Create() [free function]
    2.64      module.add_function('Create', 
    2.65                          'ns3::Ptr< ns3::PointerValue >', 
    2.66 @@ -2039,10 +2043,6 @@
    2.67                          'ns3::Ptr< ns3::ObjectVectorValue >', 
    2.68                          [], 
    2.69                          template_parameters=['ns3::ObjectVectorValue'])
    2.70 -    ## log.h: extern void ns3::LogComponentEnableAll(ns3::LogLevel level) [free function]
    2.71 -    module.add_function('LogComponentEnableAll', 
    2.72 -                        'void', 
    2.73 -                        [param('ns3::LogLevel', 'level')])
    2.74      ## object-factory.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeObjectFactoryChecker() [free function]
    2.75      module.add_function('MakeObjectFactoryChecker', 
    2.76                          'ns3::Ptr< ns3::AttributeChecker const >', 
    2.77 @@ -2063,14 +2063,14 @@
    2.78      module.add_function('MakeRandomVariableChecker', 
    2.79                          'ns3::Ptr< ns3::AttributeChecker const >', 
    2.80                          [])
    2.81 +    ## log.h: extern void ns3::LogComponentDisable(char const * name, ns3::LogLevel level) [free function]
    2.82 +    module.add_function('LogComponentDisable', 
    2.83 +                        'void', 
    2.84 +                        [param('char const *', 'name'), param('ns3::LogLevel', 'level')])
    2.85      ## log.h: extern void ns3::LogComponentEnable(char const * name, ns3::LogLevel level) [free function]
    2.86      module.add_function('LogComponentEnable', 
    2.87                          'void', 
    2.88                          [param('char const *', 'name'), param('ns3::LogLevel', 'level')])
    2.89 -    ## enum.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeEnumChecker(int v1, std::string n1, int v2=0, std::string n2="", int v3=0, std::string n3="", int v4=0, std::string n4="", int v5=0, std::string n5="", int v6=0, std::string n6="", int v7=0, std::string n7="", int v8=0, std::string n8="", int v9=0, std::string n9="", int v10=0, std::string n10="", int v11=0, std::string n11="", int v12=0, std::string n12="") [free function]
    2.90 -    module.add_function('MakeEnumChecker', 
    2.91 -                        'ns3::Ptr< ns3::AttributeChecker const >', 
    2.92 -                        [param('int', 'v1'), param('std::string', 'n1'), param('int', 'v2', default_value='0'), param('std::string', 'n2', default_value='""'), param('int', 'v3', default_value='0'), param('std::string', 'n3', default_value='""'), param('int', 'v4', default_value='0'), param('std::string', 'n4', default_value='""'), param('int', 'v5', default_value='0'), param('std::string', 'n5', default_value='""'), param('int', 'v6', default_value='0'), param('std::string', 'n6', default_value='""'), param('int', 'v7', default_value='0'), param('std::string', 'n7', default_value='""'), param('int', 'v8', default_value='0'), param('std::string', 'n8', default_value='""'), param('int', 'v9', default_value='0'), param('std::string', 'n9', default_value='""'), param('int', 'v10', default_value='0'), param('std::string', 'n10', default_value='""'), param('int', 'v11', default_value='0'), param('std::string', 'n11', default_value='""'), param('int', 'v12', default_value='0'), param('std::string', 'n12', default_value='""')])
    2.93      register_functions_ns3_internal(module.get_submodule('internal'), root_module)
    2.94      register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
    2.95      register_functions_ns3_Config(module.get_submodule('Config'), root_module)
    2.96 @@ -2132,10 +2132,6 @@
    2.97      module.add_function('SetGlobalFailSafe', 
    2.98                          'bool', 
    2.99                          [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
   2.100 -    ## config.h: extern void ns3::Config::Disconnect(std::string path, ns3::CallbackBase const & cb) [free function]
   2.101 -    module.add_function('Disconnect', 
   2.102 -                        'void', 
   2.103 -                        [param('std::string', 'path'), param('ns3::CallbackBase const &', 'cb')])
   2.104      ## config.h: extern uint32_t ns3::Config::GetRootNamespaceObjectN() [free function]
   2.105      module.add_function('GetRootNamespaceObjectN', 
   2.106                          'uint32_t', 
   2.107 @@ -2152,6 +2148,10 @@
   2.108      module.add_function('RegisterRootNamespaceObject', 
   2.109                          'void', 
   2.110                          [param('ns3::Ptr< ns3::Object >', 'obj')])
   2.111 +    ## config.h: extern void ns3::Config::Disconnect(std::string path, ns3::CallbackBase const & cb) [free function]
   2.112 +    module.add_function('Disconnect', 
   2.113 +                        'void', 
   2.114 +                        [param('std::string', 'path'), param('ns3::CallbackBase const &', 'cb')])
   2.115      return
   2.116  
   2.117  def register_functions_ns3_olsr(module, root_module):
     3.1 --- a/bindings/python/ns3_module_csma.py	Wed Nov 05 14:33:20 2008 -0800
     3.2 +++ b/bindings/python/ns3_module_csma.py	Wed Nov 05 14:49:21 2008 -0800
     3.3 @@ -338,14 +338,9 @@
     3.4                     'bool', 
     3.5                     [], 
     3.6                     is_const=True, is_virtual=True)
     3.7 -    ## csma-net-device.h: ns3::Address ns3::CsmaNetDevice::GetMulticast() const [member function]
     3.8 +    ## csma-net-device.h: ns3::Address ns3::CsmaNetDevice::GetMulticast(ns3::Ipv4Address multicastGroup) const [member function]
     3.9      cls.add_method('GetMulticast', 
    3.10                     'ns3::Address', 
    3.11 -                   [], 
    3.12 -                   is_const=True, is_virtual=True)
    3.13 -    ## csma-net-device.h: ns3::Address ns3::CsmaNetDevice::MakeMulticastAddress(ns3::Ipv4Address multicastGroup) const [member function]
    3.14 -    cls.add_method('MakeMulticastAddress', 
    3.15 -                   'ns3::Address', 
    3.16                     [param('ns3::Ipv4Address', 'multicastGroup')], 
    3.17                     is_const=True, is_virtual=True)
    3.18      ## csma-net-device.h: bool ns3::CsmaNetDevice::IsPointToPoint() const [member function]
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/bindings/python/ns3_module_emu.py	Wed Nov 05 14:49:21 2008 -0800
     4.3 @@ -0,0 +1,232 @@
     4.4 +from pybindgen import Module, FileCodeSink, param, retval, cppclass
     4.5 +
     4.6 +def register_types(module):
     4.7 +    root_module = module.get_root()
     4.8 +    
     4.9 +    ## emu-net-device.h: ns3::EmuNetDevice [class]
    4.10 +    module.add_class('EmuNetDevice', parent=root_module['ns3::NetDevice'])
    4.11 +    
    4.12 +    ## Register a nested module for the namespace internal
    4.13 +    
    4.14 +    nested_module = module.add_cpp_namespace('internal')
    4.15 +    register_types_ns3_internal(nested_module)
    4.16 +    
    4.17 +    
    4.18 +    ## Register a nested module for the namespace TimeStepPrecision
    4.19 +    
    4.20 +    nested_module = module.add_cpp_namespace('TimeStepPrecision')
    4.21 +    register_types_ns3_TimeStepPrecision(nested_module)
    4.22 +    
    4.23 +    
    4.24 +    ## Register a nested module for the namespace Config
    4.25 +    
    4.26 +    nested_module = module.add_cpp_namespace('Config')
    4.27 +    register_types_ns3_Config(nested_module)
    4.28 +    
    4.29 +    
    4.30 +    ## Register a nested module for the namespace olsr
    4.31 +    
    4.32 +    nested_module = module.add_cpp_namespace('olsr')
    4.33 +    register_types_ns3_olsr(nested_module)
    4.34 +    
    4.35 +
    4.36 +def register_types_ns3_internal(module):
    4.37 +    root_module = module.get_root()
    4.38 +    
    4.39 +
    4.40 +def register_types_ns3_TimeStepPrecision(module):
    4.41 +    root_module = module.get_root()
    4.42 +    
    4.43 +
    4.44 +def register_types_ns3_Config(module):
    4.45 +    root_module = module.get_root()
    4.46 +    
    4.47 +
    4.48 +def register_types_ns3_olsr(module):
    4.49 +    root_module = module.get_root()
    4.50 +    
    4.51 +
    4.52 +def register_methods(root_module):
    4.53 +    register_Ns3EmuNetDevice_methods(root_module, root_module['ns3::EmuNetDevice'])
    4.54 +    return
    4.55 +
    4.56 +def register_Ns3EmuNetDevice_methods(root_module, cls):
    4.57 +    ## emu-net-device.h: ns3::EmuNetDevice::EmuNetDevice(ns3::EmuNetDevice const & arg0) [copy constructor]
    4.58 +    cls.add_constructor([param('ns3::EmuNetDevice const &', 'arg0')])
    4.59 +    ## emu-net-device.h: static ns3::TypeId ns3::EmuNetDevice::GetTypeId() [member function]
    4.60 +    cls.add_method('GetTypeId', 
    4.61 +                   'ns3::TypeId', 
    4.62 +                   [], 
    4.63 +                   is_static=True)
    4.64 +    ## emu-net-device.h: ns3::EmuNetDevice::EmuNetDevice() [constructor]
    4.65 +    cls.add_constructor([])
    4.66 +    ## emu-net-device.h: void ns3::EmuNetDevice::SetDataRate(ns3::DataRate bps) [member function]
    4.67 +    cls.add_method('SetDataRate', 
    4.68 +                   'void', 
    4.69 +                   [param('ns3::DataRate', 'bps')])
    4.70 +    ## emu-net-device.h: void ns3::EmuNetDevice::SetInterframeGap(ns3::Time t) [member function]
    4.71 +    cls.add_method('SetInterframeGap', 
    4.72 +                   'void', 
    4.73 +                   [param('ns3::Time', 't')])
    4.74 +    ## emu-net-device.h: void ns3::EmuNetDevice::Start(ns3::Time tStart) [member function]
    4.75 +    cls.add_method('Start', 
    4.76 +                   'void', 
    4.77 +                   [param('ns3::Time', 'tStart')])
    4.78 +    ## emu-net-device.h: void ns3::EmuNetDevice::Stop(ns3::Time tStop) [member function]
    4.79 +    cls.add_method('Stop', 
    4.80 +                   'void', 
    4.81 +                   [param('ns3::Time', 'tStop')])
    4.82 +    ## emu-net-device.h: void ns3::EmuNetDevice::SetQueue(ns3::Ptr<ns3::Queue> queue) [member function]
    4.83 +    cls.add_method('SetQueue', 
    4.84 +                   'void', 
    4.85 +                   [param('ns3::Ptr< ns3::Queue >', 'queue')])
    4.86 +    ## emu-net-device.h: void ns3::EmuNetDevice::Receive(ns3::Ptr<ns3::Packet> p) [member function]
    4.87 +    cls.add_method('Receive', 
    4.88 +                   'void', 
    4.89 +                   [param('ns3::Ptr< ns3::Packet >', 'p')])
    4.90 +    ## emu-net-device.h: void ns3::EmuNetDevice::SetAddress(ns3::Mac48Address addr) [member function]
    4.91 +    cls.add_method('SetAddress', 
    4.92 +                   'void', 
    4.93 +                   [param('ns3::Mac48Address', 'addr')])
    4.94 +    ## emu-net-device.h: void ns3::EmuNetDevice::SetName(std::string const name) [member function]
    4.95 +    cls.add_method('SetName', 
    4.96 +                   'void', 
    4.97 +                   [param('std::string const', 'name')], 
    4.98 +                   is_virtual=True)
    4.99 +    ## emu-net-device.h: std::string ns3::EmuNetDevice::GetName() const [member function]
   4.100 +    cls.add_method('GetName', 
   4.101 +                   'std::string', 
   4.102 +                   [], 
   4.103 +                   is_const=True, is_virtual=True)
   4.104 +    ## emu-net-device.h: void ns3::EmuNetDevice::SetIfIndex(uint32_t const index) [member function]
   4.105 +    cls.add_method('SetIfIndex', 
   4.106 +                   'void', 
   4.107 +                   [param('uint32_t const', 'index')], 
   4.108 +                   is_virtual=True)
   4.109 +    ## emu-net-device.h: uint32_t ns3::EmuNetDevice::GetIfIndex() const [member function]
   4.110 +    cls.add_method('GetIfIndex', 
   4.111 +                   'uint32_t', 
   4.112 +                   [], 
   4.113 +                   is_const=True, is_virtual=True)
   4.114 +    ## emu-net-device.h: ns3::Ptr<ns3::Channel> ns3::EmuNetDevice::GetChannel() const [member function]
   4.115 +    cls.add_method('GetChannel', 
   4.116 +                   'ns3::Ptr< ns3::Channel >', 
   4.117 +                   [], 
   4.118 +                   is_const=True, is_virtual=True)
   4.119 +    ## emu-net-device.h: ns3::Address ns3::EmuNetDevice::GetAddress() const [member function]
   4.120 +    cls.add_method('GetAddress', 
   4.121 +                   'ns3::Address', 
   4.122 +                   [], 
   4.123 +                   is_const=True, is_virtual=True)
   4.124 +    ## emu-net-device.h: bool ns3::EmuNetDevice::SetMtu(uint16_t const mtu) [member function]
   4.125 +    cls.add_method('SetMtu', 
   4.126 +                   'bool', 
   4.127 +                   [param('uint16_t const', 'mtu')], 
   4.128 +                   is_virtual=True)
   4.129 +    ## emu-net-device.h: uint16_t ns3::EmuNetDevice::GetMtu() const [member function]
   4.130 +    cls.add_method('GetMtu', 
   4.131 +                   'uint16_t', 
   4.132 +                   [], 
   4.133 +                   is_const=True, is_virtual=True)
   4.134 +    ## emu-net-device.h: bool ns3::EmuNetDevice::IsLinkUp() const [member function]
   4.135 +    cls.add_method('IsLinkUp', 
   4.136 +                   'bool', 
   4.137 +                   [], 
   4.138 +                   is_const=True, is_virtual=True)
   4.139 +    ## emu-net-device.h: void ns3::EmuNetDevice::SetLinkChangeCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
   4.140 +    cls.add_method('SetLinkChangeCallback', 
   4.141 +                   'void', 
   4.142 +                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
   4.143 +                   is_virtual=True)
   4.144 +    ## emu-net-device.h: bool ns3::EmuNetDevice::IsBroadcast() const [member function]
   4.145 +    cls.add_method('IsBroadcast', 
   4.146 +                   'bool', 
   4.147 +                   [], 
   4.148 +                   is_const=True, is_virtual=True)
   4.149 +    ## emu-net-device.h: ns3::Address ns3::EmuNetDevice::GetBroadcast() const [member function]
   4.150 +    cls.add_method('GetBroadcast', 
   4.151 +                   'ns3::Address', 
   4.152 +                   [], 
   4.153 +                   is_const=True, is_virtual=True)
   4.154 +    ## emu-net-device.h: bool ns3::EmuNetDevice::IsMulticast() const [member function]
   4.155 +    cls.add_method('IsMulticast', 
   4.156 +                   'bool', 
   4.157 +                   [], 
   4.158 +                   is_const=True, is_virtual=True)
   4.159 +    ## emu-net-device.h: ns3::Address ns3::EmuNetDevice::GetMulticast(ns3::Ipv4Address multicastGroup) const [member function]
   4.160 +    cls.add_method('GetMulticast', 
   4.161 +                   'ns3::Address', 
   4.162 +                   [param('ns3::Ipv4Address', 'multicastGroup')], 
   4.163 +                   is_const=True, is_virtual=True)
   4.164 +    ## emu-net-device.h: bool ns3::EmuNetDevice::IsPointToPoint() const [member function]
   4.165 +    cls.add_method('IsPointToPoint', 
   4.166 +                   'bool', 
   4.167 +                   [], 
   4.168 +                   is_const=True, is_virtual=True)
   4.169 +    ## emu-net-device.h: bool ns3::EmuNetDevice::Send(ns3::Ptr<ns3::Packet> packet, ns3::Address const & dest, uint16_t protocolNumber) [member function]
   4.170 +    cls.add_method('Send', 
   4.171 +                   'bool', 
   4.172 +                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
   4.173 +                   is_virtual=True)
   4.174 +    ## emu-net-device.h: bool ns3::EmuNetDevice::SendFrom(ns3::Ptr<ns3::Packet> packet, ns3::Address const & source, ns3::Address const & dest, uint16_t protocolNumber) [member function]
   4.175 +    cls.add_method('SendFrom', 
   4.176 +                   'bool', 
   4.177 +                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'source'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
   4.178 +                   is_virtual=True)
   4.179 +    ## emu-net-device.h: ns3::Ptr<ns3::Node> ns3::EmuNetDevice::GetNode() const [member function]
   4.180 +    cls.add_method('GetNode', 
   4.181 +                   'ns3::Ptr< ns3::Node >', 
   4.182 +                   [], 
   4.183 +                   is_const=True, is_virtual=True)
   4.184 +    ## emu-net-device.h: void ns3::EmuNetDevice::SetNode(ns3::Ptr<ns3::Node> node) [member function]
   4.185 +    cls.add_method('SetNode', 
   4.186 +                   'void', 
   4.187 +                   [param('ns3::Ptr< ns3::Node >', 'node')], 
   4.188 +                   is_virtual=True)
   4.189 +    ## emu-net-device.h: bool ns3::EmuNetDevice::NeedsArp() const [member function]
   4.190 +    cls.add_method('NeedsArp', 
   4.191 +                   'bool', 
   4.192 +                   [], 
   4.193 +                   is_const=True, is_virtual=True)
   4.194 +    ## emu-net-device.h: void ns3::EmuNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty> cb) [member function]
   4.195 +    cls.add_method('SetReceiveCallback', 
   4.196 +                   'void', 
   4.197 +                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::empty, ns3::empty >', 'cb')], 
   4.198 +                   is_virtual=True)
   4.199 +    ## emu-net-device.h: void ns3::EmuNetDevice::SetPromiscReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType> cb) [member function]
   4.200 +    cls.add_method('SetPromiscReceiveCallback', 
   4.201 +                   'void', 
   4.202 +                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType >', 'cb')], 
   4.203 +                   is_virtual=True)
   4.204 +    ## emu-net-device.h: bool ns3::EmuNetDevice::SupportsSendFrom() const [member function]
   4.205 +    cls.add_method('SupportsSendFrom', 
   4.206 +                   'bool', 
   4.207 +                   [], 
   4.208 +                   is_const=True, is_virtual=True)
   4.209 +    ## emu-net-device.h: void ns3::EmuNetDevice::DoDispose() [member function]
   4.210 +    cls.add_method('DoDispose', 
   4.211 +                   'void', 
   4.212 +                   [], 
   4.213 +                   visibility='private', is_virtual=True)
   4.214 +    return
   4.215 +
   4.216 +def register_functions(root_module):
   4.217 +    module = root_module
   4.218 +    register_functions_ns3_internal(module.get_submodule('internal'), root_module)
   4.219 +    register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
   4.220 +    register_functions_ns3_Config(module.get_submodule('Config'), root_module)
   4.221 +    register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
   4.222 +    return
   4.223 +
   4.224 +def register_functions_ns3_internal(module, root_module):
   4.225 +    return
   4.226 +
   4.227 +def register_functions_ns3_TimeStepPrecision(module, root_module):
   4.228 +    return
   4.229 +
   4.230 +def register_functions_ns3_Config(module, root_module):
   4.231 +    return
   4.232 +
   4.233 +def register_functions_ns3_olsr(module, root_module):
   4.234 +    return
   4.235 +
     5.1 --- a/bindings/python/ns3_module_helper.py	Wed Nov 05 14:33:20 2008 -0800
     5.2 +++ b/bindings/python/ns3_module_helper.py	Wed Nov 05 14:49:21 2008 -0800
     5.3 @@ -9,6 +9,8 @@
     5.4      module.add_class('BridgeHelper', allow_subclassing=False)
     5.5      ## csma-helper.h: ns3::CsmaHelper [class]
     5.6      module.add_class('CsmaHelper', allow_subclassing=False)
     5.7 +    ## emu-helper.h: ns3::EmuHelper [class]
     5.8 +    module.add_class('EmuHelper', allow_subclassing=False)
     5.9      ## internet-stack-helper.h: ns3::InternetStackHelper [class]
    5.10      module.add_class('InternetStackHelper', allow_subclassing=False)
    5.11      ## ipv4-address-helper.h: ns3::Ipv4AddressHelper [class]
    5.12 @@ -39,6 +41,8 @@
    5.13      module.add_class('UdpEchoClientHelper', allow_subclassing=False)
    5.14      ## udp-echo-helper.h: ns3::UdpEchoServerHelper [class]
    5.15      module.add_class('UdpEchoServerHelper', allow_subclassing=False)
    5.16 +    ## v4ping-helper.h: ns3::V4PingHelper [class]
    5.17 +    module.add_class('V4PingHelper', allow_subclassing=False)
    5.18      ## wifi-helper.h: ns3::WifiHelper [class]
    5.19      module.add_class('WifiHelper', allow_subclassing=False)
    5.20      
    5.21 @@ -86,6 +90,7 @@
    5.22      register_Ns3ApplicationContainer_methods(root_module, root_module['ns3::ApplicationContainer'])
    5.23      register_Ns3BridgeHelper_methods(root_module, root_module['ns3::BridgeHelper'])
    5.24      register_Ns3CsmaHelper_methods(root_module, root_module['ns3::CsmaHelper'])
    5.25 +    register_Ns3EmuHelper_methods(root_module, root_module['ns3::EmuHelper'])
    5.26      register_Ns3InternetStackHelper_methods(root_module, root_module['ns3::InternetStackHelper'])
    5.27      register_Ns3Ipv4AddressHelper_methods(root_module, root_module['ns3::Ipv4AddressHelper'])
    5.28      register_Ns3Ipv4InterfaceContainer_methods(root_module, root_module['ns3::Ipv4InterfaceContainer'])
    5.29 @@ -101,6 +106,7 @@
    5.30      register_Ns3StaticMulticastRouteHelper_methods(root_module, root_module['ns3::StaticMulticastRouteHelper'])
    5.31      register_Ns3UdpEchoClientHelper_methods(root_module, root_module['ns3::UdpEchoClientHelper'])
    5.32      register_Ns3UdpEchoServerHelper_methods(root_module, root_module['ns3::UdpEchoServerHelper'])
    5.33 +    register_Ns3V4PingHelper_methods(root_module, root_module['ns3::V4PingHelper'])
    5.34      register_Ns3WifiHelper_methods(root_module, root_module['ns3::WifiHelper'])
    5.35      return
    5.36  
    5.37 @@ -243,6 +249,65 @@
    5.38                     [param('ns3::Ptr< ns3::Node >', 'hub'), param('ns3::NodeContainer', 'spokes'), param('ns3::NetDeviceContainer &', 'hubDevices'), param('ns3::NetDeviceContainer &', 'spokeDevices')])
    5.39      return
    5.40  
    5.41 +def register_Ns3EmuHelper_methods(root_module, cls):
    5.42 +    ## emu-helper.h: ns3::EmuHelper::EmuHelper(ns3::EmuHelper const & arg0) [copy constructor]
    5.43 +    cls.add_constructor([param('ns3::EmuHelper const &', 'arg0')])
    5.44 +    ## emu-helper.h: ns3::EmuHelper::EmuHelper() [constructor]
    5.45 +    cls.add_constructor([])
    5.46 +    ## emu-helper.h: void ns3::EmuHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
    5.47 +    cls.add_method('SetQueue', 
    5.48 +                   'void', 
    5.49 +                   [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
    5.50 +    ## emu-helper.h: void ns3::EmuHelper::SetAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
    5.51 +    cls.add_method('SetAttribute', 
    5.52 +                   'void', 
    5.53 +                   [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
    5.54 +    ## emu-helper.h: static void ns3::EmuHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid) [member function]
    5.55 +    cls.add_method('EnablePcap', 
    5.56 +                   'void', 
    5.57 +                   [param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], 
    5.58 +                   is_static=True)
    5.59 +    ## emu-helper.h: static void ns3::EmuHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d) [member function]
    5.60 +    cls.add_method('EnablePcap', 
    5.61 +                   'void', 
    5.62 +                   [param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd')], 
    5.63 +                   is_static=True)
    5.64 +    ## emu-helper.h: static void ns3::EmuHelper::EnablePcap(std::string filename, ns3::NodeContainer n) [member function]
    5.65 +    cls.add_method('EnablePcap', 
    5.66 +                   'void', 
    5.67 +                   [param('std::string', 'filename'), param('ns3::NodeContainer', 'n')], 
    5.68 +                   is_static=True)
    5.69 +    ## emu-helper.h: static void ns3::EmuHelper::EnablePcapAll(std::string filename) [member function]
    5.70 +    cls.add_method('EnablePcapAll', 
    5.71 +                   'void', 
    5.72 +                   [param('std::string', 'filename')], 
    5.73 +                   is_static=True)
    5.74 +    ## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
    5.75 +    cls.add_method('EnableAscii', 
    5.76 +                   'void', 
    5.77 +                   [param('std::ostream &', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], 
    5.78 +                   is_static=True)
    5.79 +    ## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
    5.80 +    cls.add_method('EnableAscii', 
    5.81 +                   'void', 
    5.82 +                   [param('std::ostream &', 'os'), param('ns3::NetDeviceContainer', 'd')], 
    5.83 +                   is_static=True)
    5.84 +    ## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
    5.85 +    cls.add_method('EnableAscii', 
    5.86 +                   'void', 
    5.87 +                   [param('std::ostream &', 'os'), param('ns3::NodeContainer', 'n')], 
    5.88 +                   is_static=True)
    5.89 +    ## emu-helper.h: static void ns3::EmuHelper::EnableAsciiAll(std::ostream & os) [member function]
    5.90 +    cls.add_method('EnableAsciiAll', 
    5.91 +                   'void', 
    5.92 +                   [param('std::ostream &', 'os')], 
    5.93 +                   is_static=True)
    5.94 +    ## emu-helper.h: ns3::NetDeviceContainer ns3::EmuHelper::Install(ns3::NodeContainer const & c) [member function]
    5.95 +    cls.add_method('Install', 
    5.96 +                   'ns3::NetDeviceContainer', 
    5.97 +                   [param('ns3::NodeContainer const &', 'c')])
    5.98 +    return
    5.99 +
   5.100  def register_Ns3InternetStackHelper_methods(root_module, cls):
   5.101      ## internet-stack-helper.h: ns3::InternetStackHelper::InternetStackHelper(ns3::InternetStackHelper const & arg0) [copy constructor]
   5.102      cls.add_constructor([param('ns3::InternetStackHelper const &', 'arg0')])
   5.103 @@ -667,6 +732,21 @@
   5.104                     [param('ns3::NodeContainer', 'c')])
   5.105      return
   5.106  
   5.107 +def register_Ns3V4PingHelper_methods(root_module, cls):
   5.108 +    ## v4ping-helper.h: ns3::V4PingHelper::V4PingHelper(ns3::V4PingHelper const & arg0) [copy constructor]
   5.109 +    cls.add_constructor([param('ns3::V4PingHelper const &', 'arg0')])
   5.110 +    ## v4ping-helper.h: ns3::V4PingHelper::V4PingHelper(ns3::Ipv4Address remote) [constructor]
   5.111 +    cls.add_constructor([param('ns3::Ipv4Address', 'remote')])
   5.112 +    ## v4ping-helper.h: void ns3::V4PingHelper::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
   5.113 +    cls.add_method('SetAttribute', 
   5.114 +                   'void', 
   5.115 +                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
   5.116 +    ## v4ping-helper.h: ns3::ApplicationContainer ns3::V4PingHelper::Install(ns3::NodeContainer nodes) [member function]
   5.117 +    cls.add_method('Install', 
   5.118 +                   'ns3::ApplicationContainer', 
   5.119 +                   [param('ns3::NodeContainer', 'nodes')])
   5.120 +    return
   5.121 +
   5.122  def register_Ns3WifiHelper_methods(root_module, cls):
   5.123      ## wifi-helper.h: ns3::WifiHelper::WifiHelper(ns3::WifiHelper const & arg0) [copy constructor]
   5.124      cls.add_constructor([param('ns3::WifiHelper const &', 'arg0')])
     6.1 --- a/bindings/python/ns3_module_node.py	Wed Nov 05 14:33:20 2008 -0800
     6.2 +++ b/bindings/python/ns3_module_node.py	Wed Nov 05 14:49:21 2008 -0800
     6.3 @@ -100,7 +100,7 @@
     6.4      ## net-device.h: ns3::NetDevice [class]
     6.5      module.add_class('NetDevice', parent=root_module['ns3::Object'])
     6.6      ## net-device.h: ns3::NetDevice::PacketType [enumeration]
     6.7 -    module.add_enum('PacketType', ['PACKET_HOST', 'PACKET_BROADCAST', 'PACKET_MULTICAST', 'PACKET_OTHERHOST'], outer_class=root_module['ns3::NetDevice'])
     6.8 +    module.add_enum('PacketType', ['PACKET_HOST', 'NS3_PACKET_HOST', 'PACKET_BROADCAST', 'NS3_PACKET_BROADCAST', 'PACKET_MULTICAST', 'NS3_PACKET_MULTICAST', 'PACKET_OTHERHOST', 'NS3_PACKET_OTHERHOST'], outer_class=root_module['ns3::NetDevice'])
     6.9      ## node.h: ns3::Node [class]
    6.10      module.add_class('Node', parent=root_module['ns3::Object'])
    6.11      ## packet-socket-factory.h: ns3::PacketSocketFactory [class]
    6.12 @@ -2339,14 +2339,9 @@
    6.13                     'bool', 
    6.14                     [], 
    6.15                     is_pure_virtual=True, is_const=True, is_virtual=True)
    6.16 -    ## net-device.h: ns3::Address ns3::NetDevice::GetMulticast() const [member function]
    6.17 +    ## net-device.h: ns3::Address ns3::NetDevice::GetMulticast(ns3::Ipv4Address multicastGroup) const [member function]
    6.18      cls.add_method('GetMulticast', 
    6.19                     'ns3::Address', 
    6.20 -                   [], 
    6.21 -                   is_pure_virtual=True, is_const=True, is_virtual=True)
    6.22 -    ## net-device.h: ns3::Address ns3::NetDevice::MakeMulticastAddress(ns3::Ipv4Address multicastGroup) const [member function]
    6.23 -    cls.add_method('MakeMulticastAddress', 
    6.24 -                   'ns3::Address', 
    6.25                     [param('ns3::Ipv4Address', 'multicastGroup')], 
    6.26                     is_pure_virtual=True, is_const=True, is_virtual=True)
    6.27      ## net-device.h: bool ns3::NetDevice::IsPointToPoint() const [member function]
    6.28 @@ -2600,14 +2595,9 @@
    6.29                     'bool', 
    6.30                     [], 
    6.31                     is_const=True, is_virtual=True)
    6.32 -    ## simple-net-device.h: ns3::Address ns3::SimpleNetDevice::GetMulticast() const [member function]
    6.33 +    ## simple-net-device.h: ns3::Address ns3::SimpleNetDevice::GetMulticast(ns3::Ipv4Address multicastGroup) const [member function]
    6.34      cls.add_method('GetMulticast', 
    6.35                     'ns3::Address', 
    6.36 -                   [], 
    6.37 -                   is_const=True, is_virtual=True)
    6.38 -    ## simple-net-device.h: ns3::Address ns3::SimpleNetDevice::MakeMulticastAddress(ns3::Ipv4Address multicastGroup) const [member function]
    6.39 -    cls.add_method('MakeMulticastAddress', 
    6.40 -                   'ns3::Address', 
    6.41                     [param('ns3::Ipv4Address', 'multicastGroup')], 
    6.42                     is_const=True, is_virtual=True)
    6.43      ## simple-net-device.h: bool ns3::SimpleNetDevice::IsPointToPoint() const [member function]
    6.44 @@ -2664,18 +2654,10 @@
    6.45  
    6.46  def register_functions(root_module):
    6.47      module = root_module
    6.48 -    ## address-utils.h: extern void ns3::ReadFrom(ns3::Buffer::Iterator & i, ns3::Mac48Address & ad) [free function]
    6.49 -    module.add_function('ReadFrom', 
    6.50 -                        'void', 
    6.51 -                        [param('ns3::Buffer::Iterator &', 'i'), param('ns3::Mac48Address &', 'ad')])
    6.52 -    ## address-utils.h: extern void ns3::ReadFrom(ns3::Buffer::Iterator & i, ns3::Address & ad, uint32_t len) [free function]
    6.53 -    module.add_function('ReadFrom', 
    6.54 -                        'void', 
    6.55 -                        [param('ns3::Buffer::Iterator &', 'i'), param('ns3::Address &', 'ad'), param('uint32_t', 'len')])
    6.56 -    ## address-utils.h: extern void ns3::ReadFrom(ns3::Buffer::Iterator & i, ns3::Ipv4Address & ad) [free function]
    6.57 -    module.add_function('ReadFrom', 
    6.58 -                        'void', 
    6.59 -                        [param('ns3::Buffer::Iterator &', 'i'), param('ns3::Ipv4Address &', 'ad')])
    6.60 +    ## mac48-address.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeMac48AddressChecker() [free function]
    6.61 +    module.add_function('MakeMac48AddressChecker', 
    6.62 +                        'ns3::Ptr< ns3::AttributeChecker const >', 
    6.63 +                        [])
    6.64      ## ipv4-address.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeIpv4AddressChecker() [free function]
    6.65      module.add_function('MakeIpv4AddressChecker', 
    6.66                          'ns3::Ptr< ns3::AttributeChecker const >', 
    6.67 @@ -2700,10 +2682,18 @@
    6.68      module.add_function('MakeIpv4MaskChecker', 
    6.69                          'ns3::Ptr< ns3::AttributeChecker const >', 
    6.70                          [])
    6.71 -    ## mac48-address.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeMac48AddressChecker() [free function]
    6.72 -    module.add_function('MakeMac48AddressChecker', 
    6.73 -                        'ns3::Ptr< ns3::AttributeChecker const >', 
    6.74 -                        [])
    6.75 +    ## address-utils.h: extern void ns3::ReadFrom(ns3::Buffer::Iterator & i, ns3::Mac48Address & ad) [free function]
    6.76 +    module.add_function('ReadFrom', 
    6.77 +                        'void', 
    6.78 +                        [param('ns3::Buffer::Iterator &', 'i'), param('ns3::Mac48Address &', 'ad')])
    6.79 +    ## address-utils.h: extern void ns3::ReadFrom(ns3::Buffer::Iterator & i, ns3::Address & ad, uint32_t len) [free function]
    6.80 +    module.add_function('ReadFrom', 
    6.81 +                        'void', 
    6.82 +                        [param('ns3::Buffer::Iterator &', 'i'), param('ns3::Address &', 'ad'), param('uint32_t', 'len')])
    6.83 +    ## address-utils.h: extern void ns3::ReadFrom(ns3::Buffer::Iterator & i, ns3::Ipv4Address & ad) [free function]
    6.84 +    module.add_function('ReadFrom', 
    6.85 +                        'void', 
    6.86 +                        [param('ns3::Buffer::Iterator &', 'i'), param('ns3::Ipv4Address &', 'ad')])
    6.87      register_functions_ns3_internal(module.get_submodule('internal'), root_module)
    6.88      register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
    6.89      register_functions_ns3_Config(module.get_submodule('Config'), root_module)
     7.1 --- a/bindings/python/ns3_module_point_to_point.py	Wed Nov 05 14:33:20 2008 -0800
     7.2 +++ b/bindings/python/ns3_module_point_to_point.py	Wed Nov 05 14:49:21 2008 -0800
     7.3 @@ -200,14 +200,9 @@
     7.4                     'bool', 
     7.5                     [], 
     7.6                     is_const=True, is_virtual=True)
     7.7 -    ## point-to-point-net-device.h: ns3::Address ns3::PointToPointNetDevice::GetMulticast() const [member function]
     7.8 +    ## point-to-point-net-device.h: ns3::Address ns3::PointToPointNetDevice::GetMulticast(ns3::Ipv4Address multicastGroup) const [member function]
     7.9      cls.add_method('GetMulticast', 
    7.10                     'ns3::Address', 
    7.11 -                   [], 
    7.12 -                   is_const=True, is_virtual=True)
    7.13 -    ## point-to-point-net-device.h: ns3::Address ns3::PointToPointNetDevice::MakeMulticastAddress(ns3::Ipv4Address multicastGroup) const [member function]
    7.14 -    cls.add_method('MakeMulticastAddress', 
    7.15 -                   'ns3::Address', 
    7.16                     [param('ns3::Ipv4Address', 'multicastGroup')], 
    7.17                     is_const=True, is_virtual=True)
    7.18      ## point-to-point-net-device.h: bool ns3::PointToPointNetDevice::IsPointToPoint() const [member function]
     8.1 --- a/bindings/python/ns3_module_wifi.py	Wed Nov 05 14:33:20 2008 -0800
     8.2 +++ b/bindings/python/ns3_module_wifi.py	Wed Nov 05 14:49:21 2008 -0800
     8.3 @@ -2466,14 +2466,9 @@
     8.4                     'bool', 
     8.5                     [], 
     8.6                     is_const=True, is_virtual=True)
     8.7 -    ## wifi-net-device.h: ns3::Address ns3::WifiNetDevice::GetMulticast() const [member function]
     8.8 +    ## wifi-net-device.h: ns3::Address ns3::WifiNetDevice::GetMulticast(ns3::Ipv4Address multicastGroup) const [member function]
     8.9      cls.add_method('GetMulticast', 
    8.10                     'ns3::Address', 
    8.11 -                   [], 
    8.12 -                   is_const=True, is_virtual=True)
    8.13 -    ## wifi-net-device.h: ns3::Address ns3::WifiNetDevice::MakeMulticastAddress(ns3::Ipv4Address multicastGroup) const [member function]
    8.14 -    cls.add_method('MakeMulticastAddress', 
    8.15 -                   'ns3::Address', 
    8.16                     [param('ns3::Ipv4Address', 'multicastGroup')], 
    8.17                     is_const=True, is_virtual=True)
    8.18      ## wifi-net-device.h: bool ns3::WifiNetDevice::IsPointToPoint() const [member function]
     9.1 --- a/bindings/python/ns3modulegen_generated.py	Wed Nov 05 14:33:20 2008 -0800
     9.2 +++ b/bindings/python/ns3modulegen_generated.py	Wed Nov 05 14:49:21 2008 -0800
     9.3 @@ -23,8 +23,10 @@
     9.4  import ns3_module_internet_stack
     9.5  import ns3_module_wifi
     9.6  import ns3_module_csma
     9.7 +import ns3_module_emu
     9.8  import ns3_module_bridge
     9.9  import ns3_module_packet_sink
    9.10 +import ns3_module_v4ping
    9.11  import ns3_module_global_routing
    9.12  import ns3_module_onoff
    9.13  import ns3_module_olsr
    9.14 @@ -159,6 +161,17 @@
    9.15          ns3_module_csma__local.register_types(module)
    9.16      
    9.17      root_module.end_section('ns3_module_csma')
    9.18 +    root_module.begin_section('ns3_module_emu')
    9.19 +    ns3_module_emu.register_types(module)
    9.20 +    
    9.21 +    try:
    9.22 +        import ns3_module_emu__local
    9.23 +    except ImportError:
    9.24 +        pass
    9.25 +    else:
    9.26 +        ns3_module_emu__local.register_types(module)
    9.27 +    
    9.28 +    root_module.end_section('ns3_module_emu')
    9.29      root_module.begin_section('ns3_module_bridge')
    9.30      ns3_module_bridge.register_types(module)
    9.31      
    9.32 @@ -181,6 +194,17 @@
    9.33          ns3_module_packet_sink__local.register_types(module)
    9.34      
    9.35      root_module.end_section('ns3_module_packet_sink')
    9.36 +    root_module.begin_section('ns3_module_v4ping')
    9.37 +    ns3_module_v4ping.register_types(module)
    9.38 +    
    9.39 +    try:
    9.40 +        import ns3_module_v4ping__local
    9.41 +    except ImportError:
    9.42 +        pass
    9.43 +    else:
    9.44 +        ns3_module_v4ping__local.register_types(module)
    9.45 +    
    9.46 +    root_module.end_section('ns3_module_v4ping')
    9.47      root_module.begin_section('ns3_module_global_routing')
    9.48      ns3_module_global_routing.register_types(module)
    9.49      
    9.50 @@ -402,6 +426,17 @@
    9.51          ns3_module_csma__local.register_methods(root_module)
    9.52      
    9.53      root_module.end_section('ns3_module_csma')
    9.54 +    root_module.begin_section('ns3_module_emu')
    9.55 +    ns3_module_emu.register_methods(root_module)
    9.56 +    
    9.57 +    try:
    9.58 +        import ns3_module_emu__local
    9.59 +    except ImportError:
    9.60 +        pass
    9.61 +    else:
    9.62 +        ns3_module_emu__local.register_methods(root_module)
    9.63 +    
    9.64 +    root_module.end_section('ns3_module_emu')
    9.65      root_module.begin_section('ns3_module_bridge')
    9.66      ns3_module_bridge.register_methods(root_module)
    9.67      
    9.68 @@ -424,6 +459,17 @@
    9.69          ns3_module_packet_sink__local.register_methods(root_module)
    9.70      
    9.71      root_module.end_section('ns3_module_packet_sink')
    9.72 +    root_module.begin_section('ns3_module_v4ping')
    9.73 +    ns3_module_v4ping.register_methods(root_module)
    9.74 +    
    9.75 +    try:
    9.76 +        import ns3_module_v4ping__local
    9.77 +    except ImportError:
    9.78 +        pass
    9.79 +    else:
    9.80 +        ns3_module_v4ping__local.register_methods(root_module)
    9.81 +    
    9.82 +    root_module.end_section('ns3_module_v4ping')
    9.83      root_module.begin_section('ns3_module_global_routing')
    9.84      ns3_module_global_routing.register_methods(root_module)
    9.85      
    9.86 @@ -604,6 +650,17 @@
    9.87          ns3_module_csma__local.register_functions(root_module)
    9.88      
    9.89      root_module.end_section('ns3_module_csma')
    9.90 +    root_module.begin_section('ns3_module_emu')
    9.91 +    ns3_module_emu.register_functions(root_module)
    9.92 +    
    9.93 +    try:
    9.94 +        import ns3_module_emu__local
    9.95 +    except ImportError:
    9.96 +        pass
    9.97 +    else:
    9.98 +        ns3_module_emu__local.register_functions(root_module)
    9.99 +    
   9.100 +    root_module.end_section('ns3_module_emu')
   9.101      root_module.begin_section('ns3_module_bridge')
   9.102      ns3_module_bridge.register_functions(root_module)
   9.103      
   9.104 @@ -626,6 +683,17 @@
   9.105          ns3_module_packet_sink__local.register_functions(root_module)
   9.106      
   9.107      root_module.end_section('ns3_module_packet_sink')
   9.108 +    root_module.begin_section('ns3_module_v4ping')
   9.109 +    ns3_module_v4ping.register_functions(root_module)
   9.110 +    
   9.111 +    try:
   9.112 +        import ns3_module_v4ping__local
   9.113 +    except ImportError:
   9.114 +        pass
   9.115 +    else:
   9.116 +        ns3_module_v4ping__local.register_functions(root_module)
   9.117 +    
   9.118 +    root_module.end_section('ns3_module_v4ping')
   9.119      root_module.begin_section('ns3_module_global_routing')
   9.120      ns3_module_global_routing.register_functions(root_module)
   9.121      
    10.1 --- a/src/devices/emu/emu-net-device.cc	Wed Nov 05 14:33:20 2008 -0800
    10.2 +++ b/src/devices/emu/emu-net-device.cc	Wed Nov 05 14:49:21 2008 -0800
    10.3 @@ -502,44 +502,23 @@
    10.4    NS_LOG_LOGIC ("Pkt source is " << header.GetSource ());
    10.5    NS_LOG_LOGIC ("Pkt destination is " << header.GetDestination ());
    10.6  
    10.7 -  //
    10.8 -  // An IP host group address is mapped to an Ethernet multicast address
    10.9 -  // by placing the low-order 23-bits of the IP address into the low-order
   10.10 -  // 23 bits of the Ethernet multicast address 01-00-5E-00-00-00 (hex).
   10.11 -  //
   10.12 -  // We are going to receive all packets destined to any multicast address,
   10.13 -  // which means clearing the low-order 23 bits the header destination 
   10.14 -  //
   10.15 -  Mac48Address mcDest;
   10.16 -  uint8_t      mcBuf[6];
   10.17 -
   10.18 -  header.GetDestination ().CopyTo (mcBuf);
   10.19 -  mcBuf[3] &= 0x80;
   10.20 -  mcBuf[4] = 0;
   10.21 -  mcBuf[5] = 0;
   10.22 -  mcDest.CopyFrom (mcBuf);
   10.23 -
   10.24 -  Mac48Address multicast = Mac48Address::ConvertFrom (GetMulticast ());
   10.25 -  Mac48Address broadcast = Mac48Address::ConvertFrom (GetBroadcast ());
   10.26 -  Mac48Address destination = Mac48Address::ConvertFrom (GetAddress ());
   10.27 -
   10.28    LlcSnapHeader llc;
   10.29    packet->RemoveHeader (llc);
   10.30    uint16_t protocol = llc.GetType ();
   10.31  
   10.32    PacketType packetType;
   10.33        
   10.34 -  if (header.GetDestination () == broadcast)
   10.35 +  if (header.GetDestination ().IsBroadcast ())
   10.36      {
   10.37        NS_LOG_LOGIC ("Pkt destination is PACKET_BROADCAST");
   10.38        packetType = NS3_PACKET_BROADCAST;
   10.39      }
   10.40 -  else if (mcDest == multicast)
   10.41 +  else if (header.GetDestination ().IsMulticast ())
   10.42      {
   10.43        NS_LOG_LOGIC ("Pkt destination is PACKET_MULTICAST");
   10.44        packetType = NS3_PACKET_MULTICAST;
   10.45      }
   10.46 -  else if (header.GetDestination () == destination)
   10.47 +  else if (header.GetDestination () == m_address)
   10.48      {
   10.49        NS_LOG_LOGIC ("Pkt destination is PACKET_HOST");
   10.50        packetType = NS3_PACKET_HOST;
   10.51 @@ -841,26 +820,21 @@
   10.52    return false;
   10.53  }
   10.54  
   10.55 -Address 
   10.56 -EmuNetDevice::GetMulticast (void) const
   10.57 -{
   10.58 -  return Mac48Address ("01:00:5e:00:00:00");
   10.59 -}
   10.60 -
   10.61 -Address 
   10.62 -EmuNetDevice::MakeMulticastAddress (Ipv4Address multicastGroup) const
   10.63 +  Address 
   10.64 +EmuNetDevice::GetMulticast (Ipv4Address multicastGroup) const
   10.65  {
   10.66    NS_LOG_FUNCTION (multicastGroup);
   10.67  
   10.68 -  Mac48Address addr = Mac48Address::GetMulticast (multicastGroup);
   10.69 +  Mac48Address ad = Mac48Address::GetMulticast (multicastGroup);
   10.70  
   10.71    //
   10.72    // Implicit conversion (operator Address ()) is defined for Mac48Address, so
   10.73    // use it by just returning the EUI-48 address which is automagically converted
   10.74    // to an Address.
   10.75    //
   10.76 -  NS_LOG_LOGIC ("Multicast address is " << addr);
   10.77 -  return addr;
   10.78 +  NS_LOG_LOGIC ("multicast address is " << ad);
   10.79 +
   10.80 +  return ad;
   10.81  }
   10.82  
   10.83  bool 
    11.1 --- a/src/devices/emu/emu-net-device.h	Wed Nov 05 14:33:20 2008 -0800
    11.2 +++ b/src/devices/emu/emu-net-device.h	Wed Nov 05 14:49:21 2008 -0800
    11.3 @@ -144,9 +144,35 @@
    11.4    virtual Address GetBroadcast (void) const;
    11.5  
    11.6    virtual bool IsMulticast (void) const;
    11.7 -  virtual Address GetMulticast (void) const;
    11.8 -  virtual Address MakeMulticastAddress (Ipv4Address multicastGroup) const;
    11.9  
   11.10 +  /**
   11.11 +   * \brief Make and return a MAC multicast address using the provided
   11.12 +   *        multicast group
   11.13 +   *
   11.14 +   * RFC 1112 says that an Ipv4 host group address is mapped to an Ethernet 
   11.15 +   * multicast address by placing the low-order 23-bits of the IP address into 
   11.16 +   * the low-order 23 bits of the Ethernet multicast address 
   11.17 +   * 01-00-5E-00-00-00 (hex).
   11.18 +   *
   11.19 +   * This method performs the multicast address creation function appropriate
   11.20 +   * to an EUI-48-based CSMA device.  This MAC address is encapsulated in an
   11.21 +   *  abstract Address to avoid dependencies on the exact address format.
   11.22 +   *
   11.23 +   * \param multicastGroup The IP address for the multicast group destination
   11.24 +   * of the packet.
   11.25 +   * \return The MAC multicast Address used to send packets to the provided
   11.26 +   * multicast group.
   11.27 +   *
   11.28 +   * \see Ipv4Address
   11.29 +   * \see Mac48Address
   11.30 +   * \see Address
   11.31 +   */
   11.32 +  virtual Address GetMulticast (Ipv4Address multicastGroup) const;
   11.33 +
   11.34 +  /**
   11.35 +   * Is this a point to point link?
   11.36 +   * \returns false.
   11.37 +   */
   11.38    virtual bool IsPointToPoint (void) const;
   11.39  
   11.40    virtual bool Send(Ptr<Packet> packet, const Address &dest, uint16_t protocolNumber);