2 # -*- coding: utf-8 -*-
4 from nepi.util.constants import AF_INET, STATUS_NOT_STARTED, STATUS_RUNNING, \
5 STATUS_FINISHED, STATUS_UNDETERMINED
6 from nepi.util.tunchannel_impl import \
7 preconfigure_tunchannel, postconfigure_tunchannel, \
8 wait_tunchannel, create_tunchannel
10 wifi_standards = dict({
11 "WIFI_PHY_STANDARD_holland": 5,
12 "WIFI_PHY_STANDARD_80211p_SCH": 7,
13 "WIFI_PHY_STANDARD_80211_5Mhz": 4,
14 "WIFI_PHY_UNKNOWN": 8,
15 "WIFI_PHY_STANDARD_80211_10Mhz": 3,
16 "WIFI_PHY_STANDARD_80211g": 2,
17 "WIFI_PHY_STANDARD_80211p_CCH": 6,
18 "WIFI_PHY_STANDARD_80211a": 0,
19 "WIFI_PHY_STANDARD_80211b": 1
23 "Icmpv4L4Protocol": 1,
28 service_flow_direction = dict({
30 "SF_DIRECTION_DOWN": 0,
33 service_flow_scheduling_type = dict ({
43 def _get_ipv4_protocol_guid(testbed_instance, node_guid):
44 # search for the Ipv4L3Protocol asociated with the device
45 protos_guids = testbed_instance.get_connected(node_guid, "protos", "node")
46 if len(protos_guids) == 0:
47 raise RuntimeError("No protocols where found for the node %d" % node_guid)
49 for proto_guid in protos_guids:
50 proto_factory_id = testbed_instance._create[proto_guid]
51 if proto_factory_id == "ns3::Ipv4L3Protocol":
52 ipv4_guid = proto_guid
55 raise RuntimeError("No Ipv4L3Protocol associated to node %d. \
56 can't add Ipv4 addresses" % node_guid)
59 def _get_node_guid(testbed_instance, guid):
60 # search for the node asociated with the device
61 node_guids = testbed_instance.get_connected(guid, "node", "devs")
62 if len(node_guids) == 0:
63 raise RuntimeError("Can't instantiate interface %d outside netns \
65 node_guid = node_guids[0]
68 def _get_dev_number(testbed_instance, guid):
69 node_guid = _get_node_guid(testbed_instance, guid)
70 dev_guids = testbed_instance.get_connected(node_guid, "devs", "node")
72 for guid_ in dev_guids:
76 return interface_number
78 ### create traces functions ###
80 def p2pascii_trace(testbed_instance, guid, trace_id):
81 node_guid = _get_node_guid(testbed_instance, guid)
82 interface_number = _get_dev_number(testbed_instance, guid)
83 element = testbed_instance._elements[guid]
84 filename = "trace-p2p-node-%d-dev-%d.tr" % (node_guid, interface_number)
85 testbed_instance.follow_trace(guid, trace_id, filename)
86 filepath = testbed_instance.trace_filename(guid, trace_id)
87 helper = testbed_instance.ns3.PointToPointHelper()
88 asciiHelper = testbed_instance.ns3.AsciiTraceHelper()
89 stream = asciiHelper.CreateFileStream (filepath)
90 helper.EnableAscii(stream, element)
92 def p2ppcap_trace(testbed_instance, guid, trace_id):
93 node_guid = _get_node_guid(testbed_instance, guid)
94 interface_number = _get_dev_number(testbed_instance, guid)
95 element = testbed_instance._elements[guid]
96 filename = "trace-p2p-node-%d-dev-%d.pcap" % (node_guid, interface_number)
97 testbed_instance.follow_trace(guid, trace_id, filename)
98 filepath = testbed_instance.trace_filename(guid, trace_id)
99 helper = testbed_instance.ns3.PointToPointHelper()
100 helper.EnablePcap(filepath, element, explicitFilename = True)
102 def _csmapcap_trace(testbed_instance, guid, trace_id, promisc):
103 node_guid = _get_node_guid(testbed_instance, guid)
104 interface_number = _get_dev_number(testbed_instance, guid)
105 element = testbed_instance._elements[guid]
106 filename = "trace-csma-node-%d-dev-%d.pcap" % (node_guid, interface_number)
107 testbed_instance.follow_trace(guid, trace_id, filename)
108 filepath = testbed_instance.trace_filename(guid, trace_id)
109 helper = testbed_instance.ns3.CsmaHelper()
110 helper.EnablePcap(filepath, element, promiscuous = promisc,
111 explicitFilename = True)
113 def csmapcap_trace(testbed_instance, guid, trace_id):
115 _csmapcap_trace(testbed_instance, guid, trace_id, promisc)
117 def csmapcap_promisc_trace(testbed_instance, guid, trace_id):
119 _csmapcap_trace(testbed_instance, guid, trace_id, promisc)
121 def fdpcap_trace(testbed_instance, guid, trace_id):
122 node_guid = _get_node_guid(testbed_instance, guid)
123 interface_number = _get_dev_number(testbed_instance, guid)
124 element = testbed_instance._elements[guid]
125 filename = "trace-fd-node-%d-dev-%d.pcap" % (node_guid, interface_number)
126 testbed_instance.follow_trace(guid, trace_id, filename)
127 filepath = testbed_instance.trace_filename(guid, trace_id)
128 helper = testbed_instance.ns3.FileDescriptorHelper()
129 helper.EnablePcap(filepath, element, explicitFilename = True)
131 def yanswifipcap_trace(testbed_instance, guid, trace_id):
132 dev_guid = testbed_instance.get_connected(guid, "dev", "phy")[0]
133 node_guid = _get_node_guid(testbed_instance, dev_guid)
134 interface_number = _get_dev_number(testbed_instance, dev_guid)
135 element = testbed_instance._elements[dev_guid]
136 filename = "trace-yanswifi-node-%d-dev-%d.pcap" % (node_guid, interface_number)
137 testbed_instance.follow_trace(guid, trace_id, filename)
138 filepath = testbed_instance.trace_filename(guid, trace_id)
139 helper = testbed_instance.ns3.YansWifiPhyHelper()
140 helper.EnablePcap(filepath, element, explicitFilename = True)
142 def wimaxascii_trace(testbed_instance, guid, trace_id):
143 node_guid = _get_node_guid(testbed_instance, guid)
144 interface_number = _get_dev_number(testbed_instance, guid)
145 element = testbed_instance._elements[guid]
146 filename = "trace-wimax-node-%d-dev-%d.tr" % (node_guid, interface_number)
147 testbed_instance.follow_trace(guid, trace_id, filename)
148 filepath = testbed_instance.trace_filename(guid, trace_id)
149 helper = testbed_instance.ns3.WimaxHelper()
150 asciiHelper = testbed_instance.ns3.AsciiTraceHelper()
151 stream = asciiHelper.CreateFileStream (filepath)
152 helper.EnableAscii(stream, element)
153 #helper.EnableLogComponents()
155 def wimaxpcap_trace(testbed_instance, guid, trace_id):
156 node_guid = _get_node_guid(testbed_instance, guid)
157 interface_number = _get_dev_number(testbed_instance, guid)
158 element = testbed_instance._elements[guid]
159 filename = "trace-wimax-node-%d-dev-%d.pcap" % (node_guid, interface_number)
160 testbed_instance.follow_trace(guid, trace_id, filename)
161 filepath = testbed_instance.trace_filename(guid, trace_id)
162 helper = testbed_instance.ns3.WimaxHelper()
163 helper.EnablePcap(filepath, element, explicitFilename = True)
165 trace_functions = dict({
166 "P2PPcapTrace": p2ppcap_trace,
167 "P2PAsciiTrace": p2pascii_trace,
168 "CsmaPcapTrace": csmapcap_trace,
169 "CsmaPcapPromiscTrace": csmapcap_promisc_trace,
170 "FileDescriptorPcapTrace": fdpcap_trace,
171 "YansWifiPhyPcapTrace": yanswifipcap_trace,
172 "WimaxPcapTrace": wimaxpcap_trace,
173 "WimaxAsciiTrace": wimaxascii_trace,
176 ### Creation functions ###
178 def create_element(testbed_instance, guid):
179 element_factory = testbed_instance.ns3.ObjectFactory()
180 factory_id = testbed_instance._create[guid]
181 element_factory.SetTypeId(factory_id)
182 construct_parameters = testbed_instance._get_construct_parameters(guid)
183 for name, value in construct_parameters.iteritems():
184 ns3_value = testbed_instance._to_ns3_value(guid, name, value)
185 element_factory.Set(name, ns3_value)
186 element = element_factory.Create()
187 testbed_instance._elements[guid] = element
189 def create_node(testbed_instance, guid):
190 create_element(testbed_instance, guid)
191 element = testbed_instance._elements[guid]
192 element.AggregateObject(testbed_instance.ns3.PacketSocketFactory())
194 def create_wifi_standard_model(testbed_instance, guid):
195 create_element(testbed_instance, guid)
196 element = testbed_instance._elements[guid]
197 parameters = testbed_instance._get_parameters(guid)
198 if "Standard" in parameters:
199 standard = parameters["Standard"]
201 element.ConfigureStandard(wifi_standards[standard])
203 def create_ipv4protocol(testbed_instance, guid):
204 create_element(testbed_instance, guid)
205 element = testbed_instance._elements[guid]
206 list_routing = testbed_instance.ns3.Ipv4ListRouting()
207 element.SetRoutingProtocol(list_routing)
208 static_routing = testbed_instance.ns3.Ipv4StaticRouting()
209 list_routing.AddRoutingProtocol(static_routing, 1)
211 def create_element_no_constructor(testbed_instance, guid):
212 """ Create function for ns3 classes for which
213 TypeId.HasConstructor == False"""
214 factory_id = testbed_instance._create[guid]
215 factory_name = factory_id.replace("ns3::", "")
216 constructor = getattr(testbed_instance.ns3, factory_name)
217 element = constructor()
218 testbed_instance._elements[guid] = element
220 def create_base_station(testbed_instance, guid):
221 node_guid = _get_node_guid(testbed_instance, guid)
222 node = testbed_instance._elements[node_guid]
223 phy_guids = testbed_instance.get_connected(guid, "phy", "dev")
224 if len(phy_guids) == 0:
225 raise RuntimeError("No PHY was found for station %d" % guid)
226 phy = testbed_instance._elements[phy_guids[0]]
227 uplnk_guids = testbed_instance.get_connected(guid, "uplnk", "dev")
228 if len(uplnk_guids) == 0:
229 raise RuntimeError("No uplink scheduler was found for station %d" % guid)
230 uplnk = testbed_instance._elements[uplnk_guids[0]]
231 dwnlnk_guids = testbed_instance.get_connected(guid, "dwnlnk", "dev")
232 if len(dwnlnk_guids) == 0:
233 raise RuntimeError("No downlink scheduler was found for station %d" % guid)
234 dwnlnk = testbed_instance._elements[dwnlnk_guids[0]]
235 element = testbed_instance.ns3.BaseStationNetDevice(node, phy, uplnk, dwnlnk)
236 testbed_instance._elements[guid] = element
238 def create_subscriber_station(testbed_instance, guid):
239 node_guid = _get_node_guid(testbed_instance, guid)
240 node = testbed_instance._elements[node_guid]
241 phy_guids = testbed_instance.get_connected(guid, "phy", "dev")
242 if len(phy_guids) == 0:
243 raise RuntimeError("No PHY was found for station %d" % guid)
244 phy = testbed_instance._elements[phy_guids[0]]
245 element = testbed_instance.ns3.SubscriberStationNetDevice(node, phy)
246 element.SetModulationType(testbed_instance.ns3.WimaxPhy.MODULATION_TYPE_QAM16_12)
247 testbed_instance._elements[guid] = element
249 def create_wimax_channel(testbed_instance, guid):
250 element = testbed_instance.ns3.SimpleOfdmWimaxChannel(testbed_instance.ns3.SimpleOfdmWimaxChannel.COST231_PROPAGATION)
251 testbed_instance._elements[guid] = element
253 def create_wimax_phy(testbed_instance, guid):
254 element = testbed_instance.ns3.SimpleOfdmWimaxPhy()
255 testbed_instance._elements[guid] = element
257 def create_service_flow(testbed_instance, guid):
258 parameters = testbed_instance._get_parameters(guid)
260 if "Direction" in parameters:
261 direction = parameters["Direction"]
262 if direction == None:
263 raise RuntimeError("No SchedulingType was found for service flow %d" % guid)
265 if "SchedulingType" in parameters:
266 sched = parameters["SchedulingType"]
268 raise RuntimeError("No SchedulingType was found for service flow %d" % guid)
269 ServiceFlow = testbed_instance.ns3.ServiceFlow
270 direction = service_flow_direction[direction]
271 sched = service_flow_scheduling_type[sched]
272 element = ServiceFlow(direction)
273 element.SetCsSpecification(ServiceFlow.IPV4)
274 element.SetServiceSchedulingType(sched)
275 element.SetMaxSustainedTrafficRate(100)
276 element.SetMinReservedTrafficRate(1000000)
277 element.SetMinTolerableTrafficRate(1000000)
278 element.SetMaximumLatency(100)
279 element.SetMaxTrafficBurst(2000)
280 element.SetTrafficPriority(1)
281 element.SetUnsolicitedGrantInterval(1)
282 element.SetMaxSustainedTrafficRate(70)
283 element.SetToleratedJitter(10)
284 element.SetSduSize(49)
285 element.SetRequestTransmissionPolicy(0)
286 testbed_instance._elements[guid] = element
288 def create_ipcs_classifier_record(testbed_instance, guid):
289 parameters = testbed_instance._get_parameters(guid)
291 if "SrcAddress" in parameters:
292 src_address = parameters["SrcAddress"]
293 if src_address == None:
294 raise RuntimeError("No SrcAddress was found for classifier %d" % guid)
295 src_address = testbed_instance.ns3.Ipv4Address(src_address)
297 if "SrcMask" in parameters:
298 src_mask = parameters["SrcMask"]
300 raise RuntimeError("No SrcMask was found for classifier %d" % guid)
301 src_mask = testbed_instance.ns3.Ipv4Mask(src_mask)
303 if "DstAddress" in parameters:
304 dst_address = parameters["DstAddress"]
305 if dst_address == None:
306 raise RuntimeError("No Dstddress was found for classifier %d" % guid)
307 dst_address = testbed_instance.ns3.Ipv4Address(dst_address)
309 if "DstMask" in parameters:
310 dst_mask = parameters["DstMask"]
312 raise RuntimeError("No DstMask was found for classifier %d" % guid)
313 dst_mask = testbed_instance.ns3.Ipv4Mask(dst_mask)
315 if "SrcPortLow" in parameters:
316 src_port_low = parameters["SrcPortLow"]
317 if src_port_low == None:
318 raise RuntimeError("No SrcPortLow was found for classifier %d" % guid)
320 if "SrcPortHigh" in parameters:
321 src_port_high = parameters["SrcPortHigh"]
322 if src_port_high == None:
323 raise RuntimeError("No SrcPortHigh was found for classifier %d" % guid)
325 if "DstPortLow" in parameters:
326 dst_port_low = parameters["DstPortLow"]
327 if dst_port_low == None:
328 raise RuntimeError("No DstPortLow was found for classifier %d" % guid)
330 if "DstPortHigh" in parameters:
331 dst_port_high = parameters["DstPortHigh"]
332 if dst_port_high == None:
333 raise RuntimeError("No DstPortHigh was found for classifier %d" % guid)
335 if "Protocol" in parameters:
336 protocol = parameters["Protocol"]
337 if protocol == None or protocol not in l4_protocols:
338 raise RuntimeError("No Protocol was found for classifier %d" % guid)
340 if "Priority" in parameters:
341 priority = parameters["Priority"]
343 raise RuntimeError("No Priority was found for classifier %d" % guid)
344 element = testbed_instance.ns3.IpcsClassifierRecord(src_address, src_mask,
345 dst_address, dst_mask, src_port_low, src_port_high, dst_port_low,
346 dst_port_high, l4_protocols[protocol], priority)
347 testbed_instance._elements[guid] = element
349 ### Start/Stop functions ###
351 def start_application(testbed_instance, guid):
352 element = testbed_instance.elements[guid]
353 # BUG: without doing this explicit call it doesn't start!!!
354 # Shouldn't be enough to set the StartTime?
357 def stop_application(testbed_instance, guid):
358 element = testbed_instance.elements[guid]
359 now = testbed_instance.ns3.Simulator.Now()
360 element.SetStopTime(now)
362 ### Status functions ###
364 def status_application(testbed_instance, guid):
365 if guid not in testbed_instance.elements.keys():
366 raise RuntimeError("Can't get status on guid %d" % guid )
367 now = testbed_instance.ns3.Simulator.Now()
369 return STATUS_NOT_STARTED
370 app = testbed_instance.elements[guid]
371 parameters = testbed_instance._get_parameters(guid)
372 if "StartTime" in parameters and parameters["StartTime"]:
373 start_value = parameters["StartTime"]
374 start_time = testbed_instance.ns3.Time(start_value)
375 if now.Compare(start_time) < 0:
376 return STATUS_NOT_STARTED
377 if "StopTime" in parameters and parameters["StopTime"]:
378 stop_value = parameters["StopTime"]
379 stop_time = testbed_instance.ns3.Time(stop_value)
380 if now.Compare(stop_time) < 0:
381 return STATUS_RUNNING
383 return STATUS_FINISHED
384 return STATUS_UNDETERMINED
386 ### Configure functions ###
388 def configure_traces(testbed_instance, guid):
389 traces = testbed_instance._get_traces(guid)
390 for trace_id in traces:
391 trace_func = trace_functions[trace_id]
392 trace_func(testbed_instance, guid, trace_id)
394 def configure_element(testbed_instance, guid):
395 configure_traces(testbed_instance, guid)
397 def configure_device(testbed_instance, guid):
398 configure_traces(testbed_instance, guid)
400 element = testbed_instance._elements[guid]
402 parameters = testbed_instance._get_parameters(guid)
403 if "macAddress" in parameters:
404 address = parameters["macAddress"]
405 macaddr = testbed_instance.ns3.Mac48Address(address)
407 macaddr = testbed_instance.ns3.Mac48Address.Allocate()
408 element.SetAddress(macaddr)
410 if not guid in testbed_instance._add_address:
412 # search for the node asociated with the device
413 node_guid = _get_node_guid(testbed_instance, guid)
414 node = testbed_instance.elements[node_guid]
415 # search for the Ipv4L3Protocol asociated with the device
416 ipv4_guid = _get_ipv4_protocol_guid(testbed_instance, node_guid)
417 ipv4 = testbed_instance._elements[ipv4_guid]
418 ns3 = testbed_instance.ns3
420 addresses = testbed_instance._add_address[guid]
421 for address in addresses:
422 (address, netprefix, broadcast) = address
423 # TODO: missing IPV6 addresses!!
424 ifindex = ipv4.AddInterface(element)
425 inaddr = ns3.Ipv4InterfaceAddress(ns3.Ipv4Address(address),
426 ns3.Ipv4Mask("/%d" % netprefix))
427 ipv4.AddAddress(ifindex, inaddr)
428 ipv4.SetMetric(ifindex, 1)
431 def _add_static_route(ns3, static_routing,
432 address, netprefix, nexthop_address, ifindex):
434 # Default route: 0.0.0.0/0
435 static_routing.SetDefaultRoute(nexthop_address, ifindex)
436 elif netprefix == 32:
437 # Host route: x.y.z.w/32
438 static_routing.AddHostRouteTo(address, nexthop_address, ifindex)
440 # Network route: x.y.z.w/n
441 mask = ns3.Ipv4Mask("/%d" % netprefix)
442 static_routing.AddNetworkRouteTo(address, mask, nexthop_address,
445 def _add_static_route_if(ns3, static_routing, address, netprefix, ifindex):
447 # Default route: 0.0.0.0/0
448 static_routing.SetDefaultRoute(ifindex)
449 elif netprefix == 32:
450 # Host route: x.y.z.w/32
451 static_routing.AddHostRouteTo(address, ifindex)
453 # Network route: x.y.z.w/n
454 mask = ns3.Ipv4Mask("/%d" % netprefix)
455 static_routing.AddNetworkRouteTo(address, mask, ifindex)
457 def configure_node(testbed_instance, guid):
458 configure_traces(testbed_instance, guid)
460 element = testbed_instance._elements[guid]
461 if not guid in testbed_instance._add_route:
463 # search for the Ipv4L3Protocol asociated with the device
464 ipv4_guid = _get_ipv4_protocol_guid(testbed_instance, guid)
465 ipv4 = testbed_instance._elements[ipv4_guid]
466 list_routing = ipv4.GetRoutingProtocol()
467 (static_routing, priority) = list_routing.GetRoutingProtocol(0)
468 ns3 = testbed_instance.ns3
469 routes = testbed_instance._add_route[guid]
471 (destination, netprefix, nexthop) = route
472 address = ns3.Ipv4Address(destination)
474 nexthop_address = ns3.Ipv4Address(nexthop)
476 # TODO: HACKISH way of getting the ifindex... improve this
477 nifaces = ipv4.GetNInterfaces()
478 for ifidx in xrange(nifaces):
479 iface = ipv4.GetInterface(ifidx)
480 naddress = iface.GetNAddresses()
481 for addridx in xrange(naddress):
482 ifaddr = iface.GetAddress(addridx)
483 ifmask = ifaddr.GetMask()
484 ifindex = ipv4.GetInterfaceForPrefix(nexthop_address, ifmask)
488 # Check previous ptp routes
489 for chaindest, chainprefix, chainhop in routes:
490 if chaindest == nexthop and chainprefix == 32:
491 chainhop_address = ns3.Ipv4Address(chainhop)
492 for ifidx in xrange(nifaces):
493 iface = ipv4.GetInterface(ifidx)
494 naddress = iface.GetNAddresses()
495 for addridx in xrange(naddress):
496 ifaddr = iface.GetAddress(addridx)
497 ifmask = ifaddr.GetMask()
498 ifindex = ipv4.GetInterfaceForPrefix(chainhop_address, ifmask)
502 raise RuntimeError, "Cannot associate interface for routing entry:" \
503 "%s/%s -> %s. At node %s" % (destination, netprefix, nexthop, guid)
504 _add_static_route(ns3, static_routing,
505 address, netprefix, nexthop_address, ifindex)
507 mask = ns3.Ipv4Mask("/%d" % netprefix)
508 ifindex = ipv4.GetInterfaceForPrefix(address, mask)
510 raise RuntimeError, "Cannot associate interface for routing entry:" \
511 "%s/%s -> %s. At node %s" % (destination, netprefix, nexthop, guid)
512 _add_static_route_if(ns3, static_routing,
513 address, netprefix, nexthop_address, ifindex)
515 def configure_station(testbed_instance, guid):
516 configure_device(testbed_instance, guid)
517 element = testbed_instance._elements[guid]
522 factories_order = ["ns3::BasicEnergySource",
523 "ns3::WifiRadioEnergyModel",
524 "ns3::BSSchedulerRtps",
525 "ns3::BSSchedulerSimple",
526 "ns3::UdpTraceClient",
532 "ns3::flame::FlameProtocol",
533 "ns3::flame::FlameRtable",
534 "ns3::dot11s::AirtimeLinkMetricCalculator",
535 "ns3::dot11s::HwmpProtocol",
536 "ns3::dot11s::HwmpRtable",
537 "ns3::dot11s::PeerManagementProtocol",
538 "ns3::dot11s::PeerLink",
539 "ns3::MeshWifiInterfaceMac",
540 "ns3::MeshPointDevice",
543 "ns3::UanPhyCalcSinrDual",
544 "ns3::UanPhyPerGenDefault",
546 "ns3::UanPropModelThorp",
548 "ns3::UanNoiseModelDefault",
550 "ns3::UanPropModelIdeal",
551 "ns3::UanTransducerHd",
552 "ns3::UanPhyCalcSinrDefault",
554 "ns3::UanPhyCalcSinrFhFsk",
555 "ns3::UanPhyPerUmodem",
558 "ns3::AthstatsWifiTraceSink",
561 "ns3::NonCommunicatingNetDevice",
562 "ns3::HalfDuplexIdealPhy",
563 "ns3::AlohaNoackNetDevice",
564 "ns3::SpectrumAnalyzer",
565 "ns3::WaveformGenerator",
566 "ns3::MultiModelSpectrumChannel",
567 "ns3::SingleModelSpectrumChannel",
568 "ns3::MsduStandardAggregator",
572 "ns3::QadhocWifiMac",
573 "ns3::MinstrelWifiManager",
574 "ns3::CaraWifiManager",
575 "ns3::AarfcdWifiManager",
576 "ns3::OnoeWifiManager",
577 "ns3::AmrrWifiManager",
578 "ns3::ConstantRateWifiManager",
579 "ns3::IdealWifiManager",
580 "ns3::AarfWifiManager",
581 "ns3::ArfWifiManager",
582 "ns3::WifiNetDevice",
588 "ns3::YansWifiChannel",
590 "ns3::NistErrorRateModel",
591 "ns3::YansErrorRateModel",
592 "ns3::WaypointMobilityModel",
593 "ns3::ConstantAccelerationMobilityModel",
594 "ns3::RandomDirection2dMobilityModel",
595 "ns3::RandomWalk2dMobilityModel",
596 "ns3::SteadyStateRandomWaypointMobilityModel",
597 "ns3::RandomWaypointMobilityModel",
598 "ns3::GaussMarkovMobilityModel",
599 "ns3::ConstantVelocityMobilityModel",
600 "ns3::ConstantPositionMobilityModel",
601 "ns3::ListPositionAllocator",
602 "ns3::GridPositionAllocator",
603 "ns3::RandomRectanglePositionAllocator",
604 "ns3::RandomBoxPositionAllocator",
605 "ns3::RandomDiscPositionAllocator",
606 "ns3::UniformDiscPositionAllocator",
607 "ns3::HierarchicalMobilityModel",
608 "ns3::aodv::RoutingProtocol",
609 "ns3::UdpEchoServer",
610 "ns3::UdpEchoClient",
612 "ns3::OnOffApplication",
613 "ns3::VirtualNetDevice",
614 "ns3::FileDescriptorNetDevice",
615 "ns3::Nepi::TunChannel",
617 "ns3::BridgeChannel",
618 "ns3::BridgeNetDevice",
621 "ns3::CsmaNetDevice",
622 "ns3::PointToPointRemoteChannel",
623 "ns3::PointToPointChannel",
624 "ns3::PointToPointNetDevice",
625 "ns3::NscTcpL4Protocol",
626 "ns3::Icmpv6L4Protocol",
627 "ns3::Ipv6OptionPad1",
628 "ns3::Ipv6OptionPadn",
629 "ns3::Ipv6OptionJumbogram",
630 "ns3::Ipv6OptionRouterAlert",
631 "ns3::Ipv6ExtensionHopByHop",
632 "ns3::Ipv6ExtensionDestination",
633 "ns3::Ipv6ExtensionFragment",
634 "ns3::Ipv6ExtensionRouting",
635 "ns3::Ipv6ExtensionLooseRouting",
636 "ns3::Ipv6ExtensionESP",
637 "ns3::Ipv6ExtensionAH",
638 "ns3::Ipv6L3Protocol",
639 "ns3::LoopbackNetDevice",
640 "ns3::Icmpv4L4Protocol",
641 "ns3::RttMeanDeviation",
642 "ns3::ArpL3Protocol",
643 "ns3::TcpL4Protocol",
644 "ns3::UdpL4Protocol",
645 "ns3::Ipv4L3Protocol",
646 "ns3::SimpleNetDevice",
647 "ns3::SimpleChannel",
649 "ns3::DropTailQueue",
651 "ns3::FriisSpectrumPropagationLossModel",
652 "ns3::Cost231PropagationLossModel",
653 "ns3::JakesPropagationLossModel",
654 "ns3::RandomPropagationLossModel",
655 "ns3::FriisPropagationLossModel",
656 "ns3::TwoRayGroundPropagationLossModel",
657 "ns3::LogDistancePropagationLossModel",
658 "ns3::ThreeLogDistancePropagationLossModel",
659 "ns3::NakagamiPropagationLossModel",
660 "ns3::FixedRssLossModel",
661 "ns3::MatrixPropagationLossModel",
662 "ns3::RangePropagationLossModel",
663 "ns3::RandomPropagationDelayModel",
664 "ns3::ConstantSpeedPropagationDelayModel",
665 "ns3::RateErrorModel",
666 "ns3::ListErrorModel",
667 "ns3::ReceiveListErrorModel",
669 "ns3::EnergySourceContainer",
670 "ns3::BSSchedulerRtps",
671 "ns3::BSSchedulerSimple",
672 "ns3::SimpleOfdmWimaxChannel",
673 "ns3::SimpleOfdmWimaxPhy",
674 "ns3::UplinkSchedulerMBQoS",
675 "ns3::UplinkSchedulerRtps",
676 "ns3::UplinkSchedulerSimple",
677 "ns3::IpcsClassifierRecord",
679 "ns3::BaseStationNetDevice",
680 "ns3::SubscriberStationNetDevice",
683 factories_info = dict({
685 "category": "Application",
686 "create_function": create_element,
687 "configure_function": configure_element,
689 "connector_types": [],
690 "stop_function": stop_application,
691 "start_function": start_application,
692 "status_function": status_application,
693 "box_attributes": ["MaxPackets",
701 "ns3::UdpL4Protocol": dict({
702 "category": "Protocol",
703 "create_function": create_element,
704 "configure_function": configure_element,
706 "connector_types": ["node"],
707 "box_attributes": ["ProtocolNumber"],
709 "ns3::RandomDiscPositionAllocator": dict({
710 "category": "Mobility",
711 "create_function": create_element,
712 "configure_function": configure_element,
714 "connector_types": [],
715 "box_attributes": ["Theta",
721 "category": "Topology",
722 "create_function": create_node,
723 "configure_function": configure_node,
725 "connector_types": ["devs", "apps", "protos", "mobility"],
726 "allow_routes": True,
727 "box_attributes": [],
729 "ns3::GridPositionAllocator": dict({
730 "category": "Mobility",
731 "create_function": create_element,
732 "configure_function": configure_element,
734 "connector_types": [],
735 "box_attributes": ["GridWidth",
742 "ns3::TapBridge": dict({
743 "category": "Device",
744 "create_function": create_element,
745 "configure_function": configure_element,
747 "connector_types": [],
748 "allow_addresses": True,
749 "box_attributes": ["Mtu",
758 "ns3::FlowMonitor": dict({
760 "create_function": create_element,
761 "configure_function": configure_element,
763 "connector_types": [],
764 "box_attributes": ["MaxPerHopDelay",
767 "PacketSizeBinWidth",
768 "FlowInterruptionsBinWidth",
769 "FlowInterruptionsMinTime"],
771 "ns3::ConstantVelocityMobilityModel": dict({
772 "category": "Mobility",
773 "create_function": create_element,
774 "configure_function": configure_element,
776 "connector_types": ["node"],
777 "box_attributes": ["Position",
780 "ns3::V4Ping": dict({
781 "category": "Application",
782 "create_function": create_element,
783 "configure_function": configure_element,
785 "connector_types": ["node"],
786 "stop_function": stop_application,
787 "start_function": start_application,
788 "status_function": status_application,
789 "box_attributes": ["Remote",
796 "ns3::dot11s::PeerLink": dict({
798 "create_function": create_element,
799 "configure_function": configure_element,
801 "connector_types": [],
802 "box_attributes": ["RetryTimeout",
809 "ns3::PointToPointNetDevice": dict({
810 "category": "Device",
811 "create_function": create_element,
812 "configure_function": configure_device,
814 "connector_types": ["node", "err", "queue", "chan"],
815 "allow_addresses": True,
816 "box_attributes": ["Mtu",
820 "traces": ["p2ppcap", "p2pascii"]
822 "ns3::NakagamiPropagationLossModel": dict({
824 "create_function": create_element,
825 "configure_function": configure_element,
827 "connector_types": [],
828 "box_attributes": ["Distance1",
834 "ns3::AarfWifiManager": dict({
835 "category": "Manager",
836 "create_function": create_element,
837 "configure_function": configure_element,
839 "connector_types": [],
840 "box_attributes": ["SuccessK",
842 "MaxSuccessThreshold",
844 "MinSuccessThreshold",
849 "FragmentationThreshold",
852 "ns3::Ipv6OptionJumbogram": dict({
854 "create_function": create_element,
855 "configure_function": configure_element,
857 "connector_types": [],
858 "box_attributes": ["OptionNumber"],
860 "ns3::TwoRayGroundPropagationLossModel": dict({
862 "create_function": create_element,
863 "configure_function": configure_element,
865 "connector_types": [],
866 "box_attributes": ["Lambda",
871 "ns3::OnOffApplication": dict({
872 "category": "Application",
873 "create_function": create_element,
874 "configure_function": configure_element,
876 "connector_types": ["node"],
877 "stop_function": stop_application,
878 "start_function": start_application,
879 "status_function": status_application,
880 "box_attributes": ["DataRate",
890 "ns3::AdhocWifiMac": dict({
892 "create_function": create_element,
893 "configure_function": configure_element,
895 "connector_types": [],
896 "box_attributes": ["CtsTimeout",
898 "BasicBlockAckTimeout",
899 "CompressedBlockAckTimeout",
904 "MaxPropagationDelay",
907 "ns3::ConstantAccelerationMobilityModel": dict({
908 "category": "Mobility",
909 "create_function": create_element,
910 "configure_function": configure_element,
912 "connector_types": ["node"],
913 "box_attributes": ["Position",
916 "ns3::GaussMarkovMobilityModel": dict({
917 "category": "Mobility",
918 "create_function": create_element,
919 "configure_function": configure_element,
921 "connector_types": [],
922 "box_attributes": ["Bounds",
934 "ns3::dot11s::HwmpProtocol": dict({
935 "category": "Protocol",
936 "create_function": create_element,
937 "configure_function": configure_element,
939 "connector_types": [],
940 "box_attributes": ["RandomStart",
942 "Dot11MeshHWMPmaxPREQretries",
943 "Dot11MeshHWMPnetDiameterTraversalTime",
944 "Dot11MeshHWMPpreqMinInterval",
945 "Dot11MeshHWMPperrMinInterval",
946 "Dot11MeshHWMPactiveRootTimeout",
947 "Dot11MeshHWMPactivePathTimeout",
948 "Dot11MeshHWMPpathToRootInterval",
949 "Dot11MeshHWMPrannInterval",
951 "UnicastPerrThreshold",
952 "UnicastPreqThreshold",
953 "UnicastDataThreshold",
957 "ns3::NscTcpL4Protocol": dict({
958 "category": "Protocol",
959 "create_function": create_element,
960 "configure_function": configure_element,
962 "connector_types": [],
963 "box_attributes": ["Library",
966 "ns3::dot11s::AirtimeLinkMetricCalculator": dict({
968 "create_function": create_element,
969 "configure_function": configure_element,
971 "connector_types": [],
972 "box_attributes": ["Dot11sMeshHeaderLength"],
974 "ns3::UanMacCw": dict({
976 "create_function": create_element,
977 "configure_function": configure_element,
979 "connector_types": [],
980 "box_attributes": ["CW",
983 "ns3::AthstatsWifiTraceSink": dict({
985 "create_function": create_element,
986 "configure_function": configure_element,
988 "connector_types": [],
989 "box_attributes": ["Interval"],
991 "ns3::FlameStack": dict({
993 "create_function": create_element,
994 "configure_function": configure_element,
996 "connector_types": [],
997 "box_attributes": [],
999 "ns3::UanMacRc": dict({
1001 "create_function": create_element,
1002 "configure_function": configure_element,
1004 "connector_types": [],
1005 "box_attributes": ["RetryRate",
1012 "NumberOfRetryRates",
1015 "ns3::WaypointMobilityModel": dict({
1016 "category": "Mobility",
1017 "create_function": create_element,
1018 "configure_function": configure_element,
1020 "connector_types": [],
1021 "box_attributes": ["WaypointsLeft",
1025 "ns3::FileDescriptorNetDevice": dict({
1026 "category": "Device",
1027 "create_function": create_element,
1028 "configure_function": configure_device,
1029 "help": "Network interface associated to a file descriptor",
1030 "connector_types": ["node", "->fd"],
1031 "allow_addresses": True,
1032 "box_attributes": ["Address",
1033 "LinuxSocketAddress",
1034 "tun_proto", "tun_addr", "tun_port", "tun_key"],
1035 "traces": ["fdpcap"]
1037 "ns3::Nepi::TunChannel": dict({
1038 "category": "Channel",
1039 "create_function": create_tunchannel,
1040 "preconfigure_function": preconfigure_tunchannel,
1041 "configure_function": postconfigure_tunchannel,
1042 "start_function": wait_tunchannel,
1043 "help": "Channel to forward FileDescriptorNetDevice data to "
1044 "other TAP interfaces supporting the NEPI tunneling protocol.",
1045 "connector_types": ["fd->", "udp", "tcp"],
1046 "allow_addresses": False,
1047 "box_attributes": ["tun_proto", "tun_addr", "tun_port", "tun_key"]
1049 "ns3::CsmaNetDevice": dict({
1050 "category": "Device",
1051 "create_function": create_element,
1052 "configure_function": configure_device,
1053 "help": "CSMA (carrier sense, multiple access) interface",
1054 "connector_types": ["node", "chan", "err", "queue"],
1055 "allow_addresses": True,
1056 "box_attributes": ["Address",
1060 "traces": ["csmapcap", "csmapcap_promisc"]
1062 "ns3::UanPropModelThorp": dict({
1064 "create_function": create_element,
1065 "configure_function": configure_element,
1067 "connector_types": [],
1068 "box_attributes": ["SpreadCoef"],
1070 "ns3::NqstaWifiMac": dict({
1072 "create_function": create_element,
1073 "configure_function": configure_element,
1075 "connector_types": [],
1076 "box_attributes": ["ProbeRequestTimeout",
1077 "AssocRequestTimeout",
1081 "BasicBlockAckTimeout",
1082 "CompressedBlockAckTimeout",
1087 "MaxPropagationDelay",
1090 "ns3::Icmpv6L4Protocol": dict({
1091 "category": "Protocol",
1092 "create_function": create_element,
1093 "configure_function": configure_element,
1095 "connector_types": ["node"],
1096 "box_attributes": ["DAD",
1099 "ns3::SimpleNetDevice": dict({
1100 "category": "Device",
1101 "create_function": create_element,
1102 "configure_function": configure_element,
1104 "connector_types": ["node", "chan"],
1105 "allow_addresses": True,
1106 "box_attributes": [],
1108 "ns3::FriisPropagationLossModel": dict({
1110 "create_function": create_element,
1111 "configure_function": configure_element,
1113 "connector_types": [],
1114 "box_attributes": ["Lambda",
1118 "ns3::Ipv6OptionRouterAlert": dict({
1120 "create_function": create_element,
1121 "configure_function": configure_element,
1123 "connector_types": [],
1124 "box_attributes": ["OptionNumber"],
1126 "ns3::UniformDiscPositionAllocator": dict({
1127 "category": "Mobility",
1128 "create_function": create_element,
1129 "configure_function": configure_element,
1131 "connector_types": [],
1132 "box_attributes": ["rho",
1136 "ns3::RandomBoxPositionAllocator": dict({
1137 "category": "Mobility",
1138 "create_function": create_element,
1139 "configure_function": configure_element,
1141 "connector_types": [],
1142 "box_attributes": ["X",
1146 "ns3::Ipv6ExtensionDestination": dict({
1148 "create_function": create_element,
1149 "configure_function": configure_element,
1151 "connector_types": [],
1152 "box_attributes": ["ExtensionNumber"],
1154 "ns3::LoopbackNetDevice": dict({
1155 "category": "Device",
1156 "create_function": create_element,
1157 "configure_function": configure_element,
1159 "connector_types": [],
1160 "box_attributes": [],
1162 "ns3::ConstantSpeedPropagationDelayModel": dict({
1163 "category": "Delay",
1164 "create_function": create_element,
1165 "configure_function": configure_element,
1167 "connector_types": ["chan"],
1168 "box_attributes": ["Speed"],
1170 "ns3::Ipv6ExtensionHopByHop": dict({
1172 "create_function": create_element,
1173 "configure_function": configure_element,
1175 "connector_types": [],
1176 "box_attributes": ["ExtensionNumber"],
1178 "ns3::BridgeChannel": dict({
1179 "category": "Channel",
1180 "create_function": create_element,
1181 "configure_function": configure_element,
1183 "connector_types": [],
1184 "box_attributes": [],
1186 "ns3::Radvd": dict({
1188 "create_function": create_element,
1189 "configure_function": configure_element,
1191 "connector_types": [],
1192 "box_attributes": ["StartTime",
1195 "ns3::PacketSocket": dict({
1197 "create_function": create_element,
1198 "configure_function": configure_element,
1200 "connector_types": [],
1201 "box_attributes": ["RcvBufSize"],
1203 "ns3::flame::FlameProtocol": dict({
1204 "category": "Protocol",
1205 "create_function": create_element,
1206 "configure_function": configure_element,
1208 "connector_types": [],
1209 "box_attributes": ["BroadcastInterval",
1212 "ns3::Cost231PropagationLossModel": dict({
1214 "create_function": create_element,
1215 "configure_function": configure_element,
1217 "connector_types": [],
1218 "box_attributes": ["Lambda",
1224 "ns3::Ipv6ExtensionESP": dict({
1226 "create_function": create_element,
1227 "configure_function": configure_element,
1229 "connector_types": [],
1230 "box_attributes": ["ExtensionNumber"],
1232 "ns3::CaraWifiManager": dict({
1233 "category": "Manager",
1234 "create_function": create_element,
1235 "configure_function": configure_element,
1237 "connector_types": [],
1238 "box_attributes": ["ProbeThreshold",
1246 "FragmentationThreshold",
1250 "ns3::RttMeanDeviation": dict({
1252 "create_function": create_element,
1253 "configure_function": configure_element,
1255 "connector_types": [],
1256 "box_attributes": ["Gain",
1258 "InitialEstimation",
1261 "ns3::Icmpv4L4Protocol": dict({
1262 "category": "Protocol",
1263 "create_function": create_element,
1264 "configure_function": configure_element,
1266 "connector_types": ["node"],
1267 "box_attributes": ["ProtocolNumber"],
1269 "ns3::WaveformGenerator": dict({
1271 "create_function": create_element,
1272 "configure_function": configure_element,
1274 "connector_types": [],
1275 "box_attributes": ["Period",
1278 "ns3::YansWifiChannel": dict({
1279 "category": "Channel",
1280 "create_function": create_element,
1281 "configure_function": configure_element,
1283 "connector_types": ["phys", "delay", "loss"],
1284 "box_attributes": [],
1286 "ns3::SimpleChannel": dict({
1287 "category": "Channel",
1288 "create_function": create_element,
1289 "configure_function": configure_element,
1291 "connector_types": ["devs"],
1292 "box_attributes": [],
1294 "ns3::Ipv6ExtensionFragment": dict({
1296 "create_function": create_element,
1297 "configure_function": configure_element,
1299 "connector_types": [],
1300 "box_attributes": ["ExtensionNumber"],
1302 "ns3::Dot11sStack": dict({
1304 "create_function": create_element,
1305 "configure_function": configure_element,
1307 "connector_types": [],
1308 "box_attributes": ["Root"],
1310 "ns3::FriisSpectrumPropagationLossModel": dict({
1312 "create_function": create_element,
1313 "configure_function": configure_element,
1315 "connector_types": [],
1316 "box_attributes": [],
1318 "ns3::RandomRectanglePositionAllocator": dict({
1319 "category": "Mobility",
1320 "create_function": create_element,
1321 "configure_function": configure_element,
1323 "connector_types": [],
1324 "box_attributes": ["X",
1327 "ns3::NqapWifiMac": dict({
1329 "create_function": create_element,
1330 "configure_function": configure_element,
1332 "connector_types": [],
1333 "box_attributes": ["BeaconInterval",
1337 "BasicBlockAckTimeout",
1338 "CompressedBlockAckTimeout",
1343 "MaxPropagationDelay",
1346 "ns3::HierarchicalMobilityModel": dict({
1347 "category": "Mobility",
1348 "create_function": create_element,
1349 "configure_function": configure_element,
1351 "connector_types": ["node"],
1352 "box_attributes": ["Position",
1355 "ns3::ThreeLogDistancePropagationLossModel": dict({
1357 "create_function": create_element,
1358 "configure_function": configure_element,
1360 "connector_types": [],
1361 "box_attributes": ["Distance0",
1369 "ns3::UanNoiseModelDefault": dict({
1371 "create_function": create_element,
1372 "configure_function": configure_element,
1374 "connector_types": [],
1375 "box_attributes": ["Wind",
1378 "ns3::dot11s::HwmpRtable": dict({
1380 "create_function": create_element,
1381 "configure_function": configure_element,
1383 "connector_types": [],
1384 "box_attributes": [],
1386 "ns3::PacketBurst": dict({
1388 "create_function": create_element,
1389 "configure_function": configure_element,
1391 "connector_types": [],
1392 "box_attributes": [],
1394 "ns3::RandomPropagationDelayModel": dict({
1395 "category": "Delay",
1396 "create_function": create_element,
1397 "configure_function": configure_element,
1399 "connector_types": [],
1400 "box_attributes": ["Variable"],
1402 "ns3::ArpL3Protocol": dict({
1403 "category": "Protocol",
1404 "create_function": create_element,
1405 "configure_function": configure_element,
1407 "connector_types": ["node"],
1408 "box_attributes": [],
1410 "ns3::SteadyStateRandomWaypointMobilityModel": dict({
1411 "category": "Mobility",
1412 "create_function": create_element,
1413 "configure_function": configure_element,
1415 "connector_types": [],
1416 "box_attributes": ["MinSpeed",
1427 "ns3::BaseStationNetDevice": dict({
1428 "category": "Device",
1429 "create_function": create_base_station,
1430 "configure_function": configure_station,
1431 "help": "Base station for wireless mobile network",
1432 "connector_types": ["node", "chan", "phy", "uplnk", "dwnlnk"],
1433 "allow_addresses": True,
1434 "box_attributes": ["InitialRangInterval",
1440 "MaxRangCorrectionRetries",
1444 "traces": ["wimaxpcap", "wimaxascii"],
1446 "ns3::UdpServer": dict({
1447 "category": "Application",
1448 "create_function": create_element,
1449 "configure_function": configure_element,
1451 "connector_types": ["node"],
1452 "stop_function": stop_application,
1453 "start_function": start_application,
1454 "status_function": status_application,
1455 "box_attributes": ["Port",
1460 "ns3::AarfcdWifiManager": dict({
1461 "category": "Manager",
1462 "create_function": create_element,
1463 "configure_function": configure_element,
1465 "connector_types": [],
1466 "box_attributes": ["SuccessK",
1468 "MaxSuccessThreshold",
1469 "MinTimerThreshold",
1470 "MinSuccessThreshold",
1473 "TurnOffRtsAfterRateDecrease",
1474 "TurnOnRtsAfterRateIncrease",
1479 "FragmentationThreshold",
1482 "ns3::UanTransducerHd": dict({
1484 "create_function": create_element,
1485 "configure_function": configure_element,
1487 "connector_types": [],
1488 "box_attributes": [],
1490 "ns3::LogDistancePropagationLossModel": dict({
1492 "create_function": create_element,
1493 "configure_function": configure_element,
1495 "connector_types": ["prev", "next"],
1496 "box_attributes": ["Exponent",
1497 "ReferenceDistance",
1500 "ns3::EmuNetDevice": dict({
1501 "category": "Device",
1502 "create_function": create_element,
1503 "configure_function": configure_element,
1505 "connector_types": ["node", "queue"],
1506 "box_attributes": ["Mtu",
1513 "ns3::Ipv6ExtensionLooseRouting": dict({
1514 "category": "Routing",
1515 "create_function": create_element,
1516 "configure_function": configure_element,
1518 "connector_types": [],
1519 "box_attributes": ["ExtensionNumber"],
1521 "ns3::RandomWaypointMobilityModel": dict({
1522 "category": "Mobility",
1523 "create_function": create_element,
1524 "configure_function": configure_element,
1526 "connector_types": ["node"],
1527 "box_attributes": ["Speed",
1532 "ns3::RangePropagationLossModel": dict({
1534 "create_function": create_element,
1535 "configure_function": configure_element,
1537 "connector_types": [],
1538 "box_attributes": ["MaxRange"],
1540 "ns3::AlohaNoackNetDevice": dict({
1541 "category": "Device",
1542 "create_function": create_element,
1543 "configure_function": configure_element,
1545 "connector_types": [],
1546 "box_attributes": ["Address",
1549 "ns3::MatrixPropagationLossModel": dict({
1551 "create_function": create_element,
1552 "configure_function": configure_element,
1554 "connector_types": [],
1555 "box_attributes": ["DefaultLoss"],
1557 "ns3::WifiNetDevice": dict({
1559 "create_function": create_element,
1560 "configure_function": configure_device,
1562 "connector_types": ["node", "mac", "phy", "manager"],
1563 "allow_addresses": True,
1564 "box_attributes": ["Mtu"],
1566 "ns3::CsmaChannel": dict({
1567 "category": "Topology",
1568 "create_function": create_element,
1569 "configure_function": configure_element,
1571 "connector_types": ["devs"],
1572 "box_attributes": ["DataRate",
1575 "ns3::BridgeNetDevice": dict({
1576 "category": "Device",
1577 "create_function": create_element,
1578 "configure_function": configure_element,
1580 "connector_types": ["node"],
1581 "allow_addresses": True,
1582 "box_attributes": ["Mtu",
1586 "ns3::Ipv6ExtensionRouting": dict({
1587 "category": "Routing",
1588 "create_function": create_element,
1589 "configure_function": configure_element,
1591 "connector_types": [],
1592 "box_attributes": ["ExtensionNumber"],
1594 "ns3::QstaWifiMac": dict({
1596 "create_function": create_wifi_standard_model,
1597 "configure_function": configure_element,
1598 "help": "Station Wifi MAC Model",
1599 "connector_types": ["dev"],
1600 "box_attributes": ["ProbeRequestTimeout",
1601 "AssocRequestTimeout",
1605 "BasicBlockAckTimeout",
1606 "CompressedBlockAckTimeout",
1611 "MaxPropagationDelay",
1615 "ns3::UdpEchoClient": dict({
1616 "category": "Application",
1617 "create_function": create_element,
1618 "configure_function": configure_element,
1620 "connector_types": ["node"],
1621 "stop_function": stop_application,
1622 "start_function": start_application,
1623 "status_function": status_application,
1624 "box_attributes": ["MaxPackets",
1632 "ns3::UdpClient": dict({
1633 "category": "Application",
1634 "create_function": create_element,
1635 "configure_function": configure_element,
1637 "connector_types": ["node"],
1638 "stop_function": stop_application,
1639 "start_function": start_application,
1640 "status_function": status_application,
1641 "box_attributes": ["MaxPackets",
1649 "ns3::PointToPointChannel": dict({
1650 "category": "Channel",
1651 "create_function": create_element,
1652 "configure_function": configure_element,
1654 "connector_types": ["dev2"],
1655 "box_attributes": ["Delay"],
1657 "ns3::Ipv6StaticRouting": dict({
1658 "category": "Routing",
1659 "create_function": create_element,
1660 "configure_function": configure_element,
1662 "connector_types": [],
1663 "box_attributes": [],
1665 "ns3::DropTailQueue": dict({
1666 "category": "Queue",
1667 "create_function": create_element,
1668 "configure_function": configure_element,
1670 "connector_types": ["dev"],
1671 "box_attributes": ["MaxPackets",
1674 "ns3::ConstantPositionMobilityModel": dict({
1675 "category": "Mobility",
1676 "create_function": create_element,
1677 "configure_function": configure_element,
1679 "connector_types": ["node"],
1680 "box_attributes": ["Position",
1683 "ns3::FixedRssLossModel": dict({
1685 "create_function": create_element,
1686 "configure_function": configure_element,
1688 "connector_types": [],
1689 "box_attributes": ["Rss"],
1691 "ns3::EnergySourceContainer": dict({
1692 "category": "Energy",
1693 "create_function": create_element,
1694 "configure_function": configure_element,
1696 "connector_types": [],
1697 "box_attributes": [],
1699 "ns3::RandomWalk2dMobilityModel": dict({
1700 "category": "Mobility",
1701 "create_function": create_element,
1702 "configure_function": configure_element,
1704 "connector_types": ["node"],
1705 "box_attributes": ["Bounds",
1714 "ns3::ListPositionAllocator": dict({
1716 "create_function": create_element,
1717 "configure_function": configure_element,
1719 "connector_types": [],
1720 "box_attributes": [],
1722 "ns3::dot11s::PeerManagementProtocol": dict({
1723 "category": "Protocol",
1724 "create_function": create_element,
1725 "configure_function": configure_element,
1727 "connector_types": [],
1728 "box_attributes": ["MaxNumberOfPeerLinks",
1729 "MaxBeaconShiftValue",
1730 "EnableBeaconCollisionAvoidance"],
1732 "ns3::MeshPointDevice": dict({
1733 "category": "Topology",
1734 "create_function": create_element,
1735 "configure_function": configure_element,
1737 "connector_types": [],
1738 "allow_addresses": True,
1739 "box_attributes": ["Mtu"],
1741 "ns3::BasicEnergySource": dict({
1742 "category": "Energy",
1743 "create_function": create_element,
1744 "configure_function": configure_element,
1746 "connector_types": [],
1747 "box_attributes": ["BasicEnergySourceInitialEnergyJ",
1748 "BasicEnergySupplyVoltageV",
1749 "PeriodicEnergyUpdateInterval"],
1751 "ns3::Ipv6OptionPadn": dict({
1753 "create_function": create_element,
1754 "configure_function": configure_element,
1756 "connector_types": [],
1757 "box_attributes": ["OptionNumber"],
1759 "ns3::QapWifiMac": dict({
1761 "create_function": create_wifi_standard_model,
1762 "configure_function": configure_element,
1763 "help": "Access point Wifi MAC Model",
1764 "connector_types": ["dev"],
1765 "box_attributes": ["BeaconInterval",
1769 "BasicBlockAckTimeout",
1770 "CompressedBlockAckTimeout",
1775 "MaxPropagationDelay",
1779 "ns3::YansErrorRateModel": dict({
1780 "category": "Error",
1781 "create_function": create_element,
1782 "configure_function": configure_element,
1784 "connector_types": [],
1785 "box_attributes": [],
1787 "ns3::WifiMacQueue": dict({
1788 "category": "Queue",
1789 "create_function": create_element,
1790 "configure_function": configure_element,
1792 "connector_types": [],
1793 "box_attributes": ["MaxPacketNumber",
1796 "ns3::NonCommunicatingNetDevice": dict({
1797 "category": "Device",
1798 "create_function": create_element,
1799 "configure_function": configure_element,
1801 "connector_types": [],
1802 "allow_addresses": True,
1803 "box_attributes": [],
1805 "ns3::RateErrorModel": dict({
1806 "category": "Error",
1807 "create_function": create_element,
1808 "configure_function": configure_element,
1810 "connector_types": [],
1811 "box_attributes": ["ErrorUnit",
1816 "ns3::MeshWifiInterfaceMac": dict({
1818 "create_function": create_element,
1819 "configure_function": configure_element,
1821 "connector_types": [],
1822 "box_attributes": ["BeaconInterval",
1827 "BasicBlockAckTimeout",
1828 "CompressedBlockAckTimeout",
1833 "MaxPropagationDelay",
1836 "ns3::UanPhyCalcSinrDual": dict({
1838 "create_function": create_element,
1839 "configure_function": configure_element,
1841 "connector_types": [],
1842 "box_attributes": [],
1844 "ns3::Ipv6ExtensionAH": dict({
1846 "create_function": create_element,
1847 "configure_function": configure_element,
1849 "connector_types": [],
1850 "box_attributes": ["ExtensionNumber"],
1852 "ns3::SingleModelSpectrumChannel": dict({
1853 "category": "Channel",
1854 "create_function": create_element,
1855 "configure_function": configure_element,
1857 "connector_types": [],
1858 "box_attributes": [],
1860 "ns3::YansWifiPhy": dict({
1862 "create_function": create_wifi_standard_model,
1863 "configure_function": configure_element,
1865 "connector_types": ["dev", "err", "chan"],
1866 "box_attributes": ["EnergyDetectionThreshold",
1867 "CcaMode1Threshold",
1874 "ChannelSwitchDelay",
1877 "traces": ["yanswifipcap"]
1879 "ns3::WifiRadioEnergyModel": dict({
1880 "category": "Energy",
1881 "create_function": create_element,
1882 "configure_function": configure_element,
1884 "connector_types": [],
1885 "box_attributes": ["TxCurrentA",
1890 "ns3::EdcaTxopN": dict({
1892 "create_function": create_element,
1893 "configure_function": configure_element,
1895 "connector_types": [],
1896 "box_attributes": ["BlockAckThreshold",
1901 "ns3::UanPhyPerGenDefault": dict({
1903 "create_function": create_element,
1904 "configure_function": configure_element,
1906 "connector_types": [],
1907 "box_attributes": ["Threshold"],
1909 "ns3::IdealWifiManager": dict({
1910 "category": "Manager",
1911 "create_function": create_element,
1912 "configure_function": configure_element,
1914 "connector_types": [],
1915 "box_attributes": ["BerThreshold",
1920 "FragmentationThreshold",
1923 "ns3::MultiModelSpectrumChannel": dict({
1924 "category": "Channel",
1925 "create_function": create_element,
1926 "configure_function": configure_element,
1928 "connector_types": [],
1929 "box_attributes": [],
1931 "ns3::HalfDuplexIdealPhy": dict({
1933 "create_function": create_element,
1934 "configure_function": configure_element,
1936 "connector_types": [],
1937 "box_attributes": ["Rate"],
1939 "ns3::UanPhyCalcSinrDefault": dict({
1941 "create_function": create_element,
1942 "configure_function": configure_element,
1944 "connector_types": [],
1945 "box_attributes": [],
1947 "ns3::ReceiveListErrorModel": dict({
1948 "category": "Error",
1949 "create_function": create_element,
1950 "configure_function": configure_element,
1952 "connector_types": [],
1953 "box_attributes": ["IsEnabled"],
1955 "ns3::SpectrumAnalyzer": dict({
1957 "create_function": create_element,
1958 "configure_function": configure_element,
1960 "connector_types": [],
1961 "box_attributes": ["Resolution",
1962 "NoisePowerSpectralDensity"],
1964 "ns3::ConstantRateWifiManager": dict({
1965 "category": "Manager",
1966 "create_function": create_element,
1967 "configure_function": configure_element,
1969 "connector_types": ["dev"],
1970 "box_attributes": ["DataMode",
1976 "FragmentationThreshold",
1979 "ns3::Ipv6OptionPad1": dict({
1981 "create_function": create_element,
1982 "configure_function": configure_element,
1984 "connector_types": [],
1985 "box_attributes": ["OptionNumber"],
1987 "ns3::UdpTraceClient": dict({
1989 "create_function": create_element,
1990 "configure_function": configure_element,
1992 "connector_types": [],
1993 "box_attributes": ["RemoteAddress",
1999 "ns3::RraaWifiManager": dict({
2000 "category": "Manager",
2001 "create_function": create_element,
2002 "configure_function": configure_element,
2004 "connector_types": [],
2005 "box_attributes": ["Basic",
2033 "FragmentationThreshold",
2036 "ns3::RandomPropagationLossModel": dict({
2038 "create_function": create_element,
2039 "configure_function": configure_element,
2041 "connector_types": [],
2042 "box_attributes": ["Variable"],
2044 "ns3::UanChannel": dict({
2045 "category": "Channel",
2046 "create_function": create_element,
2047 "configure_function": configure_element,
2049 "connector_types": [],
2050 "box_attributes": [],
2052 "ns3::MinstrelWifiManager": dict({
2053 "category": "Manager",
2054 "create_function": create_element,
2055 "configure_function": configure_element,
2057 "connector_types": [],
2058 "box_attributes": ["UpdateStatistics",
2068 "FragmentationThreshold",
2071 "ns3::UanPhyDual": dict({
2073 "create_function": create_element,
2074 "configure_function": configure_element,
2076 "connector_types": [],
2077 "box_attributes": ["CcaThresholdPhy1",
2083 "SupportedModesPhy1",
2084 "SupportedModesPhy2"],
2086 "ns3::ListErrorModel": dict({
2087 "category": "Error",
2088 "create_function": create_element,
2089 "configure_function": configure_element,
2091 "connector_types": ["dev"],
2092 "box_attributes": ["IsEnabled"],
2094 "ns3::VirtualNetDevice": dict({
2095 "category": "Device",
2096 "create_function": create_element,
2097 "configure_function": configure_element,
2099 "connector_types": [],
2100 "allow_addresses": True,
2101 "box_attributes": ["Mtu"],
2103 "ns3::UanPhyGen": dict({
2105 "create_function": create_element,
2106 "configure_function": configure_element,
2108 "connector_types": [],
2109 "box_attributes": ["CcaThreshold",
2115 "ns3::Ipv6L3Protocol": dict({
2116 "category": "Protocol",
2117 "create_function": create_element,
2118 "configure_function": configure_element,
2120 "connector_types": ["node"],
2121 "box_attributes": ["DefaultTtl",
2124 "ns3::PointToPointRemoteChannel": dict({
2125 "category": "Channel",
2126 "create_function": create_element,
2127 "configure_function": configure_element,
2129 "connector_types": [],
2130 "box_attributes": ["Delay"],
2132 "ns3::UanPhyPerUmodem": dict({
2134 "create_function": create_element,
2135 "configure_function": configure_element,
2137 "connector_types": [],
2138 "box_attributes": [],
2140 "ns3::OnoeWifiManager": dict({
2141 "category": "Manager",
2142 "create_function": create_element,
2143 "configure_function": configure_element,
2145 "connector_types": [],
2146 "box_attributes": ["UpdatePeriod",
2148 "AddCreditThreshold",
2153 "FragmentationThreshold",
2156 "ns3::QadhocWifiMac": dict({
2158 "create_function": create_element,
2159 "configure_function": configure_element,
2161 "connector_types": [],
2162 "box_attributes": ["CtsTimeout",
2164 "BasicBlockAckTimeout",
2165 "CompressedBlockAckTimeout",
2170 "MaxPropagationDelay",
2173 "ns3::JakesPropagationLossModel": dict({
2175 "create_function": create_element,
2176 "configure_function": configure_element,
2178 "connector_types": [],
2179 "box_attributes": ["NumberOfRaysPerPath",
2180 "NumberOfOscillatorsPerRay",
2184 "ns3::PacketSink": dict({
2185 "category": "Application",
2186 "create_function": create_element,
2187 "configure_function": configure_element,
2189 "connector_types": ["node"],
2190 "stop_function": stop_application,
2191 "start_function": start_application,
2192 "status_function": status_application,
2193 "box_attributes": ["Local",
2198 "ns3::RandomDirection2dMobilityModel": dict({
2199 "category": "Mobility",
2200 "create_function": create_element,
2201 "configure_function": configure_element,
2203 "connector_types": ["node"],
2204 "box_attributes": ["Bounds",
2210 "ns3::UanMacAloha": dict({
2212 "create_function": create_element,
2213 "configure_function": configure_element,
2215 "connector_types": [],
2216 "box_attributes": [],
2218 "ns3::MsduStandardAggregator": dict({
2220 "create_function": create_element,
2221 "configure_function": configure_element,
2223 "connector_types": [],
2224 "box_attributes": ["MaxAmsduSize"],
2226 "ns3::DcaTxop": dict({
2228 "create_function": create_element,
2229 "configure_function": configure_element,
2231 "connector_types": [],
2232 "box_attributes": ["MinCw",
2236 "ns3::UanPhyCalcSinrFhFsk": dict({
2238 "create_function": create_element,
2239 "configure_function": configure_element,
2241 "connector_types": [],
2242 "box_attributes": ["NumberOfHops"],
2244 "ns3::UanPropModelIdeal": dict({
2246 "create_function": create_element,
2247 "configure_function": configure_element,
2249 "connector_types": [],
2250 "box_attributes": [],
2252 "ns3::UanMacRcGw": dict({
2254 "create_function": create_element,
2255 "configure_function": configure_element,
2257 "connector_types": [],
2258 "box_attributes": ["MaxReservations",
2266 "NumberOfRetryRates",
2271 "ns3::NistErrorRateModel": dict({
2272 "category": "Error",
2273 "create_function": create_element,
2274 "configure_function": configure_element,
2276 "connector_types": ["phy"],
2277 "box_attributes": [],
2279 "ns3::Ipv4L3Protocol": dict({
2280 "category": "Protocol",
2281 "create_function": create_ipv4protocol,
2282 "configure_function": configure_element,
2284 "connector_types": ["node"],
2285 "box_attributes": ["DefaultTtl",
2289 "ns3::aodv::RoutingProtocol": dict({
2290 "category": "Protocol",
2291 "create_function": create_element,
2292 "configure_function": configure_element,
2294 "connector_types": [],
2295 "box_attributes": ["HelloInterval",
2298 "NodeTraversalTime",
2300 "ActiveRouteTimeout",
2307 "PathDiscoveryTime",
2316 "ns3::TcpL4Protocol": dict({
2317 "category": "Protocol",
2318 "create_function": create_element,
2319 "configure_function": configure_element,
2321 "connector_types": ["node"],
2322 "box_attributes": ["RttEstimatorFactory",
2325 "ns3::olsr::RoutingProtocol": dict({
2326 "category": "Protocol",
2327 "create_function": create_element,
2328 "configure_function": configure_element,
2330 "connector_types": [],
2331 "box_attributes": ["HelloInterval",
2337 "ns3::UdpEchoServer": dict({
2338 "category": "Application",
2339 "create_function": create_element,
2340 "configure_function": configure_element,
2342 "connector_types": ["node"],
2343 "stop_function": stop_application,
2344 "start_function": start_application,
2345 "status_function": status_application,
2346 "box_attributes": ["Port",
2350 "ns3::AmrrWifiManager": dict({
2351 "category": "Manager",
2352 "create_function": create_element,
2353 "configure_function": configure_element,
2355 "connector_types": [],
2356 "box_attributes": ["UpdatePeriod",
2359 "MaxSuccessThreshold",
2360 "MinSuccessThreshold",
2365 "FragmentationThreshold",
2368 "ns3::ArfWifiManager": dict({
2369 "category": "Manager",
2370 "create_function": create_element,
2371 "configure_function": configure_element,
2373 "connector_types": ["dev"],
2374 "box_attributes": ["TimerThreshold",
2380 "FragmentationThreshold",
2383 "ns3::SubscriberStationNetDevice": dict({
2384 "category": "Device",
2385 "create_function": create_subscriber_station,
2386 "configure_function": configure_station,
2387 "help": "Subscriber station for mobile wireless network",
2388 "connector_types": ["node", "chan", "phy", "sflows"],
2389 "allow_addresses": True,
2390 "box_attributes": ["LostDlMapInterval",
2391 "LostUlMapInterval",
2401 "MaxContentionRangingRetries",
2405 "traces": ["wimaxpcap", "wimaxascii"],
2407 "ns3::flame::FlameRtable": dict({
2409 "create_function": create_element,
2410 "configure_function": configure_element,
2412 "connector_types": [],
2413 "box_attributes": ["Lifetime"],
2415 "ns3::BSSchedulerRtps": dict({
2416 "category": "Service Flow",
2417 "create_function": create_element,
2418 "configure_function": configure_element,
2419 "help": "Simple downlink scheduler for rtPS flows",
2420 "connector_types": ["dev"],
2421 "box_attributes": [],
2423 "ns3::BSSchedulerSimple": dict({
2424 "category": "Service Flow",
2425 "create_function": create_element,
2426 "configure_function": configure_element,
2427 "help": "simple downlink scheduler for service flows",
2428 "connector_types": ["dev"],
2429 "box_attributes": [],
2431 "ns3::SimpleOfdmWimaxChannel": dict({
2432 "category": "Channel",
2433 "create_function": create_wimax_channel,
2434 "configure_function": configure_element,
2435 "help": "Wimax channel",
2436 "connector_types": ["devs"],
2437 "box_attributes": [],
2439 "ns3::SimpleOfdmWimaxPhy": dict({
2441 "create_function": create_wimax_phy,
2442 "configure_function": configure_element,
2443 "help": "Wimax Phy",
2444 "connector_types": ["dev"],
2445 "box_attributes": [],
2447 "ns3::UplinkSchedulerSimple": dict({
2448 "category": "Service Flow",
2449 "create_function": create_element_no_constructor,
2450 "configure_function": configure_element,
2451 "help": "Simple uplink scheduler for service flows",
2452 "connector_types": ["dev"],
2453 "box_attributes": [],
2455 "ns3::UplinkSchedulerRtps": dict({
2456 "category": "Service Flow",
2457 "create_function": create_element_no_constructor,
2458 "configure_function": configure_element,
2459 "help": "Simple uplink scheduler for rtPS flows",
2460 "connector_types": ["dev"],
2461 "box_attributes": [],
2463 "ns3::IpcsClassifierRecord": dict({
2464 "category": "Service Flow",
2465 "create_function": create_ipcs_classifier_record,
2466 "configure_function": configure_element,
2467 "help": "Classifier record for service flow",
2468 "connector_types": ["sflow"],
2469 "box_attributes": ["ClassifierSrcAddress",
2470 "ClassifierSrcMask",
2471 "ClassifierDstAddress",
2472 "ClassifierDstMask",
2473 "ClassifierSrcPortLow",
2474 "ClassifierSrcPortHigh",
2475 "ClassifierDstPortLow",
2476 "ClassifierDstPortHigh",
2477 "ClassifierProtocol",
2478 "ClassifierPriority"],
2480 "ns3::ServiceFlow": dict({
2481 "category": "Service Flow",
2482 "create_function": create_service_flow,
2483 "configure_function": configure_element,
2484 "help": "Service flow for QoS",
2485 "connector_types": ["classif", "dev"],
2486 "box_attributes": ["ServiceFlowDirection",
2487 "ServiceFlowSchedulingType"],