add ipv6
authorCraig Dowell <craigdo@ee.washington.edu>
Wed, 27 Jan 2010 21:23:30 -0800
changeset 6027 8ed838dd0be5
parent 6026 38a97b815052
child 6028 96fb92f73f3d
add ipv6
bindings/python/apidefs/gcc-ILP32/ns3_module_helper.py
bindings/python/apidefs/gcc-LP64/ns3_module_helper.py
examples/routing/dynamic-global-routing.cc
examples/wireless/mixed-wireless.cc
src/helper/ascii-trace-helper.cc
src/helper/ascii-trace-helper.h
src/helper/internet-stack-helper.cc
src/helper/internet-stack-helper.h
src/helper/ipv6-interface-container.cc
src/helper/ipv6-interface-container.h
src/helper/pcap-helper.cc
src/helper/pcap-helper.h
--- a/bindings/python/apidefs/gcc-ILP32/ns3_module_helper.py	Wed Jan 27 18:41:38 2010 -0800
+++ b/bindings/python/apidefs/gcc-ILP32/ns3_module_helper.py	Wed Jan 27 21:23:30 2010 -0800
@@ -9,10 +9,12 @@
     module.add_class('ApplicationContainer')
     ## ascii-trace-helper.h: ns3::AsciiTraceHelper [class]
     module.add_class('AsciiTraceHelper', allow_subclassing=False)
-    ## ascii-trace-user-helper-for-device.h: ns3::AsciiTraceUserHelperForDevice [class]
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForDevice [class]
     module.add_class('AsciiTraceUserHelperForDevice', allow_subclassing=True)
-    ## ascii-trace-user-helper-for-ipv4.h: ns3::AsciiTraceUserHelperForIpv4 [class]
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForIpv4 [class]
     module.add_class('AsciiTraceUserHelperForIpv4', allow_subclassing=True)
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForIpv6 [class]
+    module.add_class('AsciiTraceUserHelperForIpv6', allow_subclassing=True)
     ## athstats-helper.h: ns3::AthstatsHelper [class]
     module.add_class('AthstatsHelper', allow_subclassing=False)
     ## bridge-helper.h: ns3::BridgeHelper [class]
@@ -73,10 +75,12 @@
     module.add_enum('', ['DLT_PRISM_HEADER'], outer_class=root_module['ns3::PcapHelper'])
     ## pcap-helper.h: ns3::PcapHelper [enumeration]
     module.add_enum('', ['DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'])
-    ## pcap-user-helper-for-device.h: ns3::PcapUserHelperForDevice [class]
+    ## pcap-helper.h: ns3::PcapUserHelperForDevice [class]
     module.add_class('PcapUserHelperForDevice', allow_subclassing=True)
-    ## pcap-user-helper-for-ipv4.h: ns3::PcapUserHelperForIpv4 [class]
+    ## pcap-helper.h: ns3::PcapUserHelperForIpv4 [class]
     module.add_class('PcapUserHelperForIpv4', allow_subclassing=True)
+    ## pcap-helper.h: ns3::PcapUserHelperForIpv6 [class]
+    module.add_class('PcapUserHelperForIpv6', allow_subclassing=True)
     ## ping6-helper.h: ns3::Ping6Helper [class]
     module.add_class('Ping6Helper', allow_subclassing=False)
     ## point-to-point-dumbbell-helper.h: ns3::PointToPointDumbbellHelper [class]
@@ -218,6 +222,7 @@
     register_Ns3AsciiTraceHelper_methods(root_module, root_module['ns3::AsciiTraceHelper'])
     register_Ns3AsciiTraceUserHelperForDevice_methods(root_module, root_module['ns3::AsciiTraceUserHelperForDevice'])
     register_Ns3AsciiTraceUserHelperForIpv4_methods(root_module, root_module['ns3::AsciiTraceUserHelperForIpv4'])
+    register_Ns3AsciiTraceUserHelperForIpv6_methods(root_module, root_module['ns3::AsciiTraceUserHelperForIpv6'])
     register_Ns3AthstatsHelper_methods(root_module, root_module['ns3::AthstatsHelper'])
     register_Ns3BridgeHelper_methods(root_module, root_module['ns3::BridgeHelper'])
     register_Ns3CsmaStarHelper_methods(root_module, root_module['ns3::CsmaStarHelper'])
@@ -242,6 +247,7 @@
     register_Ns3PcapHelper_methods(root_module, root_module['ns3::PcapHelper'])
     register_Ns3PcapUserHelperForDevice_methods(root_module, root_module['ns3::PcapUserHelperForDevice'])
     register_Ns3PcapUserHelperForIpv4_methods(root_module, root_module['ns3::PcapUserHelperForIpv4'])
+    register_Ns3PcapUserHelperForIpv6_methods(root_module, root_module['ns3::PcapUserHelperForIpv6'])
     register_Ns3Ping6Helper_methods(root_module, root_module['ns3::Ping6Helper'])
     register_Ns3PointToPointDumbbellHelper_methods(root_module, root_module['ns3::PointToPointDumbbellHelper'])
     register_Ns3PointToPointGridHelper_methods(root_module, root_module['ns3::PointToPointGridHelper'])
@@ -398,66 +404,66 @@
     cls.add_method('GetFilenameFromDevice', 
                    'std::string', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'device'), param('bool', 'useObjectNames', default_value='true')])
