diff -r a6113320f46a examples/csma-bridge.cc --- a/examples/csma-bridge.cc Thu Aug 07 12:22:38 2008 -0700 +++ b/examples/csma-bridge.cc Thu Aug 07 12:24:00 2008 -0700 @@ -94,14 +94,8 @@ main (int argc, char *argv[]) // Create the bridge netdevice, which will do the packet switching Ptr switchNode = csmaSwitch.Get (0); - Ptr bridgeDevice = CreateObject (); - switchNode->AddDevice (bridgeDevice); - - for (NetDeviceContainer::Iterator portIter = switchDevices.Begin (); - portIter != switchDevices.End (); portIter++) - { - bridgeDevice->AddBridgePort (*portIter); - } + BridgeHelper bridge; + bridge.Install (switchNode, switchDevices); // Add internet stack to the terminals InternetStackHelper internet; diff -r a6113320f46a src/helper/bridge-helper.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/helper/bridge-helper.cc Thu Aug 07 12:24:00 2008 -0700 @@ -0,0 +1,34 @@ +#include "bridge-helper.h" + +#include "ns3/bridge-net-device.h" +#include "ns3/node.h" + +namespace ns3 { + +BridgeHelper::BridgeHelper () +{ + m_deviceFactory.SetTypeId ("ns3::BridgeNetDevice"); +} + +void +BridgeHelper::SetDeviceAttribute (std::string n1, const AttributeValue &v1) +{ + m_deviceFactory.Set (n1, v1); +} + +NetDeviceContainer +BridgeHelper::Install (Ptr node, NetDeviceContainer c) +{ + NetDeviceContainer devs; + Ptr dev = m_deviceFactory.Create (); + devs.Add (dev); + node->AddDevice (dev); + + for (NetDeviceContainer::Iterator i = c.Begin (); i != c.End (); ++i) + { + dev->AddBridgePort (*i); + } + return devs; +} + +} // namespace ns3 diff -r a6113320f46a src/helper/bridge-helper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/helper/bridge-helper.h Thu Aug 07 12:24:00 2008 -0700 @@ -0,0 +1,26 @@ +#ifndef BRIDGE_HELPER_H +#define BRIDGE_HELPER_H + +#include "net-device-container.h" +#include "ns3/object-factory.h" +#include + +namespace ns3 { + +class Node; +class AttributeValue; + +class BridgeHelper +{ +public: + BridgeHelper (); + void SetDeviceAttribute (std::string n1, const AttributeValue &v1); + NetDeviceContainer Install (Ptr node, NetDeviceContainer c); +private: + ObjectFactory m_deviceFactory; +}; + +} // namespace ns3 + + +#endif /* BRIDGE_HELPER_H */ diff -r a6113320f46a src/helper/wscript --- a/src/helper/wscript Thu Aug 07 12:22:38 2008 -0700 +++ b/src/helper/wscript Thu Aug 07 12:24:00 2008 -0700 @@ -20,6 +20,7 @@ def build(bld): 'packet-socket-helper.cc', 'ipv4-interface-container.cc', 'udp-echo-helper.cc', + 'bridge-helper.cc', ] headers = bld.create_obj('ns3header') @@ -42,4 +43,5 @@ def build(bld): 'packet-socket-helper.h', 'ipv4-interface-container.h', 'udp-echo-helper.h', + 'bridge-helper.h', ]