redo pcap tracing

This commit is contained in:
Craig Dowell
2010-01-04 10:35:32 -08:00
parent 6065f2f563
commit 8ae5f99f61
74 changed files with 2200 additions and 1241 deletions

View File

@@ -47,6 +47,8 @@ def register_types(module):
module.add_class('Chunk', parent=root_module['ns3::ObjectBase'])
## header.h: ns3::Header [class]
module.add_class('Header', parent=root_module['ns3::Chunk'])
## pcap-file-object.h: ns3::PcapFileObject [class]
module.add_class('PcapFileObject', parent=root_module['ns3::Object'])
## pcap-writer.h: ns3::PcapWriter [class]
module.add_class('PcapWriter', parent=root_module['ns3::Object'])
## simple-ref-count.h: ns3::SimpleRefCount<ns3::AsciiWriter, ns3::empty, ns3::DefaultDeleter<ns3::AsciiWriter> > [class]
@@ -175,6 +177,7 @@ def register_methods(root_module):
register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
register_Ns3Header_methods(root_module, root_module['ns3::Header'])
register_Ns3PcapFileObject_methods(root_module, root_module['ns3::PcapFileObject'])
register_Ns3PcapWriter_methods(root_module, root_module['ns3::PcapWriter'])
register_Ns3Trailer_methods(root_module, root_module['ns3::Trailer'])
register_Ns3AsciiWriter_methods(root_module, root_module['ns3::AsciiWriter'])
@@ -948,6 +951,38 @@ def register_Ns3Header_methods(root_module, cls):
is_pure_virtual=True, is_const=True, is_virtual=True)
return
def register_Ns3PcapFileObject_methods(root_module, cls):
## pcap-file-object.h: ns3::PcapFileObject::PcapFileObject(ns3::PcapFileObject const & arg0) [copy constructor]
cls.add_constructor([param('ns3::PcapFileObject const &', 'arg0')])
## pcap-file-object.h: ns3::PcapFileObject::PcapFileObject() [constructor]
cls.add_constructor([])
## pcap-file-object.h: void ns3::PcapFileObject::Close() [member function]
cls.add_method('Close',
'void',
[])
## pcap-file-object.h: static ns3::TypeId ns3::PcapFileObject::GetTypeId() [member function]
cls.add_method('GetTypeId',
'ns3::TypeId',
[],
is_static=True)
## pcap-file-object.h: bool ns3::PcapFileObject::Init(uint32_t dataLinkType, uint32_t snapLen=ns3::PcapFile::SNAPLEN_DEFAULT, int32_t tzCorrection=ns3::PcapFile::ZONE_DEFAULT) [member function]
cls.add_method('Init',
'bool',
[param('uint32_t', 'dataLinkType'), param('uint32_t', 'snapLen', default_value='ns3::PcapFile::SNAPLEN_DEFAULT'), param('int32_t', 'tzCorrection', default_value='ns3::PcapFile::ZONE_DEFAULT')])
## pcap-file-object.h: bool ns3::PcapFileObject::Open(std::string const & filename, std::string const & mode) [member function]
cls.add_method('Open',
'bool',
[param('std::string const &', 'filename'), param('std::string const &', 'mode')])
## pcap-file-object.h: bool ns3::PcapFileObject::Write(ns3::Time t, ns3::Ptr<ns3::Packet const> p) [member function]
cls.add_method('Write',
'bool',
[param('ns3::Time', 't'), param('ns3::Ptr< ns3::Packet const >', 'p')])
## pcap-file-object.h: bool ns3::PcapFileObject::Write(ns3::Time t, uint8_t const * buffer, uint32_t length) [member function]
cls.add_method('Write',
'bool',
[param('ns3::Time', 't'), param('uint8_t const *', 'buffer'), param('uint32_t', 'length')])
return
def register_Ns3PcapWriter_methods(root_module, cls):
## pcap-writer.h: ns3::PcapWriter::PcapWriter(ns3::PcapWriter const & arg0) [copy constructor]
cls.add_constructor([param('ns3::PcapWriter const &', 'arg0')])

View File