-    ## ascii-trace-helper.h: std::string ns3::AsciiTraceHelper::GetFilenameFromInterfacePair(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface, bool useObjectNames=true) [member function]
+    ## ascii-trace-helper.h: std::string ns3::AsciiTraceHelper::GetFilenameFromInterfacePair(std::string prefix, ns3::Ptr<ns3::Object> object, uint32_t interface, bool useObjectNames=true) [member function]
     cls.add_method('GetFilenameFromInterfacePair', 
                    'std::string', 
-                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface'), param('bool', 'useObjectNames', default_value='true')])
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Object >', 'object'), param('uint32_t', 'interface'), param('bool', 'useObjectNames', default_value='true')])
     return
 
 def register_Ns3AsciiTraceUserHelperForDevice_methods(root_module, cls):
-    ## ascii-trace-user-helper-for-device.h: ns3::AsciiTraceUserHelperForDevice::AsciiTraceUserHelperForDevice() [constructor]
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForDevice::AsciiTraceUserHelperForDevice() [constructor]
     cls.add_constructor([])
-    ## ascii-trace-user-helper-for-device.h: ns3::AsciiTraceUserHelperForDevice::AsciiTraceUserHelperForDevice(ns3::AsciiTraceUserHelperForDevice const & arg0) [copy constructor]
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForDevice::AsciiTraceUserHelperForDevice(ns3::AsciiTraceUserHelperForDevice const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::AsciiTraceUserHelperForDevice const &', 'arg0')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, ns3::Ptr<ns3::NetDevice> nd) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, ns3::Ptr<ns3::NetDevice> nd) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ptr<ns3::NetDevice> nd) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ptr<ns3::NetDevice> nd) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, std::string ndName) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, std::string ndName) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('std::string', 'prefix'), param('std::string', 'ndName')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, std::string ndName) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, std::string ndName) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('std::string', 'ndName')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, ns3::NetDeviceContainer d) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, ns3::NetDeviceContainer d) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::NetDeviceContainer', 'd')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NetDeviceContainer d) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NetDeviceContainer d) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::NetDeviceContainer', 'd')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, ns3::NodeContainer n) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, ns3::NodeContainer n) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NodeContainer n) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NodeContainer n) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::NodeContainer', 'n')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, uint32_t nodeid, uint32_t deviceid) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, uint32_t nodeid, uint32_t deviceid) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, uint32_t nodeid, uint32_t deviceid) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, uint32_t nodeid, uint32_t deviceid) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAsciiAll(std::string prefix) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAsciiAll(std::string prefix) [member function]
     cls.add_method('EnableAsciiAll', 
                    'void', 
                    [param('std::string', 'prefix')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAsciiAll(ns3::Ptr<ns3::OutputStreamObject> stream) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAsciiAll(ns3::Ptr<ns3::OutputStreamObject> stream) [member function]
     cls.add_method('EnableAsciiAll', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAsciiInternal(ns3::Ptr<ns3::OutputStreamObject> stream, std::string prefix, ns3::Ptr<ns3::NetDevice> nd) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAsciiInternal(ns3::Ptr<ns3::OutputStreamObject> stream, std::string prefix, ns3::Ptr<ns3::NetDevice> nd) [member function]
     cls.add_method('EnableAsciiInternal', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd')], 
@@ -465,65 +471,125 @@
     return
 
 def register_Ns3AsciiTraceUserHelperForIpv4_methods(root_module, cls):
-    ## ascii-trace-user-helper-for-ipv4.h: ns3::AsciiTraceUserHelperForIpv4::AsciiTraceUserHelperForIpv4() [constructor]
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForIpv4::AsciiTraceUserHelperForIpv4() [constructor]
     cls.add_constructor([])
-    ## ascii-trace-user-helper-for-ipv4.h: ns3::AsciiTraceUserHelperForIpv4::AsciiTraceUserHelperForIpv4(ns3::AsciiTraceUserHelperForIpv4 const & arg0) [copy constructor]
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForIpv4::AsciiTraceUserHelperForIpv4(ns3::AsciiTraceUserHelperForIpv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::AsciiTraceUserHelperForIpv4 const &', 'arg0')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(std::string prefix, std::string ipv4Name, uint32_t interface) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(std::string prefix, std::string ipv4Name, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('std::string', 'ipv4Name'), param('uint32_t', 'interface')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, std::string ipv4Name, uint32_t interface) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(ns3::Ptr<ns3::OutputStreamObject> stream, std::string ipv4Name, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('std::string', 'ipv4Name'), param('uint32_t', 'interface')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(std::string prefix, ns3::Ipv4InterfaceContainer c) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(std::string prefix, ns3::Ipv4InterfaceContainer c) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ipv4InterfaceContainer', 'c')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ipv4InterfaceContainer c) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ipv4InterfaceContainer c) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::Ipv4InterfaceContainer', 'c')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(std::string prefix, ns3::NodeContainer n) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(std::string prefix, ns3::NodeContainer n) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NodeContainer n) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NodeContainer n) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::NodeContainer', 'n')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(std::string prefix, uint32_t nodeid, uint32_t deviceid) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(std::string prefix, uint32_t nodeid, uint32_t deviceid) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, uint32_t nodeid, uint32_t interface) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(ns3::Ptr<ns3::OutputStreamObject> stream, uint32_t nodeid, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('uint32_t', 'nodeid'), param('uint32_t', 'interface')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiAll(std::string prefix) [member function]
-    cls.add_method('EnableAsciiAll', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4All(std::string prefix) [member function]
+    cls.add_method('EnableAsciiIpv4All', 
                    'void', 
                    [param('std::string', 'prefix')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiAll(ns3::Ptr<ns3::OutputStreamObject> stream) [member function]
-    cls.add_method('EnableAsciiAll', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4All(ns3::Ptr<ns3::OutputStreamObject> stream) [member function]
+    cls.add_method('EnableAsciiIpv4All', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiInternal(ns3::Ptr<ns3::OutputStreamObject> stream, std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
-    cls.add_method('EnableAsciiInternal', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4Internal(ns3::Ptr<ns3::OutputStreamObject> stream, std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv4Internal', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3AsciiTraceUserHelperForIpv6_methods(root_module, cls):
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForIpv6::AsciiTraceUserHelperForIpv6() [constructor]
+    cls.add_constructor([])
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForIpv6::AsciiTraceUserHelperForIpv6(ns3::AsciiTraceUserHelperForIpv6 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AsciiTraceUserHelperForIpv6 const &', 'arg0')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(std::string prefix, ns3::Ptr<ns3::Ipv6> ipv6, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv6 >', 'ipv6'), param('uint32_t', 'interface')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ptr<ns3::Ipv6> ipv6, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::Ptr< ns3::Ipv6 >', 'ipv6'), param('uint32_t', 'interface')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(std::string prefix, std::string ipv6Name, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('std::string', 'ipv6Name'), param('uint32_t', 'interface')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(ns3::Ptr<ns3::OutputStreamObject> stream, std::string ipv6Name, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('std::string', 'ipv6Name'), param('uint32_t', 'interface')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(std::string prefix, ns3::Ipv6InterfaceContainer c) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ipv6InterfaceContainer', 'c')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ipv6InterfaceContainer c) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::Ipv6InterfaceContainer', 'c')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(std::string prefix, ns3::NodeContainer n) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NodeContainer n) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::NodeContainer', 'n')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(std::string prefix, uint32_t nodeid, uint32_t deviceid) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(ns3::Ptr<ns3::OutputStreamObject> stream, uint32_t nodeid, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('uint32_t', 'nodeid'), param('uint32_t', 'interface')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6All(std::string prefix) [member function]
+    cls.add_method('EnableAsciiIpv6All', 
+                   'void', 
+                   [param('std::string', 'prefix')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6All(ns3::Ptr<ns3::OutputStreamObject> stream) [member function]
+    cls.add_method('EnableAsciiIpv6All', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6Internal(ns3::Ptr<ns3::OutputStreamObject> stream, std::string prefix, ns3::Ptr<ns3::Ipv6> ipv6, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv6Internal', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv6 >', 'ipv6'), param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
 def register_Ns3AthstatsHelper_methods(root_module, cls):
     ## athstats-helper.h: ns3::AthstatsHelper::AthstatsHelper(ns3::AthstatsHelper const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::AthstatsHelper const &', 'arg0')])
@@ -839,6 +905,16 @@
     cls.add_method('Add', 
                    'void', 
                    [param('std::string', 'ipv6Name'), param('uint32_t', 'interface')])
+    ## ipv6-interface-container.h: __gnu_cxx::__normal_iterator<const std::pair<ns3::Ptr<ns3::Ipv6>, unsigned int>*,std::vector<std::pair<ns3::Ptr<ns3::Ipv6>, unsigned int>, std::allocator<std::pair<ns3::Ptr<ns3::Ipv6>, unsigned int> > > > ns3::Ipv6InterfaceContainer::Begin() const [member function]
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< std::pair< ns3::Ptr< ns3::Ipv6 >, unsigned int > const, std::vector< std::pair< ns3::Ptr< ns3::Ipv6 >, unsigned int > > >', 
+                   [], 
+                   is_const=True)
+    ## ipv6-interface-container.h: __gnu_cxx::__normal_iterator<const std::pair<ns3::Ptr<ns3::Ipv6>, unsigned int>*,std::vector<std::pair<ns3::Ptr<ns3::Ipv6>, unsigned int>, std::allocator<std::pair<ns3::Ptr<ns3::Ipv6>, unsigned int> > > > ns3::Ipv6InterfaceContainer::End() const [member function]
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< std::pair< ns3::Ptr< ns3::Ipv6 >, unsigned int > const, std::vector< std::pair< ns3::Ptr< ns3::Ipv6 >, unsigned int > > >', 
+                   [], 
+                   is_const=True)
     ## ipv6-interface-container.h: ns3::Ipv6Address ns3::Ipv6InterfaceContainer::GetAddress(uint32_t i, uint32_t j) const [member function]
     cls.add_method('GetAddress', 
                    'ns3::Ipv6Address', 
@@ -1263,42 +1339,42 @@
     cls.add_method('GetFilenameFromDevice', 
                    'std::string', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'device'), param('bool', 'useObjectNames', default_value='true')])
-    ## pcap-helper.h: std::string ns3::PcapHelper::GetFilenameFromInterfacePair(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface, bool useObjectNames=true) [member function]
+    ## pcap-helper.h: std::string ns3::PcapHelper::GetFilenameFromInterfacePair(std::string prefix, ns3::Ptr<ns3::Object> object, uint32_t interface, bool useObjectNames=true) [member function]
     cls.add_method('GetFilenameFromInterfacePair', 
                    'std::string', 
-                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface'), param('bool', 'useObjectNames', default_value='true')])
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Object >', 'object'), param('uint32_t', 'interface'), param('bool', 'useObjectNames', default_value='true')])
     return
 
 def register_Ns3PcapUserHelperForDevice_methods(root_module, cls):
-    ## pcap-user-helper-for-device.h: ns3::PcapUserHelperForDevice::PcapUserHelperForDevice() [constructor]
+    ## pcap-helper.h: ns3::PcapUserHelperForDevice::PcapUserHelperForDevice() [constructor]
     cls.add_constructor([])
-    ## pcap-user-helper-for-device.h: ns3::PcapUserHelperForDevice::PcapUserHelperForDevice(ns3::PcapUserHelperForDevice const & arg0) [copy constructor]
+    ## pcap-helper.h: ns3::PcapUserHelperForDevice::PcapUserHelperForDevice(ns3::PcapUserHelperForDevice const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::PcapUserHelperForDevice const &', 'arg0')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous=false) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous=false) [member function]
     cls.add_method('EnablePcap', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous', default_value='false')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, std::string ndName, bool promiscuous=false) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, std::string ndName, bool promiscuous=false) [member function]
     cls.add_method('EnablePcap', 
                    'void', 
                    [param('std::string', 'prefix'), param('std::string', 'ndName'), param('bool', 'promiscuous', default_value='false')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, ns3::NetDeviceContainer d, bool promiscuous=false) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, ns3::NetDeviceContainer d, bool promiscuous=false) [member function]
     cls.add_method('EnablePcap', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::NetDeviceContainer', 'd'), param('bool', 'promiscuous', default_value='false')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, ns3::NodeContainer n, bool promiscuous=false) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, ns3::NodeContainer n, bool promiscuous=false) [member function]
     cls.add_method('EnablePcap', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n'), param('bool', 'promiscuous', default_value='false')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, uint32_t nodeid, uint32_t deviceid, bool promiscuous=false) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, uint32_t nodeid, uint32_t deviceid, bool promiscuous=false) [member function]
     cls.add_method('EnablePcap', 
                    'void', 
                    [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid'), param('bool', 'promiscuous', default_value='false')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcapAll(std::string prefix, bool promiscuous=false) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcapAll(std::string prefix, bool promiscuous=false) [member function]
     cls.add_method('EnablePcapAll', 
                    'void', 
                    [param('std::string', 'prefix'), param('bool', 'promiscuous', default_value='false')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous) [member function]
     cls.add_method('EnablePcapInternal', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous')], 
@@ -1306,41 +1382,77 @@
     return
 
 def register_Ns3PcapUserHelperForIpv4_methods(root_module, cls):
-    ## pcap-user-helper-for-ipv4.h: ns3::PcapUserHelperForIpv4::PcapUserHelperForIpv4() [constructor]
+    ## pcap-helper.h: ns3::PcapUserHelperForIpv4::PcapUserHelperForIpv4() [constructor]
     cls.add_constructor([])
-    ## pcap-user-helper-for-ipv4.h: ns3::PcapUserHelperForIpv4::PcapUserHelperForIpv4(ns3::PcapUserHelperForIpv4 const & arg0) [copy constructor]
+    ## pcap-helper.h: ns3::PcapUserHelperForIpv4::PcapUserHelperForIpv4(ns3::PcapUserHelperForIpv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::PcapUserHelperForIpv4 const &', 'arg0')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcap(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
-    cls.add_method('EnablePcap', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcap(std::string prefix, std::string ipv4Name, uint32_t interface) [member function]
-    cls.add_method('EnablePcap', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4(std::string prefix, std::string ipv4Name, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('std::string', 'ipv4Name'), param('uint32_t', 'interface')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcap(std::string prefix, ns3::Ipv4InterfaceContainer c) [member function]
-    cls.add_method('EnablePcap', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4(std::string prefix, ns3::Ipv4InterfaceContainer c) [member function]
+    cls.add_method('EnablePcapIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ipv4InterfaceContainer', 'c')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcap(std::string prefix, ns3::NodeContainer n) [member function]
-    cls.add_method('EnablePcap', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4(std::string prefix, ns3::NodeContainer n) [member function]
+    cls.add_method('EnablePcapIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcap(std::string prefix, uint32_t nodeid, uint32_t interface) [member function]
-    cls.add_method('EnablePcap', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4(std::string prefix, uint32_t nodeid, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'interface')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcapAll(std::string prefix) [member function]
-    cls.add_method('EnablePcapAll', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4All(std::string prefix) [member function]
+    cls.add_method('EnablePcapIpv4All', 
                    'void', 
                    [param('std::string', 'prefix')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
-    cls.add_method('EnablePcapInternal', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4Internal(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv4Internal', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3PcapUserHelperForIpv6_methods(root_module, cls):
+    ## pcap-helper.h: ns3::PcapUserHelperForIpv6::PcapUserHelperForIpv6() [constructor]
+    cls.add_constructor([])
+    ## pcap-helper.h: ns3::PcapUserHelperForIpv6::PcapUserHelperForIpv6(ns3::PcapUserHelperForIpv6 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PcapUserHelperForIpv6 const &', 'arg0')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6(std::string prefix, ns3::Ptr<ns3::Ipv6> ipv6, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv6 >', 'ipv6'), param('uint32_t', 'interface')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6(std::string prefix, std::string ipv6Name, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('std::string', 'ipv6Name'), param('uint32_t', 'interface')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6(std::string prefix, ns3::Ipv6InterfaceContainer c) [member function]
+    cls.add_method('EnablePcapIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ipv6InterfaceContainer', 'c')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6(std::string prefix, ns3::NodeContainer n) [member function]
+    cls.add_method('EnablePcapIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6(std::string prefix, uint32_t nodeid, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'interface')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6All(std::string prefix) [member function]
+    cls.add_method('EnablePcapIpv6All', 
+                   'void', 
+                   [param('std::string', 'prefix')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6Internal(std::string prefix, ns3::Ptr<ns3::Ipv6> ipv6, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv6Internal', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv6 >', 'ipv6'), param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
 def register_Ns3Ping6Helper_methods(root_module, cls):
     ## ping6-helper.h: ns3::Ping6Helper::Ping6Helper(ns3::Ping6Helper const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ping6Helper const &', 'arg0')])
--- a/bindings/python/apidefs/gcc-LP64/ns3_module_helper.py	Wed Jan 27 18:41:38 2010 -0800
+++ b/bindings/python/apidefs/gcc-LP64/ns3_module_helper.py	Wed Jan 27 21:23:30 2010 -0800
@@ -9,10 +9,12 @@
     module.add_class('ApplicationContainer')
     ## ascii-trace-helper.h: ns3::AsciiTraceHelper [class]
     module.add_class('AsciiTraceHelper', allow_subclassing=False)
-    ## ascii-trace-user-helper-for-device.h: ns3::AsciiTraceUserHelperForDevice [class]
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForDevice [class]
     module.add_class('AsciiTraceUserHelperForDevice', allow_subclassing=True)
-    ## ascii-trace-user-helper-for-ipv4.h: ns3::AsciiTraceUserHelperForIpv4 [class]
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForIpv4 [class]
     module.add_class('AsciiTraceUserHelperForIpv4', allow_subclassing=True)
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForIpv6 [class]
+    module.add_class('AsciiTraceUserHelperForIpv6', allow_subclassing=True)
     ## athstats-helper.h: ns3::AthstatsHelper [class]
     module.add_class('AthstatsHelper', allow_subclassing=False)
     ## bridge-helper.h: ns3::BridgeHelper [class]
@@ -73,10 +75,12 @@
     module.add_enum('', ['DLT_PRISM_HEADER'], outer_class=root_module['ns3::PcapHelper'])
     ## pcap-helper.h: ns3::PcapHelper [enumeration]
     module.add_enum('', ['DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'])
-    ## pcap-user-helper-for-device.h: ns3::PcapUserHelperForDevice [class]
+    ## pcap-helper.h: ns3::PcapUserHelperForDevice [class]
     module.add_class('PcapUserHelperForDevice', allow_subclassing=True)
-    ## pcap-user-helper-for-ipv4.h: ns3::PcapUserHelperForIpv4 [class]
+    ## pcap-helper.h: ns3::PcapUserHelperForIpv4 [class]
     module.add_class('PcapUserHelperForIpv4', allow_subclassing=True)
+    ## pcap-helper.h: ns3::PcapUserHelperForIpv6 [class]
+    module.add_class('PcapUserHelperForIpv6', allow_subclassing=True)
     ## ping6-helper.h: ns3::Ping6Helper [class]
     module.add_class('Ping6Helper', allow_subclassing=False)
     ## point-to-point-dumbbell-helper.h: ns3::PointToPointDumbbellHelper [class]
@@ -218,6 +222,7 @@
     register_Ns3AsciiTraceHelper_methods(root_module, root_module['ns3::AsciiTraceHelper'])
     register_Ns3AsciiTraceUserHelperForDevice_methods(root_module, root_module['ns3::AsciiTraceUserHelperForDevice'])
     register_Ns3AsciiTraceUserHelperForIpv4_methods(root_module, root_module['ns3::AsciiTraceUserHelperForIpv4'])
+    register_Ns3AsciiTraceUserHelperForIpv6_methods(root_module, root_module['ns3::AsciiTraceUserHelperForIpv6'])
     register_Ns3AthstatsHelper_methods(root_module, root_module['ns3::AthstatsHelper'])
     register_Ns3BridgeHelper_methods(root_module, root_module['ns3::BridgeHelper'])
     register_Ns3CsmaStarHelper_methods(root_module, root_module['ns3::CsmaStarHelper'])
@@ -242,6 +247,7 @@
     register_Ns3PcapHelper_methods(root_module, root_module['ns3::PcapHelper'])
     register_Ns3PcapUserHelperForDevice_methods(root_module, root_module['ns3::PcapUserHelperForDevice'])
     register_Ns3PcapUserHelperForIpv4_methods(root_module, root_module['ns3::PcapUserHelperForIpv4'])
+    register_Ns3PcapUserHelperForIpv6_methods(root_module, root_module['ns3::PcapUserHelperForIpv6'])
     register_Ns3Ping6Helper_methods(root_module, root_module['ns3::Ping6Helper'])
     register_Ns3PointToPointDumbbellHelper_methods(root_module, root_module['ns3::PointToPointDumbbellHelper'])
     register_Ns3PointToPointGridHelper_methods(root_module, root_module['ns3::PointToPointGridHelper'])
@@ -398,66 +404,66 @@
     cls.add_method('GetFilenameFromDevice', 
                    'std::string', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'device'), param('bool', 'useObjectNames', default_value='true')])
-    ## ascii-trace-helper.h: std::string ns3::AsciiTraceHelper::GetFilenameFromInterfacePair(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface, bool useObjectNames=true) [member function]
+    ## ascii-trace-helper.h: std::string ns3::AsciiTraceHelper::GetFilenameFromInterfacePair(std::string prefix, ns3::Ptr<ns3::Object> object, uint32_t interface, bool useObjectNames=true) [member function]
     cls.add_method('GetFilenameFromInterfacePair', 
                    'std::string', 
-                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface'), param('bool', 'useObjectNames', default_value='true')])
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Object >', 'object'), param('uint32_t', 'interface'), param('bool', 'useObjectNames', default_value='true')])
     return
 
 def register_Ns3AsciiTraceUserHelperForDevice_methods(root_module, cls):
-    ## ascii-trace-user-helper-for-device.h: ns3::AsciiTraceUserHelperForDevice::AsciiTraceUserHelperForDevice() [constructor]
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForDevice::AsciiTraceUserHelperForDevice() [constructor]
     cls.add_constructor([])
-    ## ascii-trace-user-helper-for-device.h: ns3::AsciiTraceUserHelperForDevice::AsciiTraceUserHelperForDevice(ns3::AsciiTraceUserHelperForDevice const & arg0) [copy constructor]
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForDevice::AsciiTraceUserHelperForDevice(ns3::AsciiTraceUserHelperForDevice const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::AsciiTraceUserHelperForDevice const &', 'arg0')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, ns3::Ptr<ns3::NetDevice> nd) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, ns3::Ptr<ns3::NetDevice> nd) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ptr<ns3::NetDevice> nd) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ptr<ns3::NetDevice> nd) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, std::string ndName) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, std::string ndName) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('std::string', 'prefix'), param('std::string', 'ndName')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, std::string ndName) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, std::string ndName) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('std::string', 'ndName')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, ns3::NetDeviceContainer d) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, ns3::NetDeviceContainer d) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::NetDeviceContainer', 'd')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NetDeviceContainer d) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NetDeviceContainer d) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::NetDeviceContainer', 'd')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, ns3::NodeContainer n) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, ns3::NodeContainer n) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NodeContainer n) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NodeContainer n) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::NodeContainer', 'n')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, uint32_t nodeid, uint32_t deviceid) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(std::string prefix, uint32_t nodeid, uint32_t deviceid) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, uint32_t nodeid, uint32_t deviceid) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, uint32_t nodeid, uint32_t deviceid) [member function]
     cls.add_method('EnableAscii', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAsciiAll(std::string prefix) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAsciiAll(std::string prefix) [member function]
     cls.add_method('EnableAsciiAll', 
                    'void', 
                    [param('std::string', 'prefix')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAsciiAll(ns3::Ptr<ns3::OutputStreamObject> stream) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAsciiAll(ns3::Ptr<ns3::OutputStreamObject> stream) [member function]
     cls.add_method('EnableAsciiAll', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream')])
-    ## ascii-trace-user-helper-for-device.h: void ns3::AsciiTraceUserHelperForDevice::EnableAsciiInternal(ns3::Ptr<ns3::OutputStreamObject> stream, std::string prefix, ns3::Ptr<ns3::NetDevice> nd) [member function]
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForDevice::EnableAsciiInternal(ns3::Ptr<ns3::OutputStreamObject> stream, std::string prefix, ns3::Ptr<ns3::NetDevice> nd) [member function]
     cls.add_method('EnableAsciiInternal', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd')], 
@@ -465,65 +471,125 @@
     return
 
 def register_Ns3AsciiTraceUserHelperForIpv4_methods(root_module, cls):
-    ## ascii-trace-user-helper-for-ipv4.h: ns3::AsciiTraceUserHelperForIpv4::AsciiTraceUserHelperForIpv4() [constructor]
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForIpv4::AsciiTraceUserHelperForIpv4() [constructor]
     cls.add_constructor([])
-    ## ascii-trace-user-helper-for-ipv4.h: ns3::AsciiTraceUserHelperForIpv4::AsciiTraceUserHelperForIpv4(ns3::AsciiTraceUserHelperForIpv4 const & arg0) [copy constructor]
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForIpv4::AsciiTraceUserHelperForIpv4(ns3::AsciiTraceUserHelperForIpv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::AsciiTraceUserHelperForIpv4 const &', 'arg0')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(std::string prefix, std::string ipv4Name, uint32_t interface) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(std::string prefix, std::string ipv4Name, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('std::string', 'ipv4Name'), param('uint32_t', 'interface')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, std::string ipv4Name, uint32_t interface) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(ns3::Ptr<ns3::OutputStreamObject> stream, std::string ipv4Name, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('std::string', 'ipv4Name'), param('uint32_t', 'interface')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(std::string prefix, ns3::Ipv4InterfaceContainer c) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(std::string prefix, ns3::Ipv4InterfaceContainer c) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ipv4InterfaceContainer', 'c')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ipv4InterfaceContainer c) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ipv4InterfaceContainer c) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::Ipv4InterfaceContainer', 'c')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(std::string prefix, ns3::NodeContainer n) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(std::string prefix, ns3::NodeContainer n) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NodeContainer n) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NodeContainer n) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::NodeContainer', 'n')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(std::string prefix, uint32_t nodeid, uint32_t deviceid) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(std::string prefix, uint32_t nodeid, uint32_t deviceid) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAscii(ns3::Ptr<ns3::OutputStreamObject> stream, uint32_t nodeid, uint32_t interface) [member function]
-    cls.add_method('EnableAscii', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4(ns3::Ptr<ns3::OutputStreamObject> stream, uint32_t nodeid, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv4', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('uint32_t', 'nodeid'), param('uint32_t', 'interface')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiAll(std::string prefix) [member function]
-    cls.add_method('EnableAsciiAll', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4All(std::string prefix) [member function]
+    cls.add_method('EnableAsciiIpv4All', 
                    'void', 
                    [param('std::string', 'prefix')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiAll(ns3::Ptr<ns3::OutputStreamObject> stream) [member function]
-    cls.add_method('EnableAsciiAll', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4All(ns3::Ptr<ns3::OutputStreamObject> stream) [member function]
+    cls.add_method('EnableAsciiIpv4All', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream')])
-    ## ascii-trace-user-helper-for-ipv4.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiInternal(ns3::Ptr<ns3::OutputStreamObject> stream, std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
-    cls.add_method('EnableAsciiInternal', 
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv4::EnableAsciiIpv4Internal(ns3::Ptr<ns3::OutputStreamObject> stream, std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv4Internal', 
                    'void', 
                    [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3AsciiTraceUserHelperForIpv6_methods(root_module, cls):
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForIpv6::AsciiTraceUserHelperForIpv6() [constructor]
+    cls.add_constructor([])
+    ## ascii-trace-helper.h: ns3::AsciiTraceUserHelperForIpv6::AsciiTraceUserHelperForIpv6(ns3::AsciiTraceUserHelperForIpv6 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AsciiTraceUserHelperForIpv6 const &', 'arg0')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(std::string prefix, ns3::Ptr<ns3::Ipv6> ipv6, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv6 >', 'ipv6'), param('uint32_t', 'interface')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ptr<ns3::Ipv6> ipv6, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::Ptr< ns3::Ipv6 >', 'ipv6'), param('uint32_t', 'interface')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(std::string prefix, std::string ipv6Name, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('std::string', 'ipv6Name'), param('uint32_t', 'interface')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(ns3::Ptr<ns3::OutputStreamObject> stream, std::string ipv6Name, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('std::string', 'ipv6Name'), param('uint32_t', 'interface')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(std::string prefix, ns3::Ipv6InterfaceContainer c) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ipv6InterfaceContainer', 'c')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::Ipv6InterfaceContainer c) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::Ipv6InterfaceContainer', 'c')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(std::string prefix, ns3::NodeContainer n) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(ns3::Ptr<ns3::OutputStreamObject> stream, ns3::NodeContainer n) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('ns3::NodeContainer', 'n')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(std::string prefix, uint32_t nodeid, uint32_t deviceid) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6(ns3::Ptr<ns3::OutputStreamObject> stream, uint32_t nodeid, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv6', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('uint32_t', 'nodeid'), param('uint32_t', 'interface')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6All(std::string prefix) [member function]
+    cls.add_method('EnableAsciiIpv6All', 
+                   'void', 
+                   [param('std::string', 'prefix')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6All(ns3::Ptr<ns3::OutputStreamObject> stream) [member function]
+    cls.add_method('EnableAsciiIpv6All', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream')])
+    ## ascii-trace-helper.h: void ns3::AsciiTraceUserHelperForIpv6::EnableAsciiIpv6Internal(ns3::Ptr<ns3::OutputStreamObject> stream, std::string prefix, ns3::Ptr<ns3::Ipv6> ipv6, uint32_t interface) [member function]
+    cls.add_method('EnableAsciiIpv6Internal', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamObject >', 'stream'), param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv6 >', 'ipv6'), param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
 def register_Ns3AthstatsHelper_methods(root_module, cls):
     ## athstats-helper.h: ns3::AthstatsHelper::AthstatsHelper(ns3::AthstatsHelper const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::AthstatsHelper const &', 'arg0')])
@@ -839,6 +905,16 @@
     cls.add_method('Add', 
                    'void', 
                    [param('std::string', 'ipv6Name'), param('uint32_t', 'interface')])
+    ## ipv6-interface-container.h: __gnu_cxx::__normal_iterator<const std::pair<ns3::Ptr<ns3::Ipv6>, unsigned int>*,std::vector<std::pair<ns3::Ptr<ns3::Ipv6>, unsigned int>, std::allocator<std::pair<ns3::Ptr<ns3::Ipv6>, unsigned int> > > > ns3::Ipv6InterfaceContainer::Begin() const [member function]
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< std::pair< ns3::Ptr< ns3::Ipv6 >, unsigned int > const, std::vector< std::pair< ns3::Ptr< ns3::Ipv6 >, unsigned int > > >', 
+                   [], 
+                   is_const=True)
+    ## ipv6-interface-container.h: __gnu_cxx::__normal_iterator<const std::pair<ns3::Ptr<ns3::Ipv6>, unsigned int>*,std::vector<std::pair<ns3::Ptr<ns3::Ipv6>, unsigned int>, std::allocator<std::pair<ns3::Ptr<ns3::Ipv6>, unsigned int> > > > ns3::Ipv6InterfaceContainer::End() const [member function]
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< std::pair< ns3::Ptr< ns3::Ipv6 >, unsigned int > const, std::vector< std::pair< ns3::Ptr< ns3::Ipv6 >, unsigned int > > >', 
+                   [], 
+                   is_const=True)
     ## ipv6-interface-container.h: ns3::Ipv6Address ns3::Ipv6InterfaceContainer::GetAddress(uint32_t i, uint32_t j) const [member function]
     cls.add_method('GetAddress', 
                    'ns3::Ipv6Address', 
@@ -1263,42 +1339,42 @@
     cls.add_method('GetFilenameFromDevice', 
                    'std::string', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'device'), param('bool', 'useObjectNames', default_value='true')])
-    ## pcap-helper.h: std::string ns3::PcapHelper::GetFilenameFromInterfacePair(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface, bool useObjectNames=true) [member function]
+    ## pcap-helper.h: std::string ns3::PcapHelper::GetFilenameFromInterfacePair(std::string prefix, ns3::Ptr<ns3::Object> object, uint32_t interface, bool useObjectNames=true) [member function]
     cls.add_method('GetFilenameFromInterfacePair', 
                    'std::string', 
-                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface'), param('bool', 'useObjectNames', default_value='true')])
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Object >', 'object'), param('uint32_t', 'interface'), param('bool', 'useObjectNames', default_value='true')])
     return
 
 def register_Ns3PcapUserHelperForDevice_methods(root_module, cls):
-    ## pcap-user-helper-for-device.h: ns3::PcapUserHelperForDevice::PcapUserHelperForDevice() [constructor]
+    ## pcap-helper.h: ns3::PcapUserHelperForDevice::PcapUserHelperForDevice() [constructor]
     cls.add_constructor([])
-    ## pcap-user-helper-for-device.h: ns3::PcapUserHelperForDevice::PcapUserHelperForDevice(ns3::PcapUserHelperForDevice const & arg0) [copy constructor]
+    ## pcap-helper.h: ns3::PcapUserHelperForDevice::PcapUserHelperForDevice(ns3::PcapUserHelperForDevice const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::PcapUserHelperForDevice const &', 'arg0')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous=false) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous=false) [member function]
     cls.add_method('EnablePcap', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous', default_value='false')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, std::string ndName, bool promiscuous=false) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, std::string ndName, bool promiscuous=false) [member function]
     cls.add_method('EnablePcap', 
                    'void', 
                    [param('std::string', 'prefix'), param('std::string', 'ndName'), param('bool', 'promiscuous', default_value='false')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, ns3::NetDeviceContainer d, bool promiscuous=false) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, ns3::NetDeviceContainer d, bool promiscuous=false) [member function]
     cls.add_method('EnablePcap', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::NetDeviceContainer', 'd'), param('bool', 'promiscuous', default_value='false')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, ns3::NodeContainer n, bool promiscuous=false) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, ns3::NodeContainer n, bool promiscuous=false) [member function]
     cls.add_method('EnablePcap', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n'), param('bool', 'promiscuous', default_value='false')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, uint32_t nodeid, uint32_t deviceid, bool promiscuous=false) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcap(std::string prefix, uint32_t nodeid, uint32_t deviceid, bool promiscuous=false) [member function]
     cls.add_method('EnablePcap', 
                    'void', 
                    [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid'), param('bool', 'promiscuous', default_value='false')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcapAll(std::string prefix, bool promiscuous=false) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcapAll(std::string prefix, bool promiscuous=false) [member function]
     cls.add_method('EnablePcapAll', 
                    'void', 
                    [param('std::string', 'prefix'), param('bool', 'promiscuous', default_value='false')])
-    ## pcap-user-helper-for-device.h: void ns3::PcapUserHelperForDevice::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous) [member function]
+    ## pcap-helper.h: void ns3::PcapUserHelperForDevice::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous) [member function]
     cls.add_method('EnablePcapInternal', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous')], 
@@ -1306,41 +1382,77 @@
     return
 
 def register_Ns3PcapUserHelperForIpv4_methods(root_module, cls):
-    ## pcap-user-helper-for-ipv4.h: ns3::PcapUserHelperForIpv4::PcapUserHelperForIpv4() [constructor]
+    ## pcap-helper.h: ns3::PcapUserHelperForIpv4::PcapUserHelperForIpv4() [constructor]
     cls.add_constructor([])
-    ## pcap-user-helper-for-ipv4.h: ns3::PcapUserHelperForIpv4::PcapUserHelperForIpv4(ns3::PcapUserHelperForIpv4 const & arg0) [copy constructor]
+    ## pcap-helper.h: ns3::PcapUserHelperForIpv4::PcapUserHelperForIpv4(ns3::PcapUserHelperForIpv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::PcapUserHelperForIpv4 const &', 'arg0')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcap(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
-    cls.add_method('EnablePcap', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcap(std::string prefix, std::string ipv4Name, uint32_t interface) [member function]
-    cls.add_method('EnablePcap', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4(std::string prefix, std::string ipv4Name, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('std::string', 'ipv4Name'), param('uint32_t', 'interface')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcap(std::string prefix, ns3::Ipv4InterfaceContainer c) [member function]
-    cls.add_method('EnablePcap', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4(std::string prefix, ns3::Ipv4InterfaceContainer c) [member function]
+    cls.add_method('EnablePcapIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ipv4InterfaceContainer', 'c')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcap(std::string prefix, ns3::NodeContainer n) [member function]
-    cls.add_method('EnablePcap', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4(std::string prefix, ns3::NodeContainer n) [member function]
+    cls.add_method('EnablePcapIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcap(std::string prefix, uint32_t nodeid, uint32_t interface) [member function]
-    cls.add_method('EnablePcap', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4(std::string prefix, uint32_t nodeid, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv4', 
                    'void', 
                    [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'interface')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcapAll(std::string prefix) [member function]
-    cls.add_method('EnablePcapAll', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4All(std::string prefix) [member function]
+    cls.add_method('EnablePcapIpv4All', 
                    'void', 
                    [param('std::string', 'prefix')])
-    ## pcap-user-helper-for-ipv4.h: void ns3::PcapUserHelperForIpv4::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
-    cls.add_method('EnablePcapInternal', 
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv4::EnablePcapIpv4Internal(std::string prefix, ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv4Internal', 
                    'void', 
                    [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3PcapUserHelperForIpv6_methods(root_module, cls):
+    ## pcap-helper.h: ns3::PcapUserHelperForIpv6::PcapUserHelperForIpv6() [constructor]
+    cls.add_constructor([])
+    ## pcap-helper.h: ns3::PcapUserHelperForIpv6::PcapUserHelperForIpv6(ns3::PcapUserHelperForIpv6 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PcapUserHelperForIpv6 const &', 'arg0')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6(std::string prefix, ns3::Ptr<ns3::Ipv6> ipv6, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv6 >', 'ipv6'), param('uint32_t', 'interface')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6(std::string prefix, std::string ipv6Name, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('std::string', 'ipv6Name'), param('uint32_t', 'interface')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6(std::string prefix, ns3::Ipv6InterfaceContainer c) [member function]
+    cls.add_method('EnablePcapIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ipv6InterfaceContainer', 'c')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6(std::string prefix, ns3::NodeContainer n) [member function]
+    cls.add_method('EnablePcapIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6(std::string prefix, uint32_t nodeid, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv6', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'interface')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6All(std::string prefix) [member function]
+    cls.add_method('EnablePcapIpv6All', 
+                   'void', 
+                   [param('std::string', 'prefix')])
+    ## pcap-helper.h: void ns3::PcapUserHelperForIpv6::EnablePcapIpv6Internal(std::string prefix, ns3::Ptr<ns3::Ipv6> ipv6, uint32_t interface) [member function]
+    cls.add_method('EnablePcapIpv6Internal', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Ipv6 >', 'ipv6'), param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
 def register_Ns3Ping6Helper_methods(root_module, cls):
     ## ping6-helper.h: ns3::Ping6Helper::Ping6Helper(ns3::Ping6Helper const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ping6Helper const &', 'arg0')])
--- a/examples/routing/dynamic-global-routing.cc	Wed Jan 27 18:41:38 2010 -0800
+++ b/examples/routing/dynamic-global-routing.cc	Wed Jan 27 21:23:30 2010 -0800
@@ -194,7 +194,7 @@
   Ptr<OutputStreamObject> stream = ascii.CreateFileStream ("dynamic-global-routing.tr");
   p2p.EnableAsciiAll (stream);
   csma.EnableAsciiAll (stream);
-  internet.EnableAsciiAll (stream);
+  internet.EnableAsciiIpv4All (stream);
 
   p2p.EnablePcapAll ("dynamic-global-routing");
   csma.EnablePcapAll ("dynamic-global-routing", false);
--- a/examples/wireless/mixed-wireless.cc	Wed Jan 27 18:41:38 2010 -0800
+++ b/examples/wireless/mixed-wireless.cc	Wed Jan 27 21:23:30 2010 -0800
@@ -392,7 +392,7 @@
      Ptr<OutputStreamObject> stream = ascii.CreateFileStream ("mixed-wireless.tr");
      wifiPhy.EnableAsciiAll (stream);
      csma.EnableAsciiAll (stream);
-     internet.EnableAsciiAll (stream);
+     internet.EnableAsciiIpv4All (stream);
 
       // Let's do a pcap trace on the application source and sink, ifIndex 0
       // Csma captures in non-promiscuous mode
--- a/src/helper/ascii-trace-helper.cc	Wed Jan 27 18:41:38 2010 -0800
+++ b/src/helper/ascii-trace-helper.cc	Wed Jan 27 21:23:30 2010 -0800
@@ -134,28 +134,32 @@
 }
 
 std::string
-AsciiTraceHelper::GetFilenameFromInterfacePair (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface, bool useObjectNames)
+AsciiTraceHelper::GetFilenameFromInterfacePair (
+  std::string prefix, 
+  Ptr<Object> object, 
+  uint32_t interface, 
+  bool useObjectNames)
 {
-  NS_LOG_FUNCTION (prefix << ipv4 << interface << useObjectNames);
+  NS_LOG_FUNCTION (prefix << object << interface << useObjectNames);
   NS_ABORT_MSG_UNLESS (prefix.size (), "Empty prefix string");
 
   std::ostringstream oss;
   oss << prefix << "-";
 
-  std::string ipv4name;
+  std::string objname;
   std::string nodename;
 
-  Ptr<Node> node = ipv4->GetObject<Node> ();
+  Ptr<Node> node = object->GetObject<Node> ();
 
   if (useObjectNames)
     {
-      ipv4name = Names::FindName (ipv4);
+      objname = Names::FindName (object);
       nodename = Names::FindName (node);
     }
 
-  if (ipv4name.size ())
+  if (objname.size ())
     {
-      oss << ipv4name;
+      oss << objname;
     }
   else if (nodename.size ())
     {
@@ -456,80 +460,80 @@
 // Public API
 //
 void 
-AsciiTraceUserHelperForIpv4::EnableAscii (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4 (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface)
 {
-  EnableAsciiInternal (Ptr<OutputStreamObject> (), prefix, ipv4, interface);
+  EnableAsciiIpv4Internal (Ptr<OutputStreamObject> (), prefix, ipv4, interface);
 }
 
 //
 // Public API
 //
 void 
-AsciiTraceUserHelperForIpv4::EnableAscii (Ptr<OutputStreamObject> stream, Ptr<Ipv4> ipv4, uint32_t interface)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4 (Ptr<OutputStreamObject> stream, Ptr<Ipv4> ipv4, uint32_t interface)
 {
-  EnableAsciiInternal (stream, std::string (), ipv4, interface);
+  EnableAsciiIpv4Internal (stream, std::string (), ipv4, interface);
 }
 
 //
 // Public API
 //
 void 
-AsciiTraceUserHelperForIpv4::EnableAscii (std::string prefix, std::string ipv4Name, uint32_t interface)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4 (std::string prefix, std::string ipv4Name, uint32_t interface)
 {
-  EnableAsciiImpl (Ptr<OutputStreamObject> (), prefix, ipv4Name, interface);
+  EnableAsciiIpv4Impl (Ptr<OutputStreamObject> (), prefix, ipv4Name, interface);
 }
 
 //
 // Public API
 //
 void 
-AsciiTraceUserHelperForIpv4::EnableAscii (Ptr<OutputStreamObject> stream, std::string ipv4Name, uint32_t interface)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4 (Ptr<OutputStreamObject> stream, std::string ipv4Name, uint32_t interface)
 {
-  EnableAsciiImpl (stream, std::string (), ipv4Name, interface);
+  EnableAsciiIpv4Impl (stream, std::string (), ipv4Name, interface);
 }
 
 //
 // Private API
 //
 void 
-AsciiTraceUserHelperForIpv4::EnableAsciiImpl (
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4Impl (
   Ptr<OutputStreamObject> stream, 
   std::string prefix, 
   std::string ipv4Name, 
   uint32_t interface)
 {
   Ptr<Ipv4> ipv4 = Names::Find<Ipv4> (ipv4Name);
-  EnableAsciiInternal (stream, prefix, ipv4, interface);
+  EnableAsciiIpv4Internal (stream, prefix, ipv4, interface);
 }
 
 //
 // Public API
 //
 void 
-AsciiTraceUserHelperForIpv4::EnableAscii (std::string prefix, Ipv4InterfaceContainer c)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4 (std::string prefix, Ipv4InterfaceContainer c)
 {
-  EnableAsciiImpl (Ptr<OutputStreamObject> (), prefix, c);
+  EnableAsciiIpv4Impl (Ptr<OutputStreamObject> (), prefix, c);
 }
 
 //
 // Public API
 //
 void 
-AsciiTraceUserHelperForIpv4::EnableAscii (Ptr<OutputStreamObject> stream, Ipv4InterfaceContainer c)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4 (Ptr<OutputStreamObject> stream, Ipv4InterfaceContainer c)
 {
-  EnableAsciiImpl (stream, std::string (), c);
+  EnableAsciiIpv4Impl (stream, std::string (), c);
 }
 
 //
 // Private API
 //
 void 
-AsciiTraceUserHelperForIpv4::EnableAsciiImpl (Ptr<OutputStreamObject> stream, std::string prefix, Ipv4InterfaceContainer c)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4Impl (Ptr<OutputStreamObject> stream, std::string prefix, Ipv4InterfaceContainer c)
 {
   for (Ipv4InterfaceContainer::Iterator i = c.Begin (); i != c.End (); ++i)
     {
       std::pair<Ptr<Ipv4>, uint32_t> pair = *i;
-      EnableAsciiInternal (stream, prefix, pair.first, pair.second);
+      EnableAsciiIpv4Internal (stream, prefix, pair.first, pair.second);
     }
 }
 
@@ -537,25 +541,25 @@
 // Public API
 //
 void
-AsciiTraceUserHelperForIpv4::EnableAscii (std::string prefix, NodeContainer n)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4 (std::string prefix, NodeContainer n)
 {
-  EnableAsciiImpl (Ptr<OutputStreamObject> (), prefix, n);
+  EnableAsciiIpv4Impl (Ptr<OutputStreamObject> (), prefix, n);
 }
 
 //
 // Public API
 //
 void
-AsciiTraceUserHelperForIpv4::EnableAscii (Ptr<OutputStreamObject> stream, NodeContainer n)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4 (Ptr<OutputStreamObject> stream, NodeContainer n)
 {
-  EnableAsciiImpl (stream, std::string (), n);
+  EnableAsciiIpv4Impl (stream, std::string (), n);
 }
 
 //
 // Private API
 //
 void
-AsciiTraceUserHelperForIpv4::EnableAsciiImpl (Ptr<OutputStreamObject> stream, std::string prefix, NodeContainer n)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4Impl (Ptr<OutputStreamObject> stream, std::string prefix, NodeContainer n)
 {
   for (NodeContainer::Iterator i = n.Begin (); i != n.End (); ++i)
     {
@@ -565,7 +569,7 @@
         {
           for (uint32_t j = 0; j < ipv4->GetNInterfaces (); ++j)
             {
-              EnableAsciiInternal (stream, prefix, ipv4, j);
+              EnableAsciiIpv4Internal (stream, prefix, ipv4, j);
             }
         }
     }
@@ -575,43 +579,43 @@
 // Public API
 //
 void
-AsciiTraceUserHelperForIpv4::EnableAsciiAll (std::string prefix)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4All (std::string prefix)
 {
-  EnableAsciiImpl (Ptr<OutputStreamObject> (), prefix, NodeContainer::GetGlobal ());
+  EnableAsciiIpv4Impl (Ptr<OutputStreamObject> (), prefix, NodeContainer::GetGlobal ());
 }
 
 //
 // Public API
 //
 void
-AsciiTraceUserHelperForIpv4::EnableAsciiAll (Ptr<OutputStreamObject> stream)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4All (Ptr<OutputStreamObject> stream)
 {
-  EnableAsciiImpl (stream, std::string (), NodeContainer::GetGlobal ());
+  EnableAsciiIpv4Impl (stream, std::string (), NodeContainer::GetGlobal ());
 }
 
 //
 // Public API
 //
 void 
-AsciiTraceUserHelperForIpv4::EnableAscii (Ptr<OutputStreamObject> stream, uint32_t nodeid, uint32_t interface)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4 (Ptr<OutputStreamObject> stream, uint32_t nodeid, uint32_t interface)
 {
-  EnableAsciiImpl (stream, std::string (), nodeid, interface);
+  EnableAsciiIpv4Impl (stream, std::string (), nodeid, interface);
 }
 
 //
 // Public API
 //
 void 
-AsciiTraceUserHelperForIpv4::EnableAscii (std::string prefix, uint32_t nodeid, uint32_t interface)
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4 (std::string prefix, uint32_t nodeid, uint32_t interface)
 {
-  EnableAsciiImpl (Ptr<OutputStreamObject> (), prefix, nodeid, interface);
+  EnableAsciiIpv4Impl (Ptr<OutputStreamObject> (), prefix, nodeid, interface);
 }
 
 //
 // Private API
 //
 void 
-AsciiTraceUserHelperForIpv4::EnableAsciiImpl (
+AsciiTraceUserHelperForIpv4::EnableAsciiIpv4Impl (
   Ptr<OutputStreamObject> stream, 
   std::string prefix, 
   uint32_t nodeid, 
@@ -630,7 +634,192 @@
       Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> ();
       if (ipv4)
         {
-          EnableAsciiInternal (stream, prefix, ipv4, interface);
+          EnableAsciiIpv4Internal (stream, prefix, ipv4, interface);
+        }
+
+      return;
+    }
+}
+
+//
+// Public API
+//
+void 
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6 (std::string prefix, Ptr<Ipv6> ipv6, uint32_t interface)
+{
+  EnableAsciiIpv6Internal (Ptr<OutputStreamObject> (), prefix, ipv6, interface);
+}
+
+//
+// Public API
+//
+void 
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6 (Ptr<OutputStreamObject> stream, Ptr<Ipv6> ipv6, uint32_t interface)
+{
+  EnableAsciiIpv6Internal (stream, std::string (), ipv6, interface);
+}
+
+//
+// Public API
+//
+void 
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6 (std::string prefix, std::string ipv6Name, uint32_t interface)
+{
+  EnableAsciiIpv6Impl (Ptr<OutputStreamObject> (), prefix, ipv6Name, interface);
+}
+
+//
+// Public API
+//
+void 
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6 (Ptr<OutputStreamObject> stream, std::string ipv6Name, uint32_t interface)
+{
+  EnableAsciiIpv6Impl (stream, std::string (), ipv6Name, interface);
+}
+
+//
+// Private API
+//
+void 
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6Impl (
+  Ptr<OutputStreamObject> stream, 
+  std::string prefix, 
+  std::string ipv6Name, 
+  uint32_t interface)
+{
+  Ptr<Ipv6> ipv6 = Names::Find<Ipv6> (ipv6Name);
+  EnableAsciiIpv6Internal (stream, prefix, ipv6, interface);
+}
+
+//
+// Public API
+//
+void 
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6 (std::string prefix, Ipv6InterfaceContainer c)
+{
+  EnableAsciiIpv6Impl (Ptr<OutputStreamObject> (), prefix, c);
+}
+
+//
+// Public API
+//
+void 
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6 (Ptr<OutputStreamObject> stream, Ipv6InterfaceContainer c)
+{
+  EnableAsciiIpv6Impl (stream, std::string (), c);
+}
+
+//
+// Private API
+//
+void 
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6Impl (Ptr<OutputStreamObject> stream, std::string prefix, Ipv6InterfaceContainer c)
+{
+  for (Ipv6InterfaceContainer::Iterator i = c.Begin (); i != c.End (); ++i)
+    {
+      std::pair<Ptr<Ipv6>, uint32_t> pair = *i;
+      EnableAsciiIpv6Internal (stream, prefix, pair.first, pair.second);
+    }
+}
+
+//
+// Public API
+//
+void
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6 (std::string prefix, NodeContainer n)
+{
+  EnableAsciiIpv6Impl (Ptr<OutputStreamObject> (), prefix, n);
+}
+
+//
+// Public API
+//
+void
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6 (Ptr<OutputStreamObject> stream, NodeContainer n)
+{
+  EnableAsciiIpv6Impl (stream, std::string (), n);
+}
+
+//
+// Private API
+//
+void
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6Impl (Ptr<OutputStreamObject> stream, std::string prefix, NodeContainer n)
+{
+  for (NodeContainer::Iterator i = n.Begin (); i != n.End (); ++i)
+    {
+      Ptr<Node> node = *i;
+      Ptr<Ipv6> ipv6 = node->GetObject<Ipv6> ();
+      if (ipv6)
+        {
+          for (uint32_t j = 0; j < ipv6->GetNInterfaces (); ++j)
+            {
+              EnableAsciiIpv6Internal (stream, prefix, ipv6, j);
+            }
+        }
+    }
+}
+
+//
+// Public API
+//
+void
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6All (std::string prefix)
+{
+  EnableAsciiIpv6Impl (Ptr<OutputStreamObject> (), prefix, NodeContainer::GetGlobal ());
+}
+
+//
+// Public API
+//
+void
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6All (Ptr<OutputStreamObject> stream)
+{
+  EnableAsciiIpv6Impl (stream, std::string (), NodeContainer::GetGlobal ());
+}
+
+//
+// Public API
+//
+void 
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6 (Ptr<OutputStreamObject> stream, uint32_t nodeid, uint32_t interface)
+{
+  EnableAsciiIpv6Impl (stream, std::string (), nodeid, interface);
+}
+
+//
+// Public API
+//
+void 
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6 (std::string prefix, uint32_t nodeid, uint32_t interface)
+{
+  EnableAsciiIpv6Impl (Ptr<OutputStreamObject> (), prefix, nodeid, interface);
+}
+
+//
+// Private API
+//
+void 
+AsciiTraceUserHelperForIpv6::EnableAsciiIpv6Impl (
+  Ptr<OutputStreamObject> stream, 
+  std::string prefix, 
+  uint32_t nodeid, 
+  uint32_t interface)
+{
+  NodeContainer n = NodeContainer::GetGlobal ();
+
+  for (NodeContainer::Iterator i = n.Begin (); i != n.End (); ++i)
+    {
+      Ptr<Node> node = *i;
+      if (node->GetId () != nodeid) 
+        {
+          continue;
+        }
+
+      Ptr<Ipv6> ipv6 = node->GetObject<Ipv6> ();
+      if (ipv6)
+        {
+          EnableAsciiIpv6Internal (stream, prefix, ipv6, interface);
         }
 
       return;
--- a/src/helper/ascii-trace-helper.h	Wed Jan 27 18:41:38 2010 -0800
+++ b/src/helper/ascii-trace-helper.h	Wed Jan 27 21:23:30 2010 -0800
@@ -21,10 +21,12 @@
 
 #include "ns3/assert.h"
 #include "ns3/net-device-container.h"
+#include "ns3/ipv4.h"
 #include "ns3/ipv4-interface-container.h"
+#include "ns3/ipv6.h"
+#include "ns3/ipv6-interface-container.h"
 #include "ns3/node-container.h"
 #include "ns3/simulator.h"
-#include "ns3/ipv4.h"
 #include "ns3/output-stream-object.h"
 
 namespace ns3 {
@@ -59,7 +61,7 @@
    * @brief Let the ascii trace helper figure out a reasonable filename to use
    * for an ascii trace file associated with a node.
    */
-  std::string GetFilenameFromInterfacePair (std::string prefix, Ptr<Ipv4> ipv4, 
+  std::string GetFilenameFromInterfacePair (std::string prefix, Ptr<Object> object, 
                                             uint32_t interface, bool useObjectNames = true);
 
   /**
@@ -460,7 +462,7 @@
    * @param ipv4 Ptr<Ipv4> on which you want to enable tracing.
    * @param interface The interface on which you want to enable tracing.
    */
-  virtual void EnableAsciiInternal (Ptr<OutputStreamObject> stream, std::string prefix, 
+  virtual void EnableAsciiIpv4Internal (Ptr<OutputStreamObject> stream, std::string prefix, 
                                     Ptr<Ipv4> ipv4, uint32_t interface) = 0;
 
   /**
@@ -470,7 +472,7 @@
    * @param ipv4 Ptr<Ipv4> on which you want to enable tracing.
    * @param interface The interface on which you want to enable tracing.
    */
-  void EnableAscii (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface);
+  void EnableAsciiIpv4 (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface);
 
   /**
    * @brief Enable ascii trace output on the indicated Ipv4 and interface pair.
@@ -480,7 +482,7 @@
    * @param ipv4 Ptr<Ipv4> on which you want to enable tracing.
    * @param interface The interface on which you want to enable tracing.
    */
-  void EnableAscii (Ptr<OutputStreamObject> stream, Ptr<Ipv4> ipv4, uint32_t interface);
+  void EnableAsciiIpv4 (Ptr<OutputStreamObject> stream, Ptr<Ipv4> ipv4, uint32_t interface);
 
   /**
    * @brief Enable ascii trace output the indicated Ipv4 and interface pair
@@ -490,7 +492,7 @@
    * @param ipv4Name The name of the Ipv4 on which you want to enable tracing.
    * @param interface The interface on which you want to enable tracing.
    */
-  void EnableAscii (std::string prefix, std::string ipv4Name, uint32_t interface);
+  void EnableAsciiIpv4 (std::string prefix, std::string ipv4Name, uint32_t interface);
 
   /**
    * @brief Enable ascii trace output the indicated net device using a device 
@@ -501,7 +503,7 @@
    * @param ipv4Name The name of the Ipv4 on which you want to enable tracing.
    * @param interface The interface on which you want to enable tracing.
    */
-  void EnableAscii (Ptr<OutputStreamObject> stream, std::string ipv4Name, uint32_t interface);
+  void EnableAsciiIpv4 (Ptr<OutputStreamObject> stream, std::string ipv4Name, uint32_t interface);
 
   /**
    * @brief Enable ascii trace output on each Ipv4 and interface pair in the 
@@ -511,7 +513,7 @@
    * @param c Ipv4InterfaceContainer of Ipv4 and interface pairs on which to 
    *          enable tracing.
    */
-  void EnableAscii (std::string prefix, Ipv4InterfaceContainer c);
+  void EnableAsciiIpv4 (std::string prefix, Ipv4InterfaceContainer c);
 
   /**
    * @brief Enable ascii trace output on each device in the container which is
@@ -522,7 +524,7 @@
    * @param c Ipv4InterfaceContainer of Ipv4 and interface pairs on which to 
    *          enable tracing.
    */
-  void EnableAscii (Ptr<OutputStreamObject> stream, Ipv4InterfaceContainer c);
+  void EnableAsciiIpv4 (Ptr<OutputStreamObject> stream, Ipv4InterfaceContainer c);
 
   /**
    * @brief Enable ascii trace output on all Ipv4 and interface pairs existing
@@ -531,7 +533,7 @@
    * \param prefix Filename prefix to use for ascii files.
    * \param n container of nodes.
    */
-  void EnableAscii (std::string prefix, NodeContainer n);
+  void EnableAsciiIpv4 (std::string prefix, NodeContainer n);
 
   /**
    * @brief Enable ascii trace output on all Ipv4 and interface pairs existing
@@ -541,7 +543,7 @@
    *               when writing trace data.
    * \param n container of nodes.
    */
-  void EnableAscii (Ptr<OutputStreamObject> stream, NodeContainer n);
+  void EnableAsciiIpv4 (Ptr<OutputStreamObject> stream, NodeContainer n);
 
   /**
    * @brief Enable ascii trace output on all Ipv4 and interface pairs existing
@@ -549,7 +551,7 @@
    *
    * @param prefix Filename prefix to use for ascii files.
    */
-  void EnableAsciiAll (std::string prefix);
+  void EnableAsciiIpv4All (std::string prefix);
 
   /**
    * @brief Enable ascii trace output on each device (which is of the
@@ -558,7 +560,7 @@
    * @param stream An OutputStreamObject representing an existing file to use
    *               when writing trace data.
    */
-  void EnableAsciiAll (Ptr<OutputStreamObject> stream);
+  void EnableAsciiIpv4All (Ptr<OutputStreamObject> stream);
 
   /**
    * @brief Enable pcap output on the Ipv4 and interface pair specified by a 
@@ -572,7 +574,7 @@
    * @param interface The device identifier/index of the device on which to enable
    *               ascii tracing
    */
-  void EnableAscii (std::string prefix, uint32_t nodeid, uint32_t deviceid);
+  void EnableAsciiIpv4 (std::string prefix, uint32_t nodeid, uint32_t deviceid);
 
   /**
    * @brief Enable pcap output on the Ipv4 and interface pair specified by a 
@@ -586,33 +588,238 @@
    *               ascii tracing
    * @param interface The interface on which you want to enable tracing.
    */
-  void EnableAscii (Ptr<OutputStreamObject> stream, uint32_t nodeid, uint32_t interface);
+  void EnableAsciiIpv4 (Ptr<OutputStreamObject> stream, uint32_t nodeid, uint32_t interface);
 
 private:
   /**
    * @internal Avoid code duplication.
    */
-  void EnableAsciiImpl (Ptr<OutputStreamObject> stream, std::string prefix, uint32_t nodeid, uint32_t interface);
+  void EnableAsciiIpv4Impl (Ptr<OutputStreamObject> stream, std::string prefix, uint32_t nodeid, uint32_t interface);
 
   /**
    * @internal Avoid code duplication.
    */
-  void EnableAsciiImpl (Ptr<OutputStreamObject> stream, std::string prefix, NodeContainer n);
+  void EnableAsciiIpv4Impl (Ptr<OutputStreamObject> stream, std::string prefix, NodeContainer n);
+
+  /**
+   * @internal Avoid code duplication.
+   */
+  void EnableAsciiIpv4Impl (Ptr<OutputStreamObject> stream, std::string prefix, Ipv4InterfaceContainer c);
+
+  /**
+   * @internal Avoid code duplication.
+   */
+  void EnableAsciiIpv4Impl (Ptr<OutputStreamObject> stream, std::string prefix, std::string ipv4Name, uint32_t interface);
 
   /**
    * @internal Avoid code duplication.
    */
-  void EnableAsciiImpl (Ptr<OutputStreamObject> stream, std::string prefix, Ipv4InterfaceContainer c);
+  void EnableAsciiIpv4Impl (Ptr<OutputStreamObject> stream, std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface);
+
+};
+
+/**
+ * @brief Base class providing common ascii trace operations for helpers
+ * working with Ipv6 interfaces.
+ *
+ * There are two basic flavors of ascii tracing.  The first kind will case a
+ * trace file to be created for every traced device in the form 
+ * <file prefix>-<node number>-<device index>.tr just like the pcap trace 
+ * helpers would do.  Additionally, if the object name service is used to 
+ * define either the node or device, the name will be substituted in the 
+ * file name.  This form of ascii tracing does not include a context string
+ * and makes it easier to determine the source of the event.
+ *
+ * The second kind of tracing is more like ns-2 tracing in that there is
+ * one trace file into which all of the specified events of the specified
+ * devices are written.  This form of ascii tracing does include a context
+ * string and interleaves the trace hits from all of the devices into a 
+ * single file.
+ */
+class AsciiTraceUserHelperForIpv6
+{
+public:
+  /**
+   * @brief Enable ascii trace output on the indicated Ipv6 and interface pair.
+   * @internal
+   *
+   * The implementation is expected to use a provided Ptr<OutputStreamObject>
+   * if it is non-null.  If the OutputStreamObject is null, the implementation
+   * is expected to use a provided prefix to construct a new file name for
+   * each net device using the rules described in the class overview.
+   *
+   * If the prefix is provided, there will be one file per Ipv6 and interface pair
+   * created.  In this case, adding a trace context to the file would be pointless,
+   * so the helper implementation is expected to TraceConnectWithoutContext.
+   *
+   * If the output stream object is provided, there may be many different Ipv6 
+   * and interface pairs writing to a single file.  In this case, the trace 
+   * context could be important, so the helper implementation is expected to 
+   * TraceConnect.
+   *
+   * @param stream An OutputStreamObject representing an existing file to use
+   *               when writing trace data.
+   * @param prefix Filename prefix to use for ascii trace files.
+   * @param ipv6 Ptr<Ipv6> on which you want to enable tracing.
+   * @param interface The interface on which you want to enable tracing.
+   */
+  virtual void EnableAsciiIpv6Internal (Ptr<OutputStreamObject> stream, std::string prefix, 
+                                        Ptr<Ipv6> ipv6, uint32_t interface) = 0;
+
+  /**
+   * @brief Enable ascii trace output on the indicated Ipv6 and interface pair.
+   *
+   * @param prefix Filename prefix to use for ascii files.
+   * @param ipv6 Ptr<Ipv6> on which you want to enable tracing.
+   * @param interface The interface on which you want to enable tracing.
+   */
+  void EnableAsciiIpv6 (std::string prefix, 
+                        Ptr<Ipv6> ipv6, uint32_t interface);
+
+  /**
+   * @brief Enable ascii trace output on the indicated Ipv6 and interface pair.
+   *
+   * @param stream An OutputStreamObject representing an existing file to use
+   *               when writing trace data.
+   * @param ipv6 Ptr<Ipv6> on which you want to enable tracing.
+   * @param interface The interface on which you want to enable tracing.
+   */
+  void EnableAsciiIpv6 (Ptr<OutputStreamObject> stream, 
+                        Ptr<Ipv6> ipv6, uint32_t interface);
+
+  /**
+   * @brief Enable ascii trace output the indicated Ipv6 and interface pair
+   * using an Ipv6 previously named using the ns-3 object name service.
+   *
+   * @param filename filename prefix to use for ascii files.
+   * @param ipv6Name The name of the Ipv6 on which you want to enable tracing.
+   * @param interface The interface on which you want to enable tracing.
+   */
+  void EnableAsciiIpv6 (std::string prefix, 
+                        std::string ipv6Name, uint32_t interface);
+
+  /**
+   * @brief Enable ascii trace output the indicated net device using a device 
+   * previously named using the ns-3 object name service.
+   *
+   * @param stream An OutputStreamObject representing an existing file to use
+   *               when writing trace data.
+   * @param ipv6Name The name of the Ipv6 on which you want to enable tracing.
+   * @param interface The interface on which you want to enable tracing.
+   */
+  void EnableAsciiIpv6 (Ptr<OutputStreamObject> stream, 
+                        std::string ipv6Name, uint32_t interface);
+
+  /**
+   * @brief Enable ascii trace output on each Ipv6 and interface pair in the 
+   * container
+   *
+   * @param prefix Filename prefix to use for ascii files.
+   * @param c Ipv6InterfaceContainer of Ipv6 and interface pairs on which to 
+   *          enable tracing.
+   */
+  void EnableAsciiIpv6 (std::string prefix, Ipv6InterfaceContainer c);
+
+  /**
+   * @brief Enable ascii trace output on each device in the container which is
+   * of the appropriate type.
+   *
+   * @param stream An OutputStreamObject representing an existing file to use
+   *               when writing trace data.
+   * @param c Ipv6InterfaceContainer of Ipv6 and interface pairs on which to 
+   *          enable tracing.
+   */
+  void EnableAsciiIpv6 (Ptr<OutputStreamObject> stream, Ipv6InterfaceContainer c);
+
+  /**
+   * @brief Enable ascii trace output on all Ipv6 and interface pairs existing
+   * in the nodes provided in the container.
+   *
+   * \param prefix Filename prefix to use for ascii files.
+   * \param n container of nodes.
+   */
+  void EnableAsciiIpv6 (std::string prefix, NodeContainer n);
+
+  /**
+   * @brief Enable ascii trace output on all Ipv6 and interface pairs existing
+   * in the nodes provided in the container.
+   *
+   * @param stream An OutputStreamObject representing an existing file to use
+   *               when writing trace data.
+   * \param n container of nodes.
+   */
+  void EnableAsciiIpv6 (Ptr<OutputStreamObject> stream, NodeContainer n);
+
+  /**
+   * @brief Enable pcap output on the Ipv6 and interface pair specified by a 
+   * global node-id (of a previously created node) and interface.  Since there
+   * can be only one Ipv6 aggregated to a node, the node-id unambiguously 
+   * determines the Ipv6.
+   *
+   * @param prefix Filename prefix to use when creating ascii trace files
+   * @param nodeid The node identifier/number of the node on which to enable
+   *               ascii tracing
+   * @param interface The device identifier/index of the device on which to enable
+   *               ascii tracing
+   */
+  void EnableAsciiIpv6 (std::string prefix, uint32_t nodeid, uint32_t deviceid);
+
+  /**
+   * @brief Enable pcap output on the Ipv6 and interface pair specified by a 
+   * global node-id (of a previously created node) and interface.  Since there
+   * can be only one Ipv6 aggregated to a node, the node-id unambiguously 
+   * determines the Ipv6.
+   *
+   * @param stream An OutputStreamObject representing an existing file to use
+   *               when writing trace data.
+   * @param nodeid The node identifier/number of the node on which to enable
+   *               ascii tracing
+   * @param interface The interface on which you want to enable tracing.
+   */
+  void EnableAsciiIpv6 (Ptr<OutputStreamObject> stream, uint32_t nodeid, uint32_t interface);
+
+  /**
+   * @brief Enable ascii trace output on all Ipv6 and interface pairs existing
+   * in the set of all nodes created in the simulation.
+   *
+   * @param prefix Filename prefix to use for ascii files.
+   */
+  void EnableAsciiIpv6All (std::string prefix);
+
+  /**
+   * @brief Enable ascii trace output on each device (which is of the
+   * appropriate type) in the set of all nodes created in the simulation.
+   *
+   * @param stream An OutputStreamObject representing an existing file to use
+   *               when writing trace data.
+   */
+  void EnableAsciiIpv6All (Ptr<OutputStreamObject> stream);
+
+private:
+  /**
+   * @internal Avoid code duplication.
+   */
+  void EnableAsciiIpv6Impl (Ptr<OutputStreamObject> stream, std::string prefix, uint32_t nodeid, uint32_t interface);
 
   /**
    * @internal Avoid code duplication.
    */
-  void EnableAsciiImpl (Ptr<OutputStreamObject> stream, std::string prefix, std::string ipv4Name, uint32_t interface);
+  void EnableAsciiIpv6Impl (Ptr<OutputStreamObject> stream, std::string prefix, NodeContainer n);
 
   /**
    * @internal Avoid code duplication.
    */
-  void EnableAsciiImpl (Ptr<OutputStreamObject> stream, std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface);
+  void EnableAsciiIpv6Impl (Ptr<OutputStreamObject> stream, std::string prefix, Ipv6InterfaceContainer c);
+
+  /**
+   * @internal Avoid code duplication.
+   */
+  void EnableAsciiIpv6Impl (Ptr<OutputStreamObject> stream, std::string prefix, std::string ipv6Name, uint32_t interface);
+
+  /**
+   * @internal Avoid code duplication.
+   */
+  void EnableAsciiIpv6Impl (Ptr<OutputStreamObject> stream, std::string prefix, Ptr<Ipv6> ipv6, uint32_t interface);
 
 };
 
--- a/src/helper/internet-stack-helper.cc	Wed Jan 27 18:41:38 2010 -0800
+++ b/src/helper/internet-stack-helper.cc	Wed Jan 27 21:23:30 2010 -0800
@@ -191,10 +191,15 @@
 // destroyed; but must be cleaned up at the end of time to avoid leaks.  A 
 // global map of interface pairs to pcap file objects seems to fit the bill.
 //
-typedef std::pair<Ptr<Ipv4>, uint32_t> InterfacePair;
-typedef std::map<InterfacePair, Ptr<PcapFileObject> > InterfaceFileMap;
+typedef std::pair<Ptr<Ipv4>, uint32_t> InterfacePairIpv4;
+typedef std::map<InterfacePairIpv4, Ptr<PcapFileObject> > InterfaceFileMapIpv4;
+
+static InterfaceFileMapIpv4 g_interfaceFileMapIpv4;
 
-static InterfaceFileMap g_interfaceFileMap;
+typedef std::pair<Ptr<Ipv6>, uint32_t> InterfacePairIpv6;
+typedef std::map<InterfacePairIpv6, Ptr<PcapFileObject> > InterfaceFileMapIpv6;
+
+static InterfaceFileMapIpv6 g_interfaceFileMapIpv6;
 
 InternetStackHelper::InternetStackHelper ()
   : m_routing (0),
@@ -383,27 +388,27 @@
 {
   NS_LOG_FUNCTION (p << ipv4 << interface);
 
-  InterfacePair pair = std::make_pair (ipv4, interface);
+  InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
 
-  if (g_interfaceFileMap.find (pair) == g_interfaceFileMap.end ())
+  if (g_interfaceFileMapIpv4.find (pair) == g_interfaceFileMapIpv4.end ())
     {
       NS_LOG_INFO ("Ignoring packet to/from interface " << interface);
       return;
     }
 
-  Ptr<PcapFileObject> file = g_interfaceFileMap[pair];
+  Ptr<PcapFileObject> file = g_interfaceFileMapIpv4[pair];
   file->Write(Simulator::Now(), p);
 }
 
 void 
-InternetStackHelper::EnablePcapInternal (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface)
+InternetStackHelper::EnablePcapIpv4Internal (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface)
 {
   NS_LOG_FUNCTION (prefix << ipv4 << interface);
 
   PcapHelper pcapHelper;
   std::string filename = pcapHelper.GetFilenameFromInterfacePair (prefix, ipv4, interface);
   Ptr<PcapFileObject> file = pcapHelper.CreateFile (filename, "w", PcapHelper::DLT_RAW);
-  g_interfaceFileMap[std::make_pair (ipv4, interface)] = file;
+  g_interfaceFileMapIpv4[std::make_pair (ipv4, interface)] = file;
 
   if (m_ipv4Enabled)
     {
@@ -412,14 +417,63 @@
       // node so we can get to Ipv4L3Protocol through Ipv4.
       //
       Ptr<Ipv4L3Protocol> ipv4L3Protocol = ipv4->GetObject<Ipv4L3Protocol> ();
-      NS_ASSERT_MSG (ipv4L3Protocol, "InternetStackHelper::EnablePcapInternal(): "
+      NS_ASSERT_MSG (ipv4L3Protocol, "InternetStackHelper::EnablePcapIpv4Internal(): "
                      "m_ipv4Enabled and ipv4L3Protocol inconsistent");
 
       bool result = ipv4L3Protocol->TraceConnectWithoutContext ("Tx", MakeCallback (&Ipv4L3ProtocolRxTxSink));
-      NS_ASSERT_MSG (result == true, "InternetStackHelper::EnablePcapInternal():  Unable to connect ipv4L3Protocol \"Tx\"");
+      NS_ASSERT_MSG (result == true, "InternetStackHelper::EnablePcapIpv4Internal():  "
+                     "Unable to connect ipv4L3Protocol \"Tx\"");
 
       result = ipv4L3Protocol->TraceConnectWithoutContext ("Rx", MakeCallback (&Ipv4L3ProtocolRxTxSink));
-      NS_ASSERT_MSG (result == true, "InternetStackHelper::EnablePcapInternal():  Unable to connect ipv4L3Protocol \"Rx\"");
+      NS_ASSERT_MSG (result == true, "InternetStackHelper::EnablePcapIpv4Internal():  "
+                     "Unable to connect ipv4L3Protocol \"Rx\"");
+    }
+}
+
+static void
+Ipv6L3ProtocolRxTxSink (Ptr<const Packet> p, Ptr<Ipv6> ipv6, uint32_t interface)
+{
+  NS_LOG_FUNCTION (p << ipv6 << interface);
+
+  InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
+
+  if (g_interfaceFileMapIpv6.find (pair) == g_interfaceFileMapIpv6.end ())
+    {
+      NS_LOG_INFO ("Ignoring packet to/from interface " << interface);
+      return;
+    }
+
+  Ptr<PcapFileObject> file = g_interfaceFileMapIpv6[pair];
+  file->Write(Simulator::Now(), p);
+}
+
+void 
+InternetStackHelper::EnablePcapIpv6Internal (std::string prefix, Ptr<Ipv6> ipv6, uint32_t interface)
+{
+  NS_LOG_FUNCTION (prefix << ipv6 << interface);
+
+  PcapHelper pcapHelper;
+  std::string filename = pcapHelper.GetFilenameFromInterfacePair (prefix, ipv6, interface);
+  Ptr<PcapFileObject> file = pcapHelper.CreateFile (filename, "w", PcapHelper::DLT_RAW);
+  g_interfaceFileMapIpv6[std::make_pair (ipv6, interface)] = file;
+
+  if (m_ipv6Enabled)
+    {
+      //
+      // Ptr<Ipv6> is aggregated to node and Ipv6L3Protocol is aggregated to 
+      // node so we can get to Ipv6L3Protocol through Ipv6.
+      //
+      Ptr<Ipv6L3Protocol> ipv6L3Protocol = ipv6->GetObject<Ipv6L3Protocol> ();
+      NS_ASSERT_MSG (ipv6L3Protocol, "InternetStackHelper::EnablePcapIpv6Internal(): "
+                     "m_ipv6Enabled and ipv6L3Protocol inconsistent");
+
+      bool result = ipv6L3Protocol->TraceConnectWithoutContext ("Tx", MakeCallback (&Ipv6L3ProtocolRxTxSink));
+      NS_ASSERT_MSG (result == true, "InternetStackHelper::EnablePcapIpv6Internal():  "
+                     "Unable to connect ipv6L3Protocol \"Tx\"");
+
+      result = ipv6L3Protocol->TraceConnectWithoutContext ("Rx", MakeCallback (&Ipv6L3ProtocolRxTxSink));
+      NS_ASSERT_MSG (result == true, "InternetStackHelper::EnablePcapIpv6Internal():  "
+                     "Unable to connect ipv6L3Protocol \"Rx\"");
     }
 }
 
@@ -451,12 +505,18 @@
 }
 
 void 
-InternetStackHelper::EnableAsciiInternal (
+InternetStackHelper::EnableAsciiIpv4Internal (
   Ptr<OutputStreamObject> stream, 
   std::string prefix, 
   Ptr<Ipv4> ipv4, 
   uint32_t interface)
 {
+  if (!m_ipv4Enabled)
+    {
+      NS_LOG_INFO ("Call to enable Ipv4 ascii tracing but Ipv4 not enabled");
+      return;
+    }
+
   //
   // Our trace sinks are going to use packet printing, so we have to 
   // make sure that is turned on.
@@ -497,7 +557,8 @@
       Ptr<Ipv4L3Protocol> ipv4L3Protocol = ipv4->GetObject<Ipv4L3Protocol> ();
       bool result = ipv4L3Protocol->TraceConnectWithoutContext ("Drop", 
         MakeBoundCallback (&Ipv4L3ProtocolDropSinkWithoutContext, theStream));
-      NS_ASSERT_MSG (result == true, "InternetStackHelper::EnableAsciiInternal():  Unable to connect ipv4L3Protocol \"Drop\"");
+      NS_ASSERT_MSG (result == true, "InternetStackHelper::EnableAsciiIpv4Internal():  "
+                     "Unable to connect ipv4L3Protocol \"Drop\"");
       return;
     }
 
@@ -523,37 +584,95 @@
   Config::Connect (oss.str (), MakeBoundCallback (&Ipv4L3ProtocolDropSinkWithContext, stream));
 }
 
-#if 0
-void
-InternetStackHelper::EnableAscii (std::ostream &os, NodeContainer n)
+static void
+Ipv6L3ProtocolDropSinkWithoutContext (
+  Ptr<OutputStreamObject> stream,
+  Ipv6Header const &header, 
+  Ptr<const Packet> packet,
+  Ipv6L3Protocol::DropReason reason, 
+  uint32_t interface)
 {
-  Ptr<AsciiWriter> writer = AsciiWriter::Get (os);
-  Packet::EnablePrinting ();
-  std::ostringstream oss;
-  for (NodeContainer::Iterator i = n.Begin (); i != n.End (); ++i)
-    {
-      Ptr<Node> node = *i;
-      oss << "/NodeList/" << node->GetId () << "/$ns3::Ipv4L3Protocol/Drop";
-      Config::Connect (oss.str (), MakeBoundCallback (&InternetStackHelper::AsciiDropEventIpv4, writer));
-      oss.str ("");
-      oss << "/NodeList/" << node->GetId () << "/$ns3::ArpL3Protocol/Drop";
-      Config::Connect (oss.str (), MakeBoundCallback (&InternetStackHelper::AsciiDropEventArp, writer));
-      oss.str ("");
-      oss << "/NodeList/" << node->GetId () << "/$ns3::Ipv6L3Protocol/Drop";
-      Config::Connect (oss.str (), MakeBoundCallback (&InternetStackHelper::AsciiDropEventIpv6, writer));
-      oss.str ("");
-    }
+  Ptr<Packet> p = packet->Copy ();
+  p->AddHeader (header);
+  *stream->GetStream () << "d " << Simulator::Now ().GetSeconds () << " " << *p << std::endl;
 }
 
-void
-InternetStackHelper::AsciiDropEventIpv6 (Ptr<AsciiWriter> writer, std::string path,
-                                         Ipv6Header const &header, Ptr<const Packet> packet,
-                                         Ipv6L3Protocol::DropReason reason, uint32_t interface)
+static void
+Ipv6L3ProtocolDropSinkWithContext (
+  Ptr<OutputStreamObject> stream,
+  std::string context,
+  Ipv6Header const &header, 
+  Ptr<const Packet> packet,
+  Ipv6L3Protocol::DropReason reason, 
+  uint32_t interface)
 {
   Ptr<Packet> p = packet->Copy ();
   p->AddHeader (header);
-  writer->WritePacket (AsciiWriter::DROP, path, p);
+  *stream->GetStream () << "d " << Simulator::Now ().GetSeconds () << " " << context << " " << *p << std::endl;
 }
-#endif
+
+void 
+InternetStackHelper::EnableAsciiIpv6Internal (
+  Ptr<OutputStreamObject> stream, 
+  std::string prefix, 
+  Ptr<Ipv6> ipv6, 
+  uint32_t interface)
+{
+  if (!m_ipv6Enabled)
+    {
+      NS_LOG_INFO ("Call to enable Ipv6 ascii tracing but Ipv6 not enabled");
+      return;
+    }
+
+  //
+  // Our trace sinks are going to use packet printing, so we have to 
+  // make sure that is turned on.
+  //
+  Packet::EnablePrinting ();
+
+  //
+  // If we are not provided an OutputStreamObject, we are expected to create 
+  // one using the usual trace filename conventions and do a Hook*WithoutContext
+  // since there will be one file per context and therefore the context would
+  // be redundant.
+  //
+  if (stream == 0)
+    {
+      //
+      // Set up an output stream object to deal with private ofstream copy 
+      // constructor and lifetime issues.  Let the helper decide the actual
+      // name of the file given the prefix.
+      //
+      AsciiTraceHelper asciiTraceHelper;
+      std::string filename = asciiTraceHelper.GetFilenameFromInterfacePair (prefix, ipv6, interface);
+      Ptr<OutputStreamObject> theStream = asciiTraceHelper.CreateFileStream (filename, "w");
+
+      //
+      // The drop sink for the Ipv6L3Protocol uses a different signature than
+      // the default sink, so we have to cook one up for ourselves.  We can get
+      // to the Ptr<Ipv6L3Protocol> through our Ptr<Ipv6> since they must both 
+      // be aggregated to the same node.
+      //
+      Ptr<Ipv6L3Protocol> ipv6L3Protocol = ipv6->GetObject<Ipv6L3Protocol> ();
+      bool result = ipv6L3Protocol->TraceConnectWithoutContext ("Drop", 
+        MakeBoundCallback (&Ipv6L3ProtocolDropSinkWithoutContext, theStream));
+      NS_ASSERT_MSG (result == true, "InternetStackHelper::EnableAsciiIpv6Internal():  "
+                     "Unable to connect ipv6L3Protocol \"Drop\"");
+      return;
+    }
+
+  //
+  // If we are provided an OutputStreamObject, we are expected to use it, and
+  // to providd a context.  We are free to come up with our own context if we
+  // want, and use the AsciiTraceHelper Hook*WithContext functions, but for 
+  // compatibility and simplicity, we just use Config::Connect and let it deal
+  // with the context.
+  //
+  Ptr<Node> node = ipv6->GetObject<Node> ();
+  std::ostringstream oss;
+
+  oss << "/NodeList/" << node->GetId () << "/$ns3::Ipv6L3Protocol/Drop";
+  Config::Connect (oss.str (), MakeBoundCallback (&Ipv6L3ProtocolDropSinkWithContext, stream));
+}
 
 } // namespace ns3
--- a/src/helper/internet-stack-helper.h	Wed Jan 27 18:41:38 2010 -0800
+++ b/src/helper/internet-stack-helper.h	Wed Jan 27 21:23:30 2010 -0800
@@ -53,11 +53,12 @@
  * encapsulates a general attribute or a set of functionality that
  * may be of interest to many other classes.
  * 
- * Since the mixins below are self-contained and are explicitly 
- * designed to avoid naming conflicts through explicit resolution,
- * multiple inheritance problems are avoided.
+ * Since the mixins below are completely self-contained and are explicitly 
+ * designed to avoid naming conflicts through explicit resolution, multiple
+ * inheritance problems are avoided.
  */
-class InternetStackHelper : public PcapUserHelperForIpv4, public AsciiTraceUserHelperForIpv4
+  class InternetStackHelper : public PcapUserHelperForIpv4, public AsciiTraceUserHelperForIpv4,
+                              public PcapUserHelperForIpv6, public AsciiTraceUserHelperForIpv6
 {
 public:
   /**
@@ -182,7 +183,8 @@
    * @param ipv4 Ptr to the Ipv4 interface on which you want to enable tracing.
    * @param interface Interface ID on the Ipv4 on which you want to enable tracing.
    */
-  virtual void EnablePcapInternal (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface);
+  virtual void EnablePcapIpv4Internal (std::string prefix, 
+                                       Ptr<Ipv4> ipv4, uint32_t interface);
 
   /**
    * @brief Enable ascii trace output on the indicated Ipv4 and interface pair.
@@ -194,7 +196,32 @@
    * @param ipv4 Ptr to the Ipv4 interface on which you want to enable tracing.
    * @param interface Interface ID on the Ipv4 on which you want to enable tracing.
    */
-  virtual void EnableAsciiInternal (Ptr<OutputStreamObject> stream, std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface);
+  virtual void EnableAsciiIpv4Internal (Ptr<OutputStreamObject> stream, std::string prefix, 
+                                        Ptr<Ipv4> ipv4, uint32_t interface);
+
+  /**
+   * @brief Enable pcap output the indicated Ipv4 and interface pair.
+   * @internal
+   *
+   * @param prefix Filename prefix to use for pcap files.
+   * @param ipv4 Ptr to the Ipv4 interface on which you want to enable tracing.
+   * @param interface Interface ID on the Ipv4 on which you want to enable tracing.
+   */
+  virtual void EnablePcapIpv6Internal (std::string prefix, 
+                                       Ptr<Ipv6> ipv6, uint32_t interface);
+
+  /**
+   * @brief Enable ascii trace output on the indicated Ipv4 and interface pair.
+   * @internal
+   *
+   * @param stream An OutputStreamObject representing an existing file to use
+   *               when writing trace data.
+   * @param prefix Filename prefix to use for ascii trace files.
+   * @param ipv4 Ptr to the Ipv4 interface on which you want to enable tracing.
+   * @param interface Interface ID on the Ipv4 on which you want to enable tracing.
+   */
+  virtual void EnableAsciiIpv6Internal (Ptr<OutputStreamObject> stream, std::string prefix, 
+                                        Ptr<Ipv6> ipv6, uint32_t interface);
 
   void Initialize (void);
   ObjectFactory m_tcpFactory;
@@ -216,56 +243,6 @@
    */
   static void Cleanup (void);
 
-#if 0
-  /**
-   * \internal
-   */
-  static void LogRxIp (std::string context, Ptr<const Packet> packet, uint32_t deviceId);
-
-  /**
-   * \internal
-   */
-  static void LogTxIp (std::string context, Ptr<const Packet> packet, uint32_t deviceId);
-
-  /**
-   * \internal
-   */
-  static Ptr<PcapWriter> GetStream (uint32_t nodeId, uint32_t interfaceId);
-
-  struct Trace {
-    uint32_t nodeId;
-    uint32_t interfaceId;
-    Ptr<PcapWriter> writer;
-  };
-
-  /**
-   * \internal
-   */
-  static void AsciiDropEventIpv4 (Ptr<AsciiWriter> writer, std::string path,
-                                  Ipv4Header const &header, Ptr<const Packet> packet,
-                                  Ipv4L3Protocol::DropReason reason, uint32_t interface);
-  /**
-   * \internal
-   */
-  static void AsciiDropEventArp (Ptr<AsciiWriter> writer, std::string path, Ptr<const Packet> packet);
-
-  /**
-   * \internal
-   */
-  static void AsciiDropEventIpv6 (Ptr<AsciiWriter> writer, std::string path,
-                                  Ipv6Header const &header, Ptr<const Packet> packet,
-                                  Ipv6L3Protocol::DropReason reason, uint32_t interface);
-
-  static std::string m_pcapBaseFilename;
-
-  /**
-   * \internal
-   */
-  static uint32_t GetNodeIndex (std::string context);
-
-  static std::vector<Trace> m_traces;
-#endif
-
   /**
    * \brief IPv4 install state (enabled/disabled) ?
    */
--- a/src/helper/ipv6-interface-container.cc	Wed Jan 27 18:41:38 2010 -0800
+++ b/src/helper/ipv6-interface-container.cc	Wed Jan 27 21:23:30 2010 -0800
@@ -31,6 +31,18 @@
 {
 }
 
+Ipv6InterfaceContainer::Iterator 
+Ipv6InterfaceContainer::Begin (void) const
+{
+  return m_interfaces.begin ();
+}
+
+Ipv6InterfaceContainer::Iterator 
+Ipv6InterfaceContainer::End (void) const
+{
+  return m_interfaces.end ();
+}
+
 uint32_t Ipv6InterfaceContainer::GetN () const
 {
   return m_interfaces.size ();
--- a/src/helper/ipv6-interface-container.h	Wed Jan 27 18:41:38 2010 -0800
+++ b/src/helper/ipv6-interface-container.h	Wed Jan 27 21:23:30 2010 -0800
@@ -38,14 +38,30 @@
 class Ipv6InterfaceContainer
 {
 public:
+  typedef std::vector<std::pair<Ptr<Ipv6>, uint32_t> >::const_iterator Iterator;
   /**
    * \brief Constructor.
    */
   Ipv6InterfaceContainer ();
 
   /**
-   * \brief Get the number of interfaces.
-   * \return the number of interfaces stored in this Ipv6InterfaceContainer.
+   * \returns the number of Ptr<Ipv6> and interface pairs stored in this 
+   * Ipv4InterfaceContainer.
+   *
+   * Pairs can be retrieved from the container in two ways.  First,
+   * directly by an index into the container, and second, using an iterator.
+   * This method is used in the direct method and is typically used to
+   * define an ending condition in a for-loop that runs through the stored
+   * Nodes
+   *
+   * \code
+   *   uint32_t nNodes = container.GetN ();
+   *   for (uint32_t i = 0 i < nNodes; ++i)
+   *     {
+   *       std::pair<Ptr<Ipv6>, uint32_t> pair = container.Get (i);
+   *       method (pair.first, pair.second);  // use the pair
+   *     }
+   * \endcode
    */
   uint32_t GetN (void) const;
 
@@ -72,6 +88,50 @@
   void Add (Ptr<Ipv6> ipv6, uint32_t interface);
 
   /**
+   * \brief Get an iterator which refers to the first pair in the 
+   * container.
+   *
+   * Pairs can be retrieved from the container in two ways.  First,
+   * directly by an index into the container, and second, using an iterator.
+   * This method is used in the iterator method and is typically used in a 
+   * for-loop to run through the pairs
+   *
+   * \code
+   *   Ipv4InterfaceContainer::Iterator i;
+   *   for (i = container.Begin (); i != container.End (); ++i)
+   *     {
+   *       std::pair<Ptr<Ipv6>, uint32_t> pair = *i;
+   *       method (pair.first, pair.second);  // use the pair
+   *     }
+   * \endcode
+   *
+   * \returns an iterator which refers to the first pair in the container.
+   */
+  Iterator Begin (void) const;
+
+  /**
+   * \brief Get an iterator which indicates past-the-last Node in the 
+   * container.
+   *
+   * Nodes can be retrieved from the container in two ways.  First,
+   * directly by an index into the container, and second, using an iterator.
+   * This method is used in the iterator method and is typically used in a 
+   * for-loop to run through the Nodes
+   *
+   * \code
+   *   NodeContainer::Iterator i;
+   *   for (i = container.Begin (); i != container.End (); ++i)
+   *     {
+   *       std::pair<Ptr<Ipv6>, uint32_t> pair = *i;
+   *       method (pair.first, pair.second);  // use the pair
+   *     }
+   * \endcode
+   *
+   * \returns an iterator which indicates an ending condition for a loop.
+   */
+  Iterator End (void) const;
+
+  /**
    * \brief Fusion with another Ipv6InterfaceContainer.
    * \param c container
    */
--- a/src/helper/pcap-helper.cc	Wed Jan 27 18:41:38 2010 -0800
+++ b/src/helper/pcap-helper.cc	Wed Jan 27 21:23:30 2010 -0800
@@ -122,28 +122,28 @@
 }
 
 std::string
-PcapHelper::GetFilenameFromInterfacePair (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface, bool useObjectNames)
+PcapHelper::GetFilenameFromInterfacePair (std::string prefix, Ptr<Object> object, uint32_t interface, bool useObjectNames)
 {
-  NS_LOG_FUNCTION (prefix << ipv4 << interface << useObjectNames);
+  NS_LOG_FUNCTION (prefix << object << interface << useObjectNames);
   NS_ABORT_MSG_UNLESS (prefix.size (), "Empty prefix string");
 
   std::ostringstream oss;
   oss << prefix << "-";
 
-  std::string ipv4name;
+  std::string objname;
   std::string nodename;
 
-  Ptr<Node> node = ipv4->GetObject<Node> ();
+  Ptr<Node> node = object->GetObject<Node> ();
 
   if (useObjectNames)
     {
-      ipv4name = Names::FindName (ipv4);
+      objname = Names::FindName (object);
       nodename = Names::FindName (node);
     }
 
-  if (ipv4name.size ())
+  if (objname.size ())
     {
-      oss << ipv4name;
+      oss << objname;
     }
   else if (nodename.size ())
     {
@@ -236,30 +236,30 @@
 }
 
 void 
-PcapUserHelperForIpv4::EnablePcap (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface)
+PcapUserHelperForIpv4::EnablePcapIpv4 (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface)
 {
-  EnablePcapInternal (prefix, ipv4, interface);
+  EnablePcapIpv4Internal (prefix, ipv4, interface);
 }
 
 void 
-PcapUserHelperForIpv4::EnablePcap (std::string prefix, std::string ipv4Name, uint32_t interface)
+PcapUserHelperForIpv4::EnablePcapIpv4 (std::string prefix, std::string ipv4Name, uint32_t interface)
 {
   Ptr<Ipv4> ipv4 = Names::Find<Ipv4> (ipv4Name);
-  EnablePcap (prefix, ipv4, interface);
+  EnablePcapIpv4 (prefix, ipv4, interface);
 }
 
 void 
-PcapUserHelperForIpv4::EnablePcap (std::string prefix, Ipv4InterfaceContainer c)
+PcapUserHelperForIpv4::EnablePcapIpv4 (std::string prefix, Ipv4InterfaceContainer c)
 {
   for (Ipv4InterfaceContainer::Iterator i = c.Begin (); i != c.End (); ++i)
     {
       std::pair<Ptr<Ipv4>, uint32_t> pair = *i;
-      EnablePcap (prefix, pair.first, pair.second);
+      EnablePcapIpv4 (prefix, pair.first, pair.second);
     }
 }
 
 void
-PcapUserHelperForIpv4::EnablePcap (std::string prefix, NodeContainer n)
+PcapUserHelperForIpv4::EnablePcapIpv4 (std::string prefix, NodeContainer n)
 {
   for (NodeContainer::Iterator i = n.Begin (); i != n.End (); ++i)
     {
@@ -269,20 +269,20 @@
         {
           for (uint32_t j = 0; j < ipv4->GetNInterfaces (); ++j)
             {
-              EnablePcap (prefix, ipv4, j);
+              EnablePcapIpv4 (prefix, ipv4, j);
             }
         }
     }
 }
 
 void
-PcapUserHelperForIpv4::EnablePcapAll (std::string prefix)
+PcapUserHelperForIpv4::EnablePcapIpv4All (std::string prefix)
 {
-  EnablePcap (prefix, NodeContainer::GetGlobal ());
+  EnablePcapIpv4 (prefix, NodeContainer::GetGlobal ());
 }
 
 void 
-PcapUserHelperForIpv4::EnablePcap (std::string prefix, uint32_t nodeid, uint32_t interface)
+PcapUserHelperForIpv4::EnablePcapIpv4 (std::string prefix, uint32_t nodeid, uint32_t interface)
 {
   NodeContainer n = NodeContainer::GetGlobal ();
 
@@ -297,7 +297,75 @@
       Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> ();
       if (ipv4)
         {
-          EnablePcap (prefix, ipv4, interface);
+          EnablePcapIpv4 (prefix, ipv4, interface);
+        }
+      return;
+    }
+}
+
+void 
+PcapUserHelperForIpv6::EnablePcapIpv6 (std::string prefix, Ptr<Ipv6> ipv6, uint32_t interface)
+{
+  EnablePcapIpv6Internal (prefix, ipv6, interface);
+}
+
+void 
+PcapUserHelperForIpv6::EnablePcapIpv6 (std::string prefix, std::string ipv6Name, uint32_t interface)
+{
+  Ptr<Ipv6> ipv6 = Names::Find<Ipv6> (ipv6Name);
+  EnablePcapIpv6 (prefix, ipv6, interface);
+}
+
+void 
+PcapUserHelperForIpv6::EnablePcapIpv6 (std::string prefix, Ipv6InterfaceContainer c)
+{
+  for (Ipv6InterfaceContainer::Iterator i = c.Begin (); i != c.End (); ++i)
+    {
+      std::pair<Ptr<Ipv6>, uint32_t> pair = *i;
+      EnablePcapIpv6 (prefix, pair.first, pair.second);
+    }
+}
+
+void
+PcapUserHelperForIpv6::EnablePcapIpv6 (std::string prefix, NodeContainer n)
+{
+  for (NodeContainer::Iterator i = n.Begin (); i != n.End (); ++i)
+    {
+      Ptr<Node> node = *i;
+      Ptr<Ipv6> ipv6 = node->GetObject<Ipv6> ();
+      if (ipv6)
+        {
+          for (uint32_t j = 0; j < ipv6->GetNInterfaces (); ++j)
+            {
+              EnablePcapIpv6 (prefix, ipv6, j);
+            }
+        }
+    }
+}
+
+void
+PcapUserHelperForIpv6::EnablePcapIpv6All (std::string prefix)
+{
+  EnablePcapIpv6 (prefix, NodeContainer::GetGlobal ());
+}
+
+void 
+PcapUserHelperForIpv6::EnablePcapIpv6 (std::string prefix, uint32_t nodeid, uint32_t interface)
+{
+  NodeContainer n = NodeContainer::GetGlobal ();
+
+  for (NodeContainer::Iterator i = n.Begin (); i != n.End (); ++i)
+    {
+      Ptr<Node> node = *i;
+      if (node->GetId () != nodeid) 
+        {
+          continue;
+        }
+      
+      Ptr<Ipv6> ipv6 = node->GetObject<Ipv6> ();
+      if (ipv6)
+        {
+          EnablePcapIpv6 (prefix, ipv6, interface);
         }
       return;
     }
--- a/src/helper/pcap-helper.h	Wed Jan 27 18:41:38 2010 -0800
+++ b/src/helper/pcap-helper.h	Wed Jan 27 21:23:30 2010 -0800
@@ -22,10 +22,12 @@
 #include "ns3/assert.h"
 #include "ns3/net-device-container.h"
 #include "ns3/ipv4-interface-container.h"
+#include "ns3/ipv6-interface-container.h"
 #include "ns3/node-container.h"
 #include "ns3/simulator.h"
 #include "ns3/pcap-file-object.h"
 #include "ns3/ipv4.h"
+#include "ns3/ipv6.h"
 
 namespace ns3 {
 
@@ -73,7 +75,7 @@
    * @brief Let the pcap helper figure out a reasonable filename to use for the
    * pcap file associated with a node.
    */
-  std::string GetFilenameFromInterfacePair (std::string prefix, Ptr<Ipv4> ipv4, 
+  std::string GetFilenameFromInterfacePair (std::string prefix, Ptr<Object> object, 
                                             uint32_t interface, bool useObjectNames = true);
 
   /**
@@ -154,6 +156,15 @@
   void EnablePcap (std::string prefix, NodeContainer n, bool promiscuous = false);
 
   /**
+   * @brief Enable pcap output on the device specified by a global node-id (of
+   * a previously created node) and associated device-id.
+   *
+   * @param prefix Filename prefix to use for pcap files.
+   * @param promiscuous If true capture all possible packets available at the device.
+   */
+  void EnablePcap (std::string prefix, uint32_t nodeid, uint32_t deviceid, bool promiscuous = false);
+
+  /**
    * @brief Enable pcap output on each device (which is of the appropriate type)
    * in the set of all nodes created in the simulation.
    *
@@ -161,15 +172,6 @@
    * @param promiscuous If true capture all possible packets available at the device.
    */
   void EnablePcapAll (std::string prefix, bool promiscuous = false);
-
-  /**
-   * @brief Enable pcap output on the device specified by a global node-id (of
-   * a previously created node) and associated device-id.
-   *
-   * @param prefix Filename prefix to use for pcap files.
-   * @param promiscuous If true capture all possible packets available at the device.
-   */
-  void EnablePcap (std::string prefix, uint32_t nodeid, uint32_t deviceid, bool promiscuous = false);
 };
 
 /**
@@ -187,7 +189,7 @@
    * @param ipv4 Ptr<Ipv4> on which you want to enable tracing.
    * @param interface Interface on ipv4 on which you want to enable tracing.
    */
-  virtual void EnablePcapInternal (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface) = 0;
+  virtual void EnablePcapIpv4Internal (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface) = 0;
 
   /**
    * @brief Enable pcap output the indicated Ipv4 and interface pair.
@@ -196,7 +198,7 @@
    * @param ipv4 Ptr<Ipv4> on which you want to enable tracing.
    * @param interface Interface on ipv4 on which you want to enable tracing.
    */
-  void EnablePcap (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface);
+  void EnablePcapIpv4 (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface);
 
   /**
    * @brief Enable pcap output the indicated Ipv4 and interface pair using a
@@ -206,7 +208,7 @@
    * @param ipv4Name Name of the Ptr<Ipv4> on which you want to enable tracing.
    * @param interface Interface on ipv4 on which you want to enable tracing.
    */
-  void EnablePcap (std::string prefix, std::string ipv4Name, uint32_t interface);
+  void EnablePcapIpv4 (std::string prefix, std::string ipv4Name, uint32_t interface);
 
   /**
    * @brief Enable pcap output on each Ipv4 and interface pair in the container.
@@ -214,7 +216,7 @@
    * @param prefix Filename prefix to use for pcap files.
    * @param c Ipv4InterfaceContainer of Ipv4 and interface pairs
    */
-  void EnablePcap (std::string prefix, Ipv4InterfaceContainer c);
+  void EnablePcapIpv4 (std::string prefix, Ipv4InterfaceContainer c);
 
   /**
    * @brief Enable pcap output on all Ipv4 and interface pairs existing in the
@@ -223,15 +225,7 @@
    * \param prefix Filename prefix to use for pcap files.
    * \param n container of nodes.
    */
-  void EnablePcap (std::string prefix, NodeContainer n);
-
-  /**
-   * @brief Enable pcap output on all Ipv4 and interface pairs existing in the 
-   * set of all nodes created in the simulation.
-   *
-   * @param prefix Filename prefix to use for pcap files.
-   */
-  void EnablePcapAll (std::string prefix);
+  void EnablePcapIpv4 (std::string prefix, NodeContainer n);
 
   /**
    * @brief Enable pcap output on the Ipv4 and interface pair specified by a 
@@ -241,7 +235,88 @@
    *
    * @param prefix Filename prefix to use for pcap files.
    */
-  void EnablePcap (std::string prefix, uint32_t nodeid, uint32_t interface);
+  void EnablePcapIpv4 (std::string prefix, uint32_t nodeid, uint32_t interface);
+
+  /**
+   * @brief Enable pcap output on all Ipv4 and interface pairs existing in the 
+   * set of all nodes created in the simulation.
+   *
+   * @param prefix Filename prefix to use for pcap files.
+   */
+  void EnablePcapIpv4All (std::string prefix);
+
+};
+
+/**
+ * \brief Base class providing common user-level pcap operations for helpers
+ * representing IPv6 protocols .
+ */
+class PcapUserHelperForIpv6
+{
+public:
+  /**
+   * @brief Enable pcap output the indicated Ipv6 and interface pair.
+   * @internal
+   *
+   * @param prefix Filename prefix to use for pcap files.
+   * @param ipv6 Ptr<Ipv6> on which you want to enable tracing.
+   * @param interface Interface on ipv6 on which you want to enable tracing.
+   */
+  virtual void EnablePcapIpv6Internal (std::string prefix, Ptr<Ipv6> ipv6, uint32_t interface) = 0;
+
+  /**
+   * @brief Enable pcap output the indicated Ipv6 and interface pair.
+   *
+   * @param prefix Filename prefix to use for pcap files.
+   * @param ipv6 Ptr<Ipv6> on which you want to enable tracing.
+   * @param interface Interface on ipv6 on which you want to enable tracing.
+   */
+  void EnablePcapIpv6 (std::string prefix, Ptr<Ipv6> ipv6, uint32_t interface);
+
+  /**
+   * @brief Enable pcap output the indicated Ipv6 and interface pair using a
+   * Ptr<Ipv6> previously named using the ns-3 object name service.
+   *
+   * @param filename filename prefix to use for pcap files.
+   * @param ipv6Name Name of the Ptr<Ipv6> on which you want to enable tracing.
+   * @param interface Interface on ipv6 on which you want to enable tracing.
+   */
+  void EnablePcapIpv6 (std::string prefix, std::string ipv6Name, uint32_t interface);
+
+  /**
+   * @brief Enable pcap output on each Ipv6 and interface pair in the container.
+   *
+   * @param prefix Filename prefix to use for pcap files.
+   * @param c Ipv6InterfaceContainer of Ipv6 and interface pairs
+   */
+  void EnablePcapIpv6 (std::string prefix, Ipv6InterfaceContainer c);
+
+  /**
+   * @brief Enable pcap output on all Ipv6 and interface pairs existing in the
+   * nodes provided in the container.
+   *
+   * \param prefix Filename prefix to use for pcap files.
+   * \param n container of nodes.
+   */
+  void EnablePcapIpv6 (std::string prefix, NodeContainer n);
+
+  /**
+   * @brief Enable pcap output on the Ipv6 and interface pair specified by a 
+   * global node-id (of a previously created node) and interface.  Since there
+   * can be only one Ipv6 aggregated to a node, the node-id unambiguously 
+   * determines the Ipv6.
+   *
+   * @param prefix Filename prefix to use for pcap files.
+   */
+  void EnablePcapIpv6 (std::string prefix, uint32_t nodeid, uint32_t interface);
+
+  /**
+   * @brief Enable pcap output on all Ipv6 and interface pairs existing in the 
+   * set of all nodes created in the simulation.
+   *
+   * @param prefix Filename prefix to use for pcap files.
+   */
+  void EnablePcapIpv6All (std::string prefix);
 };
 
 } // namespace ns3