@@ -3043,6 +3043,11 @@ def register_functions(root_module):
module.add_function('MakeBooleanChecker',
'ns3::Ptr< ns3::AttributeChecker const >',
[])
## callback.h: extern ns3::Callback<void,ns3::Ptr<const ns3::Packet>,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::MakeBoundCallback(void (*)( ::ns3::Ptr<ns3::PcapFileObject>,::ns3::Ptr<ns3::Packet const> ) * fnPtr, ns3::Ptr<ns3::PcapFileObject> a) [free function]
module.add_function('MakeBoundCallback',
'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >',
[param('void ( * ) ( ns3::Ptr< ns3::PcapFileObject >, ns3::Ptr< ns3::Packet const > ) *', 'fnPtr'), param('ns3::Ptr< ns3::PcapFileObject >', 'a')],
template_parameters=['void', 'ns3::Ptr<ns3::PcapFileObject>', 'ns3::Ptr<ns3::PcapFileObject>', 'ns3::Ptr<ns3::Packet const>'])
## callback.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeCallbackChecker() [free function]
module.add_function('MakeCallbackChecker',
'ns3::Ptr< ns3::AttributeChecker const >',
@@ -3097,7 +3102,7 @@ def register_functions(root_module):
module.add_function('TypeNameGet',
'std::string',
[],
template_parameters=['long long'])
template_parameters=['long'])
## type-name.h: extern std::string ns3::TypeNameGet() [free function]
module.add_function('TypeNameGet',
'std::string',

View File

@@ -11,12 +11,8 @@ def register_types(module):
module.add_class('AthstatsHelper', allow_subclassing=False)
## bridge-helper.h: ns3::BridgeHelper [class]
module.add_class('BridgeHelper', allow_subclassing=False)
## csma-helper.h: ns3::CsmaHelper [class]
module.add_class('CsmaHelper', allow_subclassing=False)
## csma-star-helper.h: ns3::CsmaStarHelper [class]
module.add_class('CsmaStarHelper', allow_subclassing=False)
## emu-helper.h: ns3::EmuHelper [class]
module.add_class('EmuHelper', allow_subclassing=False)
## flow-monitor-helper.h: ns3::FlowMonitorHelper [class]
module.add_class('FlowMonitorHelper', allow_subclassing=False)
## internet-stack-helper.h: ns3::InternetStackHelper [class]
@@ -57,6 +53,12 @@ def register_types(module):
module.add_class('PacketSinkHelper', allow_subclassing=False)
## packet-socket-helper.h: ns3::PacketSocketHelper [class]
module.add_class('PacketSocketHelper', allow_subclassing=False)
## pcap-helper.h: ns3::PcapHelper [class]
module.add_class('PcapHelper', allow_subclassing=False)
## pcap-helper.h: ns3::PcapHelper::DataLinkType [enumeration]
module.add_enum('DataLinkType', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'])
## pcap-user-helper.h: ns3::PcapUserHelper [class]
module.add_class('PcapUserHelper', allow_subclassing=False)
## ping6-helper.h: ns3::Ping6Helper [class]
module.add_class('Ping6Helper', allow_subclassing=False)
## point-to-point-dumbbell-helper.h: ns3::PointToPointDumbbellHelper [class]
@@ -64,7 +66,7 @@ def register_types(module):
## point-to-point-grid-helper.h: ns3::PointToPointGridHelper [class]
module.add_class('PointToPointGridHelper', allow_subclassing=False)
## point-to-point-helper.h: ns3::PointToPointHelper [class]
module.add_class('PointToPointHelper', allow_subclassing=False)
module.add_class('PointToPointHelper', allow_subclassing=False, parent=root_module['ns3::PcapUserHelper'])
## point-to-point-star-helper.h: ns3::PointToPointStarHelper [class]
module.add_class('PointToPointStarHelper', allow_subclassing=False)
## tap-bridge-helper.h: ns3::TapBridgeHelper [class]
@@ -89,12 +91,12 @@ def register_types(module):
module.add_class('WifiPhyHelper', allow_subclassing=False)
## yans-wifi-helper.h: ns3::YansWifiChannelHelper [class]
module.add_class('YansWifiChannelHelper', allow_subclassing=False)
## yans-wifi-helper.h: ns3::YansWifiPhyHelper [class]
module.add_class('YansWifiPhyHelper', allow_subclassing=False, parent=root_module['ns3::WifiPhyHelper'])
## yans-wifi-helper.h: ns3::YansWifiPhyHelper::PcapFormat [enumeration]
module.add_enum('PcapFormat', ['PCAP_FORMAT_80211', 'PCAP_FORMAT_80211_PRISM', 'PCAP_FORMAT_80211_RADIOTAP'], outer_class=root_module['ns3::YansWifiPhyHelper'])
## aodv-helper.h: ns3::AodvHelper [class]
module.add_class('AodvHelper', allow_subclassing=False, parent=root_module['ns3::Ipv4RoutingHelper'])
## csma-helper.h: ns3::CsmaHelper [class]
module.add_class('CsmaHelper', allow_subclassing=False, parent=root_module['ns3::PcapUserHelper'])
## emu-helper.h: ns3::EmuHelper [class]
module.add_class('EmuHelper', allow_subclassing=False, parent=root_module['ns3::PcapUserHelper'])
## ipv4-global-routing-helper.h: ns3::Ipv4GlobalRoutingHelper [class]
module.add_class('Ipv4GlobalRoutingHelper', allow_subclassing=False, parent=root_module['ns3::Ipv4RoutingHelper'])
## ipv4-list-routing-helper.h: ns3::Ipv4ListRoutingHelper [class]
@@ -203,9 +205,7 @@ def register_methods(root_module):
register_Ns3ApplicationContainer_methods(root_module, root_module['ns3::ApplicationContainer'])
register_Ns3AthstatsHelper_methods(root_module, root_module['ns3::AthstatsHelper'])
register_Ns3BridgeHelper_methods(root_module, root_module['ns3::BridgeHelper'])
register_Ns3CsmaHelper_methods(root_module, root_module['ns3::CsmaHelper'])
register_Ns3CsmaStarHelper_methods(root_module, root_module['ns3::CsmaStarHelper'])
register_Ns3EmuHelper_methods(root_module, root_module['ns3::EmuHelper'])
register_Ns3FlowMonitorHelper_methods(root_module, root_module['ns3::FlowMonitorHelper'])
register_Ns3InternetStackHelper_methods(root_module, root_module['ns3::InternetStackHelper'])
register_Ns3Ipv4AddressHelper_methods(root_module, root_module['ns3::Ipv4AddressHelper'])
@@ -225,6 +225,8 @@ def register_methods(root_module):
register_Ns3OnOffHelper_methods(root_module, root_module['ns3::OnOffHelper'])
register_Ns3PacketSinkHelper_methods(root_module, root_module['ns3::PacketSinkHelper'])
register_Ns3PacketSocketHelper_methods(root_module, root_module['ns3::PacketSocketHelper'])
register_Ns3PcapHelper_methods(root_module, root_module['ns3::PcapHelper'])
register_Ns3PcapUserHelper_methods(root_module, root_module['ns3::PcapUserHelper'])
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'])
@@ -241,8 +243,9 @@ def register_methods(root_module):
register_Ns3WifiMacHelper_methods(root_module, root_module['ns3::WifiMacHelper'])
register_Ns3WifiPhyHelper_methods(root_module, root_module['ns3::WifiPhyHelper'])
register_Ns3YansWifiChannelHelper_methods(root_module, root_module['ns3::YansWifiChannelHelper'])
register_Ns3YansWifiPhyHelper_methods(root_module, root_module['ns3::YansWifiPhyHelper'])
register_Ns3AodvHelper_methods(root_module, root_module['ns3::AodvHelper'])
register_Ns3CsmaHelper_methods(root_module, root_module['ns3::CsmaHelper'])
register_Ns3EmuHelper_methods(root_module, root_module['ns3::EmuHelper'])
register_Ns3Ipv4GlobalRoutingHelper_methods(root_module, root_module['ns3::Ipv4GlobalRoutingHelper'])
register_Ns3Ipv4ListRoutingHelper_methods(root_module, root_module['ns3::Ipv4ListRoutingHelper'])
register_Ns3Ipv4NixVectorHelper_methods(root_module, root_module['ns3::Ipv4NixVectorHelper'])
@@ -372,120 +375,6 @@ def register_Ns3BridgeHelper_methods(root_module, cls):
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
return
def register_Ns3CsmaHelper_methods(root_module, cls):
## csma-helper.h: ns3::CsmaHelper::CsmaHelper(ns3::CsmaHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::CsmaHelper const &', 'arg0')])
## csma-helper.h: ns3::CsmaHelper::CsmaHelper() [constructor]
cls.add_constructor([])
## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NetDeviceContainer', 'd')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NodeContainer', 'n')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnableAsciiAll(std::ostream & os) [member function]
cls.add_method('EnableAsciiAll',
'void',
[param('std::ostream &', 'os')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid'), param('bool', 'promiscuous')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnablePcap(std::string filename, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnablePcap(std::string filename, std::string ndName, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('std::string', 'ndName'), param('bool', 'promiscuous')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd'), param('bool', 'promiscuous')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnablePcap(std::string filename, ns3::NodeContainer n, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NodeContainer', 'n'), param('bool', 'promiscuous')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnablePcapAll(std::string filename, bool promiscuous) [member function]
cls.add_method('EnablePcapAll',
'void',
[param('std::string', 'filename'), param('bool', 'promiscuous')],
is_static=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(std::string name) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'name')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::Ptr<ns3::Node> node, ns3::Ptr<ns3::CsmaChannel> channel) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::Ptr<ns3::Node> node, std::string channelName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node'), param('std::string', 'channelName')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(std::string nodeName, ns3::Ptr<ns3::CsmaChannel> channel) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'nodeName'), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(std::string nodeName, std::string channelName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'nodeName'), param('std::string', 'channelName')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c, ns3::Ptr<ns3::CsmaChannel> channel) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c'), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c, std::string channelName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c'), param('std::string', 'channelName')],
is_const=True)
## csma-helper.h: void ns3::CsmaHelper::SetChannelAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
cls.add_method('SetChannelAttribute',
'void',
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
## csma-helper.h: void ns3::CsmaHelper::SetDeviceAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
cls.add_method('SetDeviceAttribute',
'void',
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
## csma-helper.h: void ns3::CsmaHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
cls.add_method('SetQueue',
'void',
[param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
return
def register_Ns3CsmaStarHelper_methods(root_module, cls):
## csma-star-helper.h: ns3::CsmaStarHelper::CsmaStarHelper(ns3::CsmaStarHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::CsmaStarHelper const &', 'arg0')])
@@ -536,86 +425,6 @@ def register_Ns3CsmaStarHelper_methods(root_module, cls):
is_const=True)
return
def register_Ns3EmuHelper_methods(root_module, cls):
## emu-helper.h: ns3::EmuHelper::EmuHelper(ns3::EmuHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::EmuHelper const &', 'arg0')])
## emu-helper.h: ns3::EmuHelper::EmuHelper() [constructor]
cls.add_constructor([])
## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NetDeviceContainer', 'd')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NodeContainer', 'n')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnableAsciiAll(std::ostream & os) [member function]
cls.add_method('EnableAsciiAll',
'void',
[param('std::ostream &', 'os')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid'), param('bool', 'promiscuous')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnablePcap(std::string filename, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnablePcap(std::string filename, std::string ndName, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('std::string', 'ndName'), param('bool', 'promiscuous')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd'), param('bool', 'promiscuous')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnablePcap(std::string filename, ns3::NodeContainer n, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NodeContainer', 'n'), param('bool', 'promiscuous')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnablePcapAll(std::string filename, bool promiscuous) [member function]
cls.add_method('EnablePcapAll',
'void',
[param('std::string', 'filename'), param('bool', 'promiscuous')],
is_static=True)
## emu-helper.h: ns3::NetDeviceContainer ns3::EmuHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node')],
is_const=True)
## emu-helper.h: ns3::NetDeviceContainer ns3::EmuHelper::Install(std::string nodeName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'nodeName')],
is_const=True)
## emu-helper.h: ns3::NetDeviceContainer ns3::EmuHelper::Install(ns3::NodeContainer const & c) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c')],
is_const=True)
## emu-helper.h: void ns3::EmuHelper::SetAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
cls.add_method('SetAttribute',
'void',
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
## emu-helper.h: void ns3::EmuHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
cls.add_method('SetQueue',
'void',
[param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
return
def register_Ns3FlowMonitorHelper_methods(root_module, cls):
## flow-monitor-helper.h: ns3::FlowMonitorHelper::FlowMonitorHelper(ns3::FlowMonitorHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::FlowMonitorHelper const &', 'arg0')])
@@ -1310,6 +1119,57 @@ def register_Ns3PacketSocketHelper_methods(root_module, cls):
is_const=True)
return
def register_Ns3PcapHelper_methods(root_module, cls):
## pcap-helper.h: ns3::PcapHelper::PcapHelper(ns3::PcapHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::PcapHelper const &', 'arg0')])
## pcap-helper.h: ns3::PcapHelper::PcapHelper() [constructor]
cls.add_constructor([])
## pcap-helper.h: ns3::Ptr<ns3::PcapFileObject> ns3::PcapHelper::CreateFile(std::string filename, std::string filemode, uint32_t dataLinkType, uint32_t snapLen=65535, int32_t tzCorrection=0) [member function]
cls.add_method('CreateFile',
'ns3::Ptr< ns3::PcapFileObject >',
[param('std::string', 'filename'), param('std::string', 'filemode'), param('uint32_t', 'dataLinkType'), param('uint32_t', 'snapLen', default_value='65535'), param('int32_t', 'tzCorrection', default_value='0')])
## pcap-helper.h: std::string ns3::PcapHelper::GetFilename(std::string prefix, ns3::Ptr<ns3::NetDevice> device, bool useObjectNames=true) [member function]
cls.add_method('GetFilename',
'std::string',
[param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'device'), param('bool', 'useObjectNames', default_value='true')])
return
def register_Ns3PcapUserHelper_methods(root_module, cls):
## pcap-user-helper.h: ns3::PcapUserHelper::PcapUserHelper() [constructor]
cls.add_constructor([])
## pcap-user-helper.h: ns3::PcapUserHelper::PcapUserHelper(ns3::PcapUserHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::PcapUserHelper const &', 'arg0')])
## pcap-user-helper.h: void ns3::PcapUserHelper::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.h: void ns3::PcapUserHelper::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.h: void ns3::PcapUserHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d, bool promiscuous=false) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd'), param('bool', 'promiscuous', default_value='false')])
## pcap-user-helper.h: void ns3::PcapUserHelper::EnablePcap(std::string filename, ns3::NodeContainer n, bool promiscuous=false) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NodeContainer', 'n'), param('bool', 'promiscuous', default_value='false')])
## pcap-user-helper.h: void ns3::PcapUserHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid, bool promiscuous=false) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid'), param('bool', 'promiscuous', default_value='false')])
## pcap-user-helper.h: void ns3::PcapUserHelper::EnablePcapAll(std::string filename, bool promiscuous=false) [member function]
cls.add_method('EnablePcapAll',
'void',
[param('std::string', 'filename'), param('bool', 'promiscuous', default_value='false')])
## pcap-user-helper.h: void ns3::PcapUserHelper::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')],
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')])
@@ -1452,36 +1312,6 @@ def register_Ns3PointToPointHelper_methods(root_module, cls):
'void',
[param('std::ostream &', 'os')],
is_static=True)
## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')],
is_static=True)
## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcap(std::string filename, ns3::Ptr<ns3::NetDevice> nd) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::Ptr< ns3::NetDevice >', 'nd')],
is_static=True)
## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcap(std::string filename, std::string ndName) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('std::string', 'ndName')],
is_static=True)
## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd')],
is_static=True)
## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcap(std::string filename, ns3::NodeContainer n) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NodeContainer', 'n')],
is_static=True)
## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcapAll(std::string filename) [member function]
cls.add_method('EnablePcapAll',
'void',
[param('std::string', 'filename')],
is_static=True)
## point-to-point-helper.h: ns3::NetDeviceContainer ns3::PointToPointHelper::Install(ns3::NodeContainer c) [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
@@ -1514,6 +1344,11 @@ def register_Ns3PointToPointHelper_methods(root_module, cls):
cls.add_method('SetQueue',
'void',
[param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
## point-to-point-helper.h: void ns3::PointToPointHelper::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous=false) [member function]
cls.add_method('EnablePcapInternal',
'void',
[param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous', default_value='false')],
visibility='private', is_virtual=True)
return
def register_Ns3PointToPointStarHelper_methods(root_module, cls):
@@ -1827,87 +1662,6 @@ def register_Ns3YansWifiChannelHelper_methods(root_module, cls):
[param('std::string', 'name'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue const &', 'v0', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue const &', 'v5', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue const &', 'v6', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue const &', 'v7', default_value='ns3::EmptyAttributeValue()')])
return
def register_Ns3YansWifiPhyHelper_methods(root_module, cls):
## yans-wifi-helper.h: ns3::YansWifiPhyHelper::YansWifiPhyHelper(ns3::YansWifiPhyHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::YansWifiPhyHelper const &', 'arg0')])
## yans-wifi-helper.h: ns3::YansWifiPhyHelper::YansWifiPhyHelper() [constructor]
cls.add_constructor([])
## yans-wifi-helper.h: static ns3::YansWifiPhyHelper ns3::YansWifiPhyHelper::Default() [member function]
cls.add_method('Default',
'ns3::YansWifiPhyHelper',
[],
is_static=True)
## yans-wifi-helper.h: static void ns3::YansWifiPhyHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')],
is_static=True)
## yans-wifi-helper.h: static void ns3::YansWifiPhyHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NetDeviceContainer', 'd')],
is_static=True)
## yans-wifi-helper.h: static void ns3::YansWifiPhyHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NodeContainer', 'n')],
is_static=True)
## yans-wifi-helper.h: static void ns3::YansWifiPhyHelper::EnableAsciiAll(std::ostream & os) [member function]
cls.add_method('EnableAsciiAll',
'void',
[param('std::ostream &', 'os')],
is_static=True)
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::EnablePcap(std::string filename, ns3::Ptr<ns3::NetDevice> nd) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::EnablePcap(std::string filename, std::string ndName) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('std::string', 'ndName')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::EnablePcap(std::string filename, ns3::NodeContainer n) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NodeContainer', 'n')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::EnablePcapAll(std::string filename) [member function]
cls.add_method('EnablePcapAll',
'void',
[param('std::string', 'filename')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::Set(std::string name, ns3::AttributeValue const & v) [member function]
cls.add_method('Set',
'void',
[param('std::string', 'name'), param('ns3::AttributeValue const &', 'v')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::SetChannel(ns3::Ptr<ns3::YansWifiChannel> channel) [member function]
cls.add_method('SetChannel',
'void',
[param('ns3::Ptr< ns3::YansWifiChannel >', 'channel')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::SetChannel(std::string channelName) [member function]
cls.add_method('SetChannel',
'void',
[param('std::string', 'channelName')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::SetErrorRateModel(std::string name, std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue(), std::string n5="", ns3::AttributeValue const & v5=ns3::EmptyAttributeValue(), std::string n6="", ns3::AttributeValue const & v6=ns3::EmptyAttributeValue(), std::string n7="", ns3::AttributeValue const & v7=ns3::EmptyAttributeValue()) [member function]
cls.add_method('SetErrorRateModel',
'void',
[param('std::string', 'name'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue const &', 'v0', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue const &', 'v5', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue const &', 'v6', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue const &', 'v7', default_value='ns3::EmptyAttributeValue()')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::SetPcapFormat(ns3::YansWifiPhyHelper::PcapFormat format) [member function]
cls.add_method('SetPcapFormat',
'void',
[param('ns3::YansWifiPhyHelper::PcapFormat', 'format')])
## yans-wifi-helper.h: ns3::Ptr<ns3::WifiPhy> ns3::YansWifiPhyHelper::Create(ns3::Ptr<ns3::Node> node, ns3::Ptr<ns3::WifiNetDevice> device) const [member function]
cls.add_method('Create',
'ns3::Ptr< ns3::WifiPhy >',
[param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ptr< ns3::WifiNetDevice >', 'device')],
is_const=True, visibility='private', is_virtual=True)
return
def register_Ns3AodvHelper_methods(root_module, cls):
## aodv-helper.h: ns3::AodvHelper::AodvHelper(ns3::AodvHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::AodvHelper const &', 'arg0')])
@@ -1929,6 +1683,150 @@ def register_Ns3AodvHelper_methods(root_module, cls):
[param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
return
def register_Ns3CsmaHelper_methods(root_module, cls):
## csma-helper.h: ns3::CsmaHelper::CsmaHelper(ns3::CsmaHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::CsmaHelper const &', 'arg0')])
## csma-helper.h: ns3::CsmaHelper::CsmaHelper() [constructor]
cls.add_constructor([])
## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NetDeviceContainer', 'd')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NodeContainer', 'n')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnableAsciiAll(std::ostream & os) [member function]
cls.add_method('EnableAsciiAll',
'void',
[param('std::ostream &', 'os')],
is_static=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(std::string name) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'name')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::Ptr<ns3::Node> node, ns3::Ptr<ns3::CsmaChannel> channel) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::Ptr<ns3::Node> node, std::string channelName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node'), param('std::string', 'channelName')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(std::string nodeName, ns3::Ptr<ns3::CsmaChannel> channel) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'nodeName'), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(std::string nodeName, std::string channelName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'nodeName'), param('std::string', 'channelName')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c, ns3::Ptr<ns3::CsmaChannel> channel) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c'), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c, std::string channelName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c'), param('std::string', 'channelName')],
is_const=True)
## csma-helper.h: void ns3::CsmaHelper::SetChannelAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
cls.add_method('SetChannelAttribute',
'void',
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
## csma-helper.h: void ns3::CsmaHelper::SetDeviceAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
cls.add_method('SetDeviceAttribute',
'void',
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
## csma-helper.h: void ns3::CsmaHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
cls.add_method('SetQueue',
'void',
[param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
## csma-helper.h: void ns3::CsmaHelper::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous=false) [member function]
cls.add_method('EnablePcapInternal',
'void',
[param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous', default_value='false')],
visibility='private', is_virtual=True)
return
def register_Ns3EmuHelper_methods(root_module, cls):
## emu-helper.h: ns3::EmuHelper::EmuHelper(ns3::EmuHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::EmuHelper const &', 'arg0')])
## emu-helper.h: ns3::EmuHelper::EmuHelper() [constructor]
cls.add_constructor([])
## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NetDeviceContainer', 'd')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NodeContainer', 'n')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnableAsciiAll(std::ostream & os) [member function]
cls.add_method('EnableAsciiAll',
'void',
[param('std::ostream &', 'os')],
is_static=True)
## emu-helper.h: ns3::NetDeviceContainer ns3::EmuHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node')],
is_const=True)
## emu-helper.h: ns3::NetDeviceContainer ns3::EmuHelper::Install(std::string nodeName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'nodeName')],
is_const=True)
## emu-helper.h: ns3::NetDeviceContainer ns3::EmuHelper::Install(ns3::NodeContainer const & c) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c')],
is_const=True)
## emu-helper.h: void ns3::EmuHelper::SetAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
cls.add_method('SetAttribute',
'void',
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
## emu-helper.h: void ns3::EmuHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
cls.add_method('SetQueue',
'void',
[param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
## emu-helper.h: void ns3::EmuHelper::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous=false) [member function]
cls.add_method('EnablePcapInternal',
'void',
[param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous', default_value='false')],
visibility='private', is_virtual=True)
return
def register_Ns3Ipv4GlobalRoutingHelper_methods(root_module, cls):
## ipv4-global-routing-helper.h: ns3::Ipv4GlobalRoutingHelper::Ipv4GlobalRoutingHelper() [constructor]
cls.add_constructor([])

View File

@@ -47,6 +47,8 @@ def register_types(module):
module.add_class('Chunk', parent=root_module['ns3::ObjectBase'])
## header.h: ns3::Header [class]
module.add_class('Header', parent=root_module['ns3::Chunk'])
## pcap-file-object.h: ns3::PcapFileObject [class]
module.add_class('PcapFileObject', parent=root_module['ns3::Object'])
## pcap-writer.h: ns3::PcapWriter [class]
module.add_class('PcapWriter', parent=root_module['ns3::Object'])
## simple-ref-count.h: ns3::SimpleRefCount<ns3::AsciiWriter, ns3::empty, ns3::DefaultDeleter<ns3::AsciiWriter> > [class]
@@ -175,6 +177,7 @@ def register_methods(root_module):
register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
register_Ns3Header_methods(root_module, root_module['ns3::Header'])
register_Ns3PcapFileObject_methods(root_module, root_module['ns3::PcapFileObject'])
register_Ns3PcapWriter_methods(root_module, root_module['ns3::PcapWriter'])
register_Ns3Trailer_methods(root_module, root_module['ns3::Trailer'])
register_Ns3AsciiWriter_methods(root_module, root_module['ns3::AsciiWriter'])
@@ -948,6 +951,38 @@ def register_Ns3Header_methods(root_module, cls):
is_pure_virtual=True, is_const=True, is_virtual=True)
return
def register_Ns3PcapFileObject_methods(root_module, cls):
## pcap-file-object.h: ns3::PcapFileObject::PcapFileObject(ns3::PcapFileObject const & arg0) [copy constructor]
cls.add_constructor([param('ns3::PcapFileObject const &', 'arg0')])
## pcap-file-object.h: ns3::PcapFileObject::PcapFileObject() [constructor]
cls.add_constructor([])
## pcap-file-object.h: void ns3::PcapFileObject::Close() [member function]
cls.add_method('Close',
'void',
[])
## pcap-file-object.h: static ns3::TypeId ns3::PcapFileObject::GetTypeId() [member function]
cls.add_method('GetTypeId',
'ns3::TypeId',
[],
is_static=True)
## pcap-file-object.h: bool ns3::PcapFileObject::Init(uint32_t dataLinkType, uint32_t snapLen=ns3::PcapFile::SNAPLEN_DEFAULT, int32_t tzCorrection=ns3::PcapFile::ZONE_DEFAULT) [member function]
cls.add_method('Init',
'bool',
[param('uint32_t', 'dataLinkType'), param('uint32_t', 'snapLen', default_value='ns3::PcapFile::SNAPLEN_DEFAULT'), param('int32_t', 'tzCorrection', default_value='ns3::PcapFile::ZONE_DEFAULT')])
## pcap-file-object.h: bool ns3::PcapFileObject::Open(std::string const & filename, std::string const & mode) [member function]
cls.add_method('Open',
'bool',
[param('std::string const &', 'filename'), param('std::string const &', 'mode')])
## pcap-file-object.h: bool ns3::PcapFileObject::Write(ns3::Time t, ns3::Ptr<ns3::Packet const> p) [member function]
cls.add_method('Write',
'bool',
[param('ns3::Time', 't'), param('ns3::Ptr< ns3::Packet const >', 'p')])
## pcap-file-object.h: bool ns3::PcapFileObject::Write(ns3::Time t, uint8_t const * buffer, uint32_t length) [member function]
cls.add_method('Write',
'bool',
[param('ns3::Time', 't'), param('uint8_t const *', 'buffer'), param('uint32_t', 'length')])
return
def register_Ns3PcapWriter_methods(root_module, cls):
## pcap-writer.h: ns3::PcapWriter::PcapWriter(ns3::PcapWriter const & arg0) [copy constructor]
cls.add_constructor([param('ns3::PcapWriter const &', 'arg0')])

View File

@@ -3043,6 +3043,11 @@ def register_functions(root_module):
module.add_function('MakeBooleanChecker',
'ns3::Ptr< ns3::AttributeChecker const >',
[])
## callback.h: extern ns3::Callback<void,ns3::Ptr<const ns3::Packet>,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::MakeBoundCallback(void (*)( ::ns3::Ptr<ns3::PcapFileObject>,::ns3::Ptr<ns3::Packet const> ) * fnPtr, ns3::Ptr<ns3::PcapFileObject> a) [free function]
module.add_function('MakeBoundCallback',
'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >',
[param('void ( * ) ( ns3::Ptr< ns3::PcapFileObject >, ns3::Ptr< ns3::Packet const > ) *', 'fnPtr'), param('ns3::Ptr< ns3::PcapFileObject >', 'a')],
template_parameters=['void', 'ns3::Ptr<ns3::PcapFileObject>', 'ns3::Ptr<ns3::PcapFileObject>', 'ns3::Ptr<ns3::Packet const>'])
## callback.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeCallbackChecker() [free function]
module.add_function('MakeCallbackChecker',
'ns3::Ptr< ns3::AttributeChecker const >',

View File

@@ -11,12 +11,8 @@ def register_types(module):
module.add_class('AthstatsHelper', allow_subclassing=False)
## bridge-helper.h: ns3::BridgeHelper [class]
module.add_class('BridgeHelper', allow_subclassing=False)
## csma-helper.h: ns3::CsmaHelper [class]
module.add_class('CsmaHelper', allow_subclassing=False)
## csma-star-helper.h: ns3::CsmaStarHelper [class]
module.add_class('CsmaStarHelper', allow_subclassing=False)
## emu-helper.h: ns3::EmuHelper [class]
module.add_class('EmuHelper', allow_subclassing=False)
## flow-monitor-helper.h: ns3::FlowMonitorHelper [class]
module.add_class('FlowMonitorHelper', allow_subclassing=False)
## internet-stack-helper.h: ns3::InternetStackHelper [class]
@@ -57,6 +53,12 @@ def register_types(module):
module.add_class('PacketSinkHelper', allow_subclassing=False)
## packet-socket-helper.h: ns3::PacketSocketHelper [class]
module.add_class('PacketSocketHelper', allow_subclassing=False)
## pcap-helper.h: ns3::PcapHelper [class]
module.add_class('PcapHelper', allow_subclassing=False)
## pcap-helper.h: ns3::PcapHelper::DataLinkType [enumeration]
module.add_enum('DataLinkType', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'])
## pcap-user-helper.h: ns3::PcapUserHelper [class]
module.add_class('PcapUserHelper', allow_subclassing=False)
## ping6-helper.h: ns3::Ping6Helper [class]
module.add_class('Ping6Helper', allow_subclassing=False)
## point-to-point-dumbbell-helper.h: ns3::PointToPointDumbbellHelper [class]
@@ -64,7 +66,7 @@ def register_types(module):
## point-to-point-grid-helper.h: ns3::PointToPointGridHelper [class]
module.add_class('PointToPointGridHelper', allow_subclassing=False)
## point-to-point-helper.h: ns3::PointToPointHelper [class]
module.add_class('PointToPointHelper', allow_subclassing=False)
module.add_class('PointToPointHelper', allow_subclassing=False, parent=root_module['ns3::PcapUserHelper'])
## point-to-point-star-helper.h: ns3::PointToPointStarHelper [class]
module.add_class('PointToPointStarHelper', allow_subclassing=False)
## tap-bridge-helper.h: ns3::TapBridgeHelper [class]
@@ -89,12 +91,12 @@ def register_types(module):
module.add_class('WifiPhyHelper', allow_subclassing=False)
## yans-wifi-helper.h: ns3::YansWifiChannelHelper [class]
module.add_class('YansWifiChannelHelper', allow_subclassing=False)
## yans-wifi-helper.h: ns3::YansWifiPhyHelper [class]
module.add_class('YansWifiPhyHelper', allow_subclassing=False, parent=root_module['ns3::WifiPhyHelper'])
## yans-wifi-helper.h: ns3::YansWifiPhyHelper::PcapFormat [enumeration]
module.add_enum('PcapFormat', ['PCAP_FORMAT_80211', 'PCAP_FORMAT_80211_PRISM', 'PCAP_FORMAT_80211_RADIOTAP'], outer_class=root_module['ns3::YansWifiPhyHelper'])
## aodv-helper.h: ns3::AodvHelper [class]
module.add_class('AodvHelper', allow_subclassing=False, parent=root_module['ns3::Ipv4RoutingHelper'])
## csma-helper.h: ns3::CsmaHelper [class]
module.add_class('CsmaHelper', allow_subclassing=False, parent=root_module['ns3::PcapUserHelper'])
## emu-helper.h: ns3::EmuHelper [class]
module.add_class('EmuHelper', allow_subclassing=False, parent=root_module['ns3::PcapUserHelper'])
## ipv4-global-routing-helper.h: ns3::Ipv4GlobalRoutingHelper [class]
module.add_class('Ipv4GlobalRoutingHelper', allow_subclassing=False, parent=root_module['ns3::Ipv4RoutingHelper'])
## ipv4-list-routing-helper.h: ns3::Ipv4ListRoutingHelper [class]
@@ -203,9 +205,7 @@ def register_methods(root_module):
register_Ns3ApplicationContainer_methods(root_module, root_module['ns3::ApplicationContainer'])
register_Ns3AthstatsHelper_methods(root_module, root_module['ns3::AthstatsHelper'])
register_Ns3BridgeHelper_methods(root_module, root_module['ns3::BridgeHelper'])
register_Ns3CsmaHelper_methods(root_module, root_module['ns3::CsmaHelper'])
register_Ns3CsmaStarHelper_methods(root_module, root_module['ns3::CsmaStarHelper'])
register_Ns3EmuHelper_methods(root_module, root_module['ns3::EmuHelper'])
register_Ns3FlowMonitorHelper_methods(root_module, root_module['ns3::FlowMonitorHelper'])
register_Ns3InternetStackHelper_methods(root_module, root_module['ns3::InternetStackHelper'])
register_Ns3Ipv4AddressHelper_methods(root_module, root_module['ns3::Ipv4AddressHelper'])
@@ -225,6 +225,8 @@ def register_methods(root_module):
register_Ns3OnOffHelper_methods(root_module, root_module['ns3::OnOffHelper'])
register_Ns3PacketSinkHelper_methods(root_module, root_module['ns3::PacketSinkHelper'])
register_Ns3PacketSocketHelper_methods(root_module, root_module['ns3::PacketSocketHelper'])
register_Ns3PcapHelper_methods(root_module, root_module['ns3::PcapHelper'])
register_Ns3PcapUserHelper_methods(root_module, root_module['ns3::PcapUserHelper'])
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'])
@@ -241,8 +243,9 @@ def register_methods(root_module):
register_Ns3WifiMacHelper_methods(root_module, root_module['ns3::WifiMacHelper'])
register_Ns3WifiPhyHelper_methods(root_module, root_module['ns3::WifiPhyHelper'])
register_Ns3YansWifiChannelHelper_methods(root_module, root_module['ns3::YansWifiChannelHelper'])
register_Ns3YansWifiPhyHelper_methods(root_module, root_module['ns3::YansWifiPhyHelper'])
register_Ns3AodvHelper_methods(root_module, root_module['ns3::AodvHelper'])
register_Ns3CsmaHelper_methods(root_module, root_module['ns3::CsmaHelper'])
register_Ns3EmuHelper_methods(root_module, root_module['ns3::EmuHelper'])
register_Ns3Ipv4GlobalRoutingHelper_methods(root_module, root_module['ns3::Ipv4GlobalRoutingHelper'])
register_Ns3Ipv4ListRoutingHelper_methods(root_module, root_module['ns3::Ipv4ListRoutingHelper'])
register_Ns3Ipv4NixVectorHelper_methods(root_module, root_module['ns3::Ipv4NixVectorHelper'])
@@ -372,120 +375,6 @@ def register_Ns3BridgeHelper_methods(root_module, cls):
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
return
def register_Ns3CsmaHelper_methods(root_module, cls):
## csma-helper.h: ns3::CsmaHelper::CsmaHelper(ns3::CsmaHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::CsmaHelper const &', 'arg0')])
## csma-helper.h: ns3::CsmaHelper::CsmaHelper() [constructor]
cls.add_constructor([])
## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NetDeviceContainer', 'd')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NodeContainer', 'n')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnableAsciiAll(std::ostream & os) [member function]
cls.add_method('EnableAsciiAll',
'void',
[param('std::ostream &', 'os')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid'), param('bool', 'promiscuous')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnablePcap(std::string filename, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnablePcap(std::string filename, std::string ndName, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('std::string', 'ndName'), param('bool', 'promiscuous')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd'), param('bool', 'promiscuous')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnablePcap(std::string filename, ns3::NodeContainer n, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NodeContainer', 'n'), param('bool', 'promiscuous')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnablePcapAll(std::string filename, bool promiscuous) [member function]
cls.add_method('EnablePcapAll',
'void',
[param('std::string', 'filename'), param('bool', 'promiscuous')],
is_static=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(std::string name) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'name')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::Ptr<ns3::Node> node, ns3::Ptr<ns3::CsmaChannel> channel) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::Ptr<ns3::Node> node, std::string channelName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node'), param('std::string', 'channelName')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(std::string nodeName, ns3::Ptr<ns3::CsmaChannel> channel) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'nodeName'), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(std::string nodeName, std::string channelName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'nodeName'), param('std::string', 'channelName')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c, ns3::Ptr<ns3::CsmaChannel> channel) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c'), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c, std::string channelName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c'), param('std::string', 'channelName')],
is_const=True)
## csma-helper.h: void ns3::CsmaHelper::SetChannelAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
cls.add_method('SetChannelAttribute',
'void',
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
## csma-helper.h: void ns3::CsmaHelper::SetDeviceAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
cls.add_method('SetDeviceAttribute',
'void',
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
## csma-helper.h: void ns3::CsmaHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
cls.add_method('SetQueue',
'void',
[param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
return
def register_Ns3CsmaStarHelper_methods(root_module, cls):
## csma-star-helper.h: ns3::CsmaStarHelper::CsmaStarHelper(ns3::CsmaStarHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::CsmaStarHelper const &', 'arg0')])
@@ -536,86 +425,6 @@ def register_Ns3CsmaStarHelper_methods(root_module, cls):
is_const=True)
return
def register_Ns3EmuHelper_methods(root_module, cls):
## emu-helper.h: ns3::EmuHelper::EmuHelper(ns3::EmuHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::EmuHelper const &', 'arg0')])
## emu-helper.h: ns3::EmuHelper::EmuHelper() [constructor]
cls.add_constructor([])
## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NetDeviceContainer', 'd')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NodeContainer', 'n')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnableAsciiAll(std::ostream & os) [member function]
cls.add_method('EnableAsciiAll',
'void',
[param('std::ostream &', 'os')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid'), param('bool', 'promiscuous')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnablePcap(std::string filename, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnablePcap(std::string filename, std::string ndName, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('std::string', 'ndName'), param('bool', 'promiscuous')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd'), param('bool', 'promiscuous')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnablePcap(std::string filename, ns3::NodeContainer n, bool promiscuous) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NodeContainer', 'n'), param('bool', 'promiscuous')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnablePcapAll(std::string filename, bool promiscuous) [member function]
cls.add_method('EnablePcapAll',
'void',
[param('std::string', 'filename'), param('bool', 'promiscuous')],
is_static=True)
## emu-helper.h: ns3::NetDeviceContainer ns3::EmuHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node')],
is_const=True)
## emu-helper.h: ns3::NetDeviceContainer ns3::EmuHelper::Install(std::string nodeName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'nodeName')],
is_const=True)
## emu-helper.h: ns3::NetDeviceContainer ns3::EmuHelper::Install(ns3::NodeContainer const & c) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c')],
is_const=True)
## emu-helper.h: void ns3::EmuHelper::SetAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
cls.add_method('SetAttribute',
'void',
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
## emu-helper.h: void ns3::EmuHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
cls.add_method('SetQueue',
'void',
[param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
return
def register_Ns3FlowMonitorHelper_methods(root_module, cls):
## flow-monitor-helper.h: ns3::FlowMonitorHelper::FlowMonitorHelper(ns3::FlowMonitorHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::FlowMonitorHelper const &', 'arg0')])
@@ -1310,6 +1119,57 @@ def register_Ns3PacketSocketHelper_methods(root_module, cls):
is_const=True)
return
def register_Ns3PcapHelper_methods(root_module, cls):
## pcap-helper.h: ns3::PcapHelper::PcapHelper(ns3::PcapHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::PcapHelper const &', 'arg0')])
## pcap-helper.h: ns3::PcapHelper::PcapHelper() [constructor]
cls.add_constructor([])
## pcap-helper.h: ns3::Ptr<ns3::PcapFileObject> ns3::PcapHelper::CreateFile(std::string filename, std::string filemode, uint32_t dataLinkType, uint32_t snapLen=65535, int32_t tzCorrection=0) [member function]
cls.add_method('CreateFile',
'ns3::Ptr< ns3::PcapFileObject >',
[param('std::string', 'filename'), param('std::string', 'filemode'), param('uint32_t', 'dataLinkType'), param('uint32_t', 'snapLen', default_value='65535'), param('int32_t', 'tzCorrection', default_value='0')])
## pcap-helper.h: std::string ns3::PcapHelper::GetFilename(std::string prefix, ns3::Ptr<ns3::NetDevice> device, bool useObjectNames=true) [member function]
cls.add_method('GetFilename',
'std::string',
[param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'device'), param('bool', 'useObjectNames', default_value='true')])
return
def register_Ns3PcapUserHelper_methods(root_module, cls):
## pcap-user-helper.h: ns3::PcapUserHelper::PcapUserHelper() [constructor]
cls.add_constructor([])
## pcap-user-helper.h: ns3::PcapUserHelper::PcapUserHelper(ns3::PcapUserHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::PcapUserHelper const &', 'arg0')])
## pcap-user-helper.h: void ns3::PcapUserHelper::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.h: void ns3::PcapUserHelper::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.h: void ns3::PcapUserHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d, bool promiscuous=false) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd'), param('bool', 'promiscuous', default_value='false')])
## pcap-user-helper.h: void ns3::PcapUserHelper::EnablePcap(std::string filename, ns3::NodeContainer n, bool promiscuous=false) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NodeContainer', 'n'), param('bool', 'promiscuous', default_value='false')])
## pcap-user-helper.h: void ns3::PcapUserHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid, bool promiscuous=false) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid'), param('bool', 'promiscuous', default_value='false')])
## pcap-user-helper.h: void ns3::PcapUserHelper::EnablePcapAll(std::string filename, bool promiscuous=false) [member function]
cls.add_method('EnablePcapAll',
'void',
[param('std::string', 'filename'), param('bool', 'promiscuous', default_value='false')])
## pcap-user-helper.h: void ns3::PcapUserHelper::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')],
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')])
@@ -1452,36 +1312,6 @@ def register_Ns3PointToPointHelper_methods(root_module, cls):
'void',
[param('std::ostream &', 'os')],
is_static=True)
## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')],
is_static=True)
## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcap(std::string filename, ns3::Ptr<ns3::NetDevice> nd) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::Ptr< ns3::NetDevice >', 'nd')],
is_static=True)
## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcap(std::string filename, std::string ndName) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('std::string', 'ndName')],
is_static=True)
## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd')],
is_static=True)
## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcap(std::string filename, ns3::NodeContainer n) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NodeContainer', 'n')],
is_static=True)
## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcapAll(std::string filename) [member function]
cls.add_method('EnablePcapAll',
'void',
[param('std::string', 'filename')],
is_static=True)
## point-to-point-helper.h: ns3::NetDeviceContainer ns3::PointToPointHelper::Install(ns3::NodeContainer c) [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
@@ -1514,6 +1344,11 @@ def register_Ns3PointToPointHelper_methods(root_module, cls):
cls.add_method('SetQueue',
'void',
[param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
## point-to-point-helper.h: void ns3::PointToPointHelper::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous=false) [member function]
cls.add_method('EnablePcapInternal',
'void',
[param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous', default_value='false')],
visibility='private', is_virtual=True)
return
def register_Ns3PointToPointStarHelper_methods(root_module, cls):
@@ -1827,87 +1662,6 @@ def register_Ns3YansWifiChannelHelper_methods(root_module, cls):
[param('std::string', 'name'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue const &', 'v0', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue const &', 'v5', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue const &', 'v6', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue const &', 'v7', default_value='ns3::EmptyAttributeValue()')])
return
def register_Ns3YansWifiPhyHelper_methods(root_module, cls):
## yans-wifi-helper.h: ns3::YansWifiPhyHelper::YansWifiPhyHelper(ns3::YansWifiPhyHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::YansWifiPhyHelper const &', 'arg0')])
## yans-wifi-helper.h: ns3::YansWifiPhyHelper::YansWifiPhyHelper() [constructor]
cls.add_constructor([])
## yans-wifi-helper.h: static ns3::YansWifiPhyHelper ns3::YansWifiPhyHelper::Default() [member function]
cls.add_method('Default',
'ns3::YansWifiPhyHelper',
[],
is_static=True)
## yans-wifi-helper.h: static void ns3::YansWifiPhyHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')],
is_static=True)
## yans-wifi-helper.h: static void ns3::YansWifiPhyHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NetDeviceContainer', 'd')],
is_static=True)
## yans-wifi-helper.h: static void ns3::YansWifiPhyHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NodeContainer', 'n')],
is_static=True)
## yans-wifi-helper.h: static void ns3::YansWifiPhyHelper::EnableAsciiAll(std::ostream & os) [member function]
cls.add_method('EnableAsciiAll',
'void',
[param('std::ostream &', 'os')],
is_static=True)
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::EnablePcap(std::string filename, ns3::Ptr<ns3::NetDevice> nd) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::EnablePcap(std::string filename, std::string ndName) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('std::string', 'ndName')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::EnablePcap(std::string filename, ns3::NodeContainer n) [member function]
cls.add_method('EnablePcap',
'void',
[param('std::string', 'filename'), param('ns3::NodeContainer', 'n')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::EnablePcapAll(std::string filename) [member function]
cls.add_method('EnablePcapAll',
'void',
[param('std::string', 'filename')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::Set(std::string name, ns3::AttributeValue const & v) [member function]
cls.add_method('Set',
'void',
[param('std::string', 'name'), param('ns3::AttributeValue const &', 'v')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::SetChannel(ns3::Ptr<ns3::YansWifiChannel> channel) [member function]
cls.add_method('SetChannel',
'void',
[param('ns3::Ptr< ns3::YansWifiChannel >', 'channel')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::SetChannel(std::string channelName) [member function]
cls.add_method('SetChannel',
'void',
[param('std::string', 'channelName')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::SetErrorRateModel(std::string name, std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue(), std::string n5="", ns3::AttributeValue const & v5=ns3::EmptyAttributeValue(), std::string n6="", ns3::AttributeValue const & v6=ns3::EmptyAttributeValue(), std::string n7="", ns3::AttributeValue const & v7=ns3::EmptyAttributeValue()) [member function]
cls.add_method('SetErrorRateModel',
'void',
[param('std::string', 'name'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue const &', 'v0', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue const &', 'v5', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue const &', 'v6', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue const &', 'v7', default_value='ns3::EmptyAttributeValue()')])
## yans-wifi-helper.h: void ns3::YansWifiPhyHelper::SetPcapFormat(ns3::YansWifiPhyHelper::PcapFormat format) [member function]
cls.add_method('SetPcapFormat',
'void',
[param('ns3::YansWifiPhyHelper::PcapFormat', 'format')])
## yans-wifi-helper.h: ns3::Ptr<ns3::WifiPhy> ns3::YansWifiPhyHelper::Create(ns3::Ptr<ns3::Node> node, ns3::Ptr<ns3::WifiNetDevice> device) const [member function]
cls.add_method('Create',
'ns3::Ptr< ns3::WifiPhy >',
[param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ptr< ns3::WifiNetDevice >', 'device')],
is_const=True, visibility='private', is_virtual=True)
return
def register_Ns3AodvHelper_methods(root_module, cls):
## aodv-helper.h: ns3::AodvHelper::AodvHelper(ns3::AodvHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::AodvHelper const &', 'arg0')])
@@ -1929,6 +1683,150 @@ def register_Ns3AodvHelper_methods(root_module, cls):
[param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
return
def register_Ns3CsmaHelper_methods(root_module, cls):
## csma-helper.h: ns3::CsmaHelper::CsmaHelper(ns3::CsmaHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::CsmaHelper const &', 'arg0')])
## csma-helper.h: ns3::CsmaHelper::CsmaHelper() [constructor]
cls.add_constructor([])
## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NetDeviceContainer', 'd')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NodeContainer', 'n')],
is_static=True)
## csma-helper.h: static void ns3::CsmaHelper::EnableAsciiAll(std::ostream & os) [member function]
cls.add_method('EnableAsciiAll',
'void',
[param('std::ostream &', 'os')],
is_static=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(std::string name) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'name')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::Ptr<ns3::Node> node, ns3::Ptr<ns3::CsmaChannel> channel) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::Ptr<ns3::Node> node, std::string channelName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node'), param('std::string', 'channelName')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(std::string nodeName, ns3::Ptr<ns3::CsmaChannel> channel) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'nodeName'), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(std::string nodeName, std::string channelName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'nodeName'), param('std::string', 'channelName')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c, ns3::Ptr<ns3::CsmaChannel> channel) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c'), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')],
is_const=True)
## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c, std::string channelName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c'), param('std::string', 'channelName')],
is_const=True)
## csma-helper.h: void ns3::CsmaHelper::SetChannelAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
cls.add_method('SetChannelAttribute',
'void',
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
## csma-helper.h: void ns3::CsmaHelper::SetDeviceAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
cls.add_method('SetDeviceAttribute',
'void',
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
## csma-helper.h: void ns3::CsmaHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
cls.add_method('SetQueue',
'void',
[param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
## csma-helper.h: void ns3::CsmaHelper::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous=false) [member function]
cls.add_method('EnablePcapInternal',
'void',
[param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous', default_value='false')],
visibility='private', is_virtual=True)
return
def register_Ns3EmuHelper_methods(root_module, cls):
## emu-helper.h: ns3::EmuHelper::EmuHelper(ns3::EmuHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::EmuHelper const &', 'arg0')])
## emu-helper.h: ns3::EmuHelper::EmuHelper() [constructor]
cls.add_constructor([])
## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NetDeviceContainer', 'd')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
cls.add_method('EnableAscii',
'void',
[param('std::ostream &', 'os'), param('ns3::NodeContainer', 'n')],
is_static=True)
## emu-helper.h: static void ns3::EmuHelper::EnableAsciiAll(std::ostream & os) [member function]
cls.add_method('EnableAsciiAll',
'void',
[param('std::ostream &', 'os')],
is_static=True)
## emu-helper.h: ns3::NetDeviceContainer ns3::EmuHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::Ptr< ns3::Node >', 'node')],
is_const=True)
## emu-helper.h: ns3::NetDeviceContainer ns3::EmuHelper::Install(std::string nodeName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('std::string', 'nodeName')],
is_const=True)
## emu-helper.h: ns3::NetDeviceContainer ns3::EmuHelper::Install(ns3::NodeContainer const & c) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
[param('ns3::NodeContainer const &', 'c')],
is_const=True)
## emu-helper.h: void ns3::EmuHelper::SetAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
cls.add_method('SetAttribute',
'void',
[param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
## emu-helper.h: void ns3::EmuHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
cls.add_method('SetQueue',
'void',
[param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
## emu-helper.h: void ns3::EmuHelper::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous=false) [member function]
cls.add_method('EnablePcapInternal',
'void',
[param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous', default_value='false')],
visibility='private', is_virtual=True)
return
def register_Ns3Ipv4GlobalRoutingHelper_methods(root_module, cls):
## ipv4-global-routing-helper.h: ns3::Ipv4GlobalRoutingHelper::Ipv4GlobalRoutingHelper() [constructor]
cls.add_constructor([])

View File

@@ -221,11 +221,11 @@ main (int argc, char *argv[])
//
// Also configure some tcpdump traces; each interface will be traced.
// The output files will be named:
// csma-bridge-<nodeId>-<interfaceId>.pcap
// csma-bridge-one-hop-<nodeId>-<interfaceId>.pcap
// and can be read by the "tcpdump -r" command (use "-tt" option to
// display timestamps correctly)
//
CsmaHelper::EnablePcapAll ("csma-bridge-one-hop", false);
csma.EnablePcapAll ("csma-bridge-one-hop", false);
//
// Now, do the actual simulation.

View File

@@ -154,7 +154,7 @@ main (int argc, char *argv[])
// and can be read by the "tcpdump -r" command (use "-tt" option to
// display timestamps correctly)
//
CsmaHelper::EnablePcapAll ("csma-bridge", false);
csma.EnablePcapAll ("csma-bridge", false);
//
// Now, do the actual simulation.

View File

@@ -134,7 +134,7 @@ def main(argv):
# and can be read by the "tcpdump -r" command(use "-tt" option to
# display timestamps correctly)
#
ns3.CsmaHelper.EnablePcapAll("csma-bridge", False)
csma.EnablePcapAll("csma-bridge", False)
#
# Now, do the actual simulation.

View File

@@ -111,7 +111,7 @@ main (int argc, char *argv[])
// The output files will be named
// csma-broadcast-<nodeId>-<interfaceId>.pcap
// and can be read by the "tcpdump -tt -r" command
CsmaHelper::EnablePcapAll ("csma-broadcast", false);
csma.EnablePcapAll ("csma-broadcast", false);
std::ofstream ascii;
ascii.open ("csma-broadcast.tr", std::ios_base::binary | std::ios_base::out);
CsmaHelper::EnableAsciiAll (ascii);

View File

@@ -170,7 +170,7 @@ main (int argc, char *argv[])
// csma-multicast-<nodeId>-<interfaceId>.pcap
// and can be read by the "tcpdump -r" command (use "-tt" option to
// display timestamps correctly)
CsmaHelper::EnablePcapAll ("csma-multicast", false);
csma.EnablePcapAll ("csma-multicast", false);
//
// Now, do the actual simulation.
//

View File

@@ -129,7 +129,7 @@ main (int argc, char *argv[])
// and can be read by the "tcpdump -r" command (use "-tt" option to
// display timestamps correctly)
//
CsmaHelper::EnablePcapAll ("csma-one-subnet", false);
csma.EnablePcapAll ("csma-one-subnet", false);
//
// Now, do the actual simulation.
//

View File

@@ -182,7 +182,7 @@ main (int argc, char *argv[])
//
// Do pcap tracing on all devices on all nodes.
//
CsmaHelper::EnablePcapAll ("csma-star", false);
csma.EnablePcapAll ("csma-star", false);
NS_LOG_INFO ("Run Simulation.");
Simulator::Run ();

View File

@@ -203,7 +203,8 @@ main (int argc, char *argv[])
//
// Enable a promiscuous pcap trace to see what is coming and going on our device.
//
EmuHelper::EnablePcap ("emu-ping", device, true);
EmuHelper emu;
emu.EnablePcap ("emu-ping", device, true);
//
// Now, do the actual emulation.

View File

@@ -150,7 +150,7 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("emu-udp-echo.tr");
EmuHelper::EnablePcapAll ("emu-udp-echo", true);
emu.EnablePcapAll ("emu-udp-echo", true);
//
// Now, do the actual simulation.

View File

@@ -168,7 +168,7 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("simple-error-model.tr");
PointToPointHelper::EnablePcapAll ("simple-error-model");
p2p.EnablePcapAll ("simple-error-model");
PointToPointHelper::EnableAsciiAll (ascii);
NS_LOG_INFO ("Run Simulation.");

View File

@@ -152,7 +152,7 @@ int main (int argc, char** argv)
std::ofstream ascii;
ascii.open ("fragmentation-ipv6.tr");
CsmaHelper::EnablePcapAll (std::string ("fragmentation-ipv6"), true);
csma.EnablePcapAll (std::string ("fragmentation-ipv6"), true);
CsmaHelper::EnableAsciiAll (ascii);
NS_LOG_INFO ("Run Simulation.");

View File

@@ -175,7 +175,7 @@ int main (int argc, char **argv)
std::ofstream ascii;
ascii.open ("icmpv6-redirect.tr");
CsmaHelper::EnablePcapAll ("icmpv6-redirect", true);
csma.EnablePcapAll ("icmpv6-redirect", true);
CsmaHelper::EnableAsciiAll (ascii);
/* Now, do the actual simulation. */

View File

@@ -160,7 +160,7 @@ int main (int argc, char **argv)
std::ofstream ascii;
ascii.open ("loose-routing-ipv6.tr");
CsmaHelper::EnablePcapAll ("loose-routing-ipv6", true);
csma.EnablePcapAll ("loose-routing-ipv6", true);
CsmaHelper::EnableAsciiAll (ascii);
NS_LOG_INFO ("Run Simulation.");

View File

@@ -100,7 +100,7 @@ int main (int argc, char **argv)
std::ofstream ascii;
ascii.open ("ping6.tr");
CsmaHelper::EnablePcapAll (std::string ("ping6"), true);
csma.EnablePcapAll (std::string ("ping6"), true);
CsmaHelper::EnableAsciiAll (ascii);
NS_LOG_INFO ("Run Simulation.");

View File

@@ -210,7 +210,7 @@ int main (int argc, char** argv)
std::ofstream ascii;
ascii.open ("radvd-two-prefix.tr");
CsmaHelper::EnablePcapAll (std::string ("radvd-two-prefix"), true);
csma.EnablePcapAll (std::string ("radvd-two-prefix"), true);
CsmaHelper::EnableAsciiAll (ascii);
NS_LOG_INFO ("Run Simulation.");

View File

@@ -145,7 +145,7 @@ int main (int argc, char** argv)
std::ofstream ascii;
ascii.open ("radvd.tr");
CsmaHelper::EnablePcapAll (std::string ("radvd"), true);
csma.EnablePcapAll (std::string ("radvd"), true);
CsmaHelper::EnableAsciiAll (ascii);
NS_LOG_INFO ("Run Simulation.");

View File

@@ -153,6 +153,24 @@ main (int argc, char *argv[])
//
Config::Connect ("/Names/client/eth0/MacRx", MakeCallback (&RxEvent));
//
// Set up some pcap tracing on the CSMA devices. The names of the trace
// files will automatically correspond to the object names if present.
// In this case, you will find trace files called:
//
// object-names-client-eth0.pcap
// object-names-server-eth0.pcap
//
// since those nodes and devices have had names associated with them. You
// will also see:
//
// object-names-2-1.pcap
// object-names-3-1.pcap
//
// since nodes two and three have no associated names.
//
csma.EnablePcapAll ("object-names");
Simulator::Run ();
Simulator::Destroy ();
}

View File

@@ -107,7 +107,7 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("realtime-udp-echo.tr");
CsmaHelper::EnablePcapAll ("realtime-udp-echo", false);
csma.EnablePcapAll ("realtime-udp-echo", false);
CsmaHelper::EnableAsciiAll (ascii);
//

View File

@@ -192,9 +192,9 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("dynamic-global-routing.tr", std::ios_base::binary | std::ios_base::out);
PointToPointHelper::EnablePcapAll ("dynamic-global-routing");
p2p.EnablePcapAll ("dynamic-global-routing");
PointToPointHelper::EnableAsciiAll (ascii);
CsmaHelper::EnablePcapAll ("dynamic-global-routing", false);
csma.EnablePcapAll ("dynamic-global-routing", false);
CsmaHelper::EnableAsciiAll (ascii);
InternetStackHelper::EnableAsciiAll (ascii);

View File

@@ -148,7 +148,7 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("global-routing-injection32.tr", std::ios_base::binary | std::ios_base::out);
PointToPointHelper::EnablePcapAll ("global-routing-injection32");
p2p.EnablePcapAll ("global-routing-injection32");
PointToPointHelper::EnableAsciiAll (ascii);
Simulator::Run ();

View File

@@ -121,7 +121,7 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("global-routing-slash32.tr", std::ios_base::binary | std::ios_base::out);
PointToPointHelper::EnablePcapAll ("global-routing-slash32");
p2p.EnablePcapAll ("global-routing-slash32");
PointToPointHelper::EnableAsciiAll (ascii);
Simulator::Run ();

View File

@@ -122,9 +122,9 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("mixed-global-routing.tr");
PointToPointHelper::EnablePcapAll ("mixed-global-routing");
p2p.EnablePcapAll ("mixed-global-routing");
PointToPointHelper::EnableAsciiAll (ascii);
CsmaHelper::EnablePcapAll ("mixed-global-routing", false);
csma.EnablePcapAll ("mixed-global-routing", false);
CsmaHelper::EnableAsciiAll (ascii);

View File

@@ -154,7 +154,7 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("simple-alternate-routing.tr");
PointToPointHelper::EnablePcapAll ("simple-alternate-routing");
p2p.EnablePcapAll ("simple-alternate-routing");
PointToPointHelper::EnableAsciiAll (ascii);
NS_LOG_INFO ("Run Simulation.");

View File

@@ -147,7 +147,7 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("simple-global-routing.tr");
PointToPointHelper::EnablePcapAll ("simple-global-routing");
p2p.EnablePcapAll ("simple-global-routing");
PointToPointHelper::EnableAsciiAll (ascii);
// Flow Monitor

View File

@@ -159,7 +159,7 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("simple-point-to-point-olsr.tr");
PointToPointHelper::EnablePcapAll ("simple-point-to-point-olsr");
p2p.EnablePcapAll ("simple-point-to-point-olsr");
PointToPointHelper::EnableAsciiAll (ascii);
Simulator::Stop (Seconds (30));

View File

@@ -153,7 +153,7 @@ int main (int argc, char** argv)
std::ofstream ascii;
ascii.open ("simple-routing-ping6.tr");
CsmaHelper::EnablePcapAll (std::string ("simple-routing-ping6"), true);
csma.EnablePcapAll (std::string ("simple-routing-ping6"), true);
CsmaHelper::EnableAsciiAll (ascii);
NS_LOG_INFO ("Run Simulation.");

View File

@@ -126,7 +126,7 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("static-routing-slash32.tr");
PointToPointHelper::EnablePcapAll ("static-routing-slash32");
p2p.EnablePcapAll ("static-routing-slash32");
PointToPointHelper::EnableAsciiAll (ascii);
Simulator::Run ();

View File

@@ -147,7 +147,7 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("socket-bound-static-routing.tr");
PointToPointHelper::EnablePcapAll ("socket-bound-static-routing");
p2p.EnablePcapAll ("socket-bound-static-routing");
PointToPointHelper::EnableAsciiAll (ascii);
LogComponentEnableAll (LOG_PREFIX_TIME);

View File

@@ -163,7 +163,7 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("socket-bound-tcp-static-routing.tr");
PointToPointHelper::EnablePcapAll ("socket-bound-tcp-static-routing");
p2p.EnablePcapAll ("socket-bound-tcp-static-routing");
PointToPointHelper::EnableAsciiAll (ascii);
LogComponentEnableAll (LOG_PREFIX_TIME);

View File

@@ -102,7 +102,7 @@ main (int argc, char *argv[])
tapBridge.SetAttribute ("DeviceName", StringValue (tapName));
tapBridge.Install (nodes.Get (0), devices.Get (0));
CsmaHelper::EnablePcapAll ("tap-csma", false);
csma.EnablePcapAll ("tap-csma", false);
Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
Simulator::Stop (Seconds (60.));

View File

@@ -217,7 +217,8 @@ main (int argc, char *argv[])
apps.Start (Seconds (1.0));
wifiPhy.EnablePcapAll ("tap-wifi-dumbbell");
CsmaHelper::EnablePcapAll ("tap-wifi-dumbbell", false);
csmaRight.EnablePcapAll ("tap-wifi-dumbbell", false);
Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
Simulator::Stop (Seconds (60.));

View File

@@ -109,7 +109,7 @@ main (int argc, char *argv[])
//
// Do pcap tracing on all point-to-point devices on all nodes.
//
PointToPointHelper::EnablePcapAll ("star");
pointToPoint.EnablePcapAll ("star");
NS_LOG_INFO ("Run Simulation.");
Simulator::Run ();

View File

@@ -171,7 +171,7 @@ int main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("tcp-large-transfer.tr");
PointToPointHelper::EnableAsciiAll (ascii);
PointToPointHelper::EnablePcapAll ("tcp-large-transfer");
p2p.EnablePcapAll ("tcp-large-transfer");
// Finally, set up the simulator to run. The 1000 second hard limit is a
// failsafe in case some change above causes the simulation to never end

View File

@@ -142,7 +142,7 @@ int main (int argc, char *argv[])
MakeCallback (&CwndTracer));
// This tells ns-3 to generate pcap traces.
PointToPointHelper::EnablePcapAll ("tcp-nsc-lfn");
p2p.EnablePcapAll ("tcp-nsc-lfn");
Simulator::Stop (Seconds(900));
Simulator::Run ();

View File

@@ -134,7 +134,7 @@ int main(int argc, char *argv[])
}
}
CsmaHelper::EnablePcapAll ("tcp-nsc-zoo", false);
csma.EnablePcapAll ("tcp-nsc-zoo", false);
Simulator::Stop (Seconds(100));
Simulator::Run ();

View File

@@ -155,7 +155,7 @@ main (int argc, char *argv[])
//configure tracing
std::ofstream ascii;
ascii.open ("tcp-star-server.tr");
PointToPointHelper::EnablePcapAll ("tcp-star-server");
p2p.EnablePcapAll ("tcp-star-server");
PointToPointHelper::EnableAsciiAll (ascii);
NS_LOG_INFO ("Run Simulation.");

View File

@@ -291,7 +291,7 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("virtual-net-device.tr");
PointToPointHelper::EnablePcapAll ("virtual-net-device");
p2p.EnablePcapAll ("virtual-net-device");
PointToPointHelper::EnableAsciiAll (ascii);
NS_LOG_INFO ("Run Simulation.");

View File

@@ -103,8 +103,8 @@ main (int argc, char *argv[])
Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
PointToPointHelper::EnablePcapAll ("second");
CsmaHelper::EnablePcap ("second", csmaDevices.Get (1), true);
pointToPoint.EnablePcapAll ("second");
csma.EnablePcap ("second", csmaDevices.Get (1), true);
Simulator::Run ();
Simulator::Destroy ();

View File

@@ -162,9 +162,9 @@ main (int argc, char *argv[])
Simulator::Stop (Seconds (10.0));
PointToPointHelper::EnablePcapAll ("third");
pointToPoint.EnablePcapAll ("third");
phy.EnablePcap ("third", apDevices.Get (0));
CsmaHelper::EnablePcap ("third", csmaDevices.Get (0), true);
csma.EnablePcap ("third", csmaDevices.Get (0), true);
Simulator::Run ();
Simulator::Destroy ();

View File

@@ -120,7 +120,7 @@ main (int argc, char *argv[])
std::ofstream ascii;
ascii.open ("udp-echo.tr");
CsmaHelper::EnablePcapAll ("udp-echo", false);
csma.EnablePcapAll ("udp-echo", false);
CsmaHelper::EnableAsciiAll (ascii);
//

View File

@@ -394,7 +394,12 @@ main (int argc, char *argv[])
// Let's do a pcap trace on the application source and sink, ifIndex 0
// Csma captures in non-promiscuous mode
CsmaHelper::EnablePcap ("mixed-wireless", appSource->GetId (), 0, false);
CsmaHelper csma;
#if 0
csma.EnablePcap ("mixed-wireless", appSource->GetId (), 0, false);
#else
csma.EnablePcapAll ("mixed-wireless", false);
#endif
wifiPhy.EnablePcap ("mixed-wireless", appSink->GetId (), 0);
wifiPhy.EnablePcap ("mixed-wireless", 9, 2);
wifiPhy.EnablePcap ("mixed-wireless", 9, 0);

View File

@@ -159,8 +159,8 @@ int main (int argc, char *argv[])
// This is one parameter that matters when using FixedRssLossModel
// set it to zero; otherwise, gain will be added
wifiPhy.Set ("RxGain", DoubleValue (-10) );
// ns-3 support RadioTap and Prism tracing extensions for 802.11b
wifiPhy.SetPcapFormat (YansWifiPhyHelper::PCAP_FORMAT_80211_RADIOTAP);
// ns-3 supports RadioTap and Prism tracing extensions for 802.11b
wifiPhy.SetPcapDataLinkType (PcapHelper::DLT_IEEE802_11_RADIO);
YansWifiChannelHelper wifiChannel ;
wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");

View File

@@ -134,8 +134,8 @@ int main (int argc, char *argv[])
// This is one parameter that matters when using FixedRssLossModel
// set it to zero; otherwise, gain will be added
wifiPhy.Set ("RxGain", DoubleValue (0) );
// ns-3 support RadioTap and Prism tracing extensions for 802.11b
wifiPhy.SetPcapFormat (YansWifiPhyHelper::PCAP_FORMAT_80211_RADIOTAP);
// ns-3 supports RadioTap and Prism tracing extensions for 802.11b
wifiPhy.SetPcapDataLinkType (PcapHelper::DLT_IEEE802_11_RADIO);
YansWifiChannelHelper wifiChannel ;
wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");

View File

@@ -135,8 +135,8 @@ int main (int argc, char *argv[])
// This is one parameter that matters when using FixedRssLossModel
// set it to zero; otherwise, gain will be added
wifiPhy.Set ("RxGain", DoubleValue (0) );
// ns-3 support RadioTap and Prism tracing extensions for 802.11b
wifiPhy.SetPcapFormat (YansWifiPhyHelper::PCAP_FORMAT_80211_RADIOTAP);
// ns-3 supports RadioTap and Prism tracing extensions for 802.11b
wifiPhy.SetPcapDataLinkType (PcapHelper::DLT_IEEE802_11_RADIO);
YansWifiChannelHelper wifiChannel ;
wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");

View File

@@ -180,8 +180,8 @@ int main (int argc, char *argv[])
wifiPhy.Set ("RxGain", DoubleValue (0) );
wifiPhy.Set ("CcaMode1Threshold", DoubleValue (0.0) );
// ns-3 support RadioTap and Prism tracing extensions for 802.11b
wifiPhy.SetPcapFormat (YansWifiPhyHelper::PCAP_FORMAT_80211_RADIOTAP);
// ns-3 supports RadioTap and Prism tracing extensions for 802.11b
wifiPhy.SetPcapDataLinkType (PcapHelper::DLT_IEEE802_11_RADIO);
YansWifiChannelHelper wifiChannel ;
wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");

View File

@@ -90,7 +90,7 @@ int main (int argc, char *argv[])
double wifiX = 0.0;
YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
wifiPhy.SetPcapFormat(YansWifiPhyHelper::PCAP_FORMAT_80211_RADIOTAP);
wifiPhy.SetPcapDataLinkType (PcapHelper::DLT_IEEE802_11_RADIO);
for (uint32_t i = 0; i < nWifis; ++i)
{

View File

@@ -0,0 +1,133 @@
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2009 University of Washington
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "pcap-file-object.h"
#include "ns3/log.h"
NS_LOG_COMPONENT_DEFINE ("PcapFileObject");
namespace ns3 {
NS_OBJECT_ENSURE_REGISTERED (PcapFileObject);
TypeId
PcapFileObject::GetTypeId (void)
{
static TypeId tid = TypeId ("ns3::PcapFileObject")
.SetParent<Object> ()
.AddConstructor<PcapFileObject> ()
;
return tid;
}
PcapFileObject::PcapFileObject ()
{
}
PcapFileObject::~PcapFileObject ()
{
Close ();
}
void
PcapFileObject::Close (void)
{
file.Close ();
}
bool
PcapFileObject::Open (std::string const &filename, std::string const &mode)
{
return file.Open (filename, mode);
}
bool
PcapFileObject::Init (uint32_t dataLinkType, uint32_t snapLen, int32_t tzCorrection)
{
return file.Init (dataLinkType, snapLen, tzCorrection);
}
bool
PcapFileObject::Write (Time t, Ptr<const Packet> p)
{
uint64_t current = t.GetMicroSeconds ();
uint64_t s = current / 1000000;
uint64_t us = current % 1000000;
uint32_t bufferSize = p->GetSize ();
uint8_t *buffer = new uint8_t[bufferSize];
p->CopyData (buffer, bufferSize);
bool rc = file.Write (s, us, buffer, bufferSize);
delete [] buffer;
return rc;
}
bool
PcapFileObject::Write (Time t, uint8_t const *buffer, uint32_t length)
{
uint64_t current = t.GetMicroSeconds ();
uint64_t s = current / 1000000;
uint64_t us = current % 1000000;
return file.Write (s, us, buffer, length);
}
uint32_t
PcapFileObject::GetMagic (void)
{
return file.GetMagic ();
}
uint16_t
PcapFileObject::GetVersionMajor (void)
{
return file.GetVersionMajor ();
}
uint16_t
PcapFileObject::GetVersionMinor (void)
{
return file.GetVersionMinor ();
}
int32_t
PcapFileObject::GetTimeZoneOffset (void)
{
return file.GetTimeZoneOffset ();
}
uint32_t
PcapFileObject::GetSigFigs (void)
{
return file.GetSigFigs ();
}
uint32_t
PcapFileObject::GetSnapLen (void)
{
return file.GetSnapLen ();
}
uint32_t
PcapFileObject::GetDataLinkType (void)
{
return file.GetDataLinkType ();
}
} //namespace ns3

View File

@@ -0,0 +1,68 @@
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2009 University of Washington
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef PCAP_FILE_OBJECT_H
#define PCAP_FILE_OBJECT_H
#include <string.h>
#include "ns3/ptr.h"
#include "ns3/packet.h"
#include "ns3/nstime.h"
#include "pcap-file.h"
namespace ns3 {
/*
* A class representing a pcap file tailored for use in model code.
*/
class PcapFileObject : public Object
{
public:
static TypeId GetTypeId (void);
PcapFileObject ();
~PcapFileObject ();
bool Open (std::string const &filename, std::string const &mode);
void Close (void);
bool Init (uint32_t dataLinkType,
uint32_t snapLen = PcapFile::SNAPLEN_DEFAULT,
int32_t tzCorrection = PcapFile::ZONE_DEFAULT);
bool Write (Time t, Ptr<const Packet> p);
bool Write (Time t, uint8_t const *buffer, uint32_t length);
uint32_t GetMagic (void);
uint16_t GetVersionMajor (void);
uint16_t GetVersionMinor (void);
int32_t GetTimeZoneOffset (void);
uint32_t GetSigFigs (void);
uint32_t GetSnapLen (void);
uint32_t GetDataLinkType (void);
private:
PcapFile file;
};
} //namespace ns3
#endif // PCAP_FILE_OBJECT_H

View File

@@ -21,6 +21,7 @@ def build(bld):
'ascii-writer.cc',
'pcap-file.cc',
'pcap-file-test-suite.cc',
'pcap-file-object.cc',
]
headers = bld.new_task_gen('ns3header')
@@ -43,4 +44,5 @@ def build(bld):
'ascii-writer.h',
'sgi-hashmap.h',
'pcap-file.h',
'pcap-file-object.h',
]

View File

@@ -17,7 +17,9 @@
*
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
*/
#include "csma-helper.h"
#include "ns3/abort.h"
#include "ns3/log.h"
#include "ns3/simulator.h"
#include "ns3/object-factory.h"
#include "ns3/queue.h"
@@ -28,8 +30,14 @@
#include "ns3/names.h"
#include "ns3/pcap-writer.h"
#include "ns3/ascii-writer.h"
#include "pcap-helper.h"
#include "csma-helper.h"
#include <string>
NS_LOG_COMPONENT_DEFINE ("CsmaHelper");
namespace ns3 {
CsmaHelper::CsmaHelper ()
@@ -66,75 +74,31 @@ CsmaHelper::SetChannelAttribute (std::string n1, const AttributeValue &v1)
}
void
CsmaHelper::EnablePcap (std::string filename, uint32_t nodeid, uint32_t deviceid, bool promiscuous)
CsmaHelper::EnablePcapInternal (std::string prefix, Ptr<NetDevice> nd, bool promiscuous)
{
std::ostringstream oss;
oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::CsmaNetDevice/";
Config::MatchContainer matches = Config::LookupMatches (oss.str ());
if (matches.GetN () == 0)
//
// All of the Pcap enable functions vector through here including the ones
// that are wandering through all of devices on perhaps all of the nodes in
// the system. We can only deal with devices of type CsmaNetDevice.
//
Ptr<CsmaNetDevice> device = nd->GetObject<CsmaNetDevice> ();
if (device == 0)
{
NS_LOG_INFO ("CsmaHelper::EnablePcapInternal(): Device " << device << " not of type ns3::CsmaNetDevice");
return;
}
oss.str ("");
oss << filename << "-" << nodeid << "-" << deviceid << ".pcap";
Ptr<PcapWriter> pcap = CreateObject<PcapWriter> ();
pcap->Open (oss.str ());
pcap->WriteEthernetHeader ();
oss.str ("");
oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid;
PcapHelper pcapHelper;
std::string filename = pcapHelper.GetFilename (prefix, device);
Ptr<PcapFileObject> file = pcapHelper.CreateFile (filename, "w", PcapHelper::DLT_EN10MB);
if (promiscuous)
{
oss << "/$ns3::CsmaNetDevice/PromiscSniffer";
pcapHelper.HookDefaultSink<CsmaNetDevice> (device, "PromiscSniffer", file);
}
else
{
oss << "/$ns3::CsmaNetDevice/Sniffer";
pcapHelper.HookDefaultSink<CsmaNetDevice> (device, "Sniffer", file);
}
Config::ConnectWithoutContext (oss.str (), MakeBoundCallback (&CsmaHelper::SniffEvent, pcap));
}
void
CsmaHelper::EnablePcap (std::string filename, NetDeviceContainer d, bool promiscuous)
{
for (NetDeviceContainer::Iterator i = d.Begin (); i != d.End (); ++i)
{
Ptr<NetDevice> dev = *i;
EnablePcap (filename, dev->GetNode ()->GetId (), dev->GetIfIndex (), promiscuous);
}
}
void
CsmaHelper::EnablePcap (std::string filename, Ptr<NetDevice> nd, bool promiscuous)
{
EnablePcap (filename, nd->GetNode ()->GetId (), nd->GetIfIndex (), promiscuous);
}
void
CsmaHelper::EnablePcap (std::string filename, std::string ndName, bool promiscuous)
{
Ptr<NetDevice> nd = Names::Find<NetDevice> (ndName);
EnablePcap (filename, nd->GetNode ()->GetId (), nd->GetIfIndex (), promiscuous);
}
void
CsmaHelper::EnablePcap (std::string filename, NodeContainer n, bool promiscuous)
{
NetDeviceContainer devs;
for (NodeContainer::Iterator i = n.Begin (); i != n.End (); ++i)
{
Ptr<Node> node = *i;
for (uint32_t j = 0; j < node->GetNDevices (); ++j)
{
devs.Add (node->GetDevice (j));
}
}
EnablePcap (filename, devs, promiscuous);
}
void
CsmaHelper::EnablePcapAll (std::string filename, bool promiscuous)
{
EnablePcap (filename, NodeContainer::GetGlobal (), promiscuous);
}
void
@@ -268,12 +232,6 @@ CsmaHelper::InstallPriv (Ptr<Node> node, Ptr<CsmaChannel> channel) const
return device;
}
void
CsmaHelper::SniffEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet)
{
writer->WritePacket (packet);
}
void
CsmaHelper::AsciiEnqueueEvent (Ptr<AsciiWriter> writer, std::string path, Ptr<const Packet> packet)
{

View File

@@ -21,6 +21,7 @@
#define CSMA_HELPER_H
#include <string>
#include "ns3/attribute.h"
#include "ns3/object-factory.h"
#include "ns3/net-device-container.h"
@@ -28,16 +29,17 @@
#include "ns3/csma-channel.h"
#include "ns3/deprecated.h"
#include "pcap-user-helper.h"
namespace ns3 {
class Packet;
class PcapWriter;
class AsciiWriter;
/**
* \brief build a set of CsmaNetDevice objects
*/
class CsmaHelper
class CsmaHelper : public PcapUserHelper
{
public:
/**
@@ -83,67 +85,6 @@ public:
*/
void SetChannelAttribute (std::string n1, const AttributeValue &v1);
/**
* \param filename filename prefix to use for pcap files.
* \param nodeid the id of the node to generate pcap output for.
* \param deviceid the id of the device to generate pcap output for.
* \param promiscuous If true capture all possible packets available at the device.
*
* Generate a pcap file which contains the link-level data observed
* by the specified deviceid within the specified nodeid. The pcap
* data is stored in the file prefix-nodeid-deviceid.pcap.
*
* This method should be invoked after the network topology has
* been fully constructed.
*/
static void EnablePcap (std::string filename, uint32_t nodeid, uint32_t deviceid, bool promiscuous);
/**
* \param filename filename prefix to use for pcap files.
* \param nd Net device in which you want to enable tracing.
* \param promiscuous If true capture all possible packets available at the device.
*
* Enable pcap output the indicated net device.
*/
static void EnablePcap (std::string filename, Ptr<NetDevice> nd, bool promiscuous);
/**
* \param filename filename prefix to use for pcap files.
* \param ndName The name of the net device in which you want to enable tracing.
* \param promiscuous If true capture all possible packets available at the device.
*
* Enable pcap output the indicated net device.
*/
static void EnablePcap (std::string filename, std::string ndName, bool promiscuous);
/**
* \param filename filename prefix to use for pcap files.
* \param d container of devices of type ns3::CsmaNetDevice
* \param promiscuous If true capture all possible packets available at the device.
*
* Enable pcap output on each input device which is of the ns3::CsmaNetDevice type.
*/
static void EnablePcap (std::string filename, NetDeviceContainer d, bool promiscuous);
/**
* \param filename filename prefix to use for pcap files.
* \param n container of nodes.
* \param promiscuous If true capture all possible packets available at the device.
*
* Enable pcap output on each device which is of the
* ns3::CsmaNetDevice type and which is located in one of the
* input nodes.
*/
static void EnablePcap (std::string filename, NodeContainer n, bool promiscuous);
/**
* \param filename filename prefix to use for pcap files.
* \param promiscuous If true capture all possible packets available at the device.
*
* Enable pcap output on each device which is of the
* ns3::CsmaNetDevice type
*/
static void EnablePcapAll (std::string filename, bool promiscuous);
/**
* \param os output stream
* \param nodeid the id of the node to generate ascii output for.
@@ -291,10 +232,17 @@ private:
*/
Ptr<NetDevice> InstallPriv (Ptr<Node> node, Ptr<CsmaChannel> channel) const;
/*
* \internal
/**
* \brief Enable pcap output the indicated net device.
*
* NetDevice-specific implementation mechanism for hooking the trace and
* writing to the trace file.
*
* \param prefix Filename prefix to use for pcap files.
* \param nd Net device for which you want to enable tracing.
* \param promiscuous If true capture all possible packets available at the device.
*/
static void SniffEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet);
virtual void EnablePcapInternal (std::string prefix, Ptr<NetDevice> nd, bool promiscuous = false);
static void AsciiRxEvent (Ptr<AsciiWriter> writer, std::string path, Ptr<const Packet> packet);
/*

View File

@@ -29,6 +29,7 @@
#include "ns3/config.h"
#include "ns3/packet.h"
#include "pcap-helper.h"
#include "emu-helper.h"
NS_LOG_COMPONENT_DEFINE ("EmuHelper");
@@ -66,75 +67,31 @@ EmuHelper::SetAttribute (std::string n1, const AttributeValue &v1)
}
void
EmuHelper::EnablePcap (std::string filename, uint32_t nodeid, uint32_t deviceid, bool promiscuous)
EmuHelper::EnablePcapInternal (std::string prefix, Ptr<NetDevice> nd, bool promiscuous)
{
NS_LOG_FUNCTION (filename << nodeid << deviceid << promiscuous);
std::ostringstream oss;
oss << filename << "-" << nodeid << "-" << deviceid << ".pcap";
Ptr<PcapWriter> pcap = CreateObject<PcapWriter> ();
pcap->Open (oss.str ());
pcap->WriteEthernetHeader ();
//
// All of the Pcap enable functions vector through here including the ones
// that are wandering through all of devices on perhaps all of the nodes in
// the system. We can only deal with devices of type EmuNetDevice.
//
Ptr<EmuNetDevice> device = nd->GetObject<EmuNetDevice> ();
if (device == 0)
{
NS_LOG_INFO ("EmuHelper::EnablePcapInternal(): Device " << device << " not of type ns3::EmuNetDevice");
return;
}
oss.str ("");
oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid;
PcapHelper pcapHelper;
std::string filename = pcapHelper.GetFilename (prefix, device);
Ptr<PcapFileObject> file = pcapHelper.CreateFile (filename, "w", PcapHelper::DLT_EN10MB);
if (promiscuous)
{
oss << "/$ns3::EmuNetDevice/PromiscSniffer";
pcapHelper.HookDefaultSink<EmuNetDevice> (device, "PromiscSniffer", file);
}
else
{
oss << "/$ns3::EmuNetDevice/Sniffer";
pcapHelper.HookDefaultSink<EmuNetDevice> (device, "Sniffer", file);
}
Config::ConnectWithoutContext (oss.str (), MakeBoundCallback (&EmuHelper::SniffEvent, pcap));
}
void
EmuHelper::EnablePcap (std::string filename, Ptr<NetDevice> nd, bool promiscuous)
{
NS_LOG_FUNCTION (filename << &nd << promiscuous);
EnablePcap (filename, nd->GetNode ()->GetId (), nd->GetIfIndex (), promiscuous);
}
void
EmuHelper::EnablePcap (std::string filename, std::string ndName, bool promiscuous)
{
NS_LOG_FUNCTION (filename << ndName << promiscuous);
Ptr<NetDevice> nd = Names::Find<NetDevice> (ndName);
EnablePcap (filename, nd->GetNode ()->GetId (), nd->GetIfIndex (), promiscuous);
}
void
EmuHelper::EnablePcap (std::string filename, NetDeviceContainer d, bool promiscuous)
{
NS_LOG_FUNCTION (filename << &d << promiscuous);
for (NetDeviceContainer::Iterator i = d.Begin (); i != d.End (); ++i)
{
Ptr<NetDevice> dev = *i;
EnablePcap (filename, dev->GetNode ()->GetId (), dev->GetIfIndex (), promiscuous);
}
}
void
EmuHelper::EnablePcap (std::string filename, NodeContainer n, bool promiscuous)
{
NS_LOG_FUNCTION (filename << &n << promiscuous);
NetDeviceContainer devs;
for (NodeContainer::Iterator i = n.Begin (); i != n.End (); ++i)
{
Ptr<Node> node = *i;
for (uint32_t j = 0; j < node->GetNDevices (); ++j)
{
devs.Add (node->GetDevice (j));
}
}
EnablePcap (filename, devs, promiscuous);
}
void
EmuHelper::EnablePcapAll (std::string filename, bool promiscuous)
{
NS_LOG_FUNCTION (filename << promiscuous);
EnablePcap (filename, NodeContainer::GetGlobal (), promiscuous);
}
void
@@ -233,13 +190,6 @@ EmuHelper::InstallPriv (Ptr<Node> node) const
return device;
}
void
EmuHelper::SniffEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet)
{
NS_LOG_FUNCTION (writer << packet);
writer->WritePacket (packet);
}
void
EmuHelper::AsciiEnqueueEvent (Ptr<AsciiWriter> writer,
std::string path,

View File

@@ -21,12 +21,15 @@
#include <string>
#include <ostream>
#include "ns3/attribute.h"
#include "ns3/object-factory.h"
#include "ns3/net-device-container.h"
#include "ns3/node-container.h"
#include "ns3/emu-net-device.h"
#include "pcap-user-helper.h"
namespace ns3 {
class Packet;
@@ -36,7 +39,7 @@ class AsciiWriter;
/**
* \brief build a set of EmuNetDevice objects
*/
class EmuHelper
class EmuHelper : public PcapUserHelper
{
public:
/*
@@ -74,71 +77,6 @@ public:
*/
void SetAttribute (std::string n1, const AttributeValue &v1);
/**
* \param filename filename prefix to use for pcap files.
* \param nodeid the id of the node to generate pcap output for.
* \param deviceid the id of the device to generate pcap output for.
* \param promiscuous If true capture all possible packets available at the device.
*
* Generate a pcap file which contains the link-level data observed
* by the specified deviceid within the specified nodeid. The pcap
* data is stored in the file prefix-nodeid-deviceid.pcap.
*
* This method should be invoked after the network topology has
* been fully constructed.
*/
static void EnablePcap (std::string filename, uint32_t nodeid, uint32_t deviceid, bool promiscuous);
/**
* \param filename filename prefix to use for pcap files.
* \param nd Indicates net device on which you want to enable tracing.
* \param promiscuous If true capture all possible packets available at the device.
*
* Enable pcap output on each input device which is of the
* ns3::EmuNetDevice type.
*/
static void EnablePcap (std::string filename, Ptr<NetDevice> nd, bool promiscuous);
/**
* \param filename filename prefix to use for pcap files.
* \param ndName Name of net device on which you want to enable tracing.
* \param promiscuous If true capture all possible packets available at the device.
*
* Enable pcap output on each input device which is of the
* ns3::EmuNetDevice type.
*/
static void EnablePcap (std::string filename, std::string ndName, bool promiscuous);
/**
* \param filename filename prefix to use for pcap files.
* \param d container of devices of type ns3::EmuNetDevice
* \param promiscuous If true capture all possible packets available at the device.
*
* Enable pcap output on each input device which is of the
* ns3::EmuNetDevice type.
*/
static void EnablePcap (std::string filename, NetDeviceContainer d, bool promiscuous);
/**
* \param filename filename prefix to use for pcap files.
* \param n container of nodes.
* \param promiscuous If true capture all possible packets available at the device.
*
* Enable pcap output on each device which is of the
* ns3::EmuNetDevice type and which is located in one of the
* input nodes.
*/
static void EnablePcap (std::string filename, NodeContainer n, bool promiscuous);
/**
* \param filename filename prefix to use for pcap files.
* \param promiscuous If true capture all possible packets available at the device.
*
* Enable pcap output on each device which is of the
* ns3::EmuNetDevice type
*/
static void EnablePcapAll (std::string filename, bool promiscuous);
/**
* \param os output stream
* \param nodeid the id of the node to generate ascii output for.
@@ -215,10 +153,17 @@ private:
*/
Ptr<NetDevice> InstallPriv (Ptr<Node> node) const;
/*
* \internal
/**
* \brief Enable pcap output the indicated net device.
*
* NetDevice-specific implementation mechanism for hooking the trace and
* writing to the trace file.
*
* \param prefix Filename prefix to use for pcap files.
* \param nd Net device for which you want to enable tracing.
* \param promiscuous If true capture all possible packets available at the device.
*/
static void SniffEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet);
virtual void EnablePcapInternal (std::string prefix, Ptr<NetDevice> nd, bool promiscuous = false);
/*
* \internal

135
src/helper/pcap-helper.cc Normal file
View File

@@ -0,0 +1,135 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2009 University of Washington
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <stdint.h>
#include <stdint.h>
#include <string>
#include "ns3/abort.h"
#include "ns3/assert.h"
#include "ns3/log.h"
#include "ns3/ptr.h"
#include "ns3/node.h"
#include "ns3/names.h"
#include "ns3/net-device.h"
#include "ns3/pcap-file-object.h"
#include "pcap-helper.h"
NS_LOG_COMPONENT_DEFINE("PcapHelper");
namespace ns3 {
PcapHelper::PcapHelper ()
{
NS_LOG_FUNCTION_NOARGS ();
}
PcapHelper::~PcapHelper ()
{
NS_LOG_FUNCTION_NOARGS ();
}
Ptr<PcapFileObject>
PcapHelper::CreateFile (
std::string filename,
std::string filemode,
uint32_t dataLinkType,
uint32_t snapLen,
int32_t tzCorrection)
{
NS_LOG_FUNCTION (filename << filemode << dataLinkType << snapLen << tzCorrection);
Ptr<PcapFileObject> file = CreateObject<PcapFileObject> ();
bool err = file->Open (filename, filemode);
NS_ABORT_MSG_IF (err, "Unable to Open " << filename << " for mode " << filemode);
err = file->Init (dataLinkType, snapLen, tzCorrection);
NS_ABORT_MSG_IF (err, "Unable to Init " << filename);
//
// Note that the pcap helper promptly forgets all about the pcap file. We
// rely on the reference count of the file object which will soon be owned
// by the caller to keep the object alive. If the caller uses the file
// object to hook a trace source, ownership of the file object will be
// implicitly transferred to the callback which keeps the object alive.
// When the callback is destroyed (when either the trace is disconnected or
// the object with the trace source is deleted) the callback will be destroyed
// and the file object will be destroyed, releasing the pointer and closing
// the file.
//
return file;
}
std::string
PcapHelper::GetFilename (std::string prefix, Ptr<NetDevice> device, bool useObjectNames)
{
NS_LOG_FUNCTION (prefix << device << useObjectNames);
NS_ABORT_MSG_UNLESS (prefix.size (), "Empty prefix string");
std::ostringstream oss;
oss << prefix << "-";
std::string nodename;
std::string devicename;
Ptr<Node> node = device->GetNode ();
if (useObjectNames)
{
nodename = Names::FindName (node);
devicename = Names::FindName (device);
}
if (nodename.size ())
{
oss << nodename;
}
else
{
oss << node->GetId ();
}
oss << "-";
if (devicename.size ())
{
oss << devicename;
}
else
{
oss << device->GetIfIndex ();
}
oss << ".pcap";
return oss.str ();
}
//
// The basic default trace sink. This one just writes the packet to the pcap
// file which is good enough for most kinds of captures.
//
void
PcapHelper::DefaultSink (Ptr<PcapFileObject> file, Ptr<const Packet> p)
{
NS_LOG_FUNCTION (file << p);
file->Write(Simulator::Now(), p);
}
} // namespace ns3

90
src/helper/pcap-helper.h Normal file
View File

@@ -0,0 +1,90 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2009 University of Washington
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef PCAP_HELPER_H
#define PCAP_HELPER_H
#include "ns3/net-device-container.h"
#include "ns3/node-container.h"
#include "ns3/simulator.h"
#include "ns3/pcap-file-object.h"
namespace ns3 {
/**
* \brief Manage pcap files for device models
*
* Handling pcap files is a common operation for ns-3 devices. It is useful to
* provide a common base class for dealing with these ops.
*/
class PcapHelper
{
public:
//
// These are the data link types that will be written to the pcap file. We
// don't include pcap-bpf.h to avoid an explicit dependency on the real pcap
// and we don't make an enumeration of all of the values to make it easy to
// pass new values in.
//
enum {DLT_NULL = 0};
enum {DLT_EN10MB = 1};
enum {DLT_PPP = 9};
enum {DLT_IEEE802_11 = 105};
enum {DLT_PRISM_HEADER = 119};
enum {DLT_IEEE802_11_RADIO = 127};
/**
* @brief Create a pcap helper.
*/
PcapHelper ();
/**
* @brief Destroy a pcap helper.
*/
~PcapHelper ();
/**
* @brief Let the pcap helper figure out a reasonable filename to use for the
* pcap file.
*/
std::string GetFilename (std::string prefix, Ptr<NetDevice> device, bool useObjectNames = true);
/**
* @brief Create and initialize a pcap file.
*/
Ptr<PcapFileObject> CreateFile (std::string filename, std::string filemode,
uint32_t dataLinkType, uint32_t snapLen = 65535, int32_t tzCorrection = 0);
/**
* @brief Hook a trace source to the default trace sink
*/
template <typename T> void HookDefaultSink (Ptr<T> object, std::string traceName, Ptr<PcapFileObject> file);
private:
static void DefaultSink (Ptr<PcapFileObject> file, Ptr<const Packet> p);
};
template <typename T> void
PcapHelper::HookDefaultSink (Ptr<T> object, std::string tracename, Ptr<PcapFileObject> file)
{
object->TraceConnectWithoutContext (tracename.c_str (), MakeBoundCallback (&DefaultSink, file));
}
} // namespace ns3
#endif /* PCAP_HELPER_H */

View File

@@ -0,0 +1,90 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2009 University of Washington
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "ns3/abort.h"
#include "ns3/names.h"
#include "pcap-user-helper.h"
namespace ns3 {
void
PcapUserHelper::EnablePcap (std::string prefix, Ptr<NetDevice> nd, bool promiscuous)
{
EnablePcapInternal (prefix, nd, promiscuous);
}
void
PcapUserHelper::EnablePcap (std::string prefix, std::string ndName, bool promiscuous)
{
Ptr<NetDevice> nd = Names::Find<NetDevice> (ndName);
EnablePcap (prefix, nd, promiscuous);
}
void
PcapUserHelper::EnablePcap (std::string prefix, NetDeviceContainer d, bool promiscuous)
{
for (NetDeviceContainer::Iterator i = d.Begin (); i != d.End (); ++i)
{
Ptr<NetDevice> dev = *i;
EnablePcap (prefix, dev, promiscuous);
}
}
void
PcapUserHelper::EnablePcap (std::string prefix, NodeContainer n, bool promiscuous)
{
NetDeviceContainer devs;
for (NodeContainer::Iterator i = n.Begin (); i != n.End (); ++i)
{
Ptr<Node> node = *i;
for (uint32_t j = 0; j < node->GetNDevices (); ++j)
{
devs.Add (node->GetDevice (j));
}
}
EnablePcap (prefix, devs, promiscuous);
}
void
PcapUserHelper::EnablePcapAll (std::string prefix, bool promiscuous)
{
EnablePcap (prefix, NodeContainer::GetGlobal (), promiscuous);
}
void
PcapUserHelper::EnablePcap (std::string prefix, uint32_t nodeid, uint32_t deviceid, bool promiscuous)
{
NodeContainer n = NodeContainer::GetGlobal ();
for (NodeContainer::Iterator i = n.Begin (); i != n.End (); ++i)
{
Ptr<Node> node = *i;
if (node->GetId () != nodeid)
{
continue;
}
NS_ABORT_MSG_IF (deviceid >= node->GetNDevices (), "PcapUserHelper::EnablePcap(): Unknown deviceid = " << deviceid);
Ptr<NetDevice> nd = node->GetDevice (deviceid);
EnablePcap (prefix, nd, promiscuous);
return;
}
}
} // namespace ns3

View File

@@ -0,0 +1,104 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2009 University of Washington
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef PCAP_USER_HELPER_H
#define PCAP_USER_HELPER_H
#include <string>
#include "ns3/net-device-container.h"
#include "ns3/node-container.h"
namespace ns3 {
/**
* \brief Base class providing common pcap operations.
*/
class PcapUserHelper
{
public:
/**
* @brief Enable pcap output the indicated net device.
* @internal
*
* @param prefix Filename prefix to use for pcap files.
* @param nd Net device for which you want to enable tracing.
* @param promiscuous If true capture all possible packets available at the device.
*/
virtual void EnablePcapInternal (std::string prefix, Ptr<NetDevice> nd, bool promiscuous) = 0;
/**
* @brief Enable pcap output the indicated net device.
*
* @param prefix Filename prefix to use for pcap files.
* @param nd Net device for which you want to enable tracing.
* @param promiscuous If true capture all possible packets available at the device.
*/
void EnablePcap (std::string prefix, Ptr<NetDevice> nd, bool promiscuous = false);
/**
* @brief Enable pcap output the indicated net device using a device previously
* named using the ns-3 object name service.
*
* @param filename filename prefix to use for pcap files.
* @param ndName The name of the net device in which you want to enable tracing.
* @param promiscuous If true capture all possible packets available at the device.
*/
void EnablePcap (std::string prefix, std::string ndName, bool promiscuous = false);
/**
* @brief Enable pcap output on each device in the container which is of the
* appropriate type.
*
* @param prefix Filename prefix to use for pcap files.
* @param d container of devices of type ns3::CsmaNetDevice
* @param promiscuous If true capture all possible packets available at the device.
*/
void EnablePcap (std::string prefix, NetDeviceContainer d, bool promiscuous = false);
/**
* @brief Enable pcap output on each device (which is of the appropriate type)
* in the nodes provided in the container.
*
* \param prefix Filename prefix to use for pcap files.
* \param n container of nodes.
* \param promiscuous If true capture all possible packets available at the device.
*/
void EnablePcap (std::string prefix, NodeContainer n, 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.
*
* @param prefix Filename prefix to use for pcap files.
* @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);
};
} // namespace ns3
#endif // PCAP_USER_HELPER_H

View File

@@ -17,7 +17,9 @@
*
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
*/
#include "point-to-point-helper.h"
#include "ns3/abort.h"
#include "ns3/log.h"
#include "ns3/simulator.h"
#include "ns3/point-to-point-net-device.h"
#include "ns3/point-to-point-channel.h"
@@ -28,8 +30,12 @@
#include "ns3/pcap-writer.h"
#include "ns3/ascii-writer.h"
namespace ns3 {
#include "pcap-helper.h"
#include "point-to-point-helper.h"
NS_LOG_COMPONENT_DEFINE ("PointToPointHelper");
namespace ns3 {
PointToPointHelper::PointToPointHelper ()
{
@@ -65,68 +71,24 @@ PointToPointHelper::SetChannelAttribute (std::string n1, const AttributeValue &v
}
void
PointToPointHelper::EnablePcap (std::string filename, uint32_t nodeid, uint32_t deviceid)
PointToPointHelper::EnablePcapInternal (std::string prefix, Ptr<NetDevice> nd, bool promiscuous)
{
std::ostringstream oss;
oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::PointToPointNetDevice/";
Config::MatchContainer matches = Config::LookupMatches (oss.str ());
if (matches.GetN () == 0)
//
// All of the Pcap enable functions vector through here including the ones
// that are wandering through all of devices on perhaps all of the nodes in
// the system. We can only deal with devices of type PointToPointNetDevice.
//
Ptr<PointToPointNetDevice> device = nd->GetObject<PointToPointNetDevice> ();
if (device == 0)
{
NS_LOG_INFO ("PointToPointHelper::EnablePcapInternal(): Device " << device << " not of type ns3::PointToPointNetDevice");
return;
}
oss.str ("");
oss << filename << "-" << nodeid << "-" << deviceid << ".pcap";
Ptr<PcapWriter> pcap = CreateObject<PcapWriter> ();
pcap->Open (oss.str ());
pcap->WritePppHeader ();
oss.str ("");
oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid;
oss << "/$ns3::PointToPointNetDevice/PromiscSniffer";
Config::ConnectWithoutContext (oss.str (), MakeBoundCallback (&PointToPointHelper::SniffEvent, pcap));
}
void
PointToPointHelper::EnablePcap (std::string filename, Ptr<NetDevice> nd)
{
EnablePcap (filename, nd->GetNode ()->GetId (), nd->GetIfIndex ());
}
void
PointToPointHelper::EnablePcap (std::string filename, std::string ndName)
{
Ptr<NetDevice> nd = Names::Find<NetDevice> (ndName);
EnablePcap (filename, nd->GetNode ()->GetId (), nd->GetIfIndex ());
}
void
PointToPointHelper::EnablePcap (std::string filename, NetDeviceContainer d)
{
for (NetDeviceContainer::Iterator i = d.Begin (); i != d.End (); ++i)
{
Ptr<NetDevice> dev = *i;
EnablePcap (filename, dev->GetNode ()->GetId (), dev->GetIfIndex ());
}
}
void
PointToPointHelper::EnablePcap (std::string filename, NodeContainer n)
{
NetDeviceContainer devs;
for (NodeContainer::Iterator i = n.Begin (); i != n.End (); ++i)
{
Ptr<Node> node = *i;
for (uint32_t j = 0; j < node->GetNDevices (); ++j)
{
devs.Add (node->GetDevice (j));
}
}
EnablePcap (filename, devs);
}
void
PointToPointHelper::EnablePcapAll (std::string filename)
{
EnablePcap (filename, NodeContainer::GetGlobal ());
PcapHelper pcapHelper;
std::string filename = pcapHelper.GetFilename (prefix, device);
Ptr<PcapFileObject> file = pcapHelper.CreateFile (filename, "w", PcapHelper::DLT_PPP);
pcapHelper.HookDefaultSink<PointToPointNetDevice> (device, "PromiscSniffer", file);
}
void
@@ -232,12 +194,6 @@ PointToPointHelper::Install (std::string aName, std::string bName)
return Install (a, b);
}
void
PointToPointHelper::SniffEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet)
{
writer->WritePacket (packet);
}
void
PointToPointHelper::AsciiEnqueueEvent (Ptr<AsciiWriter> writer, std::string path,
Ptr<const Packet> packet)

View File

@@ -24,6 +24,7 @@
#include "ns3/net-device-container.h"
#include "ns3/node-container.h"
#include "ns3/deprecated.h"
#include "pcap-user-helper.h"
#include <string>
namespace ns3 {
@@ -37,7 +38,7 @@ class AsciiWriter;
/**
* \brief Build a set of PointToPointNetDevice objects
*/
class PointToPointHelper
class PointToPointHelper : public PcapUserHelper
{
public:
/**
@@ -94,66 +95,6 @@ public:
*/
void SetChannelAttribute (std::string name, const AttributeValue &value);
/**
* \param filename filename prefix to use for pcap files.
* \param nodeid the id of the node to generate pcap output for.
* \param deviceid the id of the device to generate pcap output for.
*
* Generate a pcap file which contains the link-level data observed
* by the specified deviceid within the specified nodeid. The pcap
* data is stored in the file prefix-nodeid-deviceid.pcap.
*
* This method should be invoked after the network topology has
* been fully constructed.
*/
static void EnablePcap (std::string filename, uint32_t nodeid, uint32_t deviceid);
/**
* \param filename filename prefix to use for pcap files.
* \param nd Net device on which you want to enable tracing.
*
* Enable pcap output on each input device which is of the
* ns3::PointToPointNetDevice type.
*/
static void EnablePcap (std::string filename, Ptr<NetDevice> nd);
/**
* \param filename filename prefix to use for pcap files.
* \param ndName Name of net device on which you want to enable tracing.
*
* Enable pcap output on each input device which is of the
* ns3::PointToPointNetDevice type.
*/
static void EnablePcap (std::string filename, std::string ndName);
/**
* \param filename filename prefix to use for pcap files.
* \param d container of devices of type ns3::PointToPointNetDevice
*
* Enable pcap output on each input device which is of the
* ns3::PointToPointNetDevice type.
*/
static void EnablePcap (std::string filename, NetDeviceContainer d);
/**
* \param filename filename prefix to use for pcap files.
* \param n container of nodes.
*
* Enable pcap output on each device which is of the
* ns3::PointToPointNetDevice type and which is located in one of the
* input nodes.
*/
static void EnablePcap (std::string filename, NodeContainer n);
/**
* \param filename filename prefix to use for pcap files.
*
* Enable pcap output on each device which is of the
* ns3::PointToPointNetDevice type
*/
static void EnablePcapAll (std::string filename);
/**
* \param os output stream
* \param nodeid the id of the node to generate ascii output for.
@@ -241,8 +182,17 @@ public:
NetDeviceContainer Install (std::string aNode, std::string bNode);
private:
void EnablePcap (Ptr<Node> node, Ptr<NetDevice> device, Ptr<Queue> queue);
static void SniffEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet);
/**
* \brief Enable pcap output the indicated net device.
*
* NetDevice-specific implementation mechanism for hooking the trace and
* writing to the trace file.
*
* \param prefix Filename prefix to use for pcap files.
* \param nd Net device for which you want to enable tracing.
* \param promiscuous If true capture all possible packets available at the device.
*/
virtual void EnablePcapInternal (std::string prefix, Ptr<NetDevice> nd, bool promiscuous = false);
void EnableAscii (Ptr<Node> node, Ptr<NetDevice> device);
static void AsciiRxEvent (Ptr<AsciiWriter> writer, std::string path, Ptr<const Packet> packet);

View File

@@ -48,6 +48,8 @@ def build(bld):
'point-to-point-star-helper.cc',
'csma-star-helper.cc',
'udp-client-server-helper.cc',
'pcap-helper.cc',
'pcap-user-helper.cc',
]
headers = bld.new_task_gen('ns3header')
@@ -99,6 +101,8 @@ def build(bld):
'point-to-point-star-helper.h',
'csma-star-helper.h',
'udp-client-server-helper.h',
'pcap-helper.h',
'pcap-user-helper.h',
]
env = bld.env_of_name('default')

View File

@@ -17,6 +17,8 @@
*
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
*/
#include "pcap-helper.h"
#include "pcap-user-helper.h"
#include "yans-wifi-helper.h"
#include "ns3/error-rate-model.h"
#include "ns3/propagation-loss-model.h"
@@ -24,29 +26,20 @@
#include "ns3/yans-wifi-channel.h"
#include "ns3/yans-wifi-phy.h"
#include "ns3/wifi-net-device.h"
#include "ns3/radiotap-header.h"
#include "ns3/pcap-writer.h"
#include "ns3/ascii-writer.h"
#include "ns3/pcap-file-object.h"
#include "ns3/simulator.h"
#include "ns3/config.h"
#include "ns3/names.h"
#include "ns3/abort.h"
#include "ns3/log.h"
NS_LOG_COMPONENT_DEFINE ("YansWifiHelper");
namespace ns3 {
static void PcapSniffTxEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet, uint16_t channelFreqMhz, uint16_t channelNumber,
uint32_t rate, bool isShortPreamble)
{
const double unusedValue = 0;
writer->WriteWifiMonitorPacket(packet, channelFreqMhz, channelNumber, rate, isShortPreamble, true, unusedValue, unusedValue);
}
static void PcapSniffRxEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet, uint16_t channelFreqMhz, uint16_t channelNumber,
uint32_t rate, bool isShortPreamble, double signalDbm, double noiseDbm)
{
writer->WriteWifiMonitorPacket(packet, channelFreqMhz, channelNumber, rate, isShortPreamble, false, signalDbm, noiseDbm);
}
static void AsciiPhyTxEvent (Ptr<AsciiWriter> writer, std::string path,
Ptr<const Packet> packet,
WifiMode mode, WifiPreamble preamble,
@@ -149,8 +142,7 @@ YansWifiChannelHelper::Create (void) const
YansWifiPhyHelper::YansWifiPhyHelper ()
: m_channel (0),
m_pcapFormat(PCAP_FORMAT_80211)
m_pcapDlt(PcapHelper::DLT_IEEE802_11)
{
m_phy.SetTypeId ("ns3::YansWifiPhy");
}
@@ -215,94 +207,177 @@ YansWifiPhyHelper::Create (Ptr<Node> node, Ptr<WifiNetDevice> device) const
return phy;
}
static void
PcapSniffTxEvent (
Ptr<PcapFileObject> file,
Ptr<const Packet> packet,
uint16_t channelFreqMhz,
uint16_t channelNumber,
uint32_t rate,
bool isShortPreamble)
{
uint32_t dlt = file->GetDataLinkType ();
switch (dlt)
{
case PcapHelper::DLT_IEEE802_11:
file->Write (Simulator::Now (), packet);
return;
case PcapHelper::DLT_PRISM_HEADER:
{
NS_FATAL_ERROR ("PcapSniffTxEvent(): DLT_PRISM_HEADER not implemented");
return;
}
case PcapHelper::DLT_IEEE802_11_RADIO:
{
Ptr<Packet> p = packet->Copy ();
RadiotapHeader header;
header.SetTsft (Simulator::Now ().GetMicroSeconds ());
if (isShortPreamble)
{
header.SetFrameFlags (RadiotapHeader::FRAME_FLAG_SHORT_PREAMBLE);
}
else
{
header.SetFrameFlags (RadiotapHeader::FRAME_FLAG_NONE);
}
header.SetRate (rate);
if (channelFreqMhz < 2500)
{
header.SetChannelFrequencyAndFlags (channelFreqMhz,
RadiotapHeader::CHANNEL_FLAG_SPECTRUM_2GHZ | RadiotapHeader::CHANNEL_FLAG_CCK);
}
else
{
header.SetChannelFrequencyAndFlags (channelFreqMhz,
RadiotapHeader::CHANNEL_FLAG_SPECTRUM_5GHZ | RadiotapHeader::CHANNEL_FLAG_OFDM);
}
p->AddHeader (header);
file->Write (Simulator::Now (), p);
return;
}
default:
NS_ABORT_MSG ("PcapSniffTxEvent(): Unexpected data link type " << dlt);
}
}
static void
PcapSniffRxEvent (
Ptr<PcapFileObject> file,
Ptr<const Packet> packet,
uint16_t channelFreqMhz,
uint16_t channelNumber,
uint32_t rate,
bool isShortPreamble,
double signalDbm,
double noiseDbm)
{
uint32_t dlt = file->GetDataLinkType ();
switch (dlt)
{
case PcapHelper::DLT_IEEE802_11:
file->Write (Simulator::Now (), packet);
return;
case PcapHelper::DLT_PRISM_HEADER:
{
NS_FATAL_ERROR ("PcapSniffRxEvent(): DLT_PRISM_HEADER not implemented");
return;
}
case PcapHelper::DLT_IEEE802_11_RADIO:
{
Ptr<Packet> p = packet->Copy ();
RadiotapHeader header;
header.SetTsft (Simulator::Now ().GetMicroSeconds ());
if (isShortPreamble)
{
header.SetFrameFlags (RadiotapHeader::FRAME_FLAG_SHORT_PREAMBLE);
}
else
{
header.SetFrameFlags (RadiotapHeader::FRAME_FLAG_NONE);
}
header.SetRate (rate);
if (channelFreqMhz < 2500)
{
header.SetChannelFrequencyAndFlags (channelFreqMhz,
RadiotapHeader::CHANNEL_FLAG_SPECTRUM_2GHZ | RadiotapHeader::CHANNEL_FLAG_CCK);
}
else
{
header.SetChannelFrequencyAndFlags (channelFreqMhz,
RadiotapHeader::CHANNEL_FLAG_SPECTRUM_5GHZ | RadiotapHeader::CHANNEL_FLAG_OFDM);
}
header.SetAntennaSignalPower (signalDbm);
header.SetAntennaNoisePower (noiseDbm);
p->AddHeader (header);
file->Write (Simulator::Now (), p);
return;
}
default:
NS_ABORT_MSG ("PcapSniffRxEvent(): Unexpected data link type " << dlt);
}
}
void
YansWifiPhyHelper::SetPcapFormat (enum PcapFormat format)
{
m_pcapFormat = format;
switch (format)
{
case PCAP_FORMAT_80211:
m_pcapDlt = PcapHelper::DLT_IEEE802_11;
return;
case PCAP_FORMAT_80211_PRISM:
m_pcapDlt = PcapHelper::DLT_PRISM_HEADER;
return;
case PCAP_FORMAT_80211_RADIOTAP:
m_pcapDlt = PcapHelper::DLT_IEEE802_11_RADIO;
return;
default:
NS_ABORT_MSG ("YansWifiPhyHelper::SetPcapFormat(): Unexpected format");
}
}
void
YansWifiPhyHelper::SetPcapDataLinkType (uint32_t dlt)
{
m_pcapDlt = dlt;
}
void
YansWifiPhyHelper::EnablePcap (std::string filename, uint32_t nodeid, uint32_t deviceid)
YansWifiPhyHelper::EnablePcapInternal (std::string prefix, Ptr<NetDevice> nd, bool promiscuous)
{
std::ostringstream oss;
oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::WifiNetDevice/Phy/";
Config::MatchContainer matches = Config::LookupMatches (oss.str ());
if (matches.GetN () == 0)
//
// All of the Pcap enable functions vector through here including the ones
// that are wandering through all of devices on perhaps all of the nodes in
// the system. We can only deal with devices of type WifiNetDevice.
//
Ptr<WifiNetDevice> device = nd->GetObject<WifiNetDevice> ();
if (device == 0)
{
NS_LOG_INFO ("YansWifiHelper::EnablePcapInternal(): Device " << &device << " not of type ns3::WifiNetDevice");
return;
}
oss.str ("");
oss << filename << "-" << nodeid << "-" << deviceid << ".pcap";
Ptr<PcapWriter> pcap = CreateObject<PcapWriter> ();
pcap->Open (oss.str ());
switch (m_pcapFormat) {
case PCAP_FORMAT_80211:
pcap->WriteWifiHeader ();
break;
case PCAP_FORMAT_80211_RADIOTAP:
pcap->WriteWifiRadiotapHeader ();
break;
case PCAP_FORMAT_80211_PRISM:
pcap->WriteWifiPrismHeader ();
break;
}
oss.str ("");
oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid;
oss << "/$ns3::WifiNetDevice/Phy/PromiscSnifferTx";
Config::ConnectWithoutContext (oss.str (), MakeBoundCallback (&PcapSniffTxEvent, pcap));
Ptr<WifiPhy> phy = device->GetPhy ();
NS_ABORT_MSG_IF (phy == 0, "YansWifiPhyHelper::EnablePcapInternal(): Phy layer in WifiNetDevice must be set");
oss.str ("");
oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid;
oss << "/$ns3::WifiNetDevice/Phy/PromiscSnifferRx";
Config::ConnectWithoutContext (oss.str (), MakeBoundCallback (&PcapSniffRxEvent, pcap));
}
PcapHelper pcapHelper;
std::string filename = pcapHelper.GetFilename (prefix, device);
void
YansWifiPhyHelper::EnablePcap (std::string filename, NetDeviceContainer d)
{
for (NetDeviceContainer::Iterator i = d.Begin (); i != d.End (); ++i)
{
Ptr<NetDevice> dev = *i;
EnablePcap (filename, dev->GetNode ()->GetId (), dev->GetIfIndex ());
}
}
Ptr<PcapFileObject> file = pcapHelper.CreateFile (filename, "w", m_pcapDlt);
void
YansWifiPhyHelper::EnablePcap (std::string filename, Ptr<NetDevice> nd)
{
EnablePcap (filename, nd->GetNode ()->GetId (), nd->GetIfIndex ());
}
void
YansWifiPhyHelper::EnablePcap (std::string filename, std::string ndName)
{
Ptr<NetDevice> nd = Names::Find<NetDevice> (ndName);
EnablePcap (filename, nd->GetNode ()->GetId (), nd->GetIfIndex ());
}
void
YansWifiPhyHelper::EnablePcap (std::string filename, NodeContainer n)
{
NetDeviceContainer devs;
for (NodeContainer::Iterator i = n.Begin (); i != n.End (); ++i)
{
Ptr<Node> node = *i;
for (uint32_t j = 0; j < node->GetNDevices (); ++j)
{
devs.Add (node->GetDevice (j));
}
}
EnablePcap (filename, devs);
}
void
YansWifiPhyHelper::EnablePcapAll (std::string filename)
{
EnablePcap (filename, NodeContainer::GetGlobal ());
phy->TraceConnectWithoutContext ("PromiscSnifferTx", MakeBoundCallback (&PcapSniffTxEvent, file));
phy->TraceConnectWithoutContext ("PromiscSnifferRx", MakeBoundCallback (&PcapSniffRxEvent, file));
}
void

View File

@@ -21,7 +21,9 @@
#define YANS_WIFI_HELPER_H
#include "wifi-helper.h"
#include "pcap-user-helper.h"
#include "ns3/yans-wifi-channel.h"
#include "ns3/deprecated.h"
namespace ns3 {
@@ -133,7 +135,7 @@ private:
* The Pcap and ascii traces generated by the EnableAscii and EnablePcap methods defined
* in this class correspond to PHY-level traces.
*/
class YansWifiPhyHelper : public WifiPhyHelper
class YansWifiPhyHelper : public WifiPhyHelper, public PcapUserHelper
{
public:
/**
@@ -219,69 +221,24 @@ public:
*
* @param format the PcapFormat to be used
*/
void SetPcapFormat (enum PcapFormat format);
void SetPcapFormat (enum PcapFormat format) NS_DEPRECATED;
/**
* \param filename filename prefix to use for pcap files.
* \param nodeid the id of the node to generate pcap output for.
* \param deviceid the id of the device to generate pcap output for.
/**
* Set the data link type of PCAP traces to be used. This function has to be
* called before EnablePcap(), so that the header of the pcap file can be
* written correctly.
*
* Generate a pcap file which contains the link-level data observed
* by the specified deviceid within the specified nodeid. The pcap
* data is stored in the file prefix-nodeid-deviceid.pcap. By
* default, no PHY layer information is provided. An optional header
* with PHY layer information, such as the radiotap or the prism
* header, can be used by invoking SetPcapFormat().
* In madwifi, this corresponds to setting /proc/sys/net/ath0/dev_type to a
* particular value, however we use the pcap DLT instead of the dev_type to
* avoid introducing another unnecessary definition. See
*
* This method should be invoked after the network topology has
* been fully constructed.
* http://madwifi-project.org/wiki/UserDocs/MonitorModeInterface
*
* for more information.
*
* @param dlt The data link type of the pcap file (and packets) to be used
*/
void EnablePcap (std::string filename, uint32_t nodeid, uint32_t deviceid);
/**
* \param filename filename prefix to use for pcap files.
* \param nd Net device on which you want to enable tracing.
*
* Enable pcap output on each input device which is of the
* ns3::WifiNetDevice type.
*/
void EnablePcap (std::string filename, Ptr<NetDevice> nd);
/**
* \param filename filename prefix to use for pcap files.
* \param ndName Name of net device on which you want to enable tracing.
*
* Enable pcap output on each input device which is of the
* ns3::WifiNetDevice type.
*/
void EnablePcap (std::string filename, std::string ndName);
/**
* \param filename filename prefix to use for pcap files.
* \param d container of devices of type ns3::WifiNetDevice
*
* Enable pcap output on each input device which is of the
* ns3::WifiNetDevice type.
*/
void EnablePcap (std::string filename, NetDeviceContainer d);
/**
* \param filename filename prefix to use for pcap files.
* \param n container of nodes.
*
* Enable pcap output on each device which is of the
* ns3::WifiNetDevice type and which is located in one of the
* input nodes.
*/
void EnablePcap (std::string filename, NodeContainer n);
/**
* \param filename filename prefix to use for pcap files.
*
* Enable pcap output on each device which is of the
* ns3::WifiNetDevice type
*/
void EnablePcapAll (std::string filename);
void SetPcapDataLinkType (uint32_t dlt);
/**
* \param os output stream
@@ -335,10 +292,22 @@ private:
*/
virtual Ptr<WifiPhy> Create (Ptr<Node> node, Ptr<WifiNetDevice> device) const;
/**
* @brief Enable pcap output the indicated net device.
*
* NetDevice-specific implementation mechanism for hooking the trace and
* writing to the trace file.
*
* @param prefix Filename prefix to use for pcap files.
* @param nd Net device for which you want to enable tracing.
* @param promiscuous If true capture all possible packets available at the device.
*/
virtual void EnablePcapInternal (std::string prefix, Ptr<NetDevice> nd, bool promiscuous);
ObjectFactory m_phy;
ObjectFactory m_errorRateModel;
Ptr<YansWifiChannel> m_channel;
enum PcapFormat m_pcapFormat;
uint32_t m_pcapDlt;
};
} // namespace ns3

404
src/node/radiotap-header.cc Normal file
View File

@@ -0,0 +1,404 @@
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2009 CTTC
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Include., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Nicola Baldo <nbaldo@cttc.es>
*/
#include <iomanip>
#include <math.h>
#include "ns3/log.h"
#include "radiotap-header.h"
NS_LOG_COMPONENT_DEFINE ("RadiotapHeader");
namespace ns3 {
RadiotapHeader::RadiotapHeader()
: m_length(8),
m_present(0),
m_tsft(0),
m_flags(FRAME_FLAG_NONE),
m_rate(0),
m_channelFreq(0),
m_channelFlags(CHANNEL_FLAG_NONE),
m_antennaSignal(0),
m_antennaNoise(0)
{
NS_LOG_FUNCTION (this);
}
TypeId RadiotapHeader::GetTypeId (void)
{
static TypeId tid = TypeId ("RadiotapHeader")
.SetParent<Header> ()
.AddConstructor<RadiotapHeader> ()
;
return tid;
}
TypeId
RadiotapHeader::GetInstanceTypeId (void) const
{
NS_LOG_FUNCTION (this);
return GetTypeId ();
}
uint32_t
RadiotapHeader::GetSerializedSize (void) const
{
NS_LOG_FUNCTION (this);
return m_length;
}
void
RadiotapHeader::Serialize (Buffer::Iterator start) const
{
NS_LOG_FUNCTION (this);
start.WriteU8 (0); // major version of radiotap header
start.WriteU8 (0); // pad field
start.WriteU16 (m_length); // entire length of radiotap data + header
start.WriteU32 (m_present); // bits describing which fields follow header
//
// Time Synchronization Function Timer (when the first bit of the MPDU
// arrived at the MAC)
//
if (m_present & RADIOTAP_TSFT) // bit 0
{
start.WriteU64 (m_tsft);
}
//
// Properties of transmitted and received frames.
//
if (m_present & RADIOTAP_FLAGS) // bit 1
{
start.WriteU8 (m_flags);
}
//
// TX/RX data rate in units of 500 kbps
//
if (m_present & RADIOTAP_RATE) // bit 2
{
start.WriteU8 (m_rate);
}
//
// Tx/Rx frequency in MHz, followed by flags.
//
if (m_present & RADIOTAP_CHANNEL) // bit 3
{
start.WriteU16 (m_channelFreq);
start.WriteU16 (m_channelFlags);
}
//
// RF signal power at the antenna, decibel difference from an arbitrary, fixed
// reference.
//
if (m_present & RADIOTAP_DBM_ANTSIGNAL) // bit 5
{
start.WriteU8 (m_antennaSignal);
}
//
// RF noise power at the antenna, decibel difference from an arbitrary, fixed
// reference.
//
if (m_present & RADIOTAP_DBM_ANTNOISE) // bit 6
{
start.WriteU8 (m_antennaNoise);
}
}
uint32_t
RadiotapHeader::Deserialize (Buffer::Iterator start)
{
NS_LOG_FUNCTION (this);
uint8_t tmp = start.ReadU8 (); // major version of radiotap header
NS_ASSERT_MSG (tmp == 0x00, "RadiotapHeader::Deserialize(): Unexpected major version");
start.ReadU8 (); // pad field
m_length = start.ReadU16 (); // entire length of radiotap data + header
m_present = start.ReadU32 (); // bits describing which fields follow header
uint32_t bytesRead = 8;
//
// Time Synchronization Function Timer (when the first bit of the MPDU arrived at the MAC)
//
if (m_present & RADIOTAP_TSFT) // bit 0
{
m_tsft = start.ReadU64();
bytesRead += 8;
}
//
// Properties of transmitted and received frames.
//
if (m_present & RADIOTAP_FLAGS) // bit 1
{
m_flags = start.ReadU8();
++bytesRead;
}
//
// TX/RX data rate in units of 500 kbps
//
if (m_present & RADIOTAP_RATE) // bit 2
{
m_rate = start.ReadU8();
++bytesRead;
}
//
// Tx/Rx frequency in MHz, followed by flags.
//
if (m_present & RADIOTAP_CHANNEL) // bit 3
{
m_channelFreq = start.ReadU16();
m_channelFlags = start.ReadU16();
bytesRead += 4;
}
//
// The hop set and pattern for frequency-hopping radios. We don't need it but
// still need to account for it.
//
if (m_present & RADIOTAP_FHSS) // bit 4
{
start.ReadU8();
++bytesRead;
}
//
// RF signal power at the antenna, decibel difference from an arbitrary, fixed
// reference.
//
if (m_present & RADIOTAP_DBM_ANTSIGNAL) // bit 5
{
m_antennaSignal = start.ReadU8();
++bytesRead;
}
//
// RF noise power at the antenna, decibel difference from an arbitrary, fixed
// reference.
//
if (m_present & RADIOTAP_DBM_ANTNOISE) // bit 6
{
m_antennaNoise = start.ReadU8();
++bytesRead;
}
NS_ASSERT_MSG(m_length == bytesRead, "RadiotapHeader::Deserialize(): expected and actual lengths inconsistent");
return bytesRead;
}
void
RadiotapHeader::Print (std::ostream &os) const
{
NS_LOG_FUNCTION (this);
os << " tsft=" << m_tsft
<< " flags=" << std::hex << m_flags << std::dec
<< " rate=" << (uint16_t) m_rate
<< " freq=" << m_channelFreq
<< " chflags=" << std::hex << (uint32_t)m_channelFlags << std::dec
<< " signal=" << (int16_t) m_antennaSignal
<< " noise=" << (int16_t) m_antennaNoise;
}
void
RadiotapHeader::SetTsft (uint64_t value)
{
NS_LOG_FUNCTION (this << value);
m_tsft = value;
if (!(m_present & RADIOTAP_TSFT))
{
m_present |= RADIOTAP_TSFT;
m_length += 8;
}
NS_LOG_LOGIC (this << " m_length=" << m_length << " m_present=0x" << std::hex << m_present << std::dec);
}
uint64_t
RadiotapHeader::GetTsft () const
{
NS_LOG_FUNCTION (this);
return m_tsft;
}
void
RadiotapHeader::SetFrameFlags (uint8_t flags)
{
NS_LOG_FUNCTION (this << flags);
m_flags = flags;
if (!(m_present & RADIOTAP_FLAGS))
{
m_present |= RADIOTAP_FLAGS;
m_length += 1;
}
NS_LOG_LOGIC (this << " m_length=" << m_length << " m_present=0x" << std::hex << m_present << std::dec);
}
uint8_t
RadiotapHeader::GetFrameFlags (void) const
{
NS_LOG_FUNCTION (this);
return m_flags;
}
void
RadiotapHeader::SetRate (uint8_t rate)
{
NS_LOG_FUNCTION (this << rate);
m_rate = rate;
if (!(m_present & RADIOTAP_RATE))
{
m_present |= RADIOTAP_RATE;
m_length += 1;
}
NS_LOG_LOGIC (this << " m_length=" << m_length << " m_present=0x" << std::hex << m_present << std::dec);
}
uint8_t
RadiotapHeader::GetRate (void) const
{
NS_LOG_FUNCTION (this);
return m_rate;
}
void
RadiotapHeader::SetChannelFrequencyAndFlags (uint16_t frequency, uint16_t flags)
{
NS_LOG_FUNCTION (this << frequency << flags);
m_channelFreq = frequency;
m_channelFlags = flags;
if (!(m_present & RADIOTAP_CHANNEL))
{
m_present |= RADIOTAP_CHANNEL;
m_length += 4;
}
NS_LOG_LOGIC (this << " m_length=" << m_length << " m_present=0x" << std::hex << m_present << std::dec);
}
uint16_t
RadiotapHeader::GetChannelFrequency (void) const
{
NS_LOG_FUNCTION (this);
return m_channelFreq;
}
uint16_t
RadiotapHeader::GetChannelFlags (void) const
{
NS_LOG_FUNCTION (this);
return m_channelFlags;
}
void
RadiotapHeader::SetAntennaSignalPower (int8_t signal)
{
NS_LOG_FUNCTION (this << signal);
m_antennaSignal = signal;
if (!(m_present & RADIOTAP_DBM_ANTSIGNAL))
{
m_present |= RADIOTAP_DBM_ANTSIGNAL;
m_length += 1;
}
NS_LOG_LOGIC (this << " m_length=" << m_length << " m_present=0x" << std::hex << m_present << std::dec);
}
void
RadiotapHeader::SetAntennaSignalPower (double signal)
{
NS_LOG_FUNCTION (this << signal);
if (signal < -128)
{
return SetAntennaSignalPower (static_cast<int8_t> (-128));
}
if (signal > 127)
{
return SetAntennaSignalPower (static_cast<int8_t> (127));
}
SetAntennaSignalPower (static_cast<int8_t> (floor(signal + 0.5)));
}
uint8_t
RadiotapHeader::GetAntennaSignalPower (void) const
{
NS_LOG_FUNCTION (this);
return m_antennaSignal;
}
void
RadiotapHeader::SetAntennaNoisePower (int8_t noise)
{
NS_LOG_FUNCTION (this << noise);
m_antennaNoise = noise;
if (!(m_present & RADIOTAP_DBM_ANTNOISE))
{
m_present |= RADIOTAP_DBM_ANTNOISE;
m_length += 1;
}
NS_LOG_LOGIC (this << " m_length=" << m_length << " m_present=0x" << std::hex << m_present << std::dec);
}
void
RadiotapHeader::SetAntennaNoisePower (double noise)
{
NS_LOG_FUNCTION (this << noise);
if (noise < -128)
{
return SetAntennaNoisePower (static_cast<int8_t> (-128));
}
if (noise > 127)
{
return SetAntennaNoisePower (static_cast<int8_t> (127));
}
SetAntennaNoisePower (static_cast<int8_t> (floor(noise + 0.5)));
}
uint8_t
RadiotapHeader::GetAntennaNoisePower (void) const
{
NS_LOG_FUNCTION (this);
return m_antennaNoise;
}
} // namespace ns3

273
src/node/radiotap-header.h Normal file
View File

@@ -0,0 +1,273 @@
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2009 CTTC
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Include., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Nicola Baldo <nbaldo@cttc.es>
*/
#ifndef RADIOTAP_HEADER_H
#define RADIOTAP_HEADER_H
#include <ns3/header.h>
namespace ns3 {
/**
* @brief Radiotap header implementation
*
* Radiotap is a de facto standard for 802.11 frame injection and reception.
* The radiotap header format is a mechanism to supply additional information
* about frames, from the driver to userspace applications such as libpcap, and
* from a userspace application to the driver for transmission.
*
* @warning the radiotap header specification says that the fields included in
* the header should be aligned to their natural ize (e.g., 16-bit fields
* aligned to 16-bit boundaries, 32-bit fields aligned to 32-bit boundaries,
* and so on. This implementation does not enforce this. However, the radiotap
* specification enforces an order in which fields have to appear (if they
* appear), and this ordering is such that, provided you don't leave gaps, all
* fields will end up aligned without the need of inserting padding space. By
* the term "gap" I mean not using a field which would appear between two used
* fields. Moral: don't leave gaps, or if you do be careful about how you
* do it.
*/
class RadiotapHeader : public Header
{
public:
RadiotapHeader();
static TypeId GetTypeId (void);
virtual TypeId GetInstanceTypeId (void) const;
/**
* This method is used by Packet::AddHeader to store the header into the byte
* buffer of a packet. This method returns the number of bytes which are
* needed to store the header data during a Serialize.
*
* @returns The expected size of the header.
*/
virtual uint32_t GetSerializedSize (void) const;
/**
* This method is used by Packet::AddHeader to store the header into the byte
* buffer of a packet. The data written is expected to match bit-for-bit the
* representation of this header in a real network.
*
* @param start An iterator which points to where the header should
* be written.
*/
virtual void Serialize (Buffer::Iterator start) const;
/**
* This method is used by Packet::RemoveHeader to re-create a header from the
* byte buffer of a packet. The data read is expected to match bit-for-bit
* the representation of this header in real networks.
*
* @param start An iterator which points to where the header should
* written.
* @returns The number of bytes read.
*/
virtual uint32_t Deserialize (Buffer::Iterator start);
/**
* This method is used by Packet::Print to print the content of the header as
* ascii data to a C++ output stream. Although the header is free to format
* its output as it wishes, it is recommended to follow a few rules to integrate
* with the packet pretty printer: start with flags, small field
* values located between a pair of parens. Values should be separated
* by whitespace. Follow the parens with the important fields,
* separated by whitespace.
*
* eg: (field1 val1 field2 val2 field3 val3) field4 val4 field5 val5
*
* @param os The output stream
*/
virtual void Print (std::ostream &os) const;
/**
* @brief Set the Time Synchronization Function Timer (TSFT) value. Valid for
* received frames only.
*
* @param tsft Value in microseconds of the MAC's 64-bit 802.11 Time
* Synchronization Function timer when the first bit of the MPDU
* arrived at the MAC.
*/
void SetTsft (uint64_t tsft);
/**
* @brief Get the Time Synchronization Function Timer (TSFT) value. Valid for
* received frames only.
*
* @returns The value in microseconds of the MAC's 64-bit 802.11 Time
* Synchronization Function timer when the first bit of the MPDU
* arrived at the MAC.
*/
uint64_t GetTsft (void) const;
enum {FRAME_FLAG_NONE = 0x00}; /**< No flags set */
enum {FRAME_FLAG_CFP = 0x01}; /**< Frame sent/received during CFP */
enum {FRAME_FLAG_SHORT_PREAMBLE = 0x02}; /**< Frame sent/received with short preamble */
enum {FRAME_FLAG_WEP = 0x04}; /**< Frame sent/received with WEP encryption */
enum {FRAME_FLAG_FRAGMENTED = 0x08}; /**< Frame sent/received with fragmentation */
enum {FRAME_FLAG_FCS_INCLUDED = 0x10}; /**< Frame includes FCS */
enum {FRAME_FLAG_DATA_PADDING = 0x20}; /**< Frame has padding between 802.11 header and payload (to 32-bit boundary) */
enum {FRAME_FLAG_BAD_FCS = 0x40}; /**< Frame failed FCS check */
enum {FRAME_FLAG_SHORT_GUARD = 0x80}; /**< Frame used short guard interval (HT) */
/**
* @brief Set the frame flags of the transmitted or received frame.
* @param flags flags to set.
*/
void SetFrameFlags (uint8_t flags);
/**
* @brief Get the frame flags of the transmitted or received frame.
* @returns The frame flags.
* @see FrameFlags.
*/
uint8_t GetFrameFlags (void) const;
/**
* @brief Set the transmit/receive channel frequency in units of megahertz
* @param rate the transmit/receive channel frequency in units of megahertz.
*/
void SetRate (uint8_t rate);
/**
* @brief Get the transmit/receive channel frequency in units of megahertz.
* @returns The transmit/receive channel frequency in units of megahertz.
*/
uint8_t GetRate (void) const;
enum {CHANNEL_FLAG_NONE = 0x0000}; /**< No flags set */
enum {CHANNEL_FLAG_TURBO = 0x0010}; /**< Turbo Channel */
enum {CHANNEL_FLAG_CCK = 0x0020}; /**< CCK channel */
enum {CHANNEL_FLAG_OFDM = 0x0040}; /**< OFDM channel */
enum {CHANNEL_FLAG_SPECTRUM_2GHZ = 0x0080}; /**< 2 GHz spectrum channel */
enum {CHANNEL_FLAG_SPECTRUM_5GHZ = 0x0100}; /**< 5 GHz spectrum channel */
enum {CHANNEL_FLAG_PASSIVE = 0x0200}; /**< Only passive scan allowed */
enum {CHANNEL_FLAG_DYNAMIC = 0x0400}; /**< Dynamic CCK-OFDM channel */
enum {CHANNEL_FLAG_GFSK = 0x0800}; /**< GFSK channel (FHSS PHY) */
/**
* @brief Set the transmit/receive channel frequency and flags
* @param frequency The transmit/receive data rate in units of 500 kbps.
* @param flags The flags to set.
* @see ChannelFlags
*/
void SetChannelFrequencyAndFlags (uint16_t frequency, uint16_t flags);
/**
* @brief Get the transmit/receive data rate in units of 500 kbps.
* @returns The transmit/receive data rate in units of 500 kbps.
*/
uint16_t GetChannelFrequency (void) const;
/**
* @brief Get the channel flags of the transmitted or received frame.
* @returns The frame flags.
* @see ChannelFlags.
*/
uint16_t GetChannelFlags (void) const;
/**
* @brief Set the RF signal power at the antenna as a decibel difference
* from an arbitrary, fixed reference.
*
* @param signal The RF signal power at the antenna as a decibel difference
* from an arbitrary, fixed reference.
*/
void SetAntennaSignalPower (int8_t signal);
/**
* @brief Set the RF signal power at the antenna as a decibel difference
* from an arbitrary, fixed reference.
*
* @param signal The RF signal power at the antenna as a decibel difference
* from an arbitrary, fixed reference;
*/
void SetAntennaSignalPower (double signal);
/**
* @brief Get the RF signal power at the antenna as a decibel difference
* from an arbitrary, fixed reference.
*
* @returns The RF signal power at the antenna as a decibel difference
* from an arbitrary, fixed reference.
*/
uint8_t GetAntennaSignalPower (void) const;
/**
* @brief Set the RF noise power at the antenna as a decibel difference
* from an arbitrary, fixed reference.
*
* @param noise The RF noise power at the antenna as a decibel difference
* from an arbitrary, fixed reference.
*/
void SetAntennaNoisePower (int8_t noise);
/**
* @brief Set the RF noise power at the antenna as a decibel difference
* from an arbitrary, fixed reference.
*
* @param noise The RF noise power at the antenna as a decibel difference
* from an arbitrary, fixed reference.
*/
void SetAntennaNoisePower (double noise);
/**
* @brief Get the RF noise power at the antenna as a decibel difference
* from an arbitrary, fixed reference.
*
* @returns The RF noise power at the antenna as a decibel difference
* from an arbitrary, fixed reference.
*/
uint8_t GetAntennaNoisePower (void) const;
private:
enum {RADIOTAP_TSFT = 0x00000001};
enum {RADIOTAP_FLAGS = 0x00000002};
enum {RADIOTAP_RATE = 0x00000004};
enum {RADIOTAP_CHANNEL = 0x00000008};
enum {RADIOTAP_FHSS = 0x00000010};
enum {RADIOTAP_DBM_ANTSIGNAL = 0x00000020};
enum {RADIOTAP_DBM_ANTNOISE = 0x00000040};
enum {RADIOTAP_LOCK_QUALITY = 0x00000080};
enum {RADIOTAP_TX_ATTENUATION = 0x00000100};
enum {RADIOTAP_DB_TX_ATTENUATION = 0x00000200};
enum {RADIOTAP_DBM_TX_POWER = 0x00000200};
enum {RADIOTAP_ANTENNA = 0x00000400};
enum {RADIOTAP_DB_ANTSIGNAL = 0x00000800};
enum {RADIOTAP_DB_ANTNOISE = 0x00001000};
enum {RADIOTAP_EXT = 0x10000000};
void CheckAddChannelField();
uint16_t m_length;
uint32_t m_present;
uint64_t m_tsft;
uint8_t m_flags;
uint8_t m_rate;
uint16_t m_channelFreq;
uint16_t m_channelFlags;
int8_t m_antennaSignal;
int8_t m_antennaNoise;
};
} // namespace ns3
#endif /* RADIOTAP_HEADER_H */

View File

@@ -48,6 +48,7 @@ def build(bld):
'ipv6-routing-protocol.cc',
'packetbb.cc',
'packetbb-test-suite.cc',
'radiotap-header.cc',
]
headers = bld.new_task_gen('ns3header')
@@ -96,4 +97,5 @@ def build(bld):
'ipv6-raw-socket-factory.h',
'ipv6-routing-protocol.h',
'packetbb.h',
'radiotap-header.h',
]

View File

@@ -323,7 +323,7 @@ Ns3TcpCwndTestCase1::DoRun (void)
if (m_writeResults)
{
PointToPointHelper::EnablePcapAll ("tcp-cwnd");
pointToPoint.EnablePcapAll ("tcp-cwnd");
}
Simulator::Stop (Seconds(2));
@@ -490,7 +490,8 @@ Ns3TcpCwndTestCase2::DoRun (void)
if (m_writeResults)
{
// Write a pcap for tcp cwnd testcase with out-of-order delivery
PointToPointHelper::EnablePcapAll ("tcp-cwnd-ood");
PointToPointHelper pointToPoint;
pointToPoint.EnablePcapAll ("tcp-cwnd-ood");
}
// Finally, set up the simulator to run.

View File

@@ -282,7 +282,7 @@ Ns3TcpInteroperabilityTestCase::DoRun (void)
if (m_writeVectors)
{
PointToPointHelper::EnablePcapAll ("tcp-interop");
pointToPoint.EnablePcapAll ("tcp-interop");
}
Simulator::Stop (Seconds(20));

View File

@@ -148,8 +148,9 @@ WifiInterferenceTestCase::WifiSimpleInterference (std::string phyMode,double Prs
wifiPhy.Set ("RxGain", DoubleValue (0) );
wifiPhy.Set ("CcaMode1Threshold", DoubleValue (0.0) );
// ns-3 support RadioTap and Prism tracing extensions for 802.11b
wifiPhy.SetPcapFormat (YansWifiPhyHelper::PCAP_FORMAT_80211_RADIOTAP);
// ns-3 supports RadioTap and Prism tracing extensions for 802.11b
const uint32_t DLT_IEEE802_11_RADIO = 127;
wifiPhy.SetPcapDataLinkType (DLT_IEEE802_11_RADIO);
YansWifiChannelHelper wifiChannel ;
wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");