Compare commits

..

5466 Commits

Author SHA1 Message Date
Tom Henderson e0aa655715 re-enable openflow test suite 2011-12-23 13:08:14 -08:00
Tom Henderson 76d629d72a Remove template module from doxygen configuration 2011-12-23 12:28:32 -08:00
Tom Henderson fc38c0762f Add bug references to ns-2 mobility helper 2011-12-23 12:22:38 -08:00
Tom Henderson cddfa756eb Update CHANGES.html 2011-12-23 12:13:54 -08:00
Tom Henderson b97001e014 Freshen the tutorial 2011-12-23 12:00:12 -08:00
Tom Henderson 2cff47cffc fix order of items in RELEASE_NOTES 2011-12-23 11:29:36 -08:00
Tom Henderson 7ae712d0af update RELEASE_NOTES 2011-12-23 11:28:31 -08:00
Tom Henderson 63a99ea167 update platforms supported 2011-12-21 21:13:52 -08:00
Tommaso Pecorella d6d24d7e45 Bug 1318 - Clarify the Ipv6RawSocket documentation. 2011-12-20 18:57:31 +01:00
Tom Henderson a4899d7656 update documentation on creating new modules 2011-12-18 21:30:46 -08:00
John Abraham d31552a527 NetAnim: Doc changes 2011-12-18 15:13:05 -05:00
Tom Henderson fe117bd682 remove src/template 2011-12-16 18:12:27 -08:00
Mitch Watrous 9f61bc316b make create-module.py generate a test skeleton 2011-12-16 18:11:42 -08:00
Tom Henderson 5668e2b361 suppress list of modules built when running program from waf 2011-12-16 18:10:03 -08:00
Tom Henderson 1c5c4cc698 update AUTHORS for ns-3.13 2011-12-16 14:02:31 -08:00
Tom Henderson 67a5c739d9 update CHANGES.html 2011-12-16 13:49:35 -08:00
Tom Henderson d402b35687 click installation hint 2011-12-16 09:54:28 -08:00
Leonard Tracy 35dd07891a change license to GPLv2 2011-12-16 09:23:45 -08:00
Gustavo J. A. M. Carneiro e19938fda5 Bug 1298 - Undefined click symbols 2011-12-16 14:24:30 +00:00
Marcos Talau 1830add376 change RED licenses to GPLv2 2011-12-15 21:54:22 -08:00
Tom Henderson 4ee9b10bf1 add doc/ns3-object.txt to .hgignore 2011-12-14 21:51:31 -08:00
Tom Henderson 510783a09c add bug fix list and supported platforms to RELEASE_NOTES 2011-12-14 21:50:43 -08:00
Mitch Watrous c6a7f3a682 bug 1305 - do not list modules when exiting waf shell 2011-12-14 21:50:12 -08:00
Kirill Andreev fb6d5edc3f Bug 1301 - Ns2MobilityHelper causes Node GetPosition() to return NaN: fixed. 2011-12-14 19:00:11 +03:00
Kirill Andreev f13bf276f3 Bug 1059 - Unable to load trace files created from SUMO and TraNS Lite: fixed 2011-12-14 18:50:28 +03:00
Tommaso Pecorella 12eb268bf4 Bug 1312: TopologyRead Assert condition fix 2011-12-13 00:15:32 +01:00
Tommaso Pecorella a5ceb2cf29 TopologyRead string handling optimization 2011-12-13 00:14:44 +01:00
Kirill Andreev 54e9e3200a Bug 1020 - Wrong usage of the originator sequence number in HWMP PREP: fixed 2011-12-12 19:00:45 +03:00
Kirill Andreev 2dbe6fbd4f Bug 1021: Beacon collision avoidance in Mesh module works wrong. fixed. 2011-12-12 18:40:41 +03:00
Mauro Tortonesi cccd7aaa1a Bug 1229 - Multiplication overflow in WaypointMobilityModel::EndMobility
method: fixed.
2011-12-12 15:38:45 +03:00
Adrian S Tam 0b4502f505 Fix bug 1299 2011-12-12 00:28:38 -05:00
Adrian S Tam be7f2d54bc Improve code readability in TCP module. 2011-12-11 23:57:15 -05:00
Tom Henderson 24eee8459b rescan bindings 2011-12-11 20:04:07 -08:00
Tommaso Pecorella 1a6c4faf6b IPv4 packets double fragmentation was broken. Fixed. 2011-12-10 23:52:40 +01:00
Gustavo J. A. M. Carneiro e8f1e17b70 Rescan bindings 2011-12-08 00:33:13 -08:00
Adrian S Tam fbd9fd20ee Typo in last commit. 2011-12-08 01:03:37 -05:00
Adrian S Tam c93ef86d94 TcpSocketBase improved out of range checking 2011-12-08 00:59:35 -05:00
Tom Henderson a0476f4f87 Fix outdated README information 2011-12-07 16:11:42 -08:00
Gary Pei c7048115e4 Fix wifi-clear-channel-cmu.cc example 2011-12-07 16:09:12 -08:00
Adrian S Tam 0ca076a06a Nagle's algorithm in TCP (closes bug 1039) 2011-12-07 11:22:10 -05:00
John Abraham 4c7b5db42b NetAnim: fix for bcast packet reuse 2011-12-06 08:42:44 -05:00
John Abraham 307ea48b61 Red Queue optimized build fixes 2011-12-05 20:02:42 -05:00
John Abraham a0909ae62f Red Queue doxygen changes 2011-12-05 19:48:03 -05:00
John Abraham 49687d3064 Red Queue style changes 2011-12-05 19:11:11 -05:00
John Abraham 898db05c5a Red Queue 2011-12-05 19:05:39 -05:00
John Abraham a53be62d01 RED 2011-12-05 09:39:55 -05:00
John Abraham 4824860f48 Index: src/network/examples/red-tests.cc
===================================================================
new file mode 100644
2011-12-05 09:39:28 -05:00
Adrian S Tam 300b3cd758 Advance m_nextTxSequence upon retransmit after RTO (fixes bug 1112) 2011-12-03 15:35:47 -05:00
Adrian S Tam 89019eabf5 Send ACK to some out-of-order packets (fixes bug 1112 and part of 1256) 2011-12-03 14:02:19 -05:00
Adrian S Tam d349afb5e4 TCP's attribute variables are initialized in constructor (mutes valgrind) 2011-12-01 21:41:16 -05:00
Adrian S Tam af8ae01917 Mixed bugfixes on TCP, closes bug 1166, 1227, 1242.
1. Make connection count (m_cnCount) a separate variable from the number of
   connection retries (m_cnRetries), so that the number of connection retries
   can be cloned without affecting the number of connections to be made in the
   cloned sockets.
2. There was a case that the m_highTxMark was mistaken as m_nextTxSequence
3. Update m_lastRtt correctly, fixes bug 1242
4. The endpoint allocation/deallocation is rewritten so that the endpoint
   remembers the correct peer's address and it is deleted upon close.
   RecvFrom() call now use the data in endpoint to return the peer's address,
   and the socket closes nicely.
5. TcpL4Protocol::m_sockets now holds a complete list of all existing sockets
6. RST packet is sent before CloseAndNotify() is called, so that m_endPoint is
   not yet destroyed, fixes bug 1166
7. Fix cwnd deflation bug in partial ACK handling in TcpNewReno
8. Created attributes for fast retransmit threshold (m_retxThresh) and max
   advertised window size (m_maxWinSize)
9. Refactor SendPendingData() and DoRetransmit(), created SendDataPacket()
10. Call NotifySend() after connection established in ProcessSynSent() and
    ProcessSynRcvd()
11. Defines new flags in TcpHeader: ECE and CWR (see RFC3168)
12. Prepared hooks for TCP option handling
13. Code tidy up
14. Fix the definition of out-of-order packets
15. TCP can now move from TIME_WAIT state to CLOSED state after 2*MSL
16. Implemented limited transmit (RFC3042) in TcpNewReno, c.f. bug 1227
17. Added Raj's email to the preamble, as TcpSocketBase was modified from
    TcpSocketImpl.
2011-12-01 04:53:20 -05:00
John Abraham 912d8bbf6e NetAnim: typos and style changes 2011-11-30 19:16:09 -05:00
John Abraham e39f1ebe10 NetAnim: One time initialization, fixes for long duration runs 2011-11-30 19:11:19 -05:00
Gustavo J. A. M. Carneiro 0f1c425737 Fix and rescan the bindings 2011-11-28 07:40:36 -08:00
Gustavo J. A. M. Carneiro 6bfb0721b8 Don't include mobility-model.h, to make Mathieu happy 2011-11-28 10:46:33 +00:00
Tom Henderson 9f49549bed Update link to ns-2 mobility documentation 2011-11-27 21:24:02 -08:00
Tom Henderson 6fd41f7ca5 rescan bindings 2011-11-27 13:15:50 -08:00
Tom Henderson 2e38efd294 fix darwin compiler warning 2011-11-27 10:42:40 -08:00
Vedran Miletić 39d338dbeb fix various doxygen errors 2011-11-26 21:13:46 -08:00
Atishay Jain 270fb3958a IPv6 address generator 2011-11-26 20:33:45 -08:00
Gustavo J. A. M. Carneiro 4943cf9f38 Missing PropagationLossModel.CalcRxPower in Python bindings 2011-11-26 08:43:33 -08:00
Kirill Andreev eabb826db0 Bug 1300: fixed 2011-11-23 19:08:31 +03:00
Kirill Andreev 825c5aad26 Bug 1219: fixed. Coding style of ns2-mobility-helper-test-suite.cc is fixed. 2011-11-23 19:08:07 +03:00
John Abraham fb732fabd9 StopAnimation should reset write callback 2011-11-23 09:40:50 -05:00
Gustavo J. A. M. Carneiro dbbee3cb45 merge 2011-11-17 18:11:07 +00:00
Tommaso Pecorella 6f5bb7d985 Added MobilityModel::GetRelativeSpeed() - proposed by Jens Mittag. 2011-11-17 19:02:45 +01:00
Alexander Afanasyev 6c6a87b1b9 Correcting compilation behavior in Ubuntu 11.10. I guess, default behavior of ldd has been changed... As a result, many dynamic features of NS were not working 2011-11-11 00:13:30 -08:00
Tommaso Pecorella b0fd4d2e2a Topology reader docs fixings 2011-11-06 17:46:16 +01:00
Alexander Afanasyev 30e6359e85 Adding required PTHREAD dependency to RT library check. Adding missing include to ipv6-address.cc 2011-10-06 10:42:21 -07:00
Tommaso Pecorella 9da04bf971 Bug 1295 - Missing const qualifiers in TopologyRead 2011-11-15 19:47:22 +01:00
Tom Henderson 266768b4ba add protocol selection as command-line argument 2011-11-14 21:25:58 -08:00
Tom Henderson c4b3e2faf2 enable optional mobility tracing on example 2011-11-06 17:04:22 -08:00
watrous b7a72ee3dc Rescanned bindings on ns-regression 2011-11-14 13:00:58 -08:00
Gustavo J. A. M. Carneiro e440943a9b Rescan some module bindings, 32-bit api version only 2011-11-14 19:47:37 +00:00
Gustavo J. A. M. Carneiro 466108dc0a Add function declaration to make bindings happy 2011-11-14 19:47:09 +00:00
Gustavo J. A. M. Carneiro b5a296d127 Fix issue with waf --apiscan=all 2011-11-14 12:19:10 +00:00
Nicola Baldo 9e30f25e2e spectrum API change (missing files) 2011-11-14 10:59:56 +01:00
Nicola Baldo 550728fbdd spectrum API change 2011-11-13 16:08:44 +01:00
Andrea Sacco 9ac0537136 Bug 1055 - Wrong UAN's Thorp absorption loss model formula 2011-11-12 12:33:47 +01:00
Mitch Watrous 2e030ed11d Bug 1204 - Can't Parse Time +100000000.0ns 2011-11-11 14:36:05 -08:00
frederic. f3f7ea2d1d Bug 1290 - buffer-test.cc gets a valgrind error 2011-11-10 10:21:12 +01:00
Tom Henderson 10743cd004 finishoff previous documentation patch 2011-11-06 05:22:00 -08:00
Tom Henderson 47e34c8850 Fix documentation links 2011-11-06 05:02:49 -08:00
Mitch Watrous 046285b790 Remove % characters showing up in introspected text file 2011-11-09 09:35:49 -08:00
Andrea Sacco ae5b925ce3 Added examples-to-run script in uan test 2011-11-09 14:19:45 +01:00
frederic. 1b938b752f Bug 1001 - Buffer::CopyData() doesn't return the number of bytes copied 2011-11-09 10:13:41 +01:00
Tom Henderson 441893b2ed fix typos in manual (found by Luca Costantino) 2011-11-04 09:21:32 -07:00
Gustavo J. A. M. Carneiro ca41890ff0 Rescan spectrum module bindings 2011-10-31 12:13:18 +00:00
Nicola Baldo e957e12b7b fixed some typos in doxygen of object-base.h 2011-10-28 19:20:29 +02:00
Nicola Baldo b8e1f4b74a removed useless include in spectrum-type.h 2011-10-26 16:54:44 +02:00
Tommaso Pecorella 9d5bb176ec Bug 1285 - IPv6 Localhost is marked as GLOBAL instead of HOST 2011-10-23 19:31:45 +02:00
Vedran Miletić 9a9585a8df Small typo in documentation in generic-phy.h 2011-10-21 15:35:22 +02:00
John Abraham 45d186dda2 Bug 1186 - Ipv4Header lacks DSCP and ECN 2011-10-21 08:52:15 -04:00
Nicola Baldo 8f67a3f899 fixed assertion in {Single,Multi}ModelSpectrumChannel::AddSpectrumPropagationLossModel 2011-10-21 12:17:32 +02:00
John Abraham c1b08ba507 NetAnim: Reduce config verbosity, provide utility for setting position 2011-10-19 14:25:39 -04:00
John Abraham cac5864e4b NetAnim: Missing header on using waf install 2011-10-19 07:00:15 -04:00
John Abraham 9422db0081 Bug 1281 Checksum not calculated when doing IP fragmentation 2011-10-18 18:18:23 -04:00
John Abraham d37e3f7155 NetAnim: Duplicate header file 2011-10-18 10:18:26 -04:00
John Abraham ba12556ebb NetAnim: windows portability changes 2011-10-18 10:10:34 -04:00
Nicola Baldo 48e41c01c6 updated doxygen of Node::AddApplication (Ptr<Application>) 2011-10-14 16:00:43 +02:00
Björn Lichtblau 558593480c Bug 1278: Ipv4ClickRouting::HandleScheduleFromClick should stay integer for delay calculation to be accurate 2011-10-13 21:55:21 +02:00
Gustavo J. A. M. Carneiro 9a1d6159d8 Rescan API of spectrum module 2011-10-06 18:03:59 +01:00
Gustavo J. A. M. Carneiro d389a30dcc Rescan lte module bindings 2011-10-05 17:18:01 +01:00
Gustavo J. A. M. Carneiro 271b1b7df1 Fix typos: Utils.WafError -> WafError 2011-10-05 16:39:57 +01:00
Nicola Baldo 775914eafa added PropagationLoss trace to SpectrumChannel implementations 2011-10-04 19:55:58 +02:00
Nicola Baldo 35fb5e4032 Bug 1271 - stronger type checking in SpectrumPhy 2011-10-04 18:40:50 +02:00
Tom Henderson 0a28cb2916 Patch geninfo for reported gcov problem with lcov versions 1.8 and 1.9 2011-09-30 14:25:23 -07:00
Tom Henderson f5aace65af Update lcov to version 1.9 2011-09-30 14:21:39 -07:00
Gustavo J. A. M. Carneiro 8cf8b0818e Bug 1270 - "Checking boost includes" weirdness 2011-09-28 14:03:25 +01:00
Tom Henderson 95a5db4bc2 update some stale routing documentation 2011-09-26 06:20:35 -07:00
Mitch Watrous 800be624ef Bug 962 - list of paths to reach objects contains bogus entries 2011-09-27 16:29:09 -07:00
Tom Henderson 05c51b6ee1 remove wimax module dependency on spectrum 2011-09-27 14:41:34 -07:00
Gustavo J. A. M. Carneiro 27f24ad305 Bug 1269 - sqlite3 not found on FreeBSD 2011-09-27 18:04:38 +01:00
Gustavo J. A. M. Carneiro c6077da00a Avoid installation of ns3modulegen-modular.py as a python module 2011-09-26 15:31:06 +01:00
Gustavo J. A. M. Carneiro 93e9291a9e Bug 1265 - Make ns-3 directory "movable" 2011-09-26 10:41:55 +01:00
Gustavo J. A. M. Carneiro 8c3bf2b21f Fix mpi module breakage when mpi is not enabled 2011-09-26 10:34:34 +01:00
Gustavo J. A. M. Carneiro 35f0a9aaae Bug 1137 - mpi module is hard-coded for openmpi 2011-09-25 16:28:09 +01:00
Gustavo J. A. M. Carneiro ab4feb7bb4 Remove -mcmodel=large option in darwin now that it's not useful 2011-09-25 15:53:14 +01:00
Gustavo J. A. M. Carneiro 30194ccce0 Overhaul mpi detection logic, add -Wl,-rpath option for Fedora 2011-09-25 15:43:30 +01:00
Gustavo J. A. M. Carneiro bbb92099ac Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms 2011-09-24 18:37:22 +01:00
Gustavo J. A. M. Carneiro 3c26f19bb9 Patch the WAF task runner to fix performance, until the issue is fixed upstream. 2011-09-24 13:00:29 +01:00
Gustavo J. A. M. Carneiro 2683f59af5 rescan wifi bindings 2011-09-23 12:41:24 +01:00
Gustavo J. A. M. Carneiro 715d3e0d5a Bug 1257 - waf install __init__ Python files even with --disable-python 2011-09-23 12:19:53 +01:00
Gustavo J. A. M. Carneiro 2b9ae311da Bug 1266 - gdb cannot be loaded 2011-09-23 11:58:59 +01:00
Gustavo J. A. M. Carneiro bd3ab5db69 Bug 1263 - waf configure fails on FreeBSD 9.0-BETA2 amd64 2011-09-23 11:42:49 +01:00
Gustavo J. A. M. Carneiro 237ff993b4 merge 2011-09-23 11:34:43 +01:00
Sascha Alexander Jopen c18d0925fe ns-3-click support for AddressInfo elements 2011-09-23 12:27:43 +02:00
Gustavo J. A. M. Carneiro b0a2c5e4ac Fix copy-paste typo 2011-09-23 11:21:00 +01:00
John Abraham 8647fb623c NetAnim: Remove type conversion warnings for old gccs, Remove canvaslocation refs 2011-09-22 19:09:47 -04:00
John Abraham 917e6398ae NetAnim: Remove obsolete socket functionalities 2011-09-22 14:45:07 -04:00
Mitch Watrous fac82789be Fix tabbing for code that creates introspected text files 2011-09-22 09:33:54 -07:00
Mitch Watrous 77226462e5 Make waf create text file with introspected information 2011-09-22 09:24:54 -07:00
Daniel Halperin 7d616f3a34 Issue 5032043: preparation for 802.11ad support 2011-09-22 18:01:08 +02:00
Gustavo J. A. M. Carneiro 05b726cc71 Fix modules wscript usage of 'use' parameter 2011-09-22 13:03:25 +01:00
Gustavo J. A. M. Carneiro 2ebbddc12e Don't fail on missing sudo or valgrind 2011-09-21 19:10:14 +01:00
Gustavo J. A. M. Carneiro c6a0d0c2ec Fix .pc file generation on OSX 2011-09-21 18:52:12 +01:00
Mitch Watrous 261f2ba8af Don't pass first name in list when generating the pc file 2011-09-21 10:08:00 -07:00
Mitch Watrous bcbb9332d3 Pass first name in list when generating the pc file 2011-09-21 09:32:06 -07:00
Gustavo J. A. M. Carneiro e5163b0de0 Fix issue with generating .pc file in static build 2011-09-20 21:16:08 +01:00
Mitch Watrous 598eaa74e1 Make the source code introspection program output text 2011-09-20 12:12:08 -07:00
Gustavo J. A. M. Carneiro dc3ae96303 Possibly fix the waf doxygen command 2011-09-20 18:58:33 +01:00
Gustavo J. A. M. Carneiro b80154549c Add a --with-python configuration option 2011-09-20 18:37:33 +01:00
frederic. 6af75cc695 Export system-path include. 2011-09-20 16:41:36 +02:00
Gustavo J. A. M. Carneiro b4b03dc116 Add Requires: to the .pc file indicating inter-module dependencies 2011-09-20 15:11:17 +01:00
Gustavo J. A. M. Carneiro fbf0db7647 Correct some configuration Checking for... messages 2011-09-20 14:25:45 +01:00
Gustavo J. A. M. Carneiro 654372b4dd More pc file fixes 2011-09-20 14:09:37 +01:00
Gustavo J. A. M. Carneiro b150bebd81 Fix .pc file generation 2011-09-20 11:58:53 +01:00
Gustavo J. A. M. Carneiro acafde5087 Fix waf check 2011-09-20 11:23:59 +01:00
Gustavo J. A. M. Carneiro 39fce07e5d Minor cleanup 2011-09-19 19:56:58 +01:00
frederic. 5f040a5727 Export system-path include. 2011-09-19 09:29:55 +02:00
Gustavo J. A. M. Carneiro 4dee0d7616 merge 2011-09-19 00:39:51 +01:00
Gustavo J. A. M. Carneiro 4d7fd0ef2b Fix click module waf1.6 upgrade issues 2011-09-19 00:39:10 +01:00
Tom Henderson 19fabf53c6 Start documenting changes for ns-3.13 2011-09-18 14:34:45 -07:00
Tom Henderson ab95b7f0f7 Seed the CHANGES.html and RELEASE_NOTES for ns-3.13 2011-09-18 14:24:24 -07:00
Gustavo J. A. M. Carneiro d5c380d779 Merge waf-1.6 branch 2011-09-18 12:23:17 +01:00
Gustavo J. A. M. Carneiro 8405e52966 Remove the EXPERIMENTAL from --apiscan option help 2011-09-18 12:19:14 +01:00
Tom Henderson 5a98fe115d rescan bindings 2011-09-16 21:43:14 -07:00
Colin Perkins a6e6187e45 make ns-3 compile on FreeBSD-8.2 2011-09-16 13:45:52 -07:00
John Abraham 6445633ff8 NetAnim: Connect Csma traces 2011-09-16 11:22:52 -04:00
Gustavo J. A. M. Carneiro 3d13582a2e waf1.6: fix click module build 2011-09-15 17:11:53 +01:00
Gustavo J. A. M. Carneiro 149d7922d2 Possible openflow module waf1.6 fixes 2011-09-15 14:52:24 +01:00
Gustavo J. A. M. Carneiro 7518a6ba56 Add a --disable-nsclick configure option 2011-09-15 11:38:36 +01:00
Gustavo J. A. M. Carneiro 6e0bff2706 waf1.6: possibly fix click module build 2011-09-15 11:21:55 +01:00
Tom Henderson b37931f3d1 rescan bindings 2011-09-14 11:30:15 -07:00
Gustavo J. A. M. Carneiro 2413ed7033 Don't traceback on missing mpic++ 2011-09-13 19:25:55 +01:00
Gustavo J. A. M. Carneiro bf815a2591 Add a script to help create new ns-3 modules 2011-09-13 18:51:45 +01:00
Gustavo J. A. M. Carneiro 7905163b14 waf1.6: make the all_modules in src/wscript be automatically discovered 2011-09-13 17:50:05 +01:00
Gustavo J. A. M. Carneiro 94fffe6305 waf1.6: remove code not needed, fix static build, cleanup 2011-09-13 17:21:44 +01:00
Gustavo J. A. M. Carneiro e8aeb9c6ce waf-1.6: Mac OSX and other fixes 2011-09-13 13:47:17 +01:00
Gustavo J. A. M. Carneiro 49c1b1e0fd Fix the --lcov-report option 2011-09-12 19:19:00 +01:00
Gustavo J. A. M. Carneiro 1938704a9a Clean some dead waf code 2011-09-12 19:04:36 +01:00
Gustavo J. A. M. Carneiro ba4ab5a12b Remove the --enable-shared-and-static option 2011-09-12 18:57:10 +01:00
Gustavo J. A. M. Carneiro 4e3855f771 waf 1.6: fix python bindings apiscan 2011-09-12 18:54:57 +01:00
Gustavo J. A. M. Carneiro a16ebdd4ba waf 1.6: bring back -Wl,--soname, fix waf warnings 2011-09-12 16:19:24 +01:00
Gustavo J. A. M. Carneiro 0536f2416f More waf 1.6.7 build fixes 2011-09-12 14:54:27 +01:00
Nicola Baldo 98ca3155ac _Mhz --> _MHZ in WIFI_PHY_STANDARD enums 2011-09-12 11:49:53 +02:00
Mitch Watrous e031109b49 Capitalize function names in gnuplot example 2011-09-08 18:24:47 -07:00
Mitch Watrous f8eb13120f Fix more references to old website in Tutorial 2011-09-08 17:35:18 -07:00
Mitch Watrous e6f6aaf3cd Fix references to old website in Tutorial 2011-09-08 12:23:16 -07:00
Mitch Watrous 9d5261f0bd Add Gnuplot section to ns-3 Manual 2011-09-08 10:52:12 -07:00
Gustavo J. A. M. Carneiro c3059b6e68 Upgrade to waf-1.6.7, work in progress 2011-09-08 16:13:40 +01:00
Mitch Watrous f2f5fa1f14 Fix bug in gnuplot error bars and create gnuplot example 2011-09-07 12:18:37 -07:00
John Abraham 128a744629 NetAnim: Set a random position if mobility model does not exist 2011-09-07 10:40:15 -04:00
John Abraham 304359acf0 NetAnim: Support Pause & Resume Animation 2011-09-03 22:29:56 -04:00
Tom Henderson cb6eeb3b19 add note about updating Bugzilla 2011-09-02 10:55:35 -07:00
Tom Henderson 3a6a4d11bb update release_steps.txt 2011-09-02 10:03:38 -07:00
Tom Henderson a183dd1f0f Update RELEASE_NOTES 2011-09-02 09:52:01 -07:00
Gustavo J. A. M. Carneiro dbf390ad90 Update pyviz to the new modular bindings namespace 2011-09-01 18:32:23 +01:00
Gustavo J. A. M. Carneiro 0cc663db91 Re-enable the 'ns3' compatility python module, previously accidentally disabled 2011-09-01 17:28:10 +01:00
Lalith Suresh 4d28b1334a remove the enabling of missing log components 2011-08-31 06:30:13 -07:00
Tom Henderson f0c447ec66 Bug 1253 - disable python bindings if static build selected 2011-08-31 06:23:28 -07:00
John Abraham 290c3276cb Bug 1252 - OSX --enable-static unimplemented: code model large not supported in PIC mode 2011-08-26 17:06:35 -04:00
Tom Henderson 4891e665fa Attribution for dsdv module 2011-08-26 10:01:33 -07:00
Tom Henderson d51656dd5f update manet-routing-compare example to use current tracing API 2011-08-19 11:58:47 -07:00
Tom Henderson 69e2074875 fix comment 2011-08-26 09:56:18 -07:00
Gustavo J. A. M. Carneiro 7f3f692ea7 Bug 1251 - OSX: test.py reports dyld: Library not loaded 2011-08-26 12:31:04 +01:00
Gustavo J. A. M. Carneiro bf2fd1ad34 Bug 1250 - waf configure do not check for Python.h (python-dev) 2011-08-25 19:24:06 +01:00
John Abraham 69b4b9f1c8 NetAnim:Use overloaded WriteN for xml 2011-08-25 06:36:33 -04:00
Tom Henderson 79cc699dc1 Added tag ns-3.12 for changeset 167fc2274f53 2011-08-24 09:00:50 -07:00
Tom Henderson 22fab0212a update for ns-3.12 release 2011-08-24 08:29:37 -07:00
John Abraham 2851c48160 NetAnim: Remove obsolete call to StopAnimation 2011-08-19 12:46:14 -04:00
Tom Henderson 7e3ce3f791 Added tag ns-3.12-RC1 for changeset 19c9e2b33b4a 2011-08-18 22:04:58 -07:00
Tom Henderson cc78e23e4c update RELEASE_NOTES 2011-08-18 21:48:39 -07:00
Tom Henderson 7f50773f13 rescan click bindings 2011-08-18 21:41:48 -07:00
John Abraham dc7ee619f9 NetAnim: Simple Write callback 2011-08-18 19:36:00 -04:00
Mitch Watrous 72df156f34 Make config-store more robust for missing XML libraries 2011-08-18 14:14:52 -07:00
Gustavo J. A. M. Carneiro d8334ab53d Bug 1168 - BridgeNetDevice: Default ExpirationTime not realistic 2011-08-18 17:13:33 +01:00
Gustavo J. A. M. Carneiro 509b37f132 Bug 1240 - remove monolithic python bindings from waf 2011-08-18 16:53:15 +01:00
Gustavo J. A. M. Carneiro 00aca9f55f Bug 1226 - Incomplete YansWifiChannel Python bindings 2011-08-18 16:31:55 +01:00
Tom Henderson 416be98fe9 rescan all bindings 2011-08-17 23:01:53 -07:00
Tom Henderson a6bedc8556 minor fix to comments 2011-08-17 22:38:19 -07:00
Tom Henderson fc31f9502c Update CHANGES.html and RELEASE_NOTES 2011-08-17 21:59:19 -07:00
Tom Henderson a643028704 bug 272: mention that InternetStackHelper aggregates PacketSocketFactory 2011-08-17 17:00:17 -07:00
Tom Henderson 72fb9dc50c Fix some doxygen errors 2011-08-17 16:55:53 -07:00
Tom Henderson 0e4a24f4de bug 1046: DSDV: NULL callback 2011-08-17 16:50:38 -07:00
John Abraham fe9c7f023d NetAnim minor comments 2011-08-17 12:52:06 -04:00
John Abraham 57011eebb6 Bug 1163: Part 2 2011-08-17 12:31:34 -04:00
John Abraham 8cc5db3c07 Bug 1163 - Ipv4EndPointDemux::AllocateEphemeralPort forget to increment the port 2011-08-17 12:23:54 -04:00
John Abraham 2c0e7f05ef Bug 1164 - IPV4 TCP Bind an already used port failed but without setting errno 2011-08-17 11:39:16 -04:00
Tom Henderson 2c748ecc31 suppress valgrind run of config-store example, until debugged 2011-08-16 21:44:36 -07:00
Tom Henderson 18cf8c5638 Add config-store example and update documentation 2011-08-16 15:49:05 -07:00
Giuseppe Piro 10f1d897ea fix bug 1057 LTE Bearers issue 2011-08-16 12:58:50 -07:00
Giuseppe Piro aa74a05fd9 fixed bug 1043 2011-08-10 01:39:14 -07:00
Tom Henderson 8f34681f6a bug 1134: Fix LiIonEnergySource attribute spelling for InitialCellVoltage 2011-08-16 12:07:58 -07:00
socket 538ff2df30 Merge with ns-3-dev 2011-08-16 20:26:04 +02:00
Andrea Sacco b5f518191c Bug 1010 - Uan model Sleep patch 2011-08-16 20:22:40 +02:00
Tom Goff 0bd27b493b bug 1220: FdReader always stops with NS_FATAL_ERROR 2011-08-16 10:54:12 -07:00
Andrea Sacco 5ad75505bc Bug 1139 - Broadcast packets issue in uan cw mac 2011-08-16 19:45:08 +02:00
Mitch Watrous 19cd0e9065 Bug 1243 - exiting waf shell should not generate report on what modules are built 2011-08-16 09:41:56 -07:00
YunQiang Su d33563b5e4 bug 1177: auto generated man pages have error 2011-08-14 14:21:41 -07:00
Tom Henderson 3bf759bb6d bug 845: fix ConfigStore output 2011-08-14 14:06:45 -07:00
Mitch Watrous d6d3a97e96 Bug 1228 - object 'ns3-network--lib' was not found in uselib_local (required by 'bench-packets') 2011-08-11 15:25:25 -07:00
Mathieu Lacage 9cc209f639 add backward-compatibility aliases for test-runner command-line arguments 2011-08-11 08:52:28 -04:00
Mathieu Lacage 57f8526ae5 merge with HEAD 2011-08-11 08:45:29 -04:00
Mathieu Lacage 92ca264982 bug 1244: Seg Faults in optimized builds due to missing Logging components 2011-08-11 08:43:45 -04:00
Mathieu Lacage 17818decf4 remove object vector usage to allow object map to work with config store 2011-08-11 08:11:38 +02:00
John Abraham 3bb5f0c770 Bug 1050: Part 3 2011-08-10 19:58:33 -04:00
John Abraham 1cc3077364 Bug 1050: Part 2 2011-08-10 19:00:07 -04:00
Mitch Watrous 9322c886a9 Add a couple of includes and rescan core module's bindings 2011-08-10 10:59:35 -07:00
Mathieu Lacage 03f5e8348d add missing include. 2011-08-10 19:31:00 +02:00
Mathieu Lacage d87d61adad try to fix gtk-enabled build blindly. 2011-08-10 19:28:39 +02:00
Mathieu Lacage a59bdc3a30 bug 1239: Add assertion that reference count never overflows 2011-08-10 13:14:42 -04:00
Quincy Tse 332604fd02 bug 1050: ISO C++ forbids variable length array 2011-08-10 13:09:23 -04:00
Quincy Tse e56f6b64c9 bug 929: nms-p2p-nix.cc uses variable length array 2011-08-10 12:39:19 -04:00
Quincy Tse ffee9d863c bug 928: variable length arrays are not standard-compliant. 2011-08-10 12:26:56 -04:00
Anirudh Sivaraman bd19a09832 bug 1082: Check that log component names are correct when taken from NS_LOG. 2011-08-10 12:23:15 -04:00
Mathieu Lacage c3618453d2 refactor ObjectVector generic code into a separate file and introduce ObjectMap. 2011-08-10 11:48:19 -04:00
Mitch Watrous adfaf9e629 Bug 1235 - test.py reports success on invalid tests 2011-08-09 16:27:17 -07:00
John Abraham b0095351f7 Bug 1236: click-internet-stack-helper.cc:293:12: error: variable "result" set but not used 2011-08-09 11:36:18 -04:00
Tom Henderson 44bd9fc05e bug 1232: NS_TEST_SOURCEDIR does not handle test subdirectories 2011-08-08 08:33:29 -07:00
Gustavo J. A. M. Carneiro 27e6fcc4fc Bug 1224 - Ns-3-allinone fails to compile on Lion 2011-08-07 16:52:49 +01:00
Gustavo J. A. M. Carneiro 39ffebadc2 Remove bogus TypeId::ResetInitialValues declaration, fix bindings 2011-08-07 16:08:55 +01:00
John Abraham 0c2b0e1761 test.py:node_to_text time to time_real 2011-08-05 14:00:12 -04:00
John Abraham 1ab4cfd167 Bug 1234: Additional changes 2011-08-05 13:22:53 -04:00
Mathieu Lacage 34f7f7916d bug 1234: GetAttributeChecker is not defined anymore but still used 2011-08-04 16:05:48 -04:00
Gustavo J. A. M. Carneiro feda6149ee Rescan all bindings 2011-08-04 17:50:36 +01:00
Gustavo J. A. M. Carneiro 297b27fc9f Remove PythonCompleteConstruct friend function, it is no longer needed 2011-08-04 17:50:15 +01:00
Gustavo J. A. M. Carneiro 3a8f07a0ea Rescan 'core' module API 2011-08-04 11:55:52 +01:00
Mathieu Lacage 6e95fab53d merge with HEAD 2011-08-03 16:07:19 -04:00
Mathieu Lacage f2d7c8f05a introduce Config::Reset 2011-08-03 13:58:10 -04:00
Mathieu Lacage 83bdeae25a use the ObjectFactory directly. 2011-08-03 13:52:16 -04:00
Mathieu Lacage 60c47f644d there is no point for this include 2011-08-03 13:50:53 -04:00
Mitch Watrous 767dd9208c Revert pcap trace file for olsr test to previous version 2011-08-03 10:46:52 -07:00
Mathieu Lacage 2e544da244 kill dead code/API 2011-08-03 10:19:00 -04:00
Mathieu Lacage 2a77dd3641 use new API, kill old one. 2011-08-03 10:17:01 -04:00
Mathieu Lacage f8e1230105 kill old API 2011-08-03 10:08:47 -04:00
Mathieu Lacage aef38c492b use new API. kill old one. 2011-08-03 10:04:56 -04:00
Mathieu Lacage 10a4ade82a use new API 2011-08-03 09:42:10 -04:00
Mathieu Lacage b735008d61 use correct name instead of _very_ old names 2011-08-03 09:42:01 -04:00
Mathieu Lacage a0df125410 export information data structure in API. 2011-08-03 09:35:03 -04:00
Mathieu Lacage 14b865d674 kill dead code 2011-08-03 08:28:15 -04:00
Mitch Watrous 3984ef251d Bug 1232 - Buildbots are failing because pcap trace files have changed 2011-08-02 15:32:22 -07:00
Vedran Miletić 0538e655aa standardize ns-3 namespace declaration format 2011-08-02 17:43:32 -04:00
Vedran Miletić fe0667def8 standardize emacs c++ mode comments 2011-08-02 17:42:33 -04:00
Mathieu Lacage d80da9c6de bug 1230: -Idebug command-line argument munged on darwin 2011-08-02 05:04:37 -07:00
Mathieu Lacage 4c41275a11 remove ns3/ prefix which is un-needed now that all files are in same module. 2011-08-02 01:59:36 -07:00
Tom Henderson a2551b178f Function log the TcpNewReno::DupAck() 2011-07-28 17:41:49 -07:00
Tom Henderson 4b93c8f439 Remove outdated reference to RandomVariable::GetSingleValue 2011-07-28 21:36:19 -07:00
Mitch Watrous 112b892b18 Bug 1225 - NS_TEST_SOURCEDIR is being treated as if were a std::string 2011-07-29 13:24:16 -07:00
Mathieu Lacage 8a38290eb8 add support for --update-data to test.py, move test runner code to library for modular build, add support for hierarchical tests beyond the previous two-level hierarchy. 2011-07-29 03:38:59 -04:00
Gustavo J. A. M. Carneiro 6937841b85 Remove accidental scratch code insertion/commit 2011-07-27 10:51:39 +01:00
Lalith Suresh 9378ce8e08 Fixes bug caused due to incorrect HNA routing table updating that leads to stale entries 2011-07-25 22:02:50 +05:30
Gustavo J. A. M. Carneiro 1c271f129f Bug 1222 - Incomplete PointToPointNetDevice Python bindings 2011-07-21 11:07:59 +01:00
Gustavo J. A. M. Carneiro 4cf581619e Rescan all python bindings for all modules 2011-07-20 16:02:32 +01:00
Gustavo J. A. M. Carneiro 913d2d9767 Update python unit tests to new API 2011-07-20 16:02:19 +01:00
Gustavo J. A. M. Carneiro 5fbd0a133d Bump pybindgen version to pull another bug fix 2011-07-20 12:43:03 +01:00
Gustavo J. A. M. Carneiro bd5f42cc13 Rescan api of the internet module 2011-07-19 19:50:05 +01:00
Gustavo J. A. M. Carneiro 3d77ba8272 Upgrade pybindgen 2011-07-19 19:49:51 +01:00
Tom Henderson 45417886ca fix contributing code link 2011-07-19 09:22:30 -07:00
Tom Henderson 7cd6de55ce fix coding standard link 2011-07-19 09:21:47 -07:00
John Abraham 3635e3d744 Missing header files since modularization for socket cases 2011-07-17 08:01:33 -04:00
Tommaso Pecorella bca1786023 IPv6 fragmentation enhancements 2011-07-09 03:22:59 +02:00
Tommaso Pecorella 6e08749a57 Support to IPv4 fragmentation 2011-07-08 21:09:22 +02:00
Mitch Watrous b60dcf6fda Removed bench-event-collector.cc 2011-07-12 11:11:18 -07:00
Gustavo J. A. M. Carneiro fda662438e Bug 1200 again: fix pyext install path on fedora x86_64 2011-07-12 11:02:40 +01:00
Gustavo J. A. M. Carneiro 51c97a2cd8 Bug 1200 - ./waf install doesn't install Python bindings properly 2011-07-11 14:24:59 +01:00
John Abraham 3ab8b373af Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes 2011-07-10 13:20:34 -04:00
Lalith Suresh 145ecf9669 Bug 1209: ns-3-click fails to build on Fedora 15 when tests are enabled 2011-07-09 17:05:12 +05:30
John Abraham 42162c123a Bug 1172 Implement trivial XML output feature for Animation Interface 2011-07-08 06:04:37 -04:00
Nicola Baldo 77912001c9 merge 2011-07-07 16:34:23 +02:00
Nicola Baldo ac721283e9 minor improvements to one of the spectrum example programs 2011-07-07 16:20:13 +02:00
Tom Henderson 058354b7e4 fix TCP documentation 2011-07-07 06:52:32 -07:00
Tom Henderson b6c0a89090 clarify CreateSocket() doxygen 2011-07-07 06:52:07 -07:00
Nicola Baldo 7f5cba627b fixed Bug 1208 - Spectrum module example causing valgrind errors 2011-07-07 15:39:44 +02:00
Gustavo J. A. M. Carneiro 591ac8f81f waf: copy the ns3module_taskgen add_objects attribute to the library 2011-07-07 12:58:27 +01:00
Vedran Miletic 7271e9fa6f bug 1203: Inconsistently named ifndef/define macros in ns-3 headers 2011-07-07 04:31:52 -04:00
Mathieu Lacage 7fc5fc50f2 bug 1091: replace virtual method with callbacks. 2011-07-06 18:51:12 -04:00
Mitch Watrous f91c663c93 Cast some double arguments to uint64_t 2011-07-05 16:53:34 -07:00
Mitch Watrous 67409231fa Bug 1120 - NS_LOG environment variable not working with test.py 2011-07-05 13:27:30 -07:00
Gustavo J. A. M. Carneiro 47fb480276 Missing install of <module>.py files 2011-07-05 19:25:18 +01:00
Gustavo J. A. M. Carneiro 78782ea0a2 Bug 1200 - ./waf install doesn't install Python bindings properly 2011-07-05 19:16:47 +01:00
Gustavo J. A. M. Carneiro 2f907d942b Bump required pybindgen version 2011-07-05 18:53:05 +01:00
Gustavo J. A. M. Carneiro a8810665be Rescan lte bindings 2011-07-05 18:46:56 +01:00
Gustavo J. A. M. Carneiro 1a49ef9839 Bug 1199 - waf install doesn't work on x86_64 2011-07-05 18:30:43 +01:00
Nicola Baldo 8be4368790 merge 2011-07-05 19:05:48 +02:00
Nicola Baldo 176b697d20 added support for single-freq PropagationLossModel to SpectrumChannel 2011-07-05 19:03:55 +02:00
Gustavo J. A. M. Carneiro ec22ac15d8 Rescan wifi bindings 2011-07-05 17:51:20 +01:00
Nicola Baldo fb456f479a fixed spurious tx bug in AlohaNoackNetDevice 2011-07-05 18:40:17 +02:00
Mitch Watrous 9f550efa92 Make wifi-phy-test be an example for wifi module 2011-07-05 09:06:45 -07:00
Gustavo J. A. M. Carneiro 993dfd600f Bug 1207 - object 'ns3-olsr--lib' was not found in uselib_local 2011-07-05 13:32:33 +01:00
Gustavo J. A. M. Carneiro d903f32951 merge 2011-07-05 11:16:40 +01:00
Gustavo J. A. M. Carneiro e6e9991d4f Bug 1206 - Test libraries are built but test suites are not being run in test.py 2011-07-05 11:05:53 +01:00
Ruben Merz bf2fb045e3 Fix typo in ns-3-click example 2011-07-04 22:53:11 +02:00
Gustavo J. A. M. Carneiro 681bd950be Bug 1174 - Ns-3 does not generate static libraries 2011-07-03 12:01:29 +01:00
John Abraham cae6446d9e Refresh AODV regression test pcaps 2011-06-30 17:56:18 -04:00
John Abraham 2c1ff505a7 Bug 1194 - Incorrect RERR processing 2011-06-30 11:52:11 -04:00
John Abraham 720f567e6b Bug 1193 - Hello timers scheduling skewed when RREP, RREQ are processed 2011-06-30 11:35:15 -04:00
Tom Henderson 2e2d0691c1 Fix stale links from doxygen main page 2011-06-29 20:55:34 -07:00
Mitch Watrous d9f67dd4fd Don't print modules list when running programs 2011-06-29 13:29:53 -07:00
Nicola Baldo 434aa11432 [bug 1196] support for eps figures 2011-06-28 11:42:50 -07:00
Tom Henderson 02a767d9de add visualizer module to some wifi example wscripts 2011-06-28 11:06:44 -07:00
Ruben Merz eba4bec44d Click file modifications to reflect on Click changes to FromSimDevice argument order 2011-06-28 19:04:37 +01:00
Tom Henderson 9240554b0f update CHANGES.html and RELEASE_NOTES for new release cycle 2011-06-28 10:26:07 -07:00
Tom Henderson 7264771d92 bug 1201 - connecting UDP sockets (reported by Steve Marotta) 2011-06-28 10:04:42 -07:00
Gustavo J. A. M. Carneiro 9b3579f115 Bug 1175 postfix: only enable vnum if the VERSION matches x.y(.z) dotted number format 2011-06-27 14:55:11 +01:00
Gustavo J. A. M. Carneiro a7faefb63e Bug 1175 - the shared libraries is not versioned, based on patch by YunQiang Su 2011-06-26 13:40:27 +01:00
Lalith Suresh d5d6910547 Typo in first.cc 2011-06-24 16:08:55 +01:00
Mitch Watrous 337823af80 Bug 1195 - basic-data-calculators-test-suite.cc should use NS_TEST_ASSERT_MSG_EQ_TOL 2011-06-23 15:11:48 -07:00
Tommaso Pecorella f0e5f2952b merge 2011-06-23 22:10:42 +02:00
Mitch Watrous 7678ec1394 Miscellaneous fixes to Tutorial 2011-06-23 12:41:51 -07:00
Tommaso Pecorella 681c4720e1 Bug 1102: IPv4 fragment offset 2011-06-23 00:08:47 +02:00
Mitch Watrous 4965f16855 Bug 1171 - need to generate doxygen automatically for conditionally compiled components 2011-06-17 15:18:30 -07:00
Mitch Watrous 0c1ba376e8 Bug 1192 - Some test cases fail to clean up properly (missing DoTeardown) 2011-06-17 15:04:44 -07:00
Mitch Watrous d7296dd2bd Fix Bug 1191 again and turn Python bindings wiki into manual chapter 2011-06-17 13:36:07 -07:00
Lalith Suresh af3cd38233 Add Click download link to model documentation 2011-06-16 19:42:39 +01:00
Mitch Watrous a8f431f5af Bug 1191 - Test does not build: signed-unsigned mismatch 2011-06-16 09:05:10 -07:00
Tom Henderson 5b90ecc662 Fix LogNormalVariable distribution documentation 2011-06-14 21:16:34 -07:00
Mitch Watrous b58b01e4ff Make click module not be built if not appropriate 2011-06-14 12:38:29 -07:00
Mitch Watrous 1dbf366243 Make statistical framework wiki be chapter in model library document 2011-06-09 10:21:53 -07:00
Mitch Watrous 4f72e28789 Add test suite for stats module 2011-06-08 11:45:38 -07:00
Mitch Watrous 2975c66c68 Bug 1123 - Class MinMaxAvgTotalCalculator does not implement all the methods in its interface 2011-06-08 11:42:04 -07:00
Mitch Watrous df24dabd30 Handle extra relative paths for ns3tcp and ns3wifi modules 2011-06-03 10:54:07 -07:00
Mitch Watrous 3c4a471820 Fix paths for ns3tcp and ns3wifi modules 2011-06-03 09:11:33 -07:00
Gustavo J. A. M. Carneiro 3d1af4c887 Rescan internet module api 2011-06-03 11:41:43 +01:00
Mitch Watrous dc70e3c82d Make ns3tcp and ns3wifi modules really not be built if not appropriate 2011-06-02 09:21:24 -07:00
Kirill Andreev 47c04c715a Mesh: Bug 1141 - MeshWifiInterfaceMac adds the supported modes to the wrong remote station: fixed 2011-06-02 19:47:36 +04:00
Kirill Andreev 9e1dd179fc Mesh: Bug 1033 - airtime-metric: fixed 2011-06-02 19:45:03 +04:00
Mitch Watrous 5931a6e4f6 Make ns3tcp, ns3wifi, and visualizer modules not be built if not appropriate 2011-06-01 17:01:55 -07:00
Lalith Suresh d1d7bcb63a Fixes ARP issue in nsclick-ip-router.click and static route in nsclick-routing-node2.click 2011-06-01 17:34:53 +01:00
Lalith Suresh 6733131dd7 Corrects topology description in nsclick-routing.cc example 2011-06-01 17:06:46 +01:00
Mitch Watrous f1af716637 Make openflow and tap-bridge modules not be built if not appropriate 2011-05-31 10:32:52 -07:00
Mitch Watrous fa098db83d Make test module not be built if not appropriate 2011-05-30 15:30:49 -07:00
Ruben Merz 3bfa24755d Add wifi-mac-queue.h to list of headers to install. Necessary to use the Queue attribute of DcaTxop 2011-05-28 01:27:17 +02:00
Mitch Watrous 24f7bc6f0c Make emu and template modules not be built if not appropriate 2011-05-27 14:48:14 -07:00
Ruben Merz 8ac6392e07 ns-3-click support for promisc mode 2011-05-27 18:23:09 +02:00
Lalith Suresh 3de354eb08 Updates references in Click model documentation 2011-05-26 22:32:18 +01:00
Josh Pelkey 3c257ae5e8 update release steps 2011-05-25 18:23:23 -04:00
Josh Pelkey 97da592315 Added tag ns-3.11 for changeset 9843c12351cb 2011-05-25 16:02:46 -04:00
Josh Pelkey 4c070327b2 update release notes 2011-05-25 16:01:51 -04:00
Josh Pelkey 60880afa35 remove semi-colons 2011-05-25 10:44:58 -04:00
Josh Pelkey 2d832cc03b change doc version for ns-3-dev branch 2011-05-25 10:37:27 -04:00
Josh Pelkey 06c59d4493 delete old link 2011-05-25 10:34:22 -04:00
Tom Henderson ea4f728c85 Add OS X to list of tested platforms 2011-05-25 00:59:31 -07:00
Tom Henderson 713a037475 remove reference to emu.h 2011-05-25 00:50:35 -07:00
Tom Henderson 1093555f80 Move point-to-point module description out of doxygen 2011-05-25 00:48:43 -07:00
Tom Henderson e08feaa087 Move csma module description out of doxygen 2011-05-25 00:42:48 -07:00
Tom Henderson 62a54ebaed Fix tap-bridge doxygen group 2011-05-25 00:40:33 -07:00
Tom Henderson 7d77b11301 Move emu module description out of doxygen 2011-05-25 00:29:22 -07:00
Tom Henderson 662d3328cb Fix aodv documentation formatting 2011-05-25 00:19:08 -07:00
Tom Henderson 8febaeb6cc Move uan module description out of doxygen 2011-05-25 00:12:59 -07:00
Andrey Mazo f0eeb738ad documentation fixes 2011-05-25 08:57:47 +04:00
Tom Henderson 5e55050456 clear some documentation build errors 2011-05-24 23:44:09 -07:00
Tom Henderson 8938cfbad4 Remove unused documentation files 2011-05-24 23:30:26 -07:00
Tom Henderson f9ffaf78e7 Move uan module description out of doxygen 2011-05-24 23:24:56 -07:00
Tom Henderson 67a2d856bf organize doxygen modules alphabetically 2011-05-24 22:59:41 -07:00
Tom Henderson 261e5fb98e Move openflow module description out of doxygen 2011-05-24 22:48:51 -07:00
Tom Henderson 2f5ac124f6 group wimax classes in doxygen 2011-05-24 22:14:03 -07:00
Tom Henderson dacd65cd7a Move click module description out of doxygen 2011-05-24 21:31:35 -07:00
Tom Henderson e5a4ef89fa Move wimax module description out of doxygen 2011-05-24 21:11:16 -07:00
Tom Henderson 59d0575864 Move aodv module description out of doxygen 2011-05-24 20:54:20 -07:00
Mitch Watrous bda0fa4098 Move dsdv module description out of doxygen 2011-05-24 18:47:02 -07:00
Mitch Watrous e879ab9f53 Move tap-bridge module description out of doxygen 2011-05-24 17:01:37 -07:00
Mitch Watrous b70508df7b Order model library document by module and make visualizer show up in doxygen 2011-05-24 14:27:52 -07:00
Josh Pelkey da3d0b74f8 Added tag ns-3.11-RC3 for changeset e48ed3aabca6 2011-05-23 16:36:19 -04:00
Josh Pelkey 2e1fa1f97e update RELEASE_NOTES 2011-05-23 16:30:50 -04:00
John Abraham 8f417ffb78 Manet-routing example , unused variable 2011-05-23 15:15:06 -04:00
Josh Pelkey 688b5c97bd remove click from valgrind tests 2011-05-23 11:51:29 -04:00
Lalith Suresh 9b43459eee Adds Simulator::Destroy () to nsclick-simple-lan.cc and nsclick-raw-wlan.cc 2011-05-23 10:54:41 -04:00
John Abraham 6d2328e99c NSC unused variables 2011-05-23 10:33:07 -04:00
Tom Henderson 2a2690a003 rerun check-style.py at default level to enforce space after function name 2011-05-22 23:18:47 -07:00
Tom Henderson ed67b47d69 enforce space between function name and opening paren, at default level of check-style.py 2011-05-22 23:17:41 -07:00
Tom Henderson c660c6d07f Update RELEASE_NOTES 2011-05-22 23:14:56 -07:00
Tom Henderson 6111908352 restore sample test suite to src/template/test 2011-05-22 22:34:21 -07:00
Tom Henderson 34688f76ec rerun check-style.py with uncrustify-0.58 2011-05-22 22:28:15 -07:00
Vedran Miletić 0d2da59558 some tutorial index.rst fixes 2011-05-22 21:57:24 -07:00
Tom Henderson cdd2878ca0 update version strings to ns-3.11 2011-05-22 21:56:43 -07:00
Tom Henderson a00f2e4b33 Update AODV traces for new behavior 2011-05-22 21:44:59 -07:00
Tom Henderson bce5938783 add manet routing example 2011-05-20 15:44:37 -07:00
Tom Henderson 7221fa6cac improve AODV logging 2011-05-20 15:44:18 -07:00
Tom Henderson 38e2cbd451 set routing table to IN_SEARCH when originating an RREQ 2011-05-20 15:43:54 -07:00
Mitch Watrous d3a3b0b68f Bug 1146 - help string for test.py with disabled tests 2011-05-19 11:54:32 -07:00
Andrey Mazo ed617246da fixed paths to tap-creator and emu-sock-creator broken after modules move. 2011-05-19 20:36:05 +04:00
Mitch Watrous 86c3fc5845 Make doxygen modules list slightly more alphabetical 2011-05-19 09:39:08 -07:00
Josh Pelkey 08362c62b2 Added tag ns-3.11-RC2 for changeset 0a7a16b599e8 2011-05-19 09:12:46 -04:00
Mitch Watrous 25405009bf Make some more modules show up on doxygen modules page 2011-05-18 17:24:04 -07:00
John Abraham 6ea0408257 Bug 1165 - memset used with constant zero length parameter 2011-05-18 20:01:44 -04:00
Ruben Merz e9d0d2a36e Add missing module dependency for wifi-simple-infra example 2011-05-18 07:23:19 +02:00
Mitch Watrous 9409789dde Make some more modules show up on doxygen modules page 2011-05-18 14:56:28 -07:00
Tommaso Pecorella 100da97e37 Bug 1101 - Sqlite stats disappeared from configuration file src/wscript 2011-05-18 23:38:16 +02:00
John Abraham aefbd55b53 merge 2011-05-18 16:27:23 -04:00
John Abraham 35677408e0 Bug 1119 - ns2-mobility-helper.cc:402: error: ignoring return value 2011-05-18 16:23:38 -04:00
Mitch Watrous 684991654f Make some modules show up on doxygen modules page 2011-05-18 13:00:29 -07:00
Mitch Watrous 1c345c4d76 Updated the modules doxygen page 2011-05-17 17:36:08 -07:00
John Abraham 99b939ea2b Bug 1162 part 2 2011-05-18 13:02:10 -04:00
John Abraham 0379ad69c1 Bug 1162 - opt build examples module unused variables 2011-05-18 12:59:20 -04:00
John Abraham f9017d9423 rocketfuel-topology-reader.cc:87:8: error: variable ‘dns’ set but not used 2011-05-18 12:28:03 -04:00
Ruben Merz 30504f8dc1 [Bug 827] Rename promisc trace to monitor in WifiPhy 2011-05-17 11:48:50 +02:00
Ruben Merz 8f5bb9a833 [Bug 827] promiscuous mode for wifi 2011-05-16 22:12:39 +02:00
Nicola Baldo 24a396bee5 added ref to [pei80211ofdm] in wifi doc 2011-07-04 12:12:43 +02:00
John Abraham 5aec43e279 Bug 1161 - opt build flow-monitor unused variables 2011-05-14 04:52:55 -04:00
John Abraham c3add7688a Bug 1160 - optimized build ‘plugin’ set but not used, g++4.6.0 2011-05-14 04:50:07 -04:00
John Abraham 46dcb6996c Bug 1159 - opt build wifi module unused variables 2011-05-14 04:47:05 -04:00
John Abraham cc35cb4ea7 Bug 1158 - opt build olsr variable ‘now’ set but not used 2011-05-14 04:44:48 -04:00
John Abraham ba28256668 Bug 1157 - opt build ‘address’ set but not used, and others in application module 2011-05-14 04:40:49 -04:00
John Abraham 37664f7cbb Bug 1156 - opt build ‘result’ set but not used, g++4.6.0 2011-05-14 04:32:10 -04:00
John Abraham 64e7a068fa Bug 1154 - part 4 'found' set but not used, g++ > 4.6.0 2011-05-14 04:29:31 -04:00
John Abraham bd30cc9d39 Bug 1154 - part 3 'found' set but not used, g++ > 4.6.0 2011-05-14 04:27:39 -04:00
John Abraham a68f743413 Bug 1154 part 2 'found' set but not used, g++ > 4.6.0 2011-05-14 04:24:34 -04:00
John Abraham 73410fcd17 Bug 1154 - found’ set but not used, g++ > 4.6.0 2011-05-14 04:22:42 -04:00
John Abraham e539b70709 Bug 1153 - optimized build : variable ‘tmp’ set but not used, g++4.6.0 2011-05-14 04:18:14 -04:00
John Abraham c01bb896b0 Bug 1152 part 3,‘ifInAddrSrc’ set but not used , g++4.6.0 2011-05-14 03:59:01 -04:00
John Abraham 2b4507c22c Bug 1152 part 2 , variable set but not used , g++4.6.0 2011-05-14 03:57:30 -04:00
John Abraham 0f0798c869 global-route-manager-impl-test-suite.cc variable ‘lastDistance’ set but not used ,g++4.6.0 2011-05-14 03:49:21 -04:00
John Abraham 65120f3210 Bug 1151 - variable ‘ifInAddrSrc’ set but not used, g++4.6.0 2011-05-14 03:38:29 -04:00
John Abraham 72147b6b6b Bug 1150 ‘haveOutfile’ set but not used , g++ > 4.6. 2011-05-14 03:35:48 -04:00
John Abraham 10001b84f8 Bug 1149 ‘maskLocal’ set but not used, g++> 4.6.0 2011-05-14 03:33:21 -04:00
John Abraham b0c48d2562 Bug 1148 variable ‘curtok’ set but not used 2011-05-14 03:28:34 -04:00
John Abraham 24ea796d8b Bug 1147 variable ‘retOne’ set but not used, g++> 4.6.0 2011-05-14 03:20:58 -04:00
Lalith Suresh 1c9d95cc39 Updates click documentation to specify minimum required set of modules for building ns-3-click examples 2011-05-16 17:28:56 -04:00
Vedran Miletić cc69b4f83f documentation file name fix 2011-05-15 21:21:50 -07:00
Josh Pelkey 519035cc69 Added tag ns-3.11-RC1 for changeset 440bbee145f0 2011-05-15 10:00:47 -04:00
Vedran Miletić 1edd47a751 fix TeX formulas after doxygen change 2011-05-15 09:40:43 -04:00
Josh Pelkey a12aa12884 update release notes 2011-05-15 09:28:09 -04:00
Tom Henderson 48bb9653e8 merge testing manual with regular manual 2011-05-13 23:21:38 -07:00
Tom Henderson 0958310641 split manual; create model library 2011-05-13 23:10:33 -07:00
John Abraham c2aab68b3f Bug 1087 Call MPI_Finalize to exit MPI environment 2011-05-13 16:31:25 -07:00
John Abraham c72b06f934 Bug 1143 CsmaStarHelper::GetHubDevices) returns spoke devices, not hub devices 2011-05-13 16:15:13 -07:00
Mitch Watrous 755910e763 Update bug fixed list 2011-05-13 13:51:55 -07:00
Mitch Watrous 107c2a2415 Bug 1103 - Useless assignment in omnet-data-output.cc 2011-05-13 13:43:00 -07:00
Mitch Watrous 54fa781297 Bug 957 - Issue with test.py 2011-05-13 13:07:57 -07:00
Mitch Watrous 9ec8ff842f More edits for manual chapter about adding new modules 2011-05-13 12:38:43 -07:00
Mitch Watrous ce0ee37c31 More edits for manual chapter about adding new modules 2011-05-13 12:37:28 -07:00
Josh Pelkey 946e71af06 general examples coding style changes 2011-05-13 15:35:31 -04:00
Josh Pelkey e7628205a1 wimax coding style changes 2011-05-13 15:02:36 -04:00
Josh Pelkey 52f0be9152 visualizer coding style changes 2011-05-13 15:01:44 -04:00
Josh Pelkey 3f9579a3af virtual-net-device coding style changes 2011-05-13 15:01:29 -04:00
Josh Pelkey c5db3bcd96 tools coding style changes 2011-05-13 15:00:49 -04:00
Josh Pelkey 8322203532 test coding style changes 2011-05-13 15:00:34 -04:00
Josh Pelkey cbd29a323a tap-bridge coding style changes 2011-05-13 15:00:11 -04:00
Josh Pelkey 3652dde696 stats coding style changes 2011-05-13 14:59:56 -04:00
Josh Pelkey 13fa76b351 propagation coding style changes 2011-05-13 14:59:24 -04:00
Josh Pelkey 7c130a44c0 point-to-point-layout coding style changes 2011-05-13 14:59:05 -04:00
Josh Pelkey 6cbcdc18a1 point-to-point coding style changes 2011-05-13 14:58:47 -04:00
Josh Pelkey 0efa9719f0 openflow coding style changes 2011-05-13 14:58:28 -04:00
Josh Pelkey 43bb41007c olsr coding style changes 2011-05-13 14:58:13 -04:00
Josh Pelkey 82d50ff0c5 nix-vector coding style changes 2011-05-13 14:57:56 -04:00
Josh Pelkey 30fd9b6bee network coding style changes 2011-05-13 14:57:43 -04:00
Josh Pelkey 316901c3b4 net-anim coding style changes 2011-05-13 14:57:10 -04:00
Josh Pelkey 884c3d5324 mpi coding style changes 2011-05-13 14:56:54 -04:00
Josh Pelkey 86a9bb0183 mobility coding style changes 2011-05-13 14:56:37 -04:00
Josh Pelkey 0611883c66 mesh coding style changes 2011-05-13 14:56:17 -04:00
Josh Pelkey 907e92391e lte coding style changes 2011-05-13 14:55:52 -04:00
Josh Pelkey 55a388e12f internet coding style changes 2011-05-13 14:55:24 -04:00
Josh Pelkey cbcde10781 flow-monitor coding style changes 2011-05-13 14:54:37 -04:00
Josh Pelkey c8e53cb5a3 energy coding style changes 2011-05-13 14:54:15 -04:00
Josh Pelkey 3b868d0337 emu coding style changes 2011-05-13 14:53:52 -04:00
Josh Pelkey e78de4a03e dsdv coding style changes 2011-05-13 14:53:34 -04:00
Josh Pelkey 966623f72d csma-layout coding style changes 2011-05-13 14:53:14 -04:00
Josh Pelkey 85dfc0a20e csma coding style changes 2011-05-13 14:52:43 -04:00
Josh Pelkey 86379fa5b5 core coding style changes 2011-05-13 14:52:27 -04:00
Josh Pelkey f6beada3cb config-store coding style changes 2011-05-13 14:51:51 -04:00
Josh Pelkey ecec42b3c9 bridge coding style changes 2011-05-13 14:51:27 -04:00
Josh Pelkey 513856585b applications coding style changes 2011-05-13 14:51:11 -04:00
Josh Pelkey fe174594ea aodv coding style changes 2011-05-13 14:50:47 -04:00
John Abraham 885d3ec3e0 Bug 1144 main-random-variable on valgrind takes too long to complete 2011-05-13 10:13:51 -07:00
Mitch Watrous 5508c40dd3 Edit manual chapter about adding new modules 2011-05-13 09:50:22 -07:00
Nicola Baldo a002d27582 Bug 1142 - Wrong 802.11p Slot time 2011-05-13 17:40:37 +02:00
Ken Renard 6642899baa bug 1047: Multicast routes on nodes with >16 interfaces 2011-05-13 00:21:25 -07:00
Tom Henderson 2e9964060c bug 1097: AODV routing entry set to be VALID mistakenly (reported by Yang Chi) 2011-05-12 23:14:54 -07:00
Elena Buchatskaya 3cbd6f9aa0 bug 1042: AODV RERR implosion (missing RERR_RATELIMIT) 2011-05-12 23:10:46 -07:00
Tom Henderson e9e1e82c4a bug 1054: ipv6 InternetStackHelper EnablePcapIpv6All() broken 2011-05-12 22:47:31 -07:00
Gustavo J. A. M. Carneiro 289649516b bug 1058: InternetStackHelper pitfall: calling Install before adding routing protocols 2011-05-12 21:49:50 -07:00
Tom Goff 4282582535 bug 1056: CSMA: padding not handled correctly for LLC encapsulation 2011-05-12 21:19:07 -07:00
Mitch Watrous 1717d90e90 Add manual chapter for adding new modules 2011-05-12 14:13:48 -07:00
Tommaso Pecorella fdb04354e4 TopologyReade: ran check-style.py and fixed documentation 2011-05-12 01:08:05 +02:00
Mitch Watrous 1e19c9fe7b Add manual chapters for enabling modules and enabling tests/examples 2011-05-11 14:16:37 -07:00
John Abraham 3ea4038698 Bug 1129 nsc library path setting is not robust 2011-05-11 12:14:49 -07:00
Tom Henderson 1f878787fc fix documentation nit 2011-05-10 21:29:25 -07:00
Andrea Ranieri eb41ad47c2 Bug 1131: Ipv4L3Protocol::RemoveAddress () does not remove correct address 2011-05-10 21:13:39 -07:00
Mitch Watrous c088777e03 Fix doxygen groups for some new modules 2011-05-10 17:56:47 -07:00
Mitch Watrous 242bad5242 Fix even more paths in the documentation 2011-05-10 13:41:04 -07:00
Mitch Watrous a861a19dbc Fix more paths in the documentation 2011-05-10 11:09:17 -07:00
Gustavo J. A. M. Carneiro e8a2d1f6d5 pyviz: autoscale_view does nothing if there are no nodes 2011-05-10 14:42:20 +01:00
Mitch Watrous 22efca3d83 Rescan wifi's bindings and fix some paths in the documentation 2011-05-09 18:04:52 -07:00
Tommaso Pecorella 7d42502a16 bug 1133: fix DSDV GetSettlingTime 2011-05-10 00:07:19 +02:00
Nicola Baldo 7ae478396b wifi tx duration calculations moved from InterferenceHelper to WifiPhy 2011-05-09 22:03:43 +02:00
Nicola Baldo 041b7f3341 run check-style.py on src/spectrum 2011-05-07 22:05:29 +02:00
Nicola Baldo d2165cf81a run check-style.py on src/wifi 2011-05-07 21:49:46 +02:00
Mitch Watrous e0c73e34f2 Fix an example dependency problem and fix some paths in the documentation 2011-05-06 13:21:20 -07:00
Nicola Baldo 8059489a88 doxygen wifi module grouping all wifi classes 2011-05-06 18:34:24 +02:00
Nicola Baldo 316456075b generic wifi doc only in manual 2011-05-06 18:31:42 +02:00
Mitch Watrous ccda4f247a Fix module names in documentation 2011-05-06 08:38:41 -07:00
Tom Henderson 5e24c1491a bug 1126: fix uninitialized variables 2011-05-05 21:29:34 -07:00
Mitch Watrous 6e35327e30 Improve comments for template module 2011-05-05 10:36:26 -07:00
Mitch Watrous b17a6f8332 Create a template module 2011-05-04 20:02:57 -07:00
John Abraham d2b0ca8338 csma-layout code-style changes 2011-05-04 15:11:58 -07:00
John Abraham 0d2dc2c43d Point-to-point-layout code-style changes 2011-05-04 15:11:13 -07:00
Mitch Watrous d2ba81f69c Make modules no longer be enabled from waf build 2011-05-04 11:20:20 -07:00
Andrea Sacco 575a1f4b05 UAN module code style cleanup 2011-05-04 17:26:02 +02:00
Nicola Baldo f345f9e983 renamed spectrum-value-test.h --> spectrum-test.h 2011-05-04 16:45:09 +02:00
Nicola Baldo eb51d3b9bc refined spectrum-value test after bug 1122 fix 2011-05-04 16:34:03 +02:00
Gustavo J. A. M. Carneiro b581319f9c pyviz: display ipv6 addresses in the node tooltips 2011-05-04 15:28:55 +01:00
Mathieu Lacage 0731a3bdf9 someone forgot to initialize minrto 2011-05-04 15:29:52 +02:00
Mitch Watrous d9f9c171e0 Make more Python examples use new modular bindings 2011-05-03 14:00:47 -07:00
Nicola Baldo 3a43783963 fixed Bug 1122 - spectrum-value test should check tolerance on a per-value basis 2011-05-03 12:26:55 +02:00
Mathieu Lacage 5dc857e7bd merge with HEAD 2011-05-03 11:39:31 +02:00
Mathieu Lacage ef666c6a8b use the right macros to avoid un-needed code. DO NOT USE int values for bool. 2011-05-03 11:38:15 +02:00
Mathieu Lacage 755f4aa15b use the right macros to avoid un-needed code. remove slashes in names. 2011-05-03 11:37:21 +02:00
Mathieu Lacage 2281fc0180 avoid the use of nested NS_TEST_ calls 2011-05-03 11:30:58 +02:00
Mathieu Lacage b25ef1633d kill dead code 2011-05-03 11:23:51 +02:00
Mathieu Lacage 5fee8063bc do not dump stuff on std::cout during tests 2011-05-03 11:23:11 +02:00
Mathieu Lacage 9de9b1b10d typo in Teardown method name 2011-05-03 11:22:20 +02:00
Mathieu Lacage c803b08135 improve test output upon failure 2011-05-03 11:21:50 +02:00
Mathieu Lacage 4a484cdfd5 convert from old test API 2011-05-03 11:19:03 +02:00
Mathieu Lacage 34211bb68e improve test output upon failure 2011-05-03 11:18:41 +02:00
Mathieu Lacage dd5f401539 do not log output on std::cout 2011-05-03 11:18:09 +02:00
Mathieu Lacage 967d2abf5c do not log debug output on std::cout 2011-05-03 11:17:35 +02:00
Mathieu Lacage f609bc4fd2 do not dump debug out on std::cout 2011-05-03 11:16:58 +02:00
Mathieu Lacage 386a2745dd remove / in name 2011-05-03 11:16:39 +02:00
Flavio Kubota 47cd766322 WiMAX code style patch 2011-05-03 01:08:21 -03:00
Mitch Watrous e536a8efef Make Python examples use new modular bindings without importing everything 2011-05-02 17:17:09 -07:00
Lalith Suresh fa59efdf02 Click module coding style cleanup 2011-05-02 16:24:20 +01:00
Mathieu Lacage 290b704d86 typo caught by gcc 4.6.0 reported by John Abraham 2011-05-02 08:47:57 +02:00
Mathieu Lacage b13096fc68 remove csma star example that was moved to csma-star module. 2011-05-02 08:47:29 +02:00
John Abraham 4a6ebd22e8 Bug 1105 Move topology helpers to separate per-device modules. Module "test" has linker errors specifically in darwin machines 2011-05-01 07:22:25 -07:00
Mitch Watrous e795aaedb2 Make Python examples use new modular bindings 2011-04-29 16:59:33 -07:00
Mitch Watrous b07af8359b Make built modules list not be printed for clean and distclean 2011-04-29 12:10:45 -07:00
Mitch Watrous 7f4cb423d2 Update tutorial to show built modules list in columns 2011-04-29 10:33:14 -07:00
Gustavo J. A. M. Carneiro 82b7ca17b4 Link Python bindings modules to all enabled ns-3 module libraries. Fixes #1117. 2011-04-29 18:27:03 +01:00
Mitch Watrous 4d16fd7c74 Make built modules list be printed in columns 2011-04-29 10:15:30 -07:00
Mitch Watrous 26006abcca Make test.py not run examples that are not runnable 2011-04-29 09:53:35 -07:00
Nicola Baldo 4be5451f20 updated list of fixed bugs for ns-3.11 2011-04-29 16:55:07 +02:00
Mitch Watrous 1718599e48 Write a status file during waf build step 2011-04-28 09:10:29 -07:00
Mathieu Lacage 9f34c1163a merge 2011-04-28 00:11:44 +02:00
Josh Pelkey 65bfec39f2 check additional directory for nsc library 2011-04-27 10:16:08 -04:00
John Abraham e9a5c40990 Bug 1105 Move topology helpers in separate per-device modules 2011-04-26 15:52:10 -07:00
John Abraham 59752d3727 Bug 1105 Move topology helpers into separate per-device modules 2011-04-26 15:49:03 -07:00
John Abraham f6a6236ef8 Bug 1105 Move topology helpers into separate per-device modules 2011-04-26 15:42:15 -07:00
John Abraham d406a5b87d Bug 1105 Move topology helpers into separate per-device modules 2011-04-26 15:18:32 -07:00
Mitch Watrous a87f0cb97e Bug 1110 - Sort alphabetically and display Modules built in columns 2011-04-26 14:21:44 -07:00
Mitch Watrous 23209eb41f Bug 1108 - test.py -e option needs repair 2011-04-26 12:53:50 -07:00
Josh Pelkey 437312f163 move MPI examples over 2011-04-26 15:38:09 -04:00
Tom Henderson 5faedc2049 fix mpi 2011-04-26 14:57:48 -04:00
Mathieu Lacage c580674e28 try to fix 32bit build with some gcc compilers 2011-04-25 20:21:11 +02:00
Mathieu Lacage 8ed8b63414 avoid conversion warning by old versions of gcc 2011-04-23 13:53:31 +02:00
Mathieu Lacage 75e1ac8345 convert from the really old test API 2011-04-22 13:00:26 +02:00
Mitch Watrous bd17e94f65 Make MPI examples be built and run 2011-04-21 13:51:07 -07:00
John Abraham ff6b43660a Bug 1106: Remove CanvasLocation dependencies 2011-04-22 08:24:37 -07:00
Tom Henderson 34fe2704ef update module dependencies 2011-04-21 10:50:36 -07:00
Tom Henderson 66f650787b Fix header file inclusion for MPI examples 2011-04-21 10:25:30 -07:00
Tom Henderson 880c163ac5 strip Control-M from example file; run through check-style.py 2011-04-21 10:12:56 -07:00
Tom Henderson bf93e5e7dd disable main-propagation-loss example from valgrind tests 2011-04-21 06:23:25 -07:00
Tom Henderson 534c10f5fc clean valgrind report for main-propagation-loss.cc example 2011-04-21 06:22:05 -07:00
Mathieu Lacage ef140c82f3 bug 1072: crash upon call to Packet::AddAtEnd of fragmented packets 2011-04-21 13:41:36 +02:00
Mathieu Lacage d9febdf743 testcase for bug 1072 2011-04-21 09:26:55 +02:00
Tom Henderson 5fdcb13489 break reference cycle in JakesPropagationLossModel; fix destructor 2011-04-20 10:03:40 -07:00
Mitch Watrous 4daaf0abf4 Make some examples free their memory when finished 2011-04-20 09:17:16 -07:00
Mitch Watrous 534e71f5f6 Update tutorial 2011-04-19 10:30:50 -07:00
Mathieu Lacage b52ff87b43 fix typo: % should be $ 2011-04-19 14:39:15 +02:00
Mathieu Lacage 1ea256f802 forgot ns3 postfix 2011-04-19 14:11:12 +02:00
Mathieu Lacage 086d30464b install core-config.h 2011-04-19 08:25:57 +02:00
Mathieu Lacage ed0d67d5c9 use netanim-config.h header name to match config naming pattern 2011-04-19 08:25:51 +02:00
Mitch Watrous 8c6a8804ff Print modules built list at end of waf build 2011-04-18 10:50:55 -07:00
Mathieu Lacage b1dd88b227 fix deps 2011-04-18 12:10:18 +02:00
Mitch Watrous 010649d7ba Bug 1088 - Code in scratch directory assumes all modules are enabled 2011-04-17 20:06:22 -07:00
Mitch Watrous a64837e4b4 Make function's docstring be comments to fix waf help message 2011-04-17 19:45:48 -07:00
Mitch Watrous 3a3673d951 Print modules to build list at beginning of waf build 2011-04-17 18:58:45 -07:00
Andrey Mazo d3344cbbb8 build fixes for gcc 4.6 2011-04-17 14:54:42 +02:00
Mathieu Lacage af275c07eb bugs fixed 2011-04-17 14:34:40 +02:00
Mathieu Lacage 3efa74c0a5 RELEASE_NOTES, CHANGES.html 2011-04-17 14:23:18 +02:00
Mathieu Lacage db1a968acf update test output 2011-04-17 14:23:09 +02:00
Mathieu Lacage 7b89cdcd95 merge 2011-04-17 13:58:26 +02:00
Mitch Watrous c3ebf91792 Move example from core to point-to-point 2011-04-15 16:03:28 -07:00
Tom Henderson 338eb54233 bug 1046: Check AODV LocalDeliver callback before using it 2011-04-15 15:45:50 -07:00
Mitch Watrous 3c78215274 Merge 2011-04-15 13:05:52 -07:00
Mitch Watrous 6c0d5166e8 Make examples that were in samples directory run 2011-04-15 13:03:02 -07:00
Mathieu Lacage 0fecf0ecef scan monolithic bindings 2011-04-15 21:13:19 +02:00
Mathieu Lacage 7095312867 modular bindings scan 2011-04-15 21:03:28 +02:00
Mathieu Lacage 4b74dc78f9 really require version 785 2011-04-15 20:51:42 +02:00
Mathieu Lacage a341d022d5 merge with HEAD 2011-04-15 20:50:42 +02:00
Mathieu Lacage 8d52758c4a avoid ambiguous method overloads for python bindings 2011-04-15 20:48:12 +02:00
Mitch Watrous 357a5c8661 Print enabled modules list at end of waf configure 2011-04-15 09:06:01 -07:00
Mathieu Lacage 40b4742205 define PYTHON_SCAN 2011-04-15 13:35:08 +02:00
Mathieu Lacage 80ecb9efcc define PYTHON_SCAN 2011-04-15 13:34:57 +02:00
Mathieu Lacage 8c7d1155cf work around pybindgen bug 2011-04-15 13:32:54 +02:00
Mathieu Lacage 7a62df07e2 make scanner work 2011-04-15 13:23:48 +02:00
Mitch Watrous c9202337a8 Move examples out of samples directory and remove it 2011-04-14 14:22:09 -07:00
Mathieu Lacage 7ff702d6b1 early work to make python bindings work again with ns-3-time 2011-04-13 09:08:05 +02:00
Mathieu Lacage 3dac7a431e oops, changed the logic. 2011-04-13 08:50:07 +02:00
Mathieu Lacage 8c7070077b fix small bugs 2011-04-13 08:35:49 +02:00
Mathieu Lacage a2fab881af merge with HEAD 2011-04-13 08:26:47 +02:00
Mitch Watrous 1f9ea7d2ef Make examples not be built by default 2011-04-12 14:35:16 -07:00
Mitch Watrous 46d63e113b Make examples and tests be enabled from the .ns3rc file 2011-04-12 10:39:17 -07:00
Gustavo J. A. M. Carneiro 5a47248424 Rescan API of wifi module 2011-04-12 13:12:27 +01:00
Gustavo J. A. M. Carneiro fcbfd69b94 Fix a waf problem when generating pkgconfig files 2011-04-12 13:12:02 +01:00
Gustavo J. A. M. Carneiro 4bfc5a7413 merge 2011-04-12 10:44:54 +01:00
Mathieu Lacage a10c936db2 no need for stupid ifdef anymore 2011-04-11 16:39:59 +02:00
Mathieu Lacage 7e5645edc0 making NS3_LOGGING_ENABLE control macro expansion and nothing more 2011-04-11 15:38:09 +02:00
Mathieu Lacage 27ef348db8 generate pkg-config files for installation. 2011-04-11 15:19:44 +02:00
Nicola Baldo 857436b513 revised fix for bug 1069 2011-04-10 19:11:22 +02:00
Dean Armstrong cb9b663219 fix Bug 1069 - ApWifiMac unduly calls RegularWifiMac::Receive and crashes 2011-04-10 19:08:46 +02:00
Nicola Baldo 02377e08ed fixed Bug 1090 - WifiMacQueue is not accessible through the attribute path 2011-04-10 18:48:58 +02:00
Nicola Baldo dd8505ca4e fixed Bug 1066 - Set Radiotap modulation type flags correctly 2011-04-10 18:37:49 +02:00
Tom Henderson cc39a25064 fix outdated doxygen 2011-04-08 13:43:34 -07:00
Tom Henderson 3ec14ce22c avoid mangling /// doxygen comments with check-style.py 2011-04-08 13:42:25 -07:00
Mitch Watrous 2c288fe045 Fixed included files in spectrum-model.cc 2011-04-08 13:17:37 -07:00
Mitch Watrous 55ed95938b Relabel all build verification tests (BVT) to be unit tests (UNIT) 2011-04-07 10:33:33 -07:00
Mitch Watrous b3933a2fe4 Move tests from mobility module to its test library 2011-04-07 10:07:46 -07:00
Gustavo J. A. M. Carneiro b3a99c9300 The mpi waf configuration code belongs in src/mpi/wscript, not toplevel wscript 2011-04-07 13:34:14 +01:00
Mathieu Lacage 3e1a068ba8 install ns-3 headers in include/ns-3 upon 'waf install' 2011-04-07 08:52:19 +02:00
Mitch Watrous aa8f3e8ddb Move tests from internet module to its test library 2011-04-06 16:51:14 -07:00
Mitch Watrous 914c16ad83 Move tests from test module to its test library 2011-04-06 16:10:47 -07:00
Mitch Watrous a0ab62ad90 Move tests from core module to its test library and update CHANGES.html 2011-04-06 15:32:12 -07:00
Josh Pelkey e54bd196ec merge 2011-04-06 15:26:57 -04:00
Mitch Watrous b833bd577c Move tests from core module to its test library and update CHANGES.html 2011-04-06 12:20:27 -07:00
Josh Pelkey a5458f8733 update openflow doc 2011-04-06 15:09:31 -04:00
Mathieu Lacage d3f514eb63 openflow private headers 2011-04-06 15:02:54 -04:00
Mitch Watrous 198e3ea042 Make tests not be built by default 2011-04-06 10:13:04 -07:00
Mathieu Lacage 56268cc4c9 bug 1094: Object::GetObject upon dlopen 2011-04-05 21:39:39 +02:00
Gustavo J. A. M. Carneiro b56006e6b0 Get pybindgen fix. 2011-04-04 19:44:35 +01:00
Gustavo J. A. M. Carneiro 74aab1431c Python bindings: fix uninitialized value 2011-04-04 12:35:41 +01:00
Tom Henderson 437c3f7f57 repair print-introspected-doxygen 2011-04-03 20:54:34 -07:00
Nicola Baldo 550761456c fixed ActiveProbing for StaWifiMac (bug 1060) 2011-04-03 19:55:26 +02:00
Gustavo J. A. M. Carneiro e99ecc2acb Enable the boost waf command-line options 2011-04-03 17:39:30 +01:00
Gustavo J. A. M. Carneiro 02b702c01c Rescan old python bindings 2011-04-01 17:45:26 +01:00
Gustavo J. A. M. Carneiro 89234825b1 Bindings rescan 2011-04-01 11:51:51 +01:00
Gustavo J. A. M. Carneiro 7f1f609c48 Python bindings: don't try to wrap Test* classes 2011-03-31 17:47:20 +01:00
Nicola Baldo c4b293d06e updated doxygen for Object::Dispose (bug 1086) 2011-03-31 12:58:05 +02:00
Nicola Baldo c790ceb6e7 merge 2011-03-31 12:51:49 +02:00
Mitch Watrous 1c9164b534 Fix NSC load library path 2011-03-30 15:02:38 -07:00
Gustavo J. A. M. Carneiro 035fc29474 Modular bindings: add the std::ios::openmode constants 2011-03-30 18:44:36 +01:00
Gustavo J. A. M. Carneiro 0107996806 Modular bindings: application module must include all of network module, so that Address implicit conversion work as before 2011-03-30 18:19:25 +01:00
Gustavo J. A. M. Carneiro 0fd375ef17 Make sure modular python bindings for emu and tap-bridge are not built on macosx 2011-03-30 17:21:11 +01:00
Nicola Baldo a4074c5e23 fixed disposal of MultiModelSpectrumChannel 2011-03-30 18:03:34 +02:00
Gustavo J. A. M. Carneiro d69f0fdd24 Remove the 'Modules to build' debug print 2011-03-30 15:41:02 +01:00
Tom Henderson 0924d7a667 make rocketfule-topology-reader test suite work again 2011-03-30 05:53:58 -07:00
Mathieu Lacage e07313b335 Try to check for nsc if it was installed 2011-03-30 14:12:46 +02:00
Gustavo J. A. M. Carneiro 6237576a13 merge 2011-03-30 11:13:14 +01:00
Gustavo J. A. M. Carneiro 21dfffbbc6 Add visualizer modular python bindings 2011-03-30 11:12:13 +01:00
Gustavo J. A. M. Carneiro 2867105631 Move olsr test case class declaration over to the test module 2011-03-30 11:11:39 +01:00
Lalith Suresh e32b172ec1 Merge 2011-03-29 19:05:15 +01:00
Mathieu Lacage f4c2e86cfd Click installation prefix can now be passed to --with-nsclick option for building ns-3-click 2011-03-29 19:02:31 +01:00
Gustavo J. A. M. Carneiro 2f769cecaa Tentatively switch to build modular bindings by default, to test them 2011-03-29 18:50:56 +01:00
Mitch Watrous 2e6846a36c Move tests from some modules to their test libraries 2011-03-29 10:46:26 -07:00
Gustavo J. A. M. Carneiro 8187bea3f8 API rescan 2011-03-29 18:16:08 +01:00
Gustavo J. A. M. Carneiro ec7e5f9bae Make sure --python-scan ignores -test modules 2011-03-29 18:15:52 +01:00
Nicola Baldo 5c3b10c740 PhyMac --> GenericPhy 2011-03-29 15:46:03 +02:00
Mitch Watrous aa99a64810 Move tests from some modules to their test libraries 2011-03-28 16:43:20 -07:00
Mitch Watrous 98d7265e24 Move tests from the internet module to its test library 2011-03-28 15:09:39 -07:00
Lalith Suresh 8e654a5f94 Fixes Click test suite, updates it to use ClickInternetStackHelper, and fixes sanity check in Ipv4ClickRouting 2011-03-28 19:46:05 +01:00
Gustavo J. A. M. Carneiro edad87014d merge 2011-03-28 18:03:24 +01:00
Gustavo J. A. M. Carneiro 79dcbc4881 Add placeholder files to keep ns/ns3 directories alive 2011-03-28 18:01:31 +01:00
Lalith Suresh 12bf472328 Updates directory listings in Click manual entry 2011-03-28 17:25:32 +01:00
Gustavo J. A. M. Carneiro 72d3ae2016 Bug 1083 - scratch doesn't work when only some modules are enabled 2011-03-28 15:37:23 +01:00
Gustavo J. A. M. Carneiro f24bd64139 Modular bindings: don't always generate compat ns3.py, only when needed 2011-03-28 15:31:13 +01:00
Gustavo J. A. M. Carneiro 38e2f863c9 Use the waf 'copy' tool to copy __init__.py files
They had to be renamed to work around waf limitations.
2011-03-28 14:56:08 +01:00
Lalith Suresh 19ae044602 Runs 'check-style.py --level=3 -i' on src/click/* 2011-03-28 10:29:02 +01:00
Gustavo J. A. M. Carneiro 3cdd433fbd Modular bindings: Override the core.so module to add an atexit handler that shuts down ns3 before Python 2011-03-27 23:37:58 +01:00
Gustavo J. A. M. Carneiro 35a81dd4e4 Modular bindings: add support for <module>.py and _<module>.so layout, for extending modules in Python 2011-03-27 23:35:55 +01:00
Gustavo J. A. M. Carneiro 5787b9bf36 Modular bindings: add missing dep on the modulegen_customizations.py file, when found 2011-03-27 22:50:00 +01:00
Gustavo J. A. M. Carneiro f552f18f06 Modular bindings: api rescan 2011-03-27 15:52:35 +01:00
Gustavo J. A. M. Carneiro d8eb579d5e Modular bindings: disable certain binding classes when certain features are disabled in ns-3. 2011-03-27 15:52:15 +01:00
ishan 1bf5abfd13 Bug 1081 - wutils.py refers to the old directory for visualizer module 2011-03-27 13:49:16 +01:00
Mitch Watrous 3ea59bed63 Move tests from some modules to their test libraries 2011-03-25 12:55:27 -07:00
Mitch Watrous 9fe4b89359 Create test module libraries for some modules 2011-03-25 10:16:24 -07:00
Mitch Watrous 70ac9b2370 Fix dependencies list for visualizer module 2011-03-24 16:55:50 -07:00
Mitch Watrous e300f89a58 Create test module libraries for some modules 2011-03-24 16:46:49 -07:00
Mitch Watrous 20186991e0 Fix dependencies list for flow-monitor module 2011-03-24 15:13:57 -07:00
Mitch Watrous 9297d29cb1 Create test module libraries for some modules 2011-03-24 15:05:20 -07:00
Mitch Watrous 0991609058 Move visualizer module out of tools directory 2011-03-24 10:54:24 -07:00
Mitch Watrous 3421ce69ca Add tools modular bindings 2011-03-24 10:32:51 -07:00
Mitch Watrous 0d65031144 Add config-store modular bindings 2011-03-24 10:26:00 -07:00
Gustavo J. A. M. Carneiro 4a1d280f3b Modular bindings: fix binding code generation when the module does not use ns3::Object 2011-03-24 17:01:06 +00:00
Gustavo J. A. M. Carneiro 2d53fa5e7b ./waf --apiscan: fix bug in detection of whether the per-module bindings dir exists 2011-03-24 16:57:27 +00:00
Mitch Watrous 8a8d425071 Split contrib module into config-store and tools 2011-03-24 09:23:44 -07:00
Mathieu Lacage 62607d311d bug 1078: PacketTagList::Add performs NS_ASSERT counting one byte too few. 2011-03-24 15:11:56 +01:00
Mitch Watrous bebeba14ee Move flow-monitor module out of contrib directory 2011-03-22 16:56:10 -07:00
Mitch Watrous d6b315e54b Move energy module out of contrib directory 2011-03-22 16:40:32 -07:00
Mitch Watrous 6f9d730710 Add descriptive comment for utils.py 2011-03-22 16:21:35 -07:00
Mitch Watrous d599775e0d Rescan bindings 2011-03-22 16:12:36 -07:00
Gustavo J. A. M. Carneiro 6858d16f57 Modular bindings: fix 'import_from_module' with module names with dashes 2011-03-22 17:27:25 +00:00
Gustavo J. A. M. Carneiro cd87dde152 Modular bindings: make each python extension module link only to the required ns-3 modular libraries 2011-03-22 16:23:36 +00:00
Gustavo J. A. M. Carneiro 2a16dbfa9b ./waf --apiscan=all: now only scans modules that have bld.ns3_python_bindings() in their wscript 2011-03-22 15:56:41 +00:00
Gustavo J. A. M. Carneiro e072bb3014 Add more modular bindings 2011-03-22 15:41:38 +00:00
Gustavo J. A. M. Carneiro 74d393ebbf Disable copy contructors 2011-03-22 15:40:49 +00:00
Gustavo J. A. M. Carneiro 58da63dd1f merge 2011-03-21 18:54:34 +00:00
Gustavo J. A. M. Carneiro ced1e8f132 lte: add missing event-id.h includes 2011-03-21 18:54:00 +00:00
Gustavo J. A. M. Carneiro 3f05c198e5 ./waf --apiscan=all: don't scan modules ending in -test 2011-03-21 18:53:10 +00:00
Mitch Watrous 4ec8e661c0 Test implicitly dependent modules 2011-03-21 11:26:56 -07:00
Gustavo J. A. M. Carneiro a8d6007059 Make ./waf --apiscan=all skip the test modules 2011-03-21 18:16:41 +00:00
Mitch Watrous 4fea31db44 Fix dependencies list for test module 2011-03-20 16:32:46 -07:00
Gustavo J. A. M. Carneiro e839c44bd7 Modular bindings: before scanning a module, check that xxx-module.h exists, skip the scanning if it doesn't 2011-03-20 17:56:06 +00:00
Gustavo J. A. M. Carneiro 6a29a6bd0a Modular bindings: add support for the apiscan target 'all', that means scan all ns-3 modules 2011-03-20 15:41:43 +00:00
Gustavo J. A. M. Carneiro 259cf3703b Add OLSR modular bindings 2011-03-20 15:17:09 +00:00
Gustavo J. A. M. Carneiro 3a41db8ea9 Modular bindings: bug fixes, more verbose scanning 2011-03-20 15:08:20 +00:00
Gustavo J. A. M. Carneiro 308efe383b Modular bindings: skip a binding module if the corresponding ns-3 module is not enabled 2011-03-20 14:18:56 +00:00
Gustavo J. A. M. Carneiro ba1990146c Bug 1076 - Waf gives an error if you enable only a single module 2011-03-20 13:01:40 +00:00
Gustavo J. A. M. Carneiro ffbc5737b3 Bug 1075 - Python examples fail when static built is enabled 2011-03-20 12:18:15 +00:00
Gustavo J. A. M. Carneiro 6f6538f5e3 Bug 1040 - Olsr and multiple interfaces 2011-03-20 11:40:42 +00:00
Lalith Suresh 4a52471c5e Corrects wscript for Click examples 2011-03-19 16:54:00 +00:00
Gustavo J. A. M. Carneiro 2cda7a5ac5 Fix the build of visualizer module when the python headers are missing 2011-03-19 14:26:03 +00:00
Mitch Watrous 9959a29036 Fix dependencies in various wscripts 2011-03-18 13:21:02 -07:00
Mitch Watrous 28384516a2 Create separate module and test-module libraries 2011-03-18 10:58:21 -07:00
Josh Pelkey 403e100f56 remove unknown wscript entry 2011-03-18 14:43:00 -04:00
Mathieu Lacage b8c41a872b merge 2011-03-17 10:04:08 +01:00
Mathieu Lacage 8bc2789ea8 typos in email addresses 2011-03-17 10:03:56 +01:00
Gustavo J. A. M. Carneiro 6d17279a2a Bindings api rescan 2011-03-15 12:17:06 +01:00
Mathieu Lacage 0bdd0b2f05 bug 1072: crash upon call to Packet::AddAtEnd of fragmented packets 2011-03-15 09:27:12 +01:00
Josh Pelkey 2b457b4a0c openflow manual cleanup 2011-03-14 12:40:56 -04:00
Josh Pelkey 570f060c37 Add OpenFlow interface manual sections 2011-03-14 12:31:41 -04:00
Gustavo J. A. M. Carneiro 961ff12165 Modular bindings: scan the applications, contrib, mpi, flow-monitor, and point-to-point modules. 2011-03-13 18:40:36 +00:00
Gustavo J. A. M. Carneiro 9b438b849c Disable PointToPointNetDevice copy-contructor 2011-03-13 18:39:40 +00:00
Gustavo J. A. M. Carneiro dcebe37e8e Add missing include 2011-03-13 18:39:22 +00:00
Gustavo J. A. M. Carneiro 6015e64410 Modular bindings: handle module names with hyphens 2011-03-13 18:38:59 +00:00
Gustavo J. A. M. Carneiro 3af457ddd3 Fix: The compat. ns3.py module is not needed when --bindings-type=both 2011-03-13 18:15:28 +00:00
Gustavo J. A. M. Carneiro b844905137 Modular bindings: scan the wifi module 2011-03-13 17:57:14 +00:00
Gustavo J. A. M. Carneiro 1c491c980c Modular bindings: waf dep. fix. 2011-03-13 17:56:59 +00:00
Gustavo J. A. M. Carneiro 3383199707 Disable the YansWifiChannel copy-contructor 2011-03-13 17:56:13 +00:00
Gustavo J. A. M. Carneiro 644c788a1b Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings 2011-03-13 16:03:33 +00:00
Gustavo J. A. M. Carneiro 3b0f44269d Modular bindings: add the Callback<...> type handlers 2011-03-13 15:28:57 +00:00
Gustavo J. A. M. Carneiro 36c8ec8e91 Modular bindings: make Scalar operators work again 2011-03-13 13:19:56 +00:00
Gustavo J. A. M. Carneiro 0e1798fe7f merge 2011-03-12 18:35:56 +00:00
Gustavo J. A. M. Carneiro 089fbdcb5c Modular Python bindings work (many bug fixes, more modules tested) 2011-03-12 18:34:30 +00:00
Lalith Suresh 01cd8c0a98 Bug 1070: csma/ipv6 examples duplicate NS_LOG_COMPONENT_DEFINE 2011-03-11 21:48:51 +00:00
Josh Pelkey 491eddc2a7 python scan 2011-03-11 16:20:25 -05:00
Josh Pelkey 27080192c3 Merge OpenFlow 2011-03-11 15:21:50 -05:00
Gustavo J. A. M. Carneiro aa879d1f15 Modular python scan: fix module detection of template class instantiation 2011-03-11 15:55:38 +00:00
Gustavo J. A. M. Carneiro 929ec1c3db Rescan BridgeNetDevice API changes. 2011-03-11 11:29:58 +00:00
Mitch Watrous d169fdfff1 merge 2011-03-09 16:51:58 -08:00
Mitch Watrous 3f1b70a2bf Make test.py handle examples-to-run.py files 2011-03-09 16:49:59 -08:00
Gustavo J. A. M. Carneiro 5f94db0921 Disable bridge copy constructor 2011-03-09 15:47:10 +00:00
Mitch Watrous e89bf95079 Move util.py functions into wutils.py 2011-03-08 16:03:45 -08:00
Mitch Watrous dc1f90b0c5 Fix dependencies in various wscripts 2011-03-08 14:57:45 -08:00
Mitch Watrous 6ed04ac8f4 Make mesh, dot11s, and flame modules create only one module 2011-03-08 11:58:49 -08:00
Gustavo J. A. M. Carneiro 49fd89dfa0 Scan modular bindings for the 'core' and 'network' modules 2011-03-08 15:38:28 +00:00
Gustavo J. A. M. Carneiro 78855401c0 Copy a bug fix from ns3modulescan.py into ns3modulescan-modular.py 2011-03-08 15:35:51 +00:00
Gustavo J. A. M. Carneiro 3bf4de0515 Document in the --bindings-type waf option that modular bindings are experimental 2011-03-08 15:33:55 +00:00
Gustavo J. A. M. Carneiro aae609aad0 Import type_annotations from ns3modulescan.py into ns3modulescan-modular.py. 2011-03-08 15:32:31 +00:00
Gustavo J. A. M. Carneiro abc5d46cd1 ./waf --apiscan creates the bindings dir if it doesn't exist 2011-03-08 15:03:02 +00:00
Gustavo J. A. M. Carneiro e9e8846342 Make ns3_python_bindings skip bindings with warning if apidefs dir not found 2011-03-08 15:02:28 +00:00
Gustavo J. A. M. Carneiro fe00899bdc merge 2011-03-08 12:46:53 +00:00
Mitch Watrous 540288c432 Fix dependencies in various wscripts 2011-03-07 16:59:09 -08:00
Mitch Watrous 1d41d30c36 Make dot11s and flame modules be subdirectories of mesh 2011-03-07 10:46:12 -08:00
Tom Henderson 187275d5b7 fix a few more wscripts 2011-03-07 07:01:56 -08:00
Lalith Suresh 15defb051a Updates test.py entries for Click, fixes Click test case, and makes Ipv4ClickRouting::GetInterfaceId() do a sanity check. 2011-03-06 21:07:02 +00:00
Lalith Suresh 9bfcd30731 Fixes Click examples breakage 2011-03-06 20:04:16 +00:00
Gustavo J. A. M. Carneiro 508d3b794b Workaround gccxml bug scanning Seconds(0) as default value 2011-03-06 13:10:03 +00:00
Tom Henderson 5dc275119b rescan bindings 2011-03-05 13:31:26 -08:00
Tom Henderson c7a724f6d8 implement missing operators 2011-03-05 13:31:17 -08:00
Tom Henderson 18f2715506 remove src/helper module 2011-03-05 11:47:37 -08:00
Tom Henderson 344f51c8af Add netanim module 2011-03-05 10:51:26 -08:00
Lalith Suresh 728b6200d6 Fixes test.py breakage with topology-reader 2011-03-05 09:33:25 +00:00
Lalith Suresh 35bc14c2c3 Moves csma.h and mesh.h to respective doc/ folders 2011-03-05 01:00:13 +00:00
Lalith Suresh add3e9da99 Migrates topology-reader helpers and examples to module directory 2011-03-05 00:55:35 +00:00
Tom Henderson 55ff64eb70 Fix some broken wscripts 2011-03-04 16:16:33 -08:00
Tom Henderson 8a28ba0622 Fix dependencies for spectrum module 2011-03-04 15:42:58 -08:00
Tom Henderson 4b72ece7ae Remove device dependency from applications 2011-03-04 15:40:46 -08:00
Mitch Watrous c482d49e6f Add parsing of ns-3 configuration file 2011-03-04 15:41:14 -08:00
Lalith Suresh f3a7847c3b Moves mesh, flame and dot11s examples and helpers to respective module folders 2011-03-04 19:14:23 +00:00
Mitch Watrous a870eef8b7 Modularize stats module and move it to src 2011-03-04 10:56:07 -08:00
Mitch Watrous 7049eb54e2 Modularize topology-read module and move it to src 2011-03-04 09:59:42 -08:00
Hemanth Narra 0804bf1567 bugfix: do not call RouteOutput() twice 2011-03-03 22:32:06 -08:00
Lalith Suresh 1ae8c1b656 Moves devices/* and routing/* to src/ 2011-03-04 01:26:54 +00:00
Mitch Watrous 3cd5fc27a8 Modularize mesh module and move it to src 2011-03-03 16:27:21 -08:00
Mitch Watrous 2a60f5c625 Modularize dot11s module and move it to src 2011-03-03 15:36:54 -08:00
Mitch Watrous e4ad697758 Modularize flame module and move it to src 2011-03-03 14:03:30 -08:00
Lalith Suresh 59a2a4f959 Converts csma, emu, tap-bridge, point-to-point, wifi and wimax modules into modular format 2011-03-03 19:54:57 +00:00
Mitch Watrous 58f7066b70 Move applications to a single module 2011-03-02 13:42:28 -08:00
Dean Armstrong ce8b512f0f Bug 1064: Correct Friis propagation loss equation
The FrissSpectrumPropagationLoss model doesn't implement Friis formula
correctly - the whole numerator needs to be squared, rather than just
the last term.
2011-03-01 16:58:05 +00:00
Josh Pelkey e09cf6a452 remove duplicate core-module.h includes 2011-03-01 09:59:55 -05:00
Josh Pelkey 239494fa5a remove unneeded routing dependencies 2011-02-28 11:50:38 -05:00
Tom Henderson f9335a41f1 fix example test paths 2011-02-27 07:02:49 -08:00
Lalith Suresh cf64de816a Fixes Click build which was affected by recent modular refactoring work 2011-02-27 11:31:43 +00:00
Josh Pelkey 93205ebccf modularize nix and aodv, thanks lalith 2011-02-27 01:00:17 -05:00
Tom Henderson 19b0944c33 Make destructor virtual 2011-02-25 17:21:08 -08:00
Tom Henderson 607c518617 mobility module to new directory structure 2011-02-25 16:06:17 -08:00
Tom Henderson 6c091a9030 Fix sample dependency 2011-02-25 15:27:30 -08:00
Tom Henderson 9840d84e45 Split internet components from trace-helper.{cc,h} 2011-02-25 15:07:29 -08:00
Tom Henderson 89b6c3ede8 Fix some additional dependency issues 2011-02-25 12:11:11 -08:00
Tom Henderson 0425a9a992 rescan bindings 2011-02-25 10:53:55 -08:00
Tom Henderson c4e4de9ac3 Rename internet-stack to internet, and organize module 2011-02-25 10:32:35 -08:00
Tom Henderson 5d59dfa226 Remove dependency on PointToPointNetDevice from MPI code; organize MPI model/ directory 2011-02-25 09:31:08 -08:00
Tom Henderson c5ab6f2f7f promote validation section header in click manual documentation 2011-02-24 11:25:53 -08:00
Lalith Suresh a10b01fd88 Removes Click manual entry warnings 2011-02-24 18:25:58 +00:00
Tom Henderson ffed225c73 bug 1062: fix portability issue with rescale-pdf.sh 2011-02-24 10:04:21 -08:00
Gustavo J. A. M. Carneiro 0941c70285 Rescan bindings 2011-02-24 13:14:59 +00:00
Lalith Suresh 19aec94309 Add click.rst manual file 2011-02-23 23:05:02 +00:00
Lalith Suresh 00295e31ff Adds Click python bindings 2011-02-23 18:06:42 +00:00
Lalith Suresh 78cbfb976c NS-3 Click Integration merge 2011-02-23 17:50:31 +00:00
Lalith Suresh 352348d296 NS-3 Click Integration merge 2011-02-23 17:17:27 +00:00
Tom Henderson ea0123f370 rescan bindings 2011-02-21 09:44:36 -08:00
Tom Henderson ca7b93cc3d Merge node and common modules into new network module 2011-02-21 09:11:37 -08:00
Tom Henderson fcf182c8f8 rescan bindings 2011-02-18 16:51:38 -08:00
Tom Henderson df07734f32 merge src/simulator into src/core; move src/core to new module layout 2011-02-18 16:05:39 -08:00
Lalith Suresh 9471e3121f Bug 1052 - olsr::RoutingProtocol::LinkTupleUpdated incorrect detection of asymmetric link with multiple interface node 2011-02-16 19:09:58 +00:00
Gustavo J. A. M. Carneiro 602df3d7dc merge 2011-02-16 12:53:51 +00:00
Gustavo J. A. M. Carneiro 0a67496ed5 PyViz: integrate Ipv4GlobalRouting entries into the results show by the ipv4_routing_table plugin. 2011-02-16 12:39:19 +00:00
Gustavo J. A. M. Carneiro 9e85e29d51 Python: API rescan 2011-02-16 12:36:45 +00:00
Gustavo J. A. M. Carneiro 68599df203 Python: Re-add ns3::Ipv4GlobalRouting::GetRoute annotation for return pointer type 2011-02-16 12:36:18 +00:00
Tom Henderson 35cad46bfa fix optimized build 2011-02-15 21:10:08 -08:00
Julien Boite 19362df2ae Bug 1049 - Issues with OLSR HNA messages sent by multiple gateways 2011-02-15 17:19:13 +00:00
Gustavo J. A. M. Carneiro a69f559e0c Improve clarity of the Ipv4AddressHelper::Assign() assertions messages. 2011-02-09 16:16:39 +00:00
Gustavo J. A. M. Carneiro 7d43e3b242 OLSR: fix bad usage of uninitialized m_routingAgentAddr. Spotted by chei_med--yahoo-fr on ns-3-users thread 'm_routingAgentAddr and OLSR' 2011-02-09 16:11:27 +00:00
Josh Pelkey 0e1c0ca995 merge with ns-3-dev 2011-02-08 13:08:45 -05:00
Tom Henderson 5a906fc953 rescan bindings 2011-02-06 06:24:43 -08:00
Tom Henderson b58530e6b0 lte module depends on spectrum 2011-02-06 06:22:40 -08:00
Tom Henderson 251c3968e8 spectrum module depends on propagation 2011-02-06 06:22:27 -08:00
Pavel Boyko a0df72a405 Bug 1048: MatrixPropagationLossModel API changed from Ptr<Object> to Ptr<MobilityModel> 2011-02-06 12:42:35 +03:00
Josh Pelkey 397de11f7d Add TCP test case logging, scripts 2011-02-01 14:31:54 -05:00
Nicola Baldo f4214ff52f merge 2011-02-01 09:55:59 +01:00
Gustavo J. A. M. Carneiro 40a42cceeb Add missing propagation module apidefs files to version control 2011-01-31 22:48:18 +00:00
Gustavo J. A. M. Carneiro ddbe53c7e2 Python bindings API rescan, ns3module.cc now 90% smaller. 2011-01-31 19:05:16 +00:00
Gustavo J. A. M. Carneiro c2898b91e9 Add missing module dependencies (else python bindings fail) 2011-01-31 19:04:18 +00:00
Gustavo J. A. M. Carneiro caa4f7c3e5 Fix Python scanning to allow apidefs to be placed on the right module instead of the main ns3module.cc file, for new-style modules 2011-01-31 19:03:19 +00:00
Nicola Baldo e9c4fdeef4 created spectrum module 2011-01-31 10:13:32 +01:00
Tom Henderson f08f3f94db fix build 2011-01-28 21:55:23 -08:00
Tom Henderson 6c2535afed fix example and sample dependencies 2011-01-28 14:11:42 -08:00
Tom Henderson 3102c800d7 create propagation module; move files from common module 2011-01-28 14:11:21 -08:00
Tom Henderson 60e999cf12 Move packet info tag code to internet-stack, due to test dependencies 2011-01-28 12:55:16 -08:00
Tom Henderson 2268c2aea3 fix wscript dependency 2011-01-28 12:10:20 -08:00
Tom Henderson ef66a5e048 remove Packet Info Tag test dependence on CsmaNetDevice 2011-01-28 12:09:55 -08:00
Mitch Watrous 3363c1fcc5 Make helper module explicitly depend on node and mobility modules 2011-01-27 10:58:44 -08:00
Hajime Tazaki cbb5488db6 Make node module not depend on helper module 2011-01-26 14:54:45 -08:00
Mitch Watrous c3e957e912 Remove dependence on node and helper for waypoint-mobility-model test 2011-01-26 13:46:25 -08:00
Tom Henderson 15916444e3 Remove dependence on node and helper for steady-state-rwp-mobility-model test 2011-01-26 12:23:13 -08:00
Tom Henderson 6f7c7a3859 bugfix: CsmaNetDevice ErrorModel not discarding packet (reported by Rafal Mielniczuk) 2011-01-26 09:53:49 -08:00
Tom Henderson 8affa0fe6e Exclude TapBridgeFdReader from bindings when TapBridge is not enabled 2011-01-26 10:56:33 -08:00
Andrea Sacco e172dd6ffe Fixed UanHelper documentation 2011-01-26 10:46:43 +01:00
Tom Henderson 75a034d543 start RELEASE_NOTES for ns-3.11 2011-01-25 21:47:05 -08:00
Tom Henderson 64a5f8295a rescan bindings 2011-01-25 21:38:34 -08:00
Andrea Sacco c5dc2d552c Fixed UanPhyGen::IsStateBusy method bug 2011-01-25 19:42:58 +01:00
Mitch Watrous 1d194ada5c Fix simulator waf problem when real time is not enabled 2011-01-24 09:49:57 -08:00
John Abraham 54111d5ade Fixed Functor example and provided sample usage 2011-01-21 14:52:53 -08:00
Mitch Watrous 617664dd49 Bug 1019: common --> node --> common circular dependency 2011-01-20 13:28:38 -08:00
Josh Pelkey c5f4efd6cf Move response vectors to a sub-folder 2011-01-20 14:39:10 -05:00
Josh Pelkey 28379f11af Move tcp-loss-response to actual test suite 2011-01-20 14:18:12 -05:00
Josh Pelkey baf5893516 Move tcp-testcases to actual test suite 2011-01-19 16:23:13 -05:00
Mitch Watrous c5b17c156d Make core module not depend on simulator module 2011-01-19 10:51:11 -08:00
Mitch Watrous b9378fea22 Update Python bindings 2011-01-18 09:09:15 -08:00
Mitch Watrous 3deeb9ee26 Make test cases not return bool valuesMake all TestSuite instances be static 2011-01-17 12:53:20 -08:00
Mitch Watrous f67a639728 Make all TestSuite instances be static 2011-01-10 15:55:29 -08:00
Tom Henderson 7c19e791ac Added tag ns-3.10 for changeset 63a8a4ed4054 2011-01-05 20:53:38 -08:00
Tom Henderson 7da4d1fbac update AUTHORS list 2011-01-05 20:51:46 -08:00
Tom Henderson 8ee2accdac Update some stale manual documentation 2011-01-03 16:35:59 -08:00
Tom Henderson fd84bcf6e5 get rid of some sphinx warnings 2011-01-03 16:17:05 -08:00
Tom Henderson e0d64d4320 Document cygwin limitation in RELEASE_NOTES 2011-01-03 15:53:55 -08:00
Tom Henderson 882ee51a41 remove stale doxygen and comments pertaining to TCP 2011-01-03 15:51:55 -08:00
Tom Henderson 9663d6e1ae Update TCP manual chapter 2011-01-03 15:48:42 -08:00
Tom Henderson d59ebffc69 formatting cleanup 2011-01-03 14:35:44 -08:00
Tom Henderson 72094e36be fix headings 2011-01-03 14:28:18 -08:00
Tom Henderson 5864cf546a fix boilerplates 2011-01-03 14:27:07 -08:00
Tom Henderson 3178b58afc fix formatting 2011-01-03 13:50:19 -08:00
Tom Henderson 56513ed407 update .hgignore for testing document 2011-01-03 13:30:55 -08:00
Tom Henderson b5117b4f20 fix conf.py for testing document 2011-01-03 13:29:55 -08:00
Tom Henderson 41e93b8ce4 update release notes and CHANGES.html file 2011-01-03 13:13:26 -08:00
Tom Henderson 3ce8fa8e56 remove copy-pasted reference to FixedRss loss model 2011-01-03 12:56:27 -08:00
Tom Henderson bc7a68745d fix broken links 2011-01-03 12:41:13 -08:00
Tom Henderson 6dbae3aac3 Move testing to Sphinx 2011-01-03 08:46:20 -08:00
Tom Henderson 6efffae76b revert 28fcccf55433: fix escape character 2011-01-02 23:12:13 -08:00
Tom Henderson 1b71bf9521 add tutorial/build to .hgignore 2011-01-02 22:59:49 -08:00
Tom Henderson 7502977115 Move tutorial to Sphinx 2011-01-02 22:57:32 -08:00
Tom Henderson aa3e2ff1dd Fix .hgignore for new documentation 2011-01-02 22:57:04 -08:00
Tom Henderson 2dde593a31 fix escape character 2011-01-02 22:56:16 -08:00
Tom Henderson 67d5bd3b2f add back manual changes made since ns-3.9 2011-01-01 14:13:14 -08:00
Tom Henderson 46f779dfee escape character for sh 2011-01-01 14:12:47 -08:00
Tom Henderson 1a631d1676 make destructor virtual 2010-12-31 19:44:45 -08:00
Tom Henderson 36f9363b57 Update release notes 2010-12-31 08:55:52 -08:00
Tom Goff df4d0ece70 bug 903: TapBridge doesn't close cleanly 2010-12-30 14:19:48 -08:00
Tom Henderson c149c0270a add missing lte figure 2010-12-30 16:04:47 -08:00
Mathieu Lacage 0464792705 missing replace file 2010-12-30 23:44:47 +01:00
Mathieu Lacage 40468410a8 missing config file 2010-12-30 23:44:02 +01:00
Mathieu Lacage be4eba65bd merge with HEAD 2010-12-30 23:40:55 +01:00
Mathieu Lacage 3f0dd9c4c7 convert manual to sphinx format 2010-12-30 23:39:27 +01:00
Andrea Sacco 755e555953 auv mobility class diagram. 2010-12-30 22:39:53 +01:00
Andrea Sacco 7192749311 UAN energy model test 2010-12-30 12:17:30 -08:00
Tom Henderson b09e05fbfc don't update model state from a DoDispose() method 2010-12-30 12:17:00 -08:00
Tom Henderson 2eb811f9f1 fix TcpSocketBase::RecvFrom() 2010-12-30 11:16:35 -08:00
Tom Henderson ef2941417d bug 1029: fix endian issue in v4ping.cc 2010-12-30 11:09:57 -08:00
Tom Henderson 083b833ff0 Update some stale documentation in doc/ directory 2010-12-29 11:15:54 -08:00
Tom Henderson 76ad7634ec update release notes and changes.html 2010-12-29 11:05:41 -08:00
Tom Henderson b9e03339ff Fix MTU issues with udp-trace-client-server example 2010-12-29 10:16:45 -08:00
Tom Henderson 6ecdd39227 more verbose assert message when MTU exceeded 2010-12-29 10:14:43 -08:00
Tom Henderson 91709b97eb Remove obsolete sample main-tw.cc 2010-12-29 09:31:47 -08:00
Tom Henderson d3230ed8c4 Remove obsolete sample main-trace.cc 2010-12-29 09:23:30 -08:00
Tom Henderson a944a984ae work around signed integral promotion 2010-12-28 18:37:09 -08:00
Flavio Kubota aed7de153b Bug 1025: wimax-ipv4 script exists with signal SIGSEGV when nbSS>20 2010-12-28 22:25:20 -02:00
Flavio Kubota 6112f4cc33 Bug 995: Useless (possibly incorrect) comparison of unsigned int 2010-12-28 22:24:26 -02:00
Flavio Kubota 4eaecca5ee Bug 985: WiMAX Invalid management message type on wimax-simple 2010-12-28 22:23:38 -02:00
Flavio Kubota a23f3761d6 Bug 953: WiMAX channel scanning overflow 2010-12-28 22:22:52 -02:00
Tom Henderson 6908fb3840 Update release notes and changelog 2010-12-23 12:40:48 -08:00
Andrea Sacco 3393499ccd bug 1012: Thorp propagation model bug 2010-12-23 11:39:47 -08:00
Tom Henderson 4384941372 bug 967: decouple Ipv4L4Protocols from Ipv4L3Protocol::Send() via a new callback 2010-12-23 11:32:36 -08:00
Tom Henderson 5f19d6e117 add sample rng plotting program for tutorial 2010-12-22 16:39:52 -08:00
Tom Henderson 3d78f6c00d small modifications to the samples showing event scheduling 2010-12-22 16:35:11 -08:00
Tom Henderson 51ba7112a1 fix implicit conversion issues in LTE model 2010-12-22 16:19:42 -08:00
Gustavo J. A. M. Carneiro b5cc8b68e8 Adapt pyviz to wifi module api change 2010-12-22 12:23:56 +00:00
Tom Henderson ca375e6d97 rescan bindings 2010-12-21 22:49:48 -08:00
Hemanth Narra 079847d813 DSDV routing protocol 2010-12-21 22:43:06 -08:00
Tom Henderson a676f638bc rescan bindings 2010-12-21 21:57:50 -08:00
Andrea Sacco f1e1c21bbe Energy support for UAN module and Li-Ion energy model 2010-12-21 21:44:11 -08:00
Tom Henderson 23cba49ee7 fix valgrind issue with lte-bearer test 2010-12-21 16:13:14 -08:00
Giuseppe Piro 26ad3245ad merged with ns-3-dev 2010-12-21 17:46:35 +01:00
Giuseppe Piro 2784cc3015 changed files name 2010-12-21 17:39:54 +01:00
Giuseppe Piro 9f4ddd4c06 fixed valgrind errors and files name 2010-12-21 17:34:28 +01:00
Nicola Baldo db2c435f42 lte examples now passing valgrind tests 2010-12-21 13:55:25 +01:00
Tom Henderson b792c83143 Update release notes 2010-12-20 22:05:44 -08:00
Tom Henderson 07b1fdebec rescan bindings 2010-12-20 16:41:32 -08:00
Tom Henderson 48e8a5404c [bug 947] Pretty-print IPv4 routing tables (patch originated by Hemanth Narra) 2010-12-20 16:34:59 -08:00
Tom Henderson 933cf0b8d3 rescan bindings 2010-12-20 16:21:50 -08:00
He Wu 372a9b6fe8 RV battery model and WiFi energy example 2010-12-20 15:49:12 -08:00
Tom Henderson 52e4c15014 Fix arguments to Time and DataRate objects for TCP examples 2010-12-20 15:19:11 -08:00
Giuseppe Piro 77fdfdb879 fixed some valgrind errors 2010-12-20 17:12:50 +01:00
Tom Henderson 78935c36d4 fix valgrind warnings for new TCP code 2010-12-19 21:57:21 -08:00
Tom Henderson c56da284b3 Update TCP regression tests 2010-12-17 21:07:57 -08:00
Josh Pelkey c500de1018 python scan 2010-12-17 14:24:24 -05:00
Josh Pelkey da85b34487 merge new TCP code 2010-12-17 13:57:22 -05:00
Josh Pelkey a650f91b57 and python scan 2010-12-17 12:59:05 -05:00
Josh Pelkey a9c9977ec5 Avoid enum name collision in socket 2010-12-17 12:48:13 -05:00
Josh Pelkey aec5b6ffda rescan python bindings 2010-12-16 21:00:18 -05:00
Josh Pelkey 40187d0511 Add BulkSendApplication 2010-12-16 20:24:14 -05:00
Josh Pelkey 50778714b3 Implement Socket::GetSocketType 2010-12-16 20:17:50 -05:00
Mathieu Lacage ad50d68e63 merge with HEAD 2010-12-15 10:24:31 +01:00
Mathieu Lacage ac9512df6b rescaling script to get pdfs with the right size in manual output 2010-12-15 10:20:00 +01:00
Yoshihiko Yazawa f7a07c499c First data packet is sent to bad route 2010-12-14 21:55:34 -08:00
Yoshihiko Yazawa 5fc05d2688 Route loop is made from RREQ 2010-12-14 21:52:43 -08:00
Yoshihiko Yazawa 6f570b64ed Intermediate node reply at invalid sequence number 2010-12-14 21:42:21 -08:00
Yoshihiko Yazawa abcf132cd7 Neighbor's sequence number is always invalid at disabling Hello 2010-12-14 21:41:58 -08:00
Yoshihiko Yazawa 558921399f MaxQueueLen and MaxQueueTime attributes can't change 2010-12-14 21:41:21 -08:00
Mathieu Lacage 87dcc63058 fix more manual build warnings 2010-12-10 15:22:36 +01:00
Mathieu Lacage 00981b3f69 get rid of texi2html warnings 2010-12-10 13:47:30 +01:00
Gustavo J. A. M. Carneiro be43d91ce1 Update the pyviz API description 2010-12-08 23:43:15 +00:00
Tom Henderson 261b75a3ab Bring CHANGES.html and RELEASE_NOTES up to date 2010-12-08 14:19:44 -08:00
Giuseppe Piro 5601dfad69 restored LteHelper::AddDownlinkChannelRealization () method 2010-12-08 12:59:42 +01:00
Gustavo J. A. M. Carneiro ace88cfa41 Python bindings rescan for pyviz 2010-12-06 17:59:20 +00:00
Gustavo J. A. M. Carneiro de0af97b3a Codereview Issue 2692041: Add pyviz module 2010-12-06 17:26:06 +00:00
Giuseppe Piro 9dd2b0261a improved module after Tom's review 2010-12-06 12:53:04 +01:00
Tom Henderson 985a647077 rescan bindings 2010-12-02 07:20:34 -08:00
Giuseppe Piro 258f51ca99 LTE module from GSoC project 2010-12-02 13:20:50 +01:00
Giuseppe Piro 87f01507ea LTE module form GSoC project 2010-12-02 09:03:34 +01:00
Giuseppe Piro 4384bdd6be LTE module form GSoC project 2010-12-02 09:02:42 +01:00
Dean Armstrong 0f79de44fe Bug 978: Run check-style.py on files touched in the reorganisation
Cosmetic changes only in this one (hence the reason I wanted them kept
separate from the the previous changeset).
2010-12-01 22:13:26 +00:00
Dean Armstrong 0946a77009 Bug 978: Consolidate Wi-Fi MAC high functionality
This change reorganises the Wi-Fi MAC high classes in attempt to
reduce duplication of functionality that is required for more than one
of the MAC high models. A new class called RegularWifiMac has been
created. This derives from the abstract WifiMac, and is parent of
AdhocWifiMac, StaWifiMac, ApWifiMac, and MeshWifiInterfaceMac. The QoS
and non-QoS class variants are no longer, with a RegularWifiMac
attribute "QosSupported" allowing selection between these two modes of
operation. QosWifiMacHelper and NqosWifiMacHelper continue to work as
previously.

Updates to some regression traces are necessary because the
reorganisation has led to random number streams being initialised in
slightly different orders and thus over-the-air timing changing.
2010-12-02 07:51:34 +00:00
Quincy Tse 6cfe9a69f2 Explicitly state that YansWifiHelper::AddPropagationLoss may not be commutative 2010-12-01 08:01:24 -08:00
Gustavo J. A. M. Carneiro 1b01a500c4 Bug 1004 - module header not rebuilt 2010-11-27 14:29:45 +00:00
Gustavo J. A. M. Carneiro 38d2c01bff Bug 1032 - Unable to specify multiple Compiler/Linker flags 2010-11-20 17:55:53 +00:00
Gustavo J. A. M. Carneiro 582e34f46d Give a more user-friendly error message when doxygen is not found 2010-11-20 17:51:17 +00:00
Tom Henderson b936dd686d bug 1009: decouple m_finSequence (TcpSocketImpl) from transmit sequence numbers 2010-11-17 16:23:09 -08:00
Tom Henderson a9b910fd14 bug 1022: inappropriate ASSERT in tcp-socket-impl.cc 2010-11-17 16:17:35 -08:00
Kirill Andreev 686f692ac9 fixed bug 991 2010-11-17 17:30:19 +01:00
Quincy Tse 218b74f3c1 TestCase for bug 991 2010-11-17 17:26:23 +01:00
Nicola Baldo 0240a54b8c fixed bug 1031 2010-11-17 17:12:55 +01:00
Pavel Boyko eb0d765ebf Bug 1030: routing/aodv example fixed 2010-11-17 11:03:07 +03:00
Tom Henderson 9ced8e59b8 bug 984: change EmuNetDevice encapsulation default to DIX 2010-11-12 11:54:45 -08:00
Hajime Tazaki be7c2dfa01 Bug 1027 - RocketfuelTopologyReader is not working at all 2010-11-12 13:28:26 +09:00
Josh Pelkey d43a904b5e fix nms examples 2010-11-11 16:09:15 -05:00
Egemen K. Cetinkaya d50f39456e remove unneeded array 2010-11-09 20:27:55 -08:00
Nicola Baldo 76daf64826 added fixed wifi bugs to release notes for ns-3.10 2010-11-09 13:06:30 +01:00
Nicola Baldo 35c1bf1578 added spectrum to release notes for ns-3.9 2010-11-09 12:56:50 +01:00
Nicola Baldo e0d535091a documentation: WifiMacQueue not 802.11e-specific 2010-11-09 11:59:06 +01:00
Tom Henderson ad3b94d67e update some module dependencies for samples 2010-11-08 13:54:12 -08:00
Tom Henderson f1fee377ec fix modularity issue with core module 2010-11-08 12:02:43 -08:00
Tom Henderson 6a74375bb8 hello-simulator.cc depends on core module 2010-11-08 11:38:12 -08:00
Tom Henderson f7229b64f5 clarify the status of ./waf --regression removal 2010-11-08 11:36:26 -08:00
Gustavo J. A. M. Carneiro 311a734e87 Start of work on modular Python bindings, unstable 2010-11-07 23:17:52 +00:00
Josh Pelkey 74c9606a9c add includes for mpi build 2010-11-01 12:23:07 -04:00
Tom Henderson f853acc998 rescan bindings 2010-10-27 21:19:12 -07:00
Gustavo J. A. M. Carneiro cb32fb77be Missing ipv4-global-routing-helper.h include 2010-10-27 12:05:40 +01:00
Gustavo J. A. M. Carneiro 881e0a6655 Module layout rework for static-routing, list-routing, global-routing 2010-10-26 18:02:17 +01:00
Gustavo J. A. M. Carneiro 0edf3776b3 When a module is disabled, remove xxx-module.h and module header files from build/variant/ns3 2010-10-26 15:11:17 +01:00
Gustavo J. A. M. Carneiro df9b164e5c Missing deps 2010-10-26 15:10:23 +01:00
Quincy Tse 6ff0af384f closes bug 993 2010-10-26 14:16:10 +02:00
Nicola Baldo 6e351878ed closes bug 1015 2010-10-26 14:03:17 +02:00
Nicola Baldo 5fc4f93117 documented enum WifiPhyStandard 2010-10-26 13:47:48 +02:00
Gustavo J. A. M. Carneiro 186bfa67fb Fix the paths to examples in test.py 2010-10-25 22:47:46 +01:00
Gustavo J. A. M. Carneiro f99cbd7ebc One more stop to fixing --enable-modules 2010-10-25 22:21:50 +01:00
Gustavo J. A. M. Carneiro 72689da5c2 Fix some examples, broken after bridge/olsr reorganization 2010-10-25 21:43:38 +01:00
Gustavo J. A. M. Carneiro 94e8a36329 (missing from last commit) 2010-10-25 21:27:03 +01:00
Gustavo J. A. M. Carneiro 44b71a7d54 Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings 2010-10-25 18:17:12 +01:00
Gustavo J. A. M. Carneiro f3454c3e75 Remove cygwin waf bug workaround, it has been fixed long ago 2010-10-25 17:44:09 +01:00
Gustavo J. A. M. Carneiro 5745a8d18c Convert the virtual-net-device module to the new layout 2010-10-25 15:13:44 +01:00
Gustavo J. A. M. Carneiro 69e9c73ab8 Convert the bridge module to the new layout 2010-10-25 15:00:28 +01:00
Gustavo J. A. M. Carneiro 5f80a82a35 Convert the olsr module to the new module layout 2010-10-25 14:43:02 +01:00
Gustavo J. A. M. Carneiro 85dcd9f887 Fix the flowmon example path in test.py 2010-10-25 12:56:26 +01:00
Gustavo J. A. M. Carneiro 91f3abaa48 flow-monitor-helper.h is no longer part of the helper module 2010-10-23 12:50:24 +01:00
Gustavo J. A. M. Carneiro 58a17e5fae Adapt the flow-monitor module to the new module tree layout spec. 2010-10-22 17:18:49 +01:00
Gustavo J. A. M. Carneiro 2c3abc0bac Add example python script to parse Flow Monitor XML results. 2010-10-22 14:59:56 +01:00
Egemen K. Cetinkaya 94579d0e70 Fix comments on matrix-topology example 2010-10-19 22:03:30 -07:00
Tom Henderson 9dd80eaf7b fix optimized build 2010-10-19 21:58:13 -07:00
Egemen K. Cetinkaya 2307785176 Matrix topology example program 2010-10-18 22:02:03 -07:00
Tom Henderson d230dcfdbf fix valgrind issue in new global-routing test 2010-10-16 15:07:03 -07:00
Mitch Watrous 2a9627bc2b Remove regression tests from waf 2010-10-15 16:36:40 -07:00
Mitch Watrous 23adf1034b Remove regression tests from waf 2010-10-15 16:31:32 -07:00
Tom Henderson b892b53ca7 bug 1005: GetSocket() methods for OnOffApplication and PacketSink 2010-10-15 12:53:05 -07:00
Tom Henderson a150a33b55 Improve documentation for propagation loss models 2010-10-15 12:51:18 -07:00
Tom Henderson 237f95e7cf bug 1007: remove Wifi dependency from propagation-loss-model-test-suite.cc 2010-10-15 12:50:51 -07:00
Mitch Watrous 50cf7a1641 Fix verbose parameter specifications 2010-10-11 16:03:38 -07:00
Mitch Watrous fb065d9693 Fixed problems due to missing NSC. 2010-10-08 10:01:00 -07:00
Tom Henderson 6d8cbd3edf fix csma-packet-socket.cc comments 2010-10-08 09:43:42 -07:00
Tom Henderson 692a88b61c merge two heads 2010-10-08 09:38:54 -07:00
Salva Climent ed764ec96f Bug 990 - Error with an NS_ASSERT at uan-phy-gen.cc 2010-10-05 22:48:54 -07:00
Tom Henderson 709d578f2d update RELEASE_NOTES 2010-10-05 01:33:25 -07:00
Tom Henderson 39b60cdc2f add mobility model test suite with more waypoint mobility model tests 2010-10-05 01:28:49 -07:00
Phillip Sitbon c1ceb7dada bugs 892 and 893: waypoint mobility model initial SetPosition() handling and LazyNotify attribute 2010-10-05 01:26:15 -07:00
Tom Henderson b9274e8ff7 Fix outdated documentation 2010-10-01 16:54:10 -07:00
Quincy Tse ddeed27793 Bug 992 - Unusual (possibly incorrect assertion) in Packet::Deserialize 2010-09-29 17:14:39 -04:00
Jens Mittag 2f4defe975 Extension of method Enum::MakeEnumChecker() to accept more parameters 2010-09-29 14:37:52 +02:00
Sam Jansen ea7b334d42 Fix bug980: nsc library not detected 2010-09-22 12:42:07 -07:00
Josh Pelkey ae451b7ae1 Bug 994 - PointToPointGridHelper useless if clauses 2010-09-16 15:50:59 -04:00
Tom Henderson 06f22619ed fix small typo 2010-09-15 20:43:31 -07:00
Mirko Banchi b24a67571b Bug 981: use a cache to keep track of received MPDUs under block ack 2010-09-12 14:35:26 +02:00
Mirko Banchi 613fabd554 Add BlockAckCache class 2010-09-12 14:27:31 +02:00
Dean Armstrong f7980953d8 Bug 979: Update RELEASE_NOTES to indicate this is fixed 2010-09-03 09:56:51 +01:00
Dean Armstrong ae953f7d08 Bug 979: Update regression traces 2010-09-03 09:55:14 +01:00
Dean Armstrong 1731cd715c Bug 979: Use LSB ordering for multi-octet fields in wifi module 2010-09-03 08:58:04 +01:00
Dean Armstrong fc769b5331 Bug 852: Update RELEASE_NOTES to note this new feature 2010-09-02 14:30:44 +01:00
Mirko Banchi 25d16d6c38 Replace MacRxMiddle::SequenceControlSmaller with QosUtilsIsOldPacket method 2010-09-02 14:00:29 +02:00
Mirko Banchi 60bdd228ae Rename MacLow::RxCompleteBufferedPacket to a more appropriate name 2010-08-31 22:30:31 +02:00
Tom Henderson de268675ab Start tracking ns-3.10 changes 2010-09-01 22:17:18 -07:00
Mathieu Lacage cb0c39edda introduce implicit conversion operator 2010-08-25 21:31:43 +02:00
Mathieu Lacage 22474ffee1 fix double build 2010-08-25 17:42:52 +02:00
Mathieu Lacage 19534ac7c6 get 64bit build running again 2010-08-25 17:25:00 +02:00
Mathieu Lacage d06cbf7879 move int64x64 to src/core/ 2010-08-25 17:16:56 +02:00
Mathieu Lacage 7961f8921c get rid of Scalar and co. 2010-08-25 16:45:59 +02:00
Mathieu Lacage 3f92594197 rename 2010-08-25 10:44:21 +02:00
Mathieu Lacage eae2616ea5 really disable the asm crap 2010-08-25 10:36:43 +02:00
Mathieu Lacage 1b7167ff90 add missing constructors 2010-08-25 10:36:32 +02:00
Mathieu Lacage e5244e0d5e a 64bit time class 2010-08-25 10:05:01 +02:00
Mathieu Lacage 052b8b1684 add missing constructors 2010-08-25 10:04:47 +02:00
Mathieu Lacage f331937ac9 asm tweaks 2010-08-24 23:10:06 +02:00
Mathieu Lacage 6bfe742905 add missing constructor 2010-08-24 23:09:54 +02:00
Mathieu Lacage 982f8be5de split out uint64x64 type, optimize 2010-08-24 16:36:41 +02:00
Tom Henderson d4786c7e55 Update bindings 2010-08-23 19:01:11 -07:00
Mirko Banchi 6342b3fbd1 Bug 983: handle correctly ADDBA response action frames in QadhocWifiMac 2010-08-23 14:01:50 +02:00
Mirko Banchi 604bd34fa0 Packets that cannot be acknowledged in the block ack bitmap must not be transmitted 2010-08-22 22:51:33 +02:00
Tom Henderson 8f58376360 Help waf to guess release versions of nsc and pybindgen 2010-08-20 12:17:19 -07:00
Mirko Banchi d8ef95f3b3 Add some tests for block ack response header 2010-08-20 21:31:26 +02:00
Mirko Banchi 17a84ba2b4 Add ResetBitmap method to block ack response header 2010-08-20 19:15:12 +02:00
Mirko Banchi d794db4603 Improve block ack response header 2010-08-20 19:06:19 +02:00
Tom Henderson df728885c8 Added tag ns-3.9 for changeset 8ddf25211f89 2010-08-20 08:17:10 -07:00
Tom Henderson b219ec3542 Final nits for 3.9 release 2010-08-20 08:16:36 -07:00
Tom Henderson 1aaf1bc8c2 Added tag ns-3.9-RC3 for changeset def4153e27cd 2010-08-18 22:43:08 -07:00
Tom Henderson 1718f49f4c Remove redundant implementations 2010-08-18 15:49:18 -07:00
Tom Henderson 866da9180e Additional stubs for HighPrecision operators 2010-08-18 15:06:26 -07:00
Tom Henderson 584de89fa8 Regenerate bindings 2010-08-18 13:58:50 -07:00
Tom Henderson 2cc222c320 Provide stubbed HighPrecision GetHigh(), GetLow() implementations to fix builds across platforms 2010-08-18 13:58:38 -07:00
Gustavo J. A. M. Carneiro 7f97723ba8 Call StopDevice() in EmuNetDevice::DoDispose() 2010-08-17 21:28:08 -07:00
Josh Pelkey e6a63436e0 Added tag ns-3.9-RC2 for changeset 14019c625ab8 2010-08-16 17:41:03 -04:00
Josh Pelkey 48116a8fe3 update release notes 2010-08-16 13:43:36 -04:00
Alina Quereilhac d15f6caaf6 bug 959: Simulation never finishes when using RealtimeSimulatorImpl 2010-08-16 08:32:37 -07:00
Gustavo J. A. M. Carneiro de651ef5e1 bug 939: EmuNetDevice uses too much memory 2010-08-16 08:30:29 -07:00
Josh Pelkey 051d0064f2 python scan 2010-08-16 10:55:27 -04:00
Gustavo J. A. M. Carneiro 23e3e770ae Update pybindgen version 2010-08-15 21:20:24 -07:00
Tom Henderson be75f4ea75 add explicit cast for building on gcc-4.1.1 2010-08-15 14:32:44 -07:00
Tom Henderson d9fbfafcc2 Bump nsc version to 0.5.2 2010-08-14 15:37:02 -07:00
Josh Pelkey db1fd23f9a add needed header 2010-08-13 11:21:14 -04:00
Josh Pelkey f220546b16 fix one more PeekData 2010-08-13 11:14:44 -04:00
Mathieu Lacage f6cc4d3fe6 forgot include 2010-08-13 14:10:48 +02:00
Mathieu Lacage e1cdf6727f merge 2010-08-13 14:04:50 +02:00
Mathieu Lacage fbd5df18ee add temp variable to work around compiler bug 2010-08-13 14:03:52 +02:00
Mathieu Lacage ce0de7c3da allow serialization/deserialization for debugging output 2010-08-13 13:30:14 +02:00
Mathieu Lacage 6cfc2917f0 extra debugging 2010-08-13 13:28:38 +02:00
Mathieu Lacage cb1952bb0a must return GetErrorStatus 2010-08-13 11:50:03 +02:00
Mathieu Lacage b2ac17e4d2 rename tests 2010-08-13 10:10:22 +02:00
Mathieu Lacage ffd92a879b remove trailing ';' 2010-08-13 10:10:10 +02:00
Mathieu Lacage 269046aa5a log timeout duration 2010-08-13 09:32:29 +02:00
Mathieu Lacage f6fc12ff11 get rid of NOARGS logging statements and log statements in getters 2010-08-13 09:29:36 +02:00
Mathieu Lacage 8f9869fe46 get rid of NOARGS logging calls 2010-08-13 09:22:52 +02:00
Mathieu Lacage 72aca999e4 get rid of annoying logging for getters and of the _NOARGS log calls. 2010-08-13 09:22:29 +02:00
Hajime Tazaki 5c7d4c3f2f update CHANGES.html for Bug 671 2010-08-13 16:04:16 +09:00
Josh Pelkey bd151522b5 fix mpi manual error 2010-08-12 17:46:49 -04:00
Josh Pelkey 6ca3390e38 fix tag that i messed up 2010-08-11 15:18:29 -04:00
Josh Pelkey 2b34b4d384 Added tag hg, tag, ns-3.9-RC1 for changeset fb5ad9c7755a 2010-08-11 15:13:13 -04:00
Josh Pelkey 70f4ccc0fc update release notes and fix doxygen warnings 2010-08-11 11:37:37 -04:00
Andrey Mazo 161b7217c0 fix some indentation 2010-08-11 09:25:51 -04:00
Josh Pelkey b2b75260c4 merge 2010-08-10 23:13:56 -04:00
Craig Dowell def0d12507 get rid of about a zillion PeekData 2010-08-10 20:04:06 -07:00
Quincy Tse d2e47093cd Bug 930 - examples/topology-read/topology-example-sim.cc uses variable length array 2010-08-10 22:33:13 -04:00
Josh Pelkey 48cb1655a7 fix valgrind error 2010-08-10 17:57:14 -04:00
Tom Henderson 92026672ac Bug 879 - source address selection for AODV using DeferredRouteRequest 2010-08-10 13:02:38 -04:00
Josh Pelkey 1182e30d99 fix namespace usage in energy test 2010-08-10 12:11:56 -04:00
Gustavo J. A. M. Carneiro aea9e883e1 Update pybindgen version 2010-08-10 15:06:35 +01:00
Josh Pelkey fa10678994 fix compiler warning 2010-08-10 09:47:02 -04:00
Gustavo J. A. M. Carneiro fb99c4fe3b Bring nodes close together, due to changes in ns-3.9 that bring reduced wifi range 2010-08-10 12:28:56 +01:00
Gustavo J. A. M. Carneiro cde83e6c89 realtime-udp-echo.cc ported to python 2010-08-10 12:21:08 +01:00
Gustavo J. A. M. Carneiro 775ff127a4 Python: only call ns3::Simulator::RunOne if we're running the default event scheduler; partially fixes Bug 631. 2010-08-10 12:16:10 +01:00
Gustavo J. A. M. Carneiro 01d61618d3 Add SO_BROADCAST to CHANGES.html, fix the html a bit 2010-08-10 10:55:05 +01:00
Tom Henderson f29be24eb6 include wimax manual chapter 2010-08-10 00:18:20 -07:00
Mohamed Amine Ismail dfd2d17e09 Add WimaxArchitecture figure source 2010-08-10 00:17:18 -07:00
Tom Henderson 268e18229d rescan bindings 2010-08-10 00:13:34 -07:00
Ken Renard 55e1e1e47a [bug 911] Ipv4 multicast forwarding not going to all output interfaces in route 2010-08-09 23:40:31 -07:00
He Wu cbfba2983c Apply energy model changes of http://codereview.appspot.com/1008043/show patchset 13 2010-08-09 23:31:57 -07:00
Josh Pelkey 98e13720b5 python scan 2010-08-09 22:23:57 -04:00
Josh Pelkey 450022ce1b merge heads 2010-08-09 20:59:05 -04:00
Josh Pelkey b043b431c7 fix doxygen warning 2010-08-09 20:22:27 -04:00
Josh Pelkey c6b9e33b75 remove mobility trace to pass regression for now 2010-08-09 18:47:12 -04:00
Josh Pelkey a10e2c1c74 revert latest wimax change for tests to pass 2010-08-09 17:47:23 -04:00
Josh Pelkey 1681471d81 release notes and changes updates 2010-08-09 14:05:48 -04:00
Josh Pelkey dbc8486cce add bug fixes to RELEASE_NOTES 2010-08-09 12:54:48 -04:00
Craig Dowell 562f325ef7 remove old fatal error from point-to-point code 2010-08-08 19:19:50 -07:00
Craig Dowell 50b3bbeaeb Change NonPromiscReceiveFromDevice per bug 949. 2010-08-08 19:15:08 -07:00
Craig Dowell 48b814e882 IsMulticast returns true in point-to-point device 2010-08-08 18:52:20 -07:00
Flavio Kubota e3f7114daf Bug 953 - WiMAX channel scanning overflow 2010-08-07 21:15:14 -03:00
Mathieu Lacage 16e9611233 a double is not helpful here. 2010-08-07 19:50:38 +02:00
Mathieu Lacage 7b20c3aaae rescan python 2010-08-07 15:22:42 +02:00
Mathieu Lacage d48eaa78fe update reference traces to deal with new event ordering due to use of integer arithmetic instead of floating point arithmetic 2010-08-07 15:03:12 +02:00
Mathieu Lacage fedb8201f2 merge with bug826 fixes 2010-08-07 14:30:18 +02:00
Mathieu Lacage 735f905c72 rescan bindings 2010-08-07 14:18:16 +02:00
Mathieu Lacage 1fcb3aecbe bug 956: workaround compiler bug 2010-08-07 14:18:04 +02:00
Flavio Kubota f83a82bc7a Bug 874 - wrong modulation type is selected in the forwardBurst method 2010-08-06 21:55:17 -03:00
Josh Pelkey bae5d35b8a minor tutorial update for clarity 2010-08-06 15:40:56 -04:00
Mirko Banchi 26c817c077 ops, a wrong bit mask 2010-08-05 19:45:55 +02:00
Josh Pelkey 2416fdbdf0 python scan 2010-08-05 11:36:22 -04:00
Christian Facchini 9b97d39c32 Bug 969 - No SocketList is present in UdpL4Protocol class 2010-08-05 11:22:11 -04:00
Mirko Banchi 3fc200bded Bug 842 - During retransmission of a BAR i must wait for a Block ack response and not for a normal ack 2010-08-05 15:32:06 +02:00
Elena Buchatskaya 635d67b66f Bug 964 - AODV does not work with host addressed interfaces 2010-08-04 21:34:52 +04:00
Elena Buchatskaya c580095664 Bug 966 - AODV originates new RREQ on each packet, when doesn't have valid route 2010-08-04 20:47:46 +04:00
Elena Buchatskaya fb533edf58 Bug 971 - fix AODV header Print functions 2010-08-04 20:29:07 +04:00
Gustavo J. A. M. Carneiro f30cff4537 merge 2010-08-04 12:52:53 +01:00
Gustavo J. A. M. Carneiro cd57f8bb76 Flow Monitor: remove unnecessary assertions 2010-08-04 12:51:33 +01:00
Josh Pelkey f551b7ed6a merge with tip 2010-08-03 15:24:15 -04:00
Josh Pelkey bb427ac976 Bug 970 - move UAN over to new directory structure 2010-08-03 15:23:18 -04:00
Nicola Baldo 7da27a7b09 fixed Bug 941 - Wifi Dcf attributes not reachable 2010-08-03 18:02:55 +02:00
Gustavo J. A. M. Carneiro ee971f238d Bug 972 - [flow monitor] assertion fails in pv4-flow-probe.cc 2010-08-03 11:04:05 +01:00
Blake Hurd cb4b0f8778 add arp-header.h to wscript 2010-08-02 13:41:11 -04:00
Kirill Andreev 50bd0c5747 fixed Bug 799 - Interference helper is too slow 2010-08-02 17:09:16 +02:00
Nicola Baldo 3e2557f03a bug 958 closed 2010-08-02 13:15:36 +02:00
Pavel Boyko ba41fce14c Mobility doxygen: all classes are documented and added to the mobility module. All public methods and fields should follow. 2010-08-02 13:16:57 +04:00
Pavel Boyko 0b02a78ac4 Doxygen cleanup in mobility module 2010-08-02 13:00:17 +04:00
Josh Pelkey da0697d4da fix some doxygen 2010-07-27 14:34:47 -04:00
Mathieu Lacage 8c28415f67 merge with HEAD 2010-07-24 18:19:58 +02:00
Mathieu Lacage ed81c2b49a bug 965: Problem building /src/core/callback.cc 2010-07-24 18:19:04 +02:00
Fernando Pereira b8373027c5 [Bug 960] V4Ping does not generate checksum 2010-07-23 15:20:40 -07:00
Tom Henderson a9c272c6b2 improve a few logging statements 2010-07-23 13:31:02 -07:00
Tom Henderson 2bc11f1ead Improve logging for AODV 2010-07-23 08:35:15 -07:00
Mathieu Lacage 0b117cbf1a optimize buffer some more 2010-07-23 13:39:46 +02:00
Gustavo J. A. M. Carneiro 9d0dccaa2d Bug 901: Optimize Mac48Address operators 2010-07-21 06:33:56 -07:00
David 99571b924a Fix main-packet-header.cc sample (bug 918) 2010-07-20 21:10:46 -07:00
Tom Henderson 981d8ba90b Range-based propagation loss model added 2010-07-20 14:22:04 -07:00
Josh Pelkey 767fe9f7bc suppress wifi test pcap when running test.py 2010-07-20 14:04:47 -04:00
Tom Henderson 051b0f3e2d Change default OFDM error rate model to NistErrorRateModel (issue 944) 2010-07-20 07:34:14 -07:00
Josh Pelkey 72bb44ac19 missed include for nix-vector 2010-07-19 17:39:51 -04:00
Josh Pelkey 76ecad3c72 undelete copy method in nix-vector 2010-07-19 15:32:19 -04:00
Josh Pelkey b930c13561 merge with head 2010-07-19 14:21:40 -04:00
Josh Pelkey 252bb9ade1 Change nix-vector to use SimpleRefCount instead of Object 2010-07-19 14:21:12 -04:00
Mathieu Lacage 2401806fb9 merge with head 2010-07-19 19:36:39 +02:00
Gilaras Drakeson 0a28c73bd1 SetAllowBroadcast(true) addition made to wifi-simple-infra.cc and wifi-simple-interference.cc 2010-07-19 23:15:42 +05:30
Mathieu Lacage 7ea060332f split out buffer tests 2010-07-19 19:35:30 +02:00
Gilaras Drakeson e6b2ad62e3 Adds SetAllowBroadcast(true) to wifi-simple-adhoc.cc 2010-07-19 22:37:44 +05:30
Gustavo J. A. M. Carneiro 3c18f0ac91 Remove leftover old version sequence number sources 2010-07-19 17:51:20 +01:00
Gustavo J. A. M. Carneiro e17ed0c6ab python scan 2010-07-19 12:43:05 +01:00
Gustavo J. A. M. Carneiro 23aae2df14 Still Bug 943: fix UdpSocketImpl::GetAllowBroadcast, let Socket::SetAllowBroadcast return a bool indicating success/failure, instead of a fatal error. 2010-07-19 12:17:51 +01:00
Tom Henderson 0d51bd9872 Configure OnOffApplication to enable broadcast on those sockets that support it 2010-07-15 21:45:01 -07:00
Tom Henderson 96b20dd724 PacketSocket should not report that it allows broadcast 2010-07-15 21:42:49 -07:00
Josh Pelkey 274e6f6444 simple doxygen fixes 2010-07-15 15:21:56 -04:00
Mathieu Lacage cde6db777a re-introduce Scalar class 2010-07-14 21:45:31 +02:00
Mathieu Lacage 48db5b00b8 someone forgot and explicit Scalar 2010-07-14 21:43:55 +02:00
Mathieu Lacage 74f3f66a73 instrument arith ops 2010-07-14 21:25:06 +02:00
Mathieu Lacage 979c31d737 remove un-needed log declaration 2010-07-14 21:24:17 +02:00
Hajime Tazaki b5b0d1900e Opps, Bug 671: correct valgrind error 2010-07-13 20:27:55 +09:00
Hajime Tazaki 20269669af python scan 2010-07-13 14:12:20 +09:00
Hajime Tazaki 9dc33c37b1 Bug 671 add packet-info-tag.cc for IP_PKTINFO/IPV6_PKTINFO 2010-07-13 13:00:55 +09:00
Gustavo J. A. M. Carneiro a0a543e663 Fix regression tests after bug 943 changes 2010-07-12 11:45:15 +01:00
Gustavo J. A. M. Carneiro 36fdbf4c1a Update python bindings 2010-07-12 11:44:47 +01:00
Mathieu Lacage 93032c887a get rid of TimeUnit<N> 2010-07-09 12:52:24 +02:00
Mathieu Lacage 4910652048 no need to use TimeUnit<1> here 2010-07-09 12:52:09 +02:00
Mathieu Lacage c2a5c1ff92 oops. implement Compare method correctly 2010-07-09 10:33:35 +02:00
Mathieu Lacage edb157f108 add missing include 2010-07-08 20:59:08 +02:00
Mathieu Lacage b928becb08 merge with HEAD 2010-07-08 10:32:31 +02:00
Mathieu Lacage 23a588f336 documentation 2010-07-08 10:31:31 +02:00
Mathieu Lacage b8bde5bae2 pull 32bit fixes 2010-07-08 09:54:57 +02:00
Mathieu Lacage a361360823 fix build typo 2010-07-08 09:53:49 +02:00
Mathieu Lacage 8b45524363 merge with ns-3-dev 2010-07-08 09:48:41 +02:00
Mathieu Lacage d4d165fcfa another missing explicit keyword 2010-07-08 09:40:24 +02:00
Mathieu Lacage 4de0464482 variable is of type Time, not Timer. 2010-07-08 09:38:33 +02:00
Mathieu Lacage 648660175a add missing explicit keyword to match -cairo version of the code 2010-07-08 09:38:09 +02:00
Mathieu Lacage 57b7572e75 rework 32bit version to match 64bit version 2010-07-08 09:33:06 +02:00
Mathieu Lacage 50a560f7e3 tests pass on 64bit systems 2010-07-08 09:32:48 +02:00
He Wu 2d87e8d326 Initial import of energy model 2010-07-07 21:54:32 -07:00
Mathieu Lacage 7a16a8d2f2 kill dead code 2010-07-07 18:17:52 +02:00
Mathieu Lacage c68f49ad25 add invert support 2010-07-07 18:17:21 +02:00
Mathieu Lacage 4d19ee3038 move macro definition to function where it is used 2010-07-07 18:17:05 +02:00
Hajime Tazaki 41c90baf30 update Bug 932: source address selection in IPv4 HDRINCL 2010-07-07 23:58:40 +09:00
Mathieu Lacage 82a8fef4c9 What time unit is this ? 2010-07-07 16:57:19 +02:00
Mathieu Lacage 3f330b7a01 rewrite time integer support for 32bit systems. 2010-07-07 16:56:35 +02:00
Mathieu Lacage 0b5fd59ac5 no need to use timestep logic. 2010-07-07 16:22:09 +02:00
Josh Pelkey 33cd14075c fix gcc warning 2010-07-06 20:27:51 -04:00
Mathieu Lacage e306b19fbe merge with ns-3-dev 2010-07-06 17:15:31 +02:00
Mathieu Lacage c7d137102c Backed out changeset e27b81575ebe 2010-07-06 17:15:00 +02:00
Mathieu Lacage 3db48958f6 add GetTypeId 2010-07-06 15:41:54 +02:00
Mathieu Lacage bb11b39993 use proper parent classname 2010-07-06 15:41:15 +02:00
Mathieu Lacage b1e17bf184 use proper parent class 2010-07-06 15:40:16 +02:00
Gustavo J. A. M. Carneiro 06c8a3b54e Python bindins API rescan 2010-07-06 11:17:18 +01:00
Mathieu Lacage 0adaab0ad9 plug leak 2010-07-06 09:07:15 +02:00
Mathieu Lacage 07903ab0e1 merge with ns-3-dev 2010-07-05 17:38:49 +02:00
Mathieu Lacage fe8a11d26b avoid crash upon process exit 2010-07-05 17:37:05 +02:00
Mathieu Lacage 6a78f78475 avoid compiler error 2010-07-05 17:23:18 +02:00
Mathieu Lacage 4523717e8b forgot to declare method as inline 2010-07-05 16:54:12 +02:00
Mathieu Lacage 9631233a27 inline a few more functions for optimization 2010-07-05 16:49:41 +02:00
Mathieu Lacage 618ba84f4f avoid floating point multiplication and division to ensure reproducible results 2010-07-05 16:38:11 +02:00
Mathieu Lacage 8fcd5695d9 avoid use of doubles to avoid rounding errors. 2010-07-05 16:32:29 +02:00
Dean Armstrong 2264c85354 Bug 852: Support ERP-OFDM rates and thus '802.11g' 2010-07-05 10:15:37 +01:00
Dean Armstrong 8088d0e9e1 Bug 852: Implement IEEE 802.11 Extended Supported Rates information element
This patch adds to the SupportedRates object the ability to serialise an
Extended Supported Rates information element if the number of supported rates
exceeds the 8 that can be carried by the vanilla Supported Rates element.
2010-08-25 09:10:32 +01:00
Mirko Banchi 08a8382a46 run check-style on mac-low.h/cc 2010-08-28 20:42:00 +02:00
Mathieu Lacage 8ab52be3ab a new testcase 2010-07-05 11:11:16 +02:00
Mathieu Lacage 698c8b1e2a bug 826: optimize hp implementation for 32bit systems 2010-07-05 10:15:42 +02:00
Mathieu Lacage 895f08bda3 no need to bother with ignored return value 2010-07-05 09:58:32 +02:00
Mathieu Lacage edcacfe1e4 add extra test assert 2010-07-05 09:58:00 +02:00
Mathieu Lacage 4a3340f171 remove dead comment 2010-07-05 09:57:46 +02:00
Mathieu Lacage 7cf93d3cef oops build script typo 2010-07-05 07:47:06 +02:00
Tom Henderson a92410589b move spectrum-interference test suite into test framework 2010-07-04 14:40:12 -07:00
Mathieu Lacage 9d600946a2 merge with ns-3-dev 2010-07-04 17:07:47 +02:00
Mathieu Lacage e13d7187e4 inline new high precision implementation 2010-07-04 17:07:07 +02:00
Mathieu Lacage c444b8b4f0 merge with HEAD 2010-07-04 16:37:20 +02:00
Mathieu Lacage 3f9f3f0c98 forgot to add implementation 2010-07-04 16:36:52 +02:00
Mathieu Lacage c00e63b4b4 introduce new hp implementation for 64bit boxes 2010-07-04 16:35:19 +02:00
Mathieu Lacage 3398b554e4 remove un-needed include 2010-07-04 16:34:42 +02:00
iamine c309dd62fe Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization 2010-07-04 15:52:12 +02:00
Tom Henderson 34fcbcf287 eliminate some warnings breaking builds 2010-07-03 15:52:09 -07:00
Tom Henderson 58225f43ce Provide virtual destructors for interface classes 2010-07-02 21:15:46 -07:00
Gustavo J. A. M. Carneiro 0338e82c40 Allow headers to be in subdirectories with respect to wscript 2010-07-02 12:45:09 -07:00
Luca Favatella e67a613a5f fix duplication in wscript 2010-07-01 10:17:39 -04:00
Mathieu Lacage 2157f7a345 run check-style.py 2010-07-01 12:50:22 +02:00
Mathieu Lacage dca9b98db2 improve error reporting in case of assert failures. 2010-07-01 12:38:06 +02:00
Tom Henderson 663312ffd8 fix possibly uninitialized variables 2010-06-30 21:19:21 -07:00
Josh Pelkey 7faa97eab8 remove uan test temporarily 2010-06-30 20:35:49 -04:00
Josh Pelkey 2133aa49c5 ensure objects are regsitered 2010-06-29 20:24:20 -04:00
Josh Pelkey ef1d99d2c0 fix uan example 2010-06-28 14:47:06 -04:00
Josh Pelkey 03a9879490 fix rocket-fuel example valgrind issue 2010-06-28 14:45:56 -04:00
Josh Pelkey 8e5ef53724 python scan 2010-06-28 11:33:05 -04:00
Dean Armstrong 682a93ca39 Bug 881: Add missing rename of SerializeIE to Serialize. 2010-06-28 09:19:21 +01:00
Pavel Boyko 5afa1764af bug 473: initialize variables 2010-06-28 11:29:22 +04:00
Josh Pelkey 8b89e7b233 Cleanup use of namespace specifiers in uan 2010-06-27 20:37:49 -07:00
Tom Henderson e6328110db Cleanup object registration for uan 2010-06-27 20:27:30 -07:00
Josh Pelkey bfa660bed1 remove unimplemented method in uan module 2010-06-26 11:34:43 -04:00
Josh Pelkey b381cbfaac fix uan for python scan, add default constructor 2010-06-25 13:50:45 -04:00
Dean Armstrong cc1141628e Bug 881: Update RELEASE_NOTES and CHANGES.html 2010-06-25 12:40:24 +01:00
Dean Armstrong cf303ac4ef Bug 881: WifiInformationElement method renaming
Some renaming proposed by Nicola:

SerializeInformation => SerializeInformationField
DeserializeInformation => DeserializeInformationField
DeserializeIE => Deserialize
SerializeIE => Serialize

...and some I've extrapolated:

GetInformationSize => GetInformationFieldSize
DeserializeOptionalIE => DeserializeIfPresent
2010-06-25 12:32:17 +01:00
Dean Armstrong 28e92f93c1 Bug 881: Make Ssid and SupportedRates derive from WifiInformationElement 2010-06-22 12:05:08 +01:00
Dean Armstrong ec753ce95d Bug 881: Bring Wi-Fi IE serdes intelligence into WifiInformationElement object
Introduce WifiInformationElement methods SerializeIE(),
DeserializeIE(), and DeserializeOptionalIE() (the latter for use when
the IE of interest might not be present), which know how to deal with
the IE as a whole.

Make use of these in mesh subsystem where WifiInformationElement-derived
objects are used.

Also add empty implementation of Print() method of
WifiInformationElement so that IEs that don't care about being
displayed don't need to implement this.
2010-06-22 11:59:26 +01:00
Dean Armstrong acebf39957 Bug 881: Change WifiElementId to WifiInformationElementId 2010-06-22 11:50:55 +01:00
Dean Armstrong 51e894c77d Bug 881: Extract WifiInformationElement(Vector) core to wifi module
This patch aims to bring the core of the current WifiInformationElement and
WifiInformationElementVector classes into the wifi module, where they can then
enjoy greater use (currently they are in the mesh module and contain
mesh-specific aspects).
2010-06-25 11:50:06 +01:00
Josh Pelkey bda1180629 python scan 2010-06-24 15:14:25 -04:00
Leonard Tracy 3353f641c6 UAN module addition 2010-06-24 14:35:29 -04:00
Tom Henderson d1f76f4cc2 rescan bindings 2010-06-24 10:04:30 -07:00
Hajime Tazaki b6093c6789 Bug 946 - Rocketfuel topology dataset support for topology reader 2010-06-23 18:16:45 +09:00
Dean Armstrong e54fea5648 Bug 853: Use consistent standards/rates for examples and tests that use Wi-Fi
The change to consider mandatory rates for control responses if a
suitable basic rate could not be found broke the tests involving the
wireless/wifi-simple-adhoc-grid example, and the
routing-olsr-regression testsuite.

In these cases it is actually the tests that need updating; in the
wifi-simple-adhoc-grid test and the bug780-test part of the
routing-olsr-regression testsuite, 802.11b rates were being used with
the Wi-Fi PHY standard left at the default of 802.11a. The fix here is
to set the standard to 802.11b in the test.

In the tx-regression-test part of routing-olsr-regression, the problem
was that the reference traces needed to be updated given the control
response rate fix.  In this case I have also modified the test to set
the standard to 802.11a for clarity.
2010-06-23 09:01:30 +01:00
Dean Armstrong cd6ccc184e Bug 853: Consider mandatory rates for Wi-Fi control responses
This changeset modifies the GetControlAnswerMode() method of class
WifiRemoteStationManager to correctly identify rates within the same
modulation class as the received frame, and then adds a search for a
suitable mandatory rate in the case where no suitable (per IEEE Std.
802.11-2007, Section 9.6) basic rate has been found.

I've also taken the opportunity to "tidy" the code up a bit -
primarily through renaming of variables to something more in line with
the nomenclature used in the standard.

Note that this change exposes issues in some of the test and example
code that uses the Wi-Fi models. These issues are addressed in a
following changelist.
2010-06-23 08:47:29 +01:00
Quincy Tse 38e14ee828 add missing files 2010-06-23 06:43:21 +02:00
Quincy Tse 074a1f7c0e bug 933: Flushing ostream and files on abnormal program exit 2010-06-22 15:44:10 +02:00
Tom Henderson ca4f040cf7 Remove regression test test-ns2-mob.py 2010-06-20 11:01:08 -07:00
Gustavo J. A. M. Carneiro eb79f5d518 Another missing <math.h> include 2010-06-20 15:57:49 +01:00
Martín Giachino 8af8a42b6a RELEASE_NOTES updated 2010-06-20 17:25:42 +04:00
Martín Giachino 2b36eff9bc 473: brand new NS-2 mobility trace reader merged 2010-06-20 17:21:22 +04:00
Gustavo J. A. M. Carneiro 6e399c05a4 Add missing <math.h> include 2010-06-19 17:10:57 +01:00
Tom Henderson f83cd3308f Fix gcc-3.4 build issues 2010-06-18 21:02:33 -07:00
Gustavo J. A. M. Carneiro 6214884a63 Enforce the AllowBroadcast socket option for UDP sockets 2010-06-18 17:18:59 +01:00
Gustavo J. A. M. Carneiro 25153a2734 API rescan for python bindings 2010-06-17 10:37:02 +01:00
Gustavo J. A. M. Carneiro d76d69498a Add -fstrict-aliasing and -Wstrict-aliasing compilation flags, to catch some potential strict aliasing violations earlier 2010-06-17 09:56:38 +01:00
Dean Armstrong 498c1d27fb Bug 871: Update OFDM validation script for new rate naming 2010-06-16 20:49:41 +01:00
Dean Armstrong ebb9193ef9 Bug 871: Rework construction of Wi-Fi rates
This patch attempts to lay some groundwork for enhancements to the Wi-Fi module
by bringing the representation of transmit rates more in line with the
standard.

The key part of the patch is the introduction of a type that corresponds to the
notion of Modulation Class described in IEEE 802.11-2007, Section 9.6.1, Table
9-2.

It also adds coding rate information to the WifiModes and centralises their
construction into a single WifiModeFactory method. The rates are also renamed
with reference to their Modulation Class.

WifiModes no longer have a WifiStandard, but the latter type still exists and is
used to imply the set of WifiModes that a MAC/PHY pair will support.
2010-06-16 10:55:13 +01:00
Tom Henderson b77c2830c5 Align WifiHelper logging with new ErrorRateModel classes 2010-06-15 11:27:51 -07:00
Gustavo J. A. M. Carneiro 21a68b8a3f Fix OLSR socket usage: use the new SetAllowBroadcast socket option; Bind to interface bcast address instead of local address, use SendTo instead of Send. This is how things have to work with real world sockets. 2010-06-15 18:32:04 +01:00
Gustavo J. A. M. Carneiro 8623ac0131 Bug 943 - Add a SO_BROADCAST socket option 2010-06-15 18:29:45 +01:00
Pavel Boyko 833b936c85 Register c-tor for aodv::TypeHeader in the class metadata 2010-07-12 12:53:27 +04:00
Gustavo J. A. M. Carneiro 7d9dead821 Python bindings API rescan 2010-07-11 22:32:52 +01:00
Gustavo J. A. M. Carneiro f3b8aeb55c Bug 385 - Add a generic "sequence number" class. 2010-07-11 22:32:34 +01:00
ltracy dc1ef073ac Added missing file to compile uan device 2010-07-09 14:29:01 -07:00
ltracy f40bedb441 Fixed valgrind errors 2010-07-09 13:29:12 -07:00
Yida Gao 33158c3969 Fix errors in simple-point-to-point-olsr.cc comments 2010-07-08 20:18:14 -07:00
Josh Pelkey f48a89b75c fix some energy test compiler warnings 2010-07-08 11:04:25 -04:00
Gary Pei a1fd50d60e Add NistErrorRateModel for wifi 2010-06-15 10:28:51 -07:00
Gary Pei 90a6f330f4 Factor out DSSS error rate functions to separate class 2010-06-15 10:26:48 -07:00
Gustavo J. A. M. Carneiro 038ff8b94c Rescan API for Python bindings 2010-06-14 17:35:42 +01:00
Nicola Baldo f53d27ed76 fixed spectrum code for python bindings as per Gustavo's suggestion 2010-06-14 17:13:43 +02:00
Tom Henderson 2503d95453 Add some function logging to aodv-routing-protocol.cc 2010-06-13 14:46:13 -07:00
Gustavo J. A. M. Carneiro dcd69f69be Add missing module dependency 2010-06-13 17:19:27 +01:00
Gustavo J. A. M. Carneiro d2d68087d6 python-scan: avoid possible deadlock passing list of modules to the api scanner process 2010-06-13 16:34:15 +01:00
Lalith Suresh 91d49b20c4 hnaEntries Create() moved into if block for clarity 2010-06-13 13:40:12 +05:30
Tom Henderson 9425e97869 Fix optimized build 2010-06-12 15:13:11 -07:00
Nicola Baldo 2cb96e68f5 merged spectrum framework 2010-06-11 19:30:06 +02:00
Nicola Baldo 25339d0db6 added Copy method for SimpleRefCountBase 2010-06-11 19:25:18 +02:00
Lalith Suresh 8cfeb5fcbb Removes repetition of 'class Ipv4L4Protocol;' 2010-06-10 11:45:16 +05:30
Lalith Suresh 0b630e7840 Updated OLSR documentation in olsr.h 2010-06-09 15:30:33 +05:30
Tom Henderson 5c1a033037 Fix compiler warnings 2010-06-08 21:28:10 -07:00
Mohamed Amine Ismail 86fd1c7847 Fix Bug 927:SimpleOfdmWimaxChannel RxPower computation 2010-06-08 12:01:05 +02:00
Mohamed Amine Ismail b33b31ec5f Fix bug 937, Patch provided by Flavio Kubota 2010-06-08 11:41:17 +02:00
Nicola Baldo 71728fa264 fixed bug 844 2010-06-07 17:05:29 +02:00
Quincy Tse 1f4865f20c fixed bug 923 2010-06-07 16:24:27 +02:00
Quincy Tse b53873b6f9 fixed bug 924 2010-06-07 16:22:21 +02:00
Nicola Baldo 0cb2d98e84 fixed bug 922 2010-06-07 16:12:16 +02:00
Josh Pelkey 4822432cde python scan 2010-06-04 18:33:07 -04:00
Duy Nguyen 1af7e9391b Fixed Bug 802 and Bug 919 2010-06-03 22:38:44 -07:00
Hajime Tazaki 8873e85bf5 update Bug 932 (Support IP_HDRINCL option for Ipv4RawSocket) again: regarding w/ Tom's comments. 2010-06-04 10:17:51 +09:00
Hajime Tazaki 6ec5e6e526 update RELEASE_NOTES 2010-06-04 07:12:20 +09:00
Hajime Tazaki 3ec16d2bbf Bug 932 - Support IP_HDRINCL option for Ipv4RawSocket 2010-06-04 07:09:30 +09:00
Hajime Tazaki f90f72425b Bug 858 - support MSG_PEEK in IPv4/IPv6 raw socket 2010-06-04 07:05:22 +09:00
Dean Armstrong adee6a1399 Bug 910: Update mesh reference traces after Bug 910 fix
The previous cset (eee2eab36748) renumbered the Access Categories and thus altered the order in which they are initialised. This means that the EDCAFs end up with different random numbers, so a corresponding update to certain reference traces is required here.
2010-06-03 17:38:22 +01:00
Dean Armstrong bb7890d52f Bug 910: Replace AccessClass with 802.11-style AcIndex 2010-06-03 17:23:55 +01:00
Unknown 5c23af2452 moved packet-burst.{h,cc} to src/common 2010-06-03 13:34:09 +02:00
Josh Pelkey 855b3fdfd6 Test case for bug 902 2010-06-02 11:14:06 -04:00
Antti Mäkelä e36f3cfa30 Bug 902 - TCP: handle out-of-order packets during connection shutdown 2010-06-02 10:44:48 -04:00
Lalith Suresh 30923d830a Fixed typo in test.py 2010-06-02 19:58:41 +05:30
Mathieu Lacage 72996b8f31 fix optimized build 2010-06-01 09:46:39 +02:00
Tom Henderson 19c4bcd5c2 restore missing destructor 2010-05-31 22:23:54 -07:00
Ken Renard b127725c2d Bug 926 - olsr handling of multicast packets 2010-05-31 13:52:56 +01:00
Wilson Thong 7deb21f102 Bug 854 - Support DROP_QUEUE reason-code in Ipv4FlowProbe 2010-05-31 13:32:24 +01:00
Tom Henderson 125c0a51bd update RELEASE_NOTES 2010-05-30 20:54:25 -07:00
Quincy Tse bf0ab3e8a1 bug 828: PacketSocket::Close does not unregister protocol handler 2010-05-30 20:53:25 -07:00
Quincy Tse cf9ec1f5fe bug 900: RawTextConfigLoad::Default does not load configurations 2010-05-30 20:40:05 -07:00
Antti Mäkelä 7e9e3826a2 bug 906: NSC TCP socket fork did not copy txbuffersize over 2010-05-29 14:04:03 -07:00
Quincy Tse b65ae65e7a bug 921: Inconsistent declaration of class/struct Object 2010-05-27 08:34:16 +02:00
Tom Henderson d5624122d1 bug 702: make global routing robust to link/device events 2010-05-24 10:52:58 -07:00
Sebastien Vincent a6a2797a69 fix build on MinGW (32-bit and 64-bit) 2010-05-24 08:08:25 -07:00
Andrey Mazo 89685b684f fix bug 908 2010-05-22 09:33:38 -07:00
Duy Nguyen 147bb21923 cleaned up and fixed valgrind error in multirate example 2010-05-21 14:19:15 -07:00
Craig Dowell 92566168a9 fix bug 916 2010-05-20 17:06:38 -07:00
Duy Nguyen 78317ae460 disable flowmonitor for multirate example 2010-05-20 13:45:20 -07:00
Duy Nguyen d9b2fb855c update multirate example for test.py 2010-05-19 16:09:42 -07:00
Nicola Baldo 416743507f fixed bug 890 2010-05-18 15:38:17 +02:00
Nicola Baldo ed5eadfbde fixed bug 843 2010-05-18 11:35:47 +02:00
Craig Dowell dc83485a03 update CHANGES.html for Queue::Enqueue trace behavior change 2010-05-17 14:31:20 -07:00
Unknown cc1fc37f2b fix enqueue trace for bug 913 2010-05-17 07:29:43 -07:00
Tom Henderson 4db54edfe3 Update RELEASE_NOTES and CHANGES.html since ns-3.8 2010-05-16 15:24:53 -07:00
Mirko Banchi 3d345bb927 update wifi section in the manual 2010-05-16 19:00:02 +02:00
Mirko Banchi 0b5fb1c903 bug 842: ns-3-dev crashes using block ack (fixed) 2010-05-16 16:10:19 +02:00
Lalith Suresh 91ff14685d Bug Fix: OLSR messages generated on non-OLSR interfaces 2010-05-16 10:12:26 +05:30
Josh Pelkey 4a7bd194d9 merge 2010-05-16 20:10:59 -04:00
Josh Pelkey f747f51683 register icmpv4 objects 2010-05-16 20:10:14 -04:00
Tom Henderson 8c2c1596e2 bug 861: Log drop traces for forwarding failures into IPv4 and IPv6 ascii traces 2010-05-15 16:46:47 -07:00
Dean Armstrong b1befce710 Set FCS included flag in Radiotap header
This patch addresses Bug 875 by correcting a bug in the YansWifiHelper
support for PCAP tracing with Radiotap data link format. Specifically,
in the previous implementation the "Frame includes FCS" flag is not
set, despite the FCS being present in the captured frames.

This changeset requires a corresponding change to the
wifi-wired-bridging reference traces (this test, which is run as part
of the regression test set, appears to be the only one which uses
Radiotap capture).
2010-05-10 14:09:23 +01:00
Tom Henderson 67ed79a122 Fix minor doxygen error 2010-05-12 21:58:30 -07:00
Tom Henderson 0f3de3777b bug in global routing stub computation 2010-05-12 21:46:44 -07:00
Dean Armstrong 2d1d2546ad Time conversions take uint64's in wifi-msdu-aggregator-test-suite
Correct programming error in cset 6293:11a2f62de3ec that only a compiler older than mine found with the standard options. Specifically, the time conversion functions (in this case, MilliSeconds()) take uint64's as their argument and I was passing a floating point value.
2010-05-11 08:56:28 +01:00
Tom Henderson 2a10de8489 more documentation about callback errors 2010-05-10 21:10:15 -07:00
Mirko Banchi e5d2640345 add methods in QosWifiMacHelper for block ack parameters setup 2010-05-10 16:41:20 +02:00
Dean Armstrong 6b2aeb0548 Add MSDU aggregation throughput test.
This patch adds a test suite and initial test for the Wi-Fi MSDU
aggregation support in ns-3. The test is a throughput test and is a
regression test for Bug 873 - Queue occupancy counter not decremented
in WifiMacQueue::Remove().
2010-05-10 12:44:23 +01:00
Tom Henderson 7e248ce65e fix documentation about callbacks in manual 2010-05-08 14:56:42 -07:00
Josh Pelkey 06018583d3 change casts to c++ style 2010-05-06 14:55:16 -04:00
Gustavo J. A. M. Carneiro ce0dabd900 Fix Python bindings ns3.Object subclassing bug 2010-05-06 14:21:20 +01:00
Josh Pelkey e8bb9330b4 python scan 2010-05-05 17:16:43 -04:00
Josh Pelkey cdf032d7a9 move receive-list-error-model to src/common/error-model 2010-05-05 16:04:31 -04:00
Josh Pelkey 679d30c60d update release steps 2010-05-05 14:33:49 -04:00
Josh Pelkey f4dfbaa8fc fix release notes 2010-05-04 09:32:02 -04:00
Josh Pelkey 82068afd1d Added tag ns-3.8 for changeset 0ef062c0897e 2010-05-03 15:27:31 -04:00
Josh Pelkey b6172a4ec0 update release notes 2010-05-03 13:41:19 -04:00
Josh Pelkey 529680baab Added tag ns-3.8-RC4 for changeset 533be42b3c7f 2010-05-01 08:18:21 -04:00
Tom Henderson 1a580e3725 Bug 895 - SimpleOfdmWimaxPhy SNR computation 2010-04-30 13:10:23 -04:00
Josh Pelkey d1fbff8458 Added tag ns-3.8-RC3 for changeset d588e7fe6cb0 2010-04-28 16:21:23 -04:00
Josh Pelkey aea407bbb7 update bug list for release notes 2010-04-28 10:18:27 -04:00
Josh Pelkey 3c50c33fab Bug 888 - Writing ascii trace to addtional tests fails 2010-04-28 09:53:00 -04:00
Gustavo J. A. M. Carneiro 518e9f0461 Bug 899 - EmuNetDevice::SetPromiscReceiveCallback not implemented 2010-04-28 09:50:04 -04:00
Josh Pelkey 26ee2a0a29 Added tag ns-3.8-RC2 for changeset 3b7ec0d36079 2010-04-25 11:37:50 -04:00
Josh Pelkey bae55e4604 update fixed bug list 2010-04-25 11:37:10 -04:00
Gustavo J. A. M. Carneiro b32b3207a4 Bug 894 - ./waf --run error message upon segfault 2010-04-23 15:55:15 +01:00
Gustavo J. A. M. Carneiro 677b7a22d3 Upgrade to WAF 1.5.16. Fixes bug #855. 2010-04-23 15:46:46 +01:00
Andrey Mazo 892d5e3f3d spell check, mostly in comments. 2010-04-23 15:09:31 +04:00
Andrey Mazo 7ecb4fca34 fixed include guard. 2010-04-23 14:53:30 +04:00
Josh Pelkey da81ee240a python scan 2010-04-22 14:43:34 -04:00
Nicola Baldo b16eede87b merge 2010-04-22 18:50:01 +02:00
Craig Dowell de73485b1d Mention wiki page with prerequisites in tutorial 2010-04-22 09:23:26 -07:00
Nicola Baldo 49e55e6c7f merge 2010-04-22 15:23:20 +02:00
Mohamed Amine Ismail 92be81578e Bug 825 - UDP-Client-server's packet loss counter not properly reset 2010-04-22 14:26:58 +02:00
Mohamed Amine Ismail 597d33edb3 Bug 891 - WiMAX device helper does not include propagation loss model by default 2010-04-22 11:31:45 +02:00
Josh Pelkey 2a45429d23 update release steps 2010-04-21 15:59:25 -04:00
Josh Pelkey 54ec7b22b8 a few more texi typos 2010-04-21 15:15:19 -04:00
Josh Pelkey f3a6c5ab08 another texi typo 2010-04-21 15:07:34 -04:00
Josh Pelkey ab86112c3e fix typos in texi files for documentation build 2010-04-21 15:00:25 -04:00
Duy Nguyen 2b952049df Bug 802 - Minstrel algorithm causes segmentation fault 2010-04-21 17:00:57 +02:00
Josh Pelkey 16bc13c741 Added tag ns-3.8-RC1 for changeset e61ce382fcdd 2010-04-21 09:12:56 -04:00
Gustavo J. A. M. Carneiro 70feac23e4 update pybindgen version 2010-04-21 08:39:57 -04:00
Josh Pelkey b3a0852b89 update release notes 2010-04-20 21:13:16 -04:00
Josh Pelkey 9efee05bc3 python scan 2010-04-20 20:10:41 -04:00
Kim Højgaard-Hansen d51cda0b67 Bug 885 - Error in Ascii tracing in Python examples 2010-04-20 14:12:35 -04:00
Josh Pelkey d3967983f2 Bug 818 - TCP Socket implementation does not set ACK flag on retransmits 2010-04-20 12:40:00 -04:00
Gustavo J. A. M. Carneiro 4589079e8b Make --doxygen-no-build check if print-introspected-doxygen has been built, error out if not. Fixes #884 2010-04-20 11:31:54 +01:00
Craig Dowell e364c250bd bug 886 2010-04-19 19:41:00 -07:00
Craig Dowell 18bccf609b rescan bindings 2010-04-19 15:05:24 -07:00
Mathieu Lacage 92a5a9dd0d memory leak 2010-04-19 20:49:09 +02:00
Mathieu Lacage abeb2b25d9 fix valgrind warnings 2010-04-19 20:47:57 +02:00
Mathieu Lacage 7056facca1 fix failing testcase 2010-04-19 20:45:43 +02:00
Craig Dowell 34527a3176 break down and check return values 2010-04-19 10:10:49 -07:00
Craig Dowell 3c34f80a47 report skipping python tests, don't valgrind them 2010-04-19 09:03:24 -07:00
Craig Dowell f049a5d503 branch merge 2010-04-19 08:39:31 -07:00
Craig Dowell ba3152296c repair unused returns in perfio and test-runner 2010-04-19 08:37:27 -07:00
Mathieu Lacage db8c9b8025 workaround valgrind warnings 2010-04-19 14:49:13 +02:00
Gustavo J. A. M. Carneiro cb147db6aa Bug 882 - ./test.py reports 6 FAILs with --disable-python 2010-04-17 17:36:53 +01:00
Bruno Ranieri eb4b0b7e83 Bug 841 - Multicast transmission breaks with QoS Wifi 2010-04-17 12:02:53 +02:00
Mathieu Lacage 845b931222 Bug 802 - Minstrel, Onoe and Amrr not working 2010-04-17 11:37:15 +02:00
Craig Dowell e117c4ac2f fix memory leak in PcapFile::Diff 2010-04-16 16:43:06 -07:00
Craig Dowell fb9c2e87bb branch merge 2010-04-16 16:25:50 -07:00
Craig Dowell f66d689be3 forbid Attribute interactions in manual 2010-04-16 16:25:32 -07:00
Tom Henderson 7828e48e04 update AUTHORS 2010-04-16 16:15:33 -07:00
Tom Henderson 00cefde5b8 update AUTHORS, RELEASE_NOTES 2010-04-16 16:08:40 -07:00
Craig Dowell b0767dae10 branch merge 2010-04-16 16:06:55 -07:00
Craig Dowell 4567f96113 words about Attribute tweaking in CSMA dox 2010-04-16 16:06:14 -07:00
Antti Mäkelä eb6a4504d6 (bug 862) do not add network route for /32 netmasks 2010-04-16 16:05:12 -07:00
Danqi Wang 0973820f99 (bug 867) Minor bug in Ipv4L3Protocol::Send() 2010-04-16 15:55:03 -07:00
Tom Henderson c51501aef8 UDP test code for loopback net device 2010-04-16 15:29:40 -07:00
Tom Henderson 3e4f0c836b (bug 880) Schedule loopback receives with context 2010-04-16 15:29:26 -07:00
Craig Dowell 7e7c9233cb update test-runner documentation 2010-04-16 15:18:04 -07:00
Craig Dowell b3799edc40 tom wanted to prefix the test-runner tmp file with ns-3 2010-04-16 15:13:29 -07:00
Craig Dowell 017005e047 python path helps when running python programs 2010-04-16 14:58:56 -07:00
Craig Dowell 34a056a769 branch merge 2010-04-16 11:36:18 -07:00
Craig Dowell b22f6f0019 tutorial change to reflect pcap change to streams at the lowest levels 2010-04-16 11:35:41 -07:00
Dean Armstrong 968521d3ea Bug 873 - Queue occupancy counter not decremented in WifiMacQueue::Remove() 2010-04-16 20:13:39 +02:00
Nicola Baldo c67e13fd70 merge 2010-04-16 20:10:01 +02:00
Nicola Baldo adbe0f2c34 merge 2010-04-16 20:08:09 +02:00
Nicola Baldo b868423a8b merge 2010-04-16 20:06:42 +02:00
Nicola Baldo db2de9d93f Bug 805 - WifiPhy PhyTxEnd trace not working 2010-04-16 20:03:26 +02:00
Antti Mäkelä 1244b7158e Bug 825 - UDP-Client-server's packet loss counter not properly reset 2010-04-16 13:54:46 -04:00
Nicola Baldo 2884be3887 merge 2010-04-16 19:54:13 +02:00
Josh Pelkey bc1919d9b0 Bug 807 - ns2-mobility-helper.cc: node id parsed wrong 2010-04-16 13:25:13 -04:00
Andrey Mazo dc7a68f47c Bug 801 - ns-3.7 and SVN not coexisting nicely 2010-04-16 12:39:56 -04:00
Gustavo J. A. M. Carneiro 4bae5d0289 Fix a couple of Python examples 2010-04-16 15:06:54 +01:00
Gustavo J. A. M. Carneiro 52e078aecd Add python support for std::ios::openmode and its constants 2010-04-16 15:06:27 +01:00
Gustavo J. A. M. Carneiro 11172b4591 Fix ns3tcp-interop-test-suite after API change 2010-04-16 14:25:23 +01:00
Gustavo J. A. M. Carneiro 116a8020b5 API rescan for python 2010-04-16 14:05:08 +01:00
Gustavo J. A. M. Carneiro cbfc1009da Upgrade pybindgen to fix the MI problem (bug #877) 2010-04-16 12:59:22 +01:00
Gustavo J. A. M. Carneiro 26498c13a4 Fix tracing part of the mixed-wireless.py example 2010-04-16 12:58:30 +01:00
Mathieu Lacage 2ee23b5ba8 update RELEASE_NOTES 2010-04-16 07:52:54 +02:00
Mathieu Lacage 9cf441b3be bug 872: ns3::PcapFileWrapper::Write explodes stack 2010-04-16 07:48:12 +02:00
Tom Henderson d848a2fdb8 output directory name 2010-04-15 21:31:26 -07:00
Craig Dowell 236b34a61f enable debugger breaks in test-runner and document changes 2010-04-15 16:37:57 -07:00
Craig Dowell 3c76b17176 bug 856, initialize vbl 2010-04-15 15:11:49 -07:00
Craig Dowell fe3c599863 some python examples require enable-sudo, skip 2010-04-15 11:35:40 -07:00
Craig Dowell e30c805c80 branch merge 2010-04-15 10:54:17 -07:00
Craig Dowell f8a36cf282 Add some python examples to test.py 2010-04-15 10:53:40 -07:00
Mohamed Amine Ismail e0aecf002e Bug 866 - WiMAX mobility models not aggregated to Node 2010-04-15 09:32:31 +02:00
Tom Henderson 813fd4c631 suppress valgrind testing of new nsc test suite 2010-04-14 23:11:50 -07:00
Gustavo J. A. M. Carneiro 342d034c67 Bug 835 - Unlimited receive queues in sockets == evil 2010-04-14 16:34:23 -04:00
Gustavo J. A. M. Carneiro f99b1899d6 Bug 833 - OnOffApplication with PacketSocket: sniffs all traffic 2010-04-14 16:33:25 -04:00
Josh Pelkey 5de47cd21f Bug 876 - Tcp socket does not handle ShutdownRecv correctly 2010-04-14 16:31:55 -04:00
Craig Dowell 87d04e1020 make life easier for folks running test-runner directly 2010-04-13 18:41:11 -07:00
Tom Henderson 4e4c85d640 add NSC version of TCP loss test suite 2010-04-12 21:42:53 -07:00
Josh Pelkey 49de2720d7 Modifiy tcp loss test to help with bug 818 2010-04-12 20:50:04 -04:00
Nicola Baldo 8ee18d95c8 bug 813 also affects Qap 2010-04-12 14:12:25 +02:00
Charline Taibi Guguen 165d72e17e bug 813 - Nqos AP sends packet to non associated STA 2010-04-12 13:24:25 +02:00
Tom Henderson a7bd7efb90 Add loss-based tcp test suite 2010-04-11 23:15:09 -07:00
Tom Henderson ab6e1c3d0a Factor out socket writer application from tcp test suites 2010-04-11 23:12:42 -07:00
Andrey Mazo b3a1b16240 Documentation typos 2010-04-12 16:33:17 +04:00
Tom Henderson e999a565af Fix small copy-paste doxygen error 2010-04-11 16:32:13 -07:00
Tom Henderson 54fd9abe9f Update bindings for bug 822 fixes 2010-04-11 16:30:18 -07:00
Tom Henderson e8a3679b82 Remove unimplemented method, breaking the bindings 2010-04-11 16:30:02 -07:00
Craig Dowell 835c2f0ef8 Add new tutorial section on ns-3 attribute values 2010-04-10 13:47:55 -07:00
Tom Henderson 1ece953d07 update CHANGES.html for Mtu move 2010-04-10 13:47:05 -07:00
Mathieu Lacage 349ce951c2 [bug 822] Move Mtu attribute from NetDevice base class to subclasses 2010-04-10 13:45:09 -07:00
Hajime Tazaki 566961fa18 bug 868 - invalid packet size after Ipv4L3Protocol::Send 2010-04-08 23:01:34 +09:00
Hajime Tazaki 2c5084e25f bug 857 - Link-Local Multicast handle in Ipv4 Output processing 2010-04-08 22:51:09 +09:00
Mathieu Lacage 3ccf6c8ee7 coding style 2010-04-08 13:39:07 +02:00
Mathieu Lacage 4218e9690e coding style 2010-04-08 13:28:54 +02:00
Mathieu Lacage b32ce16c67 coding style 2010-04-08 13:25:00 +02:00
Mathieu Lacage 992a77cb0a bug 863: Wrong Scalar arithmetics 2010-04-08 13:19:28 +02:00
Mathieu Lacage 97fef32b22 deprecate simulator API 2010-04-08 10:49:59 +02:00
Hajime Tazaki c4fc478fd3 added test code for bug 859 2010-04-08 12:01:20 +09:00
Hajime Tazaki d06fe78548 update RELEASE_NOTES and AUTHORS 2010-04-08 11:26:56 +09:00
Hajime Tazaki 05a4d8c31d bug 859 - Output interface estimation for the source address bound socket in IPv4 Raw socket 2010-04-08 11:26:46 +09:00
Hajime Tazaki fbfda6fa98 export missing header 2010-04-07 16:56:46 +02:00
Hajime Tazaki 4c85c83226 update RELEASE_NOTES 2010-04-07 16:47:51 +02:00
Hajime Tazaki 2e6c03e13e bug 864: Invalid return value in UdpSocketImpl::Send and Ipv4RawSocketImpl::Send 2010-04-07 16:46:45 +02:00
Hajime Tazaki c934e2c8f3 bug 865: Ipv4RawSocketImpl::RecvFrom does not return from address all the time 2010-04-07 16:42:47 +02:00
Andrey Mazo 3be904d33a Bug 860: waf dies while executing ns3header task in case of parallel jobs. 2010-04-06 11:34:06 +04:00
Josh Pelkey 4c366ba649 Add clarifying comments 2010-03-30 12:55:14 -04:00
Josh Pelkey bff8d614e5 fix some doxygen errors 2010-03-29 20:01:19 -04:00
Josh Pelkey 705a245455 update CHANGES and RELEASE_NOTES 2010-03-29 12:21:07 -04:00
Andrey Churin 7a719ab861 [bug 850] Ipv4GlobalRouting oif bug 2010-03-28 20:53:41 -07:00
Josh Pelkey 0ee8bf099f Bug 829 - TCP unbound memory problem (pending data) 2010-03-27 19:09:18 -04:00
Tom Henderson d68f49a0f2 add logging and better variable names to PendingData 2010-03-27 14:07:36 -07:00
Tom Henderson f9aa3f1258 some doxygen 2010-03-27 14:06:59 -07:00
Tom Henderson be3a9483f5 don't pull in std namespace 2010-03-27 14:01:41 -07:00
Gustavo J. A. M. Carneiro 01c7e0e4dd Change Python bindings method for overriding virtual methods of C++ classes
To override the C++ virtual method 'DoStart', we new define a method in Python called 'DoStart', whilst before we would define '_DoStart'.  This change is to align pybindgen generated bindings with the other python bindings tools out there, such as boost.python, swig, and sip.  It is also simpler to understand for users.
2010-03-26 18:54:11 +00:00
Hajime Tazaki 6d44e585de add several errno in socket.h 2010-03-26 10:40:31 +09:00
Sebastien Vincent b125e94d61 Fix build with g++-4.5. 2010-03-24 08:49:24 +01:00
Sebastien Vincent 6ca14046f3 Fix build on MinGW. 2010-03-23 21:22:13 +01:00
Mathieu Lacage 21cc721414 merge with HEAD 2010-03-20 21:58:06 +01:00
Mathieu Lacage c3256d72c6 optimized iperf 2010-03-20 21:57:51 +01:00
Gustavo J. A. M. Carneiro a42333b072 API rescan, after wimax changes 2010-03-20 13:00:14 +00:00
Craig Dowell d955f3c7ce branch merge 2010-03-19 15:54:27 -07:00
Craig Dowell 77e5f8e785 small explanation about (lack of) logging in optimized builds 2010-03-19 15:54:01 -07:00
Mohamed Amine Ismail d90c101acb Merge with head 2010-03-19 20:58:46 +01:00
Mohamed Amine Ismail d5195f6d6e fix PR#847 Segfaults on BaseStationNetDevice with OnOffApplication and rtPS sched 2010-03-19 20:58:23 +01:00
Mohamed Amine Ismail e29521786d Fix MBQoS uplink scheduler 2010-03-19 20:07:09 +01:00
Josh Pelkey 6044223769 update nix-vector routing BFS comment 2010-03-19 13:55:05 -04:00
Mathieu Lacage 66c1d45ae8 merge with HEAD 2010-03-19 14:15:45 +01:00
Mathieu Lacage 779c33833d another iperf optimization 2010-03-19 14:15:19 +01:00
Gustavo J. A. M. Carneiro ca2220ad7b FlowMonitor: measure flow interruptions 2010-03-19 11:28:49 +00:00
Gustavo J. A. M. Carneiro 14e174bf7b Fix compilation error: ISO C++ forbids use of initializer list to initialize reference assocTuple 2010-03-18 11:39:24 +00:00
Lalith Suresh 6f76706fb9 Bug 407 postfix: filter out non-OLSR interfaces when generating MID messages 2010-03-18 10:50:44 +00:00
Gustavo J. A. M. Carneiro becab98cff API rescan 2010-03-17 16:58:32 +00:00
Lalith Suresh 5df0dae003 Bug 407 - OLSR is missing HNA support 2010-03-17 15:46:42 +00:00
Gustavo J. A. M. Carneiro f7025232b2 Fix the Python binding for ns3::Ipv4ListRouting::GetRoutingProtocol 2010-03-17 14:14:59 +00:00
Gustavo J. A. M. Carneiro eafd6b356c API rescan 2010-03-17 12:35:05 +00:00
Gustavo J. A. M. Carneiro 478d8f35dd Add option to enable gcc precompiled header for compiling python bindings 2010-03-17 12:34:52 +00:00
Gustavo J. A. M. Carneiro a875e46de9 merge 2010-03-17 11:20:17 +00:00
Gustavo J. A. M. Carneiro 5447999e9b API rescan for Python bindings 2010-03-17 11:19:49 +00:00
Gustavo J. A. M. Carneiro ecc1df19d5 Realign Python ns3.Object constructors with C++
The Python constructors are now parameter oriented instead of attribute oriented.
The main motivation for this change is that Python bindings become broken with new Object types being introduced that do not have a default constructor (constructor without parameters).  Another reason is to shorten the gap between C++ and Python, API-wise--the more similar they are, the less confusing it becomes.
2010-03-17 11:18:55 +00:00
Gustavo J. A. M. Carneiro e9f5159b63 Prepare the topology-read module for python bindings (disable copy contructors) 2010-03-17 11:02:55 +00:00
Mathieu Lacage 65a88bfab3 inline to optimized iperf 2010-03-16 19:25:56 +01:00
Mohamed Amine Ismail dfa55631f1 merge 2010-03-16 14:50:26 +01:00
Mohamed Amine Ismail 46f0a8a0b1 Enabling pcap tracing in examples/wimax/wimax-simlpe.cc 2010-03-16 14:29:08 +01:00
Mohamed Amine Ismail 448f5cf6f0 Adding a figure describing the wimax architecture 2010-03-16 10:49:16 +01:00
Gustavo J. A. M. Carneiro 3f83757f77 Remove declared but not implemented methods, privatize copy-contructors where appropriate 2010-03-15 15:01:35 +00:00
Tommaso Pecorella 57cb94b09b merge topology read system 2010-03-12 14:36:38 -05:00
Mohamed Amine Ismail 32e966df92 Fix bug#839: TestSuite wimax-ss-mac-layer crashes on Darwin 9.8.0 Power Macintosh 2010-03-11 14:22:33 +01:00
Mohamed Amine Ismail fde7b7c890 Fix Bug#840: BS scheduler does not support fragmentation for UGS flows 2010-03-11 14:21:17 +01:00
Mohamed Amine Ismail 8dd11bbcc7 fix Bug 836: Delay is incremented over time with BsUplinkSchedulerSimple and BsUplinkSchedulerRtps 2010-03-11 14:18:52 +01:00
Pavel Boyko cffafa7705 merge 2010-03-11 13:37:22 +03:00
Pavel Boyko 0236207f6c Minor bugfix in AODV, thanks to Mariusz Skrocki 2010-03-11 13:37:02 +03:00
Josh Pelkey 8616c75418 revert scan, something went wrong 2010-03-10 14:45:06 -05:00
Josh Pelkey f3d16db935 another python bindings scan 2010-03-10 14:36:04 -05:00
Josh Pelkey 475568ad0c fix valgrind error in propagation-loss-model test 2010-03-10 11:20:18 -05:00
Pavel Boyko 07c6b0f555 Initialize all members in SystemThread c-tor 2010-03-10 16:44:26 +03:00
Pavel Boyko 168eecf781 Changes and release notes updated 2010-03-09 11:54:40 +03:00
Pavel Boyko b7d98aea1e Missed file 2010-03-09 11:47:18 +03:00
Pavel Boyko edd772f5e7 Matrix propagation loss model added 2010-03-09 11:35:09 +03:00
Josh Pelkey 7b00ed7011 minor manual typo fix 2010-03-08 22:36:54 -05:00
Josh Pelkey 5afc6bd374 Merge distributed simulation code 2010-03-08 21:07:31 -05:00
Craig Dowell c62514bb74 Python versions of tap VM examples 2010-03-08 15:24:22 -08:00
Mohamed Amine Ismail a9101c335f Merge WiMAX module 2010-03-07 20:49:47 +01:00
Tom Henderson 31efaca066 rescan bindings 2010-03-05 16:30:58 -08:00
Tom Henderson 81454c3c20 [Bug 414] No error model for SimpleNetDevice 2010-03-05 11:56:10 -08:00
Craig Dowell 192c810702 branch merge 2010-03-05 11:15:20 -08:00
Craig Dowell d0340777da discussion of start and stop application had gone stale 2010-03-05 11:14:53 -08:00
Pavel Boyko d9df76f213 bug 834 2010-03-05 18:07:08 +03:00
Dan Broyles e0f6264cea Minor comment update to Gauss-Markov mobility model 2010-03-04 23:02:01 -05:00
Craig Dowell 1775662f84 Missing declaration in myfirst tweak 2010-03-04 10:32:19 -08:00
Craig Dowell 2a78fc71ed some doxygen updates got missed 2010-03-03 08:33:26 -08:00
Dan Broyles 8a0331ab36 Merge Gauss Markov Mobility Model 2010-03-03 10:58:27 -05:00
Tom Henderson 50b9f9356f Doxygen formatting 2010-03-03 05:56:47 -08:00
Tom Henderson 827e5ece9e rescan bindings 2010-03-05 16:01:13 -08:00
Gustavo J. A. M. Carneiro 14b0e0ae39 Test the support for the -Wno-error=deprecated-declarations option independently for the C and C++ compilers 2010-03-02 15:29:53 +00:00
Kirill Andreev bcc144c4ac Mesh: fixed valgrind errors 2010-03-02 10:58:19 +03:00
Craig Dowell 09f0c56c91 branch merge 2010-03-01 18:16:06 -08:00
Craig Dowell c61053c448 plumb explicitFilename everywhere and update manual and tutorial 2010-03-01 18:15:36 -08:00
Tommaso Pecorella a8fd7c9c4b - added Scale and Shape Pareto rng constuctor
- clarified documentation
2010-03-02 01:14:02 +01:00
Craig Dowell 1771a8d88c update manual and tutorial to reflect changes in tracing 2010-03-01 15:14:42 -08:00
Bill Roome 5f1eb84b33 [bug 810] Tcp GetSockName() for unconnected sockets 2010-03-01 15:43:00 -05:00
Craig Dowell 80e76b0ac6 add object-names test 2010-03-01 09:21:13 -08:00
Craig Dowell e726fe9f3e fix thinko in fix for explicit pcap names 2010-03-01 09:08:59 -08:00
Pavel Boyko 9dfa71d4e5 AODV bug 812 fixed 2010-03-01 14:40:07 +03:00
Pavel Boyko 70e3f52753 Missed files 2010-03-01 10:11:19 +03:00
Pavel Boyko f700786fbe AODV bugs 772 and 777 fixed 2010-03-01 09:59:14 +03:00
Kirill Andreev e6fa49b9d0 Simple bug of WifiRemoteStationManager: station's tid is not initialized. 2010-02-27 12:26:36 +03:00
Unknown e462044001 avoid (Python) deadlock in tap-bridge 2010-02-26 10:50:37 -08:00
Craig Dowell 9a52edef60 allow explicit filenames in pcap trace files 2010-02-26 10:31:26 -08:00
Craig Dowell 2176f11a21 branch merge 2010-02-26 09:35:09 -08:00
Craig Dowell 763f86acba test.py turns off NS_LOG locally 2010-02-26 09:34:54 -08:00
Kirill Andreev 02c5be7e2b Removed debug print 2010-02-26 12:35:18 +03:00
Kirill Andreev 0ba19c5a9e Merge 2010-02-26 12:12:40 +03:00
Kirill Andreev 64e7a069c8 Bug 706 2010-02-26 12:11:11 +03:00
Mathieu Lacage f8fce0a785 fix optimized builds 2010-02-26 08:52:39 +01:00
Kirill Andreev 521098c9bd Regressions for bug 602 2010-02-25 22:45:40 +03:00
Craig Dowell 829f3bcba3 rescan bindings 2010-02-25 10:52:54 -08:00
Craig Dowell 5728bd8144 branch merge 2010-02-25 10:43:21 -08:00
Craig Dowell 501a132230 swap games on big-endian pcaps 2010-02-25 10:43:05 -08:00
Kirill Andreev 6ff6b985de Backed out changeset 36211bf4032d 2010-02-25 19:10:16 +03:00
Kirill Andreev 62506607a3 New regression tests for dot11s 2010-02-25 19:08:35 +03:00
Mathieu Lacage 3adf369116 merge with HEAD 2010-02-25 15:18:56 +01:00
Mathieu Lacage cc408ecda9 tweak slightly 2010-02-25 15:16:53 +01:00
Mathieu Lacage 1fb22f9b9b fix typo 2010-02-25 14:58:23 +01:00
Kirill Andreev 08332a2631 change airtime metric to work with new wifi remote station manager 2010-02-25 14:57:20 +01:00
Mathieu Lacage 89f71d844a merge with HEAD 2010-02-25 14:17:21 +01:00
Kirill Andreev 6e02ce4795 Wifi:Fixes in coding style 2010-02-25 15:56:33 +03:00
Mathieu Lacage 1279e4d6ba add newly-created state to state list. 2010-02-25 13:51:59 +01:00
Mathieu Lacage f18f15c3ea align coding style 2010-02-25 13:51:38 +01:00
Craig Dowell 56d3529435 Forgot to force little-endian pcap headers on big-endian machines 2010-02-24 20:41:11 -08:00
Craig Dowell 36462e7dca double-check bindings 2010-02-24 17:07:51 -08:00
Craig Dowell 189e09d94d picky, picky compilers 2010-02-24 15:34:55 -08:00
Craig Dowell 3e4ddb232d virtual destructors and missing @end in tutorial 2010-02-24 14:40:09 -08:00
Craig Dowell 6c51fdc95d plug possible leak 2010-02-24 13:42:12 -08:00
Craig Dowell e70c795afc fix cygwin build break 2010-02-24 11:58:24 -08:00
Craig Dowell e314f96866 add missing include 2010-02-24 10:15:27 -08:00
Craig Dowell ab2edebda3 Remove GetTypeId and rescan 2010-02-24 10:00:13 -08:00
Craig Dowell 8b4770ff79 branch merge 2010-02-23 12:18:35 -08:00
Craig Dowell 292b1d993f OutputStreamKeeper to OutputStreamWrapper 2010-02-23 10:30:38 -08:00
Craig Dowell d7b6488b64 PcapFileObject to PcapFileWrapper 2010-02-23 10:04:31 -08:00
Josh Pelkey b5c8940956 Fix non-undocumented warnings in doxygen, also update doxygen.conf 2010-02-23 12:54:13 -05:00
Pavel Boyko 70b9d522d3 Bug 821 - AODV asserts with function logging enabled 2010-02-21 15:37:31 -05:00
Craig Dowell f6f567b84e make adhoc 2010-02-19 17:11:16 -08:00
Craig Dowell fab79d5875 infinite recursion isn't a good idea 2010-02-19 16:29:40 -08:00
Craig Dowell 2eccf3e16e GetNode is bad in multithreaded devices 2010-02-19 14:05:30 -08:00
Mathieu Lacage a3271063a6 upgrade waf 2010-02-19 12:25:50 +01:00
Mathieu Lacage ff34e0c10b allow build to proceed when gtk is not present 2010-02-19 09:11:45 +01:00
Mathieu Lacage 7ec27e61a0 remove remaining mentions of RUN_SELF_TESTS 2010-02-19 08:18:12 +01:00
Craig Dowell c0b0d26e26 update bridge names and IP addresses 2010-02-18 22:02:31 -08:00
Mirko Banchi 6876a6875d [Bug 814] Check if m_low is not zero 2010-02-18 20:40:38 +01:00
Craig Dowell ae08ebf579 comments are helpful 2010-02-18 10:58:39 -08:00
Craig Dowell 27c965c4af remove internet stack since it just confuses things 2010-02-18 10:44:55 -08:00
Gustavo J. A. M. Carneiro 414b7bd4e2 WAF: allow NS-3 modules to compile pure C code sources mixed with the C++ ones 2010-02-18 15:37:51 +00:00
Craig Dowell e862ad7ede fix build, remove debugging code from tap example 2010-02-17 23:44:33 -08:00
Craig Dowell 2a2403f077 branch merge 2010-02-17 21:50:11 -08:00
Craig Dowell 15c45af6ed add example for linux containers 2010-02-17 21:49:22 -08:00
Faker Moatamri 3c11a067e4 Bug 184: add ConfigureDefaults to GtkConfigStore, refactor the code and coding style, add comments 2010-02-17 16:34:37 +01:00
Gustavo J. A. M. Carneiro 37be8d39e0 Bug 815 - waf shell file descriptor leak. Patch by Tom Goff, slightly modified. 2010-02-15 14:58:45 +00:00
Andrey Mazo b94ec61cc1 a couple of typos. 2010-02-14 02:06:30 +03:00
Craig Dowell 18a72bd31c OutputStreamObject to OutputStreamKeeper 2010-02-12 21:02:49 -08:00
Craig Dowell c0e5d67777 python-scan 2010-02-12 20:59:40 -08:00
Craig Dowell 3d434639f1 The name OutputStreamObject is no longer appropriate 2010-02-12 17:31:11 -08:00
Craig Dowell 3210ea8f12 move back to mixins for helpers 2010-02-12 16:44:15 -08:00
Craig Dowell 4771248dc5 remove ascii-writer, pcap-writer, branch merge 2010-02-12 16:20:59 -08:00
Tom Henderson 908bae9817 Update Object documentation 2010-02-12 12:12:33 -08:00
Tom Henderson aea54071c6 Clean up some stale comments in examples 2010-02-12 11:25:17 -08:00
Tom Henderson 6beb31eb5a fix comments in example; change some defaults 2010-02-12 11:01:21 -08:00
Faker Moatamri 9deb5bea02 Fix builds for g++-3.4.6,4.0.4,4.1.2, in steady-state-random-waypoint-mobility-model.cc, it calls node.create (double instead of uint32_t) 2010-02-12 10:52:25 +01:00
Gustavo J. A. M. Carneiro ab7d6c9f2e New API olsr::RoutingProtocol::GetRoutingTableEntries () 2010-02-11 15:06:37 +00:00
Bill Roome b993072a7a [bug 804] null pointer references in internet-stack 2010-02-09 22:03:57 -08:00
Gustavo J. A. M. Carneiro 8358e83e27 merge 2010-02-09 15:26:41 +00:00
Gustavo J. A. M. Carneiro 34f2f2a7e1 Python: rescan API 2010-02-09 15:26:24 +00:00
Gustavo J. A. M. Carneiro 3c85e8075a Make the BlockAckManager to prevent problem with Python bindings 2010-02-09 15:24:08 +00:00
Gustavo J. A. M. Carneiro 38d0c59857 Python: add needed annotations to ns3::GlobalRouter::GetInjectedRoute and ns3::Ipv4GlobalRouting::GetRoute. Fixes bug #809. 2010-02-09 15:06:21 +00:00
Denis Fakhriev 74de67b8f5 Steady-state RWP model 2010-02-09 09:09:16 -05:00
Craig Dowell d996381a0e output stream object inherits from simple ref count 2010-02-08 23:32:23 -08:00
Craig Dowell 50f8b3dbcd branch merge 2010-02-08 23:16:24 -08:00
Craig Dowell a5c5f18a6b add io performance benchmark 2010-02-08 23:06:31 -08:00
Tom Henderson 415693e71d ns3-tcp-socket test suite for socket-related TCP tests 2010-02-08 22:45:39 -08:00
Bill Roome 986a3741d8 [bug 806] Remove CSMA padding from IP datagrams 2010-02-08 22:44:12 -08:00
Mirko Banchi 4e80fd7879 use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro 2010-02-08 22:35:08 +01:00
Craig Dowell 615c4e1c84 comparing with http://code.nsnam.org/ns-3-dev
searching for changes
changeset:   5930:0aaaaf92b988
user:        Andrey Mazo <mazo@iitp.ru>
date:        Fri Jan 29 21:28:04 2010 +0300
files:       wscript wutils.py
description:
Introduce NS3_EXECUTABLE_PATH variable similar to NS3_MODULE_PATH
(e.g. may be used for various sock-creators).
2010-02-05 10:15:18 -08:00
Craig Dowell 41862ebc92 Don't allocate buffers 2010-02-04 07:15:08 -08:00
Craig Dowell e8b0f35b03 branch merge 2010-02-04 06:26:55 -08:00
Mirko Banchi 0a1f7b8213 remove useless comment for doxygen 2010-02-04 15:20:29 +01:00
Tommaso Pecorella 7efbad9193 random-variable - doc updated and new Zeta distribution 2010-02-04 14:00:04 +01:00
Faker Moatamri 2b51fbd5e9 Add a new line at qos-blocked-destinations.cc to make builds work for gcc-3.4.6,4.0.4,4.1.2,4.2.4 2010-02-04 10:58:40 +01:00
Craig Dowell 37e30b25b3 Review feedback 2010-02-03 13:26:39 -08:00
Mirko Banchi e5e4315402 add block ack test suite 2010-02-03 20:34:54 +01:00
Mirko Banchi 032d94d7f5 add a block ack example 2010-02-03 20:34:54 +01:00
Mirko Banchi 61fa810ebf add support to block ack tear down in EdcaTxopN 2010-02-03 20:34:53 +01:00
Mirko Banchi 5925c92f74 add support to block ack tear down in MacLow 2010-02-03 20:34:53 +01:00
Mirko Banchi 091f5a7cc7 add support to block ack in EdcaTxopN 2010-02-03 20:34:53 +01:00
Mirko Banchi bccb4648a1 add support for blocking of qos packets in WifiMacQueue 2010-02-03 20:34:52 +01:00
Mirko Banchi 7c2d329a97 add BlockAckManager object 2010-02-03 20:34:52 +01:00
Mirko Banchi 3a4404f944 retrieve next sequence number without increment it 2010-02-03 20:34:52 +01:00
Mirko Banchi 34845eab70 add WifiMacQueue::GetNPacketsByTidAndAddress method 2010-02-03 20:34:52 +01:00
Mirko Banchi 83cf4909ec add block ack timeouts 2010-02-03 20:34:52 +01:00
Mirko Banchi 353ba8c46f handle block ack and block ack request frames in MacLow 2010-02-03 20:34:51 +01:00
Mirko Banchi 414f6292b8 MacLow now buffers QoS MPDUs under Block Ack 2010-02-03 20:34:51 +01:00
Mirko Banchi 07008cf638 add support for block ack in MacLowTransmissionListener 2010-02-03 20:34:50 +01:00
Mirko Banchi e2faaaf1df add support for block ack in MacLowTransmissionParameters 2010-02-03 20:34:50 +01:00
Mirko Banchi cf232568a6 handle wifi action frames in high MACs 2010-02-03 20:34:50 +01:00
Mirko Banchi e6b1539f7b WifiMacQueue now supports head pushing 2010-02-03 20:34:49 +01:00
Mirko Banchi f3822fc131 add BlockAckAgreement and OriginatorBlockAckAgreement objects 2010-02-03 20:34:49 +01:00
Mirko Banchi 08869f6468 add support for block ack frames in WifiMacHeader 2010-02-03 20:34:49 +01:00
Mirko Banchi 1b0678bc19 add action frames needed by block ack 2010-02-03 20:34:48 +01:00
Mirko Banchi 7169072c51 add block ack headers 2010-02-03 20:34:48 +01:00
Gustavo J. A. M. Carneiro 07c268b53a Upgrade pybindgen to fix the any() bug (Python <= 2.4) 2010-02-03 18:09:25 +00:00
Tom Henderson dcba03a99a Bug 778 - OLSR ignores specified outgoing interface in RouteOutput() 2010-02-03 15:17:27 +00:00
Tom Henderson 377c1be683 Doxygen for check-style.py 2010-02-02 22:14:52 -08:00
Mohamed Amine Ismail 1acaf15fb4 Moving the propagation models of wifi from src/devices/wifi to src/common. The idea is to share them with the other wireless devices. 2010-02-02 11:44:02 +01:00
Craig Dowell 5fa3bfff94 Add Doxygen 2010-02-01 14:23:41 -08:00
Craig Dowell 3e43b632ce some rewording of rewording suggested by Tom 2010-02-01 13:35:47 -08:00
Craig Dowell 0c932bc297 branch merge 2010-02-01 13:10:31 -08:00
Craig Dowell e4fb8ffd23 branch merge 2010-02-01 08:29:57 -08:00
Gustavo J. A. M. Carneiro f7855387cf Remove ns3::PbbPacket::SerializePacketTlv, it is not implemented 2010-02-01 15:24:40 +00:00
Gustavo J. A. M. Carneiro c20ea3edb3 Upgrade waf from 1.5.9 to 1.5.11 2010-02-01 14:27:08 +00:00
Gustavo J. A. M. Carneiro fa398a074e Rescan python bindings 2010-02-01 13:04:45 +00:00
Gustavo J. A. M. Carneiro 668e97a7dc Upgrade to a newer pybindgen version with support for multiple-inheritance 2010-02-01 13:04:34 +00:00
Mathieu Lacage 54c4309174 add missing doxygen 2010-02-01 08:32:34 +01:00
Mathieu Lacage 4811680d2a avoid copying bytes one after the other. 2010-02-01 08:28:11 +01:00
Mathieu Lacage 0d8d1871ac merge with HEAD 2010-02-01 08:09:11 +01:00
Mathieu Lacage 627da1a2cb enforce that style conforms to our coding style 2010-02-01 08:04:41 +01:00
Tom Henderson fc09faa916 Remove deprecated, non-exported API from class SPFVertex 2010-01-31 20:45:28 -08:00
Antti Mäkelä ca62de0e8d [bug 789] Globalrouting externalroutes to use the new GetRootExitDirections() 2010-01-31 20:38:35 -08:00
Josh Pelkey 5f7d08d7b3 Update release notes and changes for ns-3.8 2010-01-31 16:19:23 -05:00
Josh Pelkey 78a78ba642 Bug 788: OLSR_NEIGH_HOLD_TIME should be 3 times OLSR_REFRESH_INTERVAL 2010-01-31 15:59:26 -05:00
Fabian Mauchle 0f11a5208f Fix bug 747: Listening TCP socket closes on RST 2010-01-31 15:17:09 -05:00
Mathieu Lacage 36c8b44093 don't call ostream::write too often. 2010-01-31 19:18:38 +01:00
Craig Dowell 8fa2f77f61 unused variables 2010-01-29 22:08:09 -08:00
Craig Dowell 63d879dd0b add ability to pass a header to pcap file object 2010-01-29 20:08:50 -08:00
Craig Dowell b2a9926bdf add a place for perf tests 2010-01-29 15:01:07 -08:00
Craig Dowell e176130a09 remove old files 2010-01-28 18:20:34 -08:00
Craig Dowell a64b4172d1 update CHANGES.html 2010-01-28 17:42:51 -08:00
Craig Dowell adb00d72d5 manual update 2010-01-28 17:34:20 -08:00
Craig Dowell 0a97d873ae linearize mixins and make internet stack helper work correctly 2010-01-28 17:21:04 -08:00
Craig Dowell 7745eac47b tell pybindgen not to disable inheritance on classes that end with Helper, and rescan 2010-01-28 01:08:27 -08:00
Craig Dowell 1ed9515cce merge trace helpers, rescan 2010-01-27 23:24:28 -08:00
Craig Dowell f3cd175d71 add ipv6 2010-01-27 21:23:30 -08:00
Craig Dowell d9a4bf75f6 some words about mixins in helpers 2010-01-27 18:41:38 -08:00
Craig Dowell d0fe9ee251 lots of words on user-level trace helpers 2010-01-27 17:21:36 -08:00
Craig Dowell 1d751e3aba branch merge 2010-01-27 12:16:39 -08:00
Craig Dowell 1912ddacfd rearrange trace code in sixth.cc for clarity 2010-01-27 12:15:30 -08:00
fmoatamr a0b6d57c22 Version back to ns-3-dev 2010-01-27 12:09:07 +01:00
fmoatamr 2f37fdfcf8 Added tag ns-3.7 for changeset be3fb855c65a 2010-01-27 12:06:55 +01:00
fmoatamr 5abe8ddb0f Update version number to 3.7 2010-01-27 12:06:38 +01:00
Faker Moatamri 0b061b9175 Update RELEASE_NOTES 2010-01-27 11:23:40 +01:00
Tom Henderson 780bdc435d Update AUTHORS list 2010-01-26 09:12:06 +01:00
Craig Dowell 740d68d1ba add words to tutorial about new trace helpers 2010-01-25 17:07:33 -08:00
Craig Dowell 4351e87bc1 DLT_PPP for sixth dropped packets 2010-01-25 16:12:16 -08:00
Craig Dowell 2106ab9c83 add sixth tutorial example for mid-level tracing helpers 2010-01-25 16:09:07 -08:00
Craig Dowell f49092e36a update tutorial for tracing rework 2010-01-25 15:28:43 -08:00
Craig Dowell d8749d3cb3 update CHANGES ns-3.7 to ns-3.8 2010-01-25 15:06:41 -08:00
Craig Dowell f7e5711a6a merge trace helper files 2010-01-25 14:52:52 -08:00
Craig Dowell dd5bb9c285 branch merge 2010-01-25 14:25:18 -08:00
Craig Dowell 1d072582fa clean up internet stack helper tracing 2010-01-25 14:25:08 -08:00
Tom Henderson 11da7ab680 Update error model and olsr doxygen 2010-01-25 09:22:19 +01:00
Tom Henderson bde7128578 Update the manual to reflect changes 2010-01-25 09:21:19 +01:00
Gustavo J. A. M. Carneiro acf00df486 Fix python bindings build when threading features are disabled (e.g. mingw) 2010-01-23 19:06:19 +00:00
Craig Dowell a58a79f06e checkpoint 2010-01-22 12:44:53 -08:00
fmoatamr d856c5e22c Added tag ns-3.7-RC4 for changeset 17bf6ee332ba 2010-01-22 17:25:49 +01:00
Faker Moatamri c31cfcf164 Update Simulator::SetScheduler doxygen 2010-01-22 16:09:13 +01:00
Craig Dowell 699ade6453 checkpoint 2010-01-22 00:58:01 -08:00
Craig Dowell 76e4bb7b40 branch merge 2010-01-19 10:32:13 -08:00
Craig Dowell 9e29dae862 ascii trace additions 2010-01-19 10:31:58 -08:00
Faker Moatamri 0a1ebfb8cc Bug 793: remove remaining memory leaks due to not cleaned Simulator 2010-01-19 17:06:18 +01:00
Faker Moatamri c0be5c00b3 Bug 793: no creation of a new simulator when calling simulator::cancel or remove or IsExpired 2010-01-19 17:02:38 +01:00
Craig Dowell 5649245bb0 Bug 792: Neither test.py nor waf --valgrind catch all kinds of memory leaks 2010-01-19 16:56:44 +01:00
Faker Moatamri 469b730690 Bug 790: Fix memory leak in routing-aodv-regression 2010-01-18 10:00:46 +01:00
Tom Henderson fc5d4422a4 Update RELEASE_NOTES 2010-01-16 14:54:05 -08:00
Tom Henderson 8a0d92abea update AUTHORS 2010-01-16 14:05:19 -08:00
Tom Henderson d273aeaa85 [bug 690] remove inoperative NscTcp cwnd trace connect 2010-01-12 21:12:52 -08:00
fmoatamr a9638dfb82 Update test.py to detect still reachable memory blocks as errors, it will fail if there is some reachable memory blocks reported by valgrind 2010-01-15 17:48:18 +01:00
Gustavo J. A. M. Carneiro 774a746985 Bug 786 - Make Ipv4Address hashable from Python 2010-01-14 11:45:04 +00:00
Josh Pelkey fdfa55c298 Fix bug 779: NixVectorRouting ignores specified outgoing interface in RouteOutput 2010-01-13 09:58:37 -05:00
Faker Moatamri 7623a960a5 Bug 781: Suppress the valgrind error: Invalid read size of 8 in TestSuite devices-mesh-dot11s-regression 2010-01-13 10:30:56 +01:00
fmoatamr a8d2438b42 Added tag ns-3.7-RC3 for changeset 892efc87a151 2010-01-12 18:52:34 +01:00
Faker Moatamri 5d0d704c2c Merge revert 2010-01-12 17:17:40 +01:00
Faker Moatamri 90d2134e89 Revert bug 706 fix because it breaks the regression testing 2010-01-12 17:16:04 +01:00
Faker Moatamri ddd374128f Revert bug 706 fix: Remove traces change for bug 706 2010-01-12 17:15:23 +01:00
Kirill Andreev 9626fcf1a5 Fix of bug 706: fixed regressions 2010-01-11 12:36:50 +03:00
Kirill Andreev 6275a156e6 Fix of bug 706: Backoff counting when starting NS 2010-01-11 12:23:09 +03:00
Tom Henderson 80d316183c bug 731: Send function in point-to-point-net-device fails to check the return value of the Dequeue function 2010-01-08 15:27:53 -08:00
Antti Mäkelä c80d247e78 [bug 794] Ipv4Mask constructor for /yy-notation is wrong 2010-01-21 19:57:34 -08:00
Unknown c71a96325c addition of two ray ground model and tests 2010-02-05 11:39:16 +00:00
Fabian Mauchle 71ef096c12 Bug 748 - Cloned TCP socket uses wrong source address 2010-02-04 14:10:13 -05:00
Mathieu Lacage ec2b712500 bug 752: Object::DoStart is not executed for objects created at t > 0 2010-01-08 18:04:01 +01:00
Mathieu Lacage 441db3752b bug 767: Incorrect modulation for 802.11a modes 2010-01-08 17:52:29 +01:00
Mathieu Lacage 45f589ef10 bug 725: wifi fragmentation and RTS cannot be used at the same time 2010-01-08 17:40:49 +01:00
Josh Pelkey f9af1974cf Forgot code freeze. Revert nix-vector bug fix for bug 779 2010-01-07 19:35:39 -05:00
Josh Pelkey a459c57d06 Fix bug 779: NixVectorRouting ignores specified outgoing interface in RouteOutput 2010-01-07 17:30:39 -05:00
Craig Dowell e7b28168e3 branch merge 2010-01-06 18:04:22 -08:00
Mathieu Lacage 6dfc2e2c32 bug 602 2010-01-06 16:26:07 +01:00
Mathieu Lacage 8e113fb006 Disable mesh airtime metric calculation 2010-01-06 16:25:53 +01:00
Craig Dowell 8ae5f99f61 redo pcap tracing 2010-01-04 10:35:32 -08:00
Tom Henderson 6065f2f563 Check for valid pointer before using it 2009-12-31 10:20:06 -08:00
Tom Henderson 23f3592653 Improve Ipv4StaticRouting logging 2009-12-31 10:05:05 -08:00
Sebastien Vincent 0752fbef6f Indent correctly IPv6 code. 2009-12-30 14:22:25 +01:00
Tom Henderson 6cb7afc694 branch merge 2009-12-29 16:22:06 -08:00
Tom Henderson d4afe9aef3 Fix NSC improper response to FIN 2009-12-29 16:05:50 -08:00
Tom Henderson 9599faf19f NSC logging statements 2009-12-29 16:04:30 -08:00
Tom Henderson df5fcb1313 add context to tcp logging 2009-12-29 14:00:45 -08:00
Tom Henderson 74a76e4815 minor documentation improvement 2009-12-29 11:09:54 -08:00
Tom Wambold b18ee6d9bc Fixed bug in serialization of PbbAddressBlock.
PbbAddressBlock would not set its flags correctly when there was only a single
address in the address block.
2009-12-29 13:09:26 -05:00
Tom Henderson 66e949b29a remove reference to scratch/ directory in wireless examples 2009-12-29 09:39:52 -08:00
Unknown a9b56d32b1 doxygen for missing methods in pcap-file.h 2009-12-28 13:21:13 -08:00
Tom Henderson 9a64bf6a41 Show how to valgrind test a single test suite 2009-12-28 10:34:03 -08:00
Gustavo J. A. M. Carneiro 499992cd07 rescan python 2009-12-28 18:19:13 +00:00
Gustavo J. A. M. Carneiro f20938857c merge 2009-12-28 17:57:24 +00:00
Gustavo J. A. M. Carneiro dddcbe4e1c python: fix scanning to correctly look for the new SimpleRefCount templated class and declare it is reference counted 2009-12-28 17:55:12 +00:00
Gustavo J. A. M. Carneiro 35eaee45d4 python: fix error reporting, make it much more verbose 2009-12-28 17:53:52 +00:00
Tom Henderson 00cf8f924c Add simple random variable sample 2009-12-28 09:43:08 -08:00
Tom Henderson a171fb3011 Finish OLSR doxygen 2009-12-28 09:06:43 -08:00
Tom Henderson 1e7002e7cb Cleanup doxygen.conf 2009-12-28 09:06:21 -08:00
Gustavo J. A. M. Carneiro 21217704f3 Disable copy-contructors in flow-monitor ABCs 2009-12-28 16:17:49 +00:00
Sebastien Vincent a85ed9f139 Workaround to use IPv6 over PPP (before we implement IPv6CP). 2009-12-28 14:08:00 +01:00
Mathieu Lacage 18f632d498 It is not legal to call Dispose from within a destructor 2009-12-27 13:55:04 +01:00
Mathieu Lacage ba57aff953 Make sure that traffic generation events are associated with a context 2009-12-26 15:47:01 +01:00
Mathieu Lacage 3af2472ce4 merge with HEAD 2009-12-26 15:45:44 +01:00
Mathieu Lacage c53146408d The iterator needs to actually go forward 2009-12-26 15:38:14 +01:00
Andrey Mazo c8f4d30a2c Fix angle braces in CHANGES.html. 2009-12-23 20:49:08 +03:00
Andrey Mazo 6f07fe9c1f Bug 782: CreateTap () requires IP address in modes other than CONFIGURE_LOCAL. 2009-12-22 18:34:48 +03:00
Craig Dowell 872b18fb86 update tap.h documentation which was incredibly stale 2010-01-05 18:06:05 -08:00
Craig Dowell c362bc5dca fix total bytes received in queue 2010-01-05 12:27:50 -08:00
Craig Dowell eca8c6d62f Fix bug 738 ReceiveErrorModel called too late 2010-01-05 11:13:53 -08:00
Gustavo J. A. M. Carneiro 7db3adf42f Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code. 2009-12-21 16:07:08 +00:00
Sebastien Vincent 83ebd91e1b Fix build with g++-4.5 + rescan python bindings. 2009-12-20 18:24:46 +01:00
Pavel Boyko 6615938fa4 Bug 762 fixed: now use unbiased variance estimator in average.h + better API 2009-12-19 17:54:08 +03:00
Faker Moatamri df4cc7d707 Rescan python bindings 2009-12-18 19:10:28 +01:00
Sebastien Vincent b690c6c5ab Bug 759: Ipv6 uses wrong outgoing interface. 2009-12-18 18:17:32 +01:00
Sebastien Vincent 1e7f09214d Bug 770: IPv6 size calculation for unknown options is wrong. 2009-12-18 18:05:19 +01:00
Sebastien Vincent 337667157c Bug 758: Assert during cleanup. 2009-12-18 18:01:15 +01:00
Sebastien Vincent d2cf485f1a Bug 771: Radvd does not set ttl value. 2009-12-18 17:58:12 +01:00
Josh Pelkey e8f91e3a7c Added documentation for animation interface 2009-12-16 11:17:07 -05:00
Wilson Thong 3e443adf59 bug 667: Add equal-cost multipath routing (ECMP) to IPv4 global routing 2009-12-15 21:52:50 -08:00
Antti Mäkelä de21686fd7 examples for Socket::BindToNetDevice() 2009-12-15 21:07:22 -08:00
Antti Mäkelä c9c33ec8f5 bug 742: Implementation of SO_BINDTODEVICE 2009-12-15 20:41:36 -08:00
Tom Henderson b4511f6e70 Fix debug compilation for all platforms 2009-12-15 18:28:01 -08:00
Faker Moatamri 89e793b353 Fix optimized compilation for all platforms 2009-12-16 00:10:37 +01:00
Tom Henderson a525007993 bug 776: sinkNode hardcoded in example program 2009-12-14 10:42:33 -08:00
Tom Henderson 123efa45fd Update bindings 2009-12-13 22:11:05 -08:00
Tom Henderson 33fada952a New output test vectors for bug 606 2009-12-13 21:46:23 -08:00
Tom Henderson 741de0e8f2 Fix bug 606: Arp depends on IP routing system 2009-12-11 23:23:37 -08:00
Unknown 74e5bc66c7 Fixed Bug 765, minor issue in data gathering for example. 2009-12-11 11:48:12 -05:00
Mathieu Lacage 566bf34ab5 get rid of examples waf script 2009-12-11 15:53:54 +01:00
Pavel Boyko c898d0b9b2 Bug 606 testcase. Now routing-aodv-regression should crash until bug will be fixed. 2009-12-11 11:19:49 +03:00
fmoatamr 0fdf52db2e Bug 381: Wifi crashes on shutdown 2009-12-10 12:42:20 +01:00
fmoatamr 1500732556 Clear the list of sockets in packet-sink 2009-12-10 12:40:07 +01:00
Mathieu Lacage 3f88119010 add copy constructors and assignment operators to avoid leaks. 2009-12-09 17:40:12 +01:00
Elena Buchatskaia a7e5c4084e AODV: fix strange routing record with destination 102.102.102.102, thank to Mariusz Skrocki. 2009-12-09 17:23:46 +03:00
Mathieu Lacage 63b0bbc0bd get rid of un-needed #ifdef 2009-12-09 10:38:23 +01:00
Tom Henderson e3037eb0c4 rescan bindings 2009-12-08 22:44:10 -08:00
Mathieu Lacage 3c10a5c742 get rid of last duplicated reference counting implementation 2009-12-08 19:56:24 +01:00
fmoatamr ff007127cf Fixing building with python bindings under MingW 2009-12-08 11:07:00 +01:00
fmoatamr c25a49aac3 Fixing building with python bindings under MacOS and MingW 2009-12-07 19:16:52 +01:00
Sebastien Vincent e8c1072969 Fix MinGW build. 2009-12-07 11:14:58 +01:00
Mathieu Lacage 67ab621e29 Min was calculating Max. doh. 2009-12-04 16:15:59 +01:00
Tom Henderson ef4e408690 Wno-error=deprecated-declarations not supported for gcc-4.1 or earlier 2009-12-03 23:02:21 -08:00
Andrey Mazo 1ec9d83ba8 quiet compiler 2009-12-03 10:54:05 +03:00
Craig Dowell aa7573e80a padd out CSMA payloads to 46 bytes if needed 2009-12-02 16:22:37 -08:00
Craig Dowell a2c63bf818 Drop CSMA packets with CRC errors, rescan, dox tweaks 2009-12-02 15:11:49 -08:00
Florian Schmidt 08ea080ede Add FCS capability to CSMA 2009-12-02 14:29:43 -08:00
Craig Dowell 39acf3fdd7 branch merge 2009-12-02 11:25:49 -08:00
Craig Dowell 0a38ed8a0d make tap-bridge work and add simpler example 2009-12-02 11:25:29 -08:00
Kirill Andreev f668fcadb2 Mesh:Dot11s: fixed airtime metric 2009-12-02 19:58:59 +03:00
Kirill Andreev 586244d7a0 Mesh: added doxygen comments 2009-12-01 18:34:11 +03:00
Kirill Andreev 8330e68190 Mesh:Flame: added regression test 2009-12-01 17:35:13 +03:00
Kirill Andreev 4e1f979f9e Mesh: PeerManagementProtocol: added trace sources for peer link change 2009-12-01 17:09:50 +03:00
Kirill Andreev 69d331b5dc Mesh: action header moved from dot11s namespace and placed to
wifi/mgt-headers.h
2009-12-01 15:05:31 +03:00
Craig Dowell e2bf7eb25f ns3_module_udp_client_server.py are made, why not check them in 2009-11-30 18:30:25 -08:00
Craig Dowell a0d11b0209 Get emu working again: Add Dix/Llc option, add and use contextual realtime schedule ops, don't refcount realtime simulator impl 2009-11-30 18:22:10 -08:00
Craig Dowell 0db2a7250a rescan bindings 2009-11-30 14:46:02 -08:00
Timo Bingmann 6c31453ea2 Renaming WifiPhy state SYNC to RX to avoid confusion with "synchronizing". 2009-11-30 18:40:35 +01:00
Timo Bingmann 72d9a0d3b6 Wifi code cleanup: Correcting various const keyword ordering and removing superfluous (boolean)?true:false. 2009-11-30 18:20:30 +01:00
Kirill Andreev e5206e9552 Mesh: added regression tests: peer management, reactive and proactive HWMP 2009-11-30 19:25:04 +03:00
Kirill Andreev af71b94ca4 updated CHANGES.html after fixing bug 695 2009-11-30 17:37:32 +03:00
Mathieu Lacage 76cad5e2ce Bug 695 - DcfManager::UpdateBackoff () uses slow HighPrecision::Div() 2009-11-30 17:28:52 +03:00
Kirill Andreev 84a896a250 Bug 674 - EIFS is not handled correctly in DcfManager::GetAccessGrantStart 2009-11-30 13:53:25 +03:00
Sebastien Vincent 260da6c519 Update CHANGES.html. 2009-11-30 09:41:13 +01:00
Sebastien Vincent c357c446dc Merge with ns-3-dev. 2009-11-27 18:57:19 +01:00
Mohamed Amine Ismail abcb6e4005 Adding 3 new applications:udp-client, udp-server, udp-trace-client. 2009-11-27 17:06:45 +01:00
Mathieu Lacage c908222804 document the new --tempdir option 2009-11-26 14:53:53 +01:00
Gustavo J. A. M. Carneiro ffde19c1a0 python apidefs rescan 2009-11-25 11:41:55 +00:00
Gustavo J. A. M. Carneiro b801dc27ac python scanning: order from chaos: pre-sort the ns3 module dependency graph to improve stability of the result 2009-11-25 11:41:46 +00:00
Gustavo J. A. M. Carneiro c2f68833ac Forgot to update the olsr-tc-regression traces (bug 739) 2009-11-25 10:51:37 +00:00
Sebastien Vincent bddc033e81 Merge with ns-3-dev. 2009-11-24 21:12:31 +01:00
Sebastien Vincent 2a298684a3 Merge. 2009-11-24 20:38:21 +01:00
Sebastien Vincent 7b94c5ddab Add Ipv6ExtensionHeader tests (from Fabian Mauchle). 2009-11-24 20:37:29 +01:00
Josh Pelkey 8356f27580 Moved net-anim from contrib 2009-11-24 10:16:58 -05:00
Nicola Baldo c289cb3fe3 merge 2009-11-24 14:00:39 +01:00
Nicola Baldo 078a37a72d fixed bug 668 2009-11-24 13:59:14 +01:00
Gustavo J. A. M. Carneiro 195987d0b5 merge 2009-11-24 11:49:21 +00:00
Gustavo J. A. M. Carneiro 51c535e9c0 Bug 739 - OLSR: Strange HTime value in HELLO messages (thanks to Pavel Boyko) 2009-11-24 11:48:06 +00:00
Nicola Baldo 42ab2d58cb frmlen field in prism header set to PRISM_STATUS_PRESENT 2009-11-24 12:06:19 +01:00
Andrey Mazo e4cb79a343 bug 701: optimize Max (hp, hp) 2009-11-24 10:45:08 +01:00
Fabian Mauchle 501e499b8a (bug 746) UDP source address is not set to bound address 2009-11-19 16:12:05 +01:00
Jonathan Brugge 4bf1152b21 use sqlite transactions to optimize inserts 2009-11-23 13:52:51 +01:00
Gustavo J. A. M. Carneiro 34675800d5 Improved detection of apidefs to use for python (Bug 734) 2009-11-22 18:27:14 +00:00
Tom Henderson 9c31313d9e remove deprecated API 2009-11-21 16:33:39 -08:00
Pavel Boyko 9a34a94cf5 [olsr] Regression tests reference traces updated 2009-11-20 13:14:56 +03:00
Pavel Boyko 5f3ec5972c merge with ns-3-dev 2009-11-20 13:06:46 +03:00
Pavel Boyko 6c5dad7368 [olsr] Two basic trace based OLSR regression tests added together with reference traces 2009-11-20 13:06:15 +03:00
Tom Henderson b46424f5ce Update bindings for bug 735 fix 2009-11-19 16:15:16 -08:00
Tom Henderson e10d874828 (Bug 735) Update Olsr for local delivery 2009-11-19 15:21:26 -08:00
Tom Henderson 666854fbbb Add new method for determining whether Ipv4 dest address is mine; add attribute to control RFC1122 behavior 2009-11-19 14:39:01 -08:00
Mathieu Lacage 0ea2db33c8 merge with HEAD 2009-11-19 20:52:09 +01:00
Mathieu Lacage fe86ae64d8 Handle recursive calls to GetObject, AggregateObject and Start 2009-11-19 20:51:55 +01:00
Pavel Boyko 38a472a5a0 [olsr] MPR selection unit tests updated 2009-11-19 19:41:20 +03:00
Pavel Boyko 61ca8c408e [olsr] Bug 740 fixed 2009-11-19 18:22:54 +03:00
Gustavo J. A. M. Carneiro 9b63e2d597 Patch the bad default_value given by gccxml in the case of MilliSeconds(0) 2009-11-19 11:19:39 +00:00
Sebastien Vincent 27b1134dd0 Coding style; 2009-11-18 14:27:38 +01:00
Gustavo J. A. M. Carneiro dae6fde0d4 There was a race condition in last python apidefs rescan... 2009-11-18 12:42:33 +00:00
Gustavo J. A. M. Carneiro 3aecea3a7f Python: rescan; need new 'section precedence' API from PyBindGen; other PBG bug fixes pulled from new version. 2009-11-18 12:03:43 +00:00
Gustavo J. A. M. Carneiro 594dd9b90e Python: add default_value support to our custom Callback type handlers 2009-11-18 12:01:33 +00:00
Mathieu Lacage 9e53577fba mark Packet::PeekData deprecated 2009-11-18 12:38:20 +01:00
Pavel Boyko 8b0412a3c1 merge with ns-3-dev 2009-11-18 13:01:28 +03:00
Pavel Boyko 9eabf965a3 routing/manet directory removed 2009-11-18 13:01:17 +03:00
Pavel Boyko dc002b3e9e [aodv] dpd moved back into aodv 2009-11-18 12:58:00 +03:00
Michael Nowatkowski b6d1a79f33 add support for 802.11p PHY and MAC parameters 2009-11-18 10:52:28 +01:00
Sebastien Vincent 03bf552480 Coding style. 2009-11-18 10:17:36 +01:00
Pavel Boyko bcd23e4c8b merge 2009-11-18 11:30:45 +03:00
Pavel Boyko 8cb399d672 [aodv] RoutingTable::Purge bugfix 2009-11-18 11:28:38 +03:00
Sebastien Vincent 6fbc6a1490 Update RELEASE_NOTES and CHANGES.html. 2009-11-18 09:07:59 +01:00
Sebastien Vincent e913a4be32 Merge with ns-3-dev. 2009-11-18 08:57:32 +01:00
Sebastien Vincent 613d7322d4 Fix regression tests related to changeset c305c6e122c9 (IPv6 over PPP). 2009-11-17 08:01:19 +01:00
Mathieu Lacage 5f5a5d01d2 Followup to changeset efed7493f2c1: Forgot to forward the start event to the MAC layer. 2009-11-16 16:18:06 +01:00
Pavel Boyko b9ba4cd5bc CHANGES.html, AUTHORS and RELEASE_NOTES updated after AODV merge 2009-11-16 14:10:22 +03:00
Pavel Boyko c97972501a [aodv] examples/routing/aodv added to tested examples 2009-11-16 14:00:51 +03:00
Pavel Boyko 6bad1574ac [aodv] reference traces updated 2009-11-16 13:49:25 +03:00
Pavel Boyko feda7e41c9 [aodv] merge with ns-3-dev completed 2009-11-16 13:40:25 +03:00
Pavel Boyko 0baf7f405d merge with ns-3-dev 2009-11-16 13:35:38 +03:00
Pavel Boyko 9fcc9955bc [aodv] Use GetTempDir() to store pcap traces in regression tests 2009-11-16 13:32:56 +03:00
Sebastien Vincent 4eef9e4fb8 Merge with ns-3-dev and fix doxygen. 2009-11-15 11:30:20 +01:00
Sebastien Vincent 875145ac3a Fix doxygen. 2009-11-15 10:51:32 +01:00
Mathieu Lacage 1444849d7b merge with HEAD 2009-11-15 09:16:45 +01:00
Mathieu Lacage 123fc6afc8 make the destructor non-pure for the python bindings 2009-11-15 09:16:32 +01:00
Tom Henderson 60fa8dde78 file TTL change under another category 2009-11-14 21:03:33 -08:00
Tom Henderson 61f9a5144c Align tcp test program with Application API change 2009-11-14 21:02:53 -08:00
Mathieu Lacage fa99e03831 update udp test to new API 2009-11-14 21:55:18 +01:00
Pavel Boyko ffd8e7fc18 Default TTL of IPv4 broadcast datagrams changed from 1 to 64 2009-11-14 08:48:35 -08:00
Tom Henderson 51a25721af further updates to main.h 2009-11-14 07:13:06 -08:00
Mathieu Lacage 15fe91dede start RELEASE_NOTES for 3.7 2009-11-14 18:04:40 +01:00
Mathieu Lacage 24344fd911 document API changes for release 2009-11-14 18:01:31 +01:00
Guillaume Seguin 4fee5f016b Make sure that every incoming packet has a context 2009-11-14 17:47:05 +01:00
Guillaume Seguin a23934a4b7 Make applications generate traffic within their associated context/node 2009-11-14 17:47:05 +01:00
Guillaume Seguin c420843c3d Call Simulator::ScheduleWithContext from ns3::Channel subclasses when sending packets to other nodes 2009-11-14 17:47:05 +01:00
Guillaume Seguin 94cf348701 Print node context in log messages 2009-11-14 17:47:05 +01:00
Guillaume Seguin 5ce9ad2d78 Introduce Simulator::ScheduleWithContext* and Simulator::GetContext 2009-11-14 17:47:05 +01:00
Sebastien Vincent 001791bad8 Fix build on MinGW. 2009-11-14 11:25:12 +01:00
Tom Henderson b50c6979a2 update doxygen main page 2009-11-13 13:25:14 -08:00
Tom Henderson 704b8c2c50 fix tutorial pdf build 2009-11-13 13:21:59 -08:00
Tom Henderson c150beb6da Align with texi2html-1.82 api changes 2009-11-13 09:38:44 -08:00
Tom Henderson 886ebc725b HOWTOs are now on the wiki 2009-11-13 09:37:52 -08:00
Tom Henderson f27efc04c2 add missing dependencies 2009-11-13 09:19:06 -08:00
Tom Henderson f15069aca0 Align with texi2html-1.82 api changes 2009-11-13 09:14:32 -08:00
Nicola Baldo b4fde3c459 added UniformDiscPositionAllocator (bug 672) 2009-11-13 16:45:28 +01:00
Pavel Boyko 74c973cfaf bugfix in YansWifiPhy::SetChannelNumber() 2009-11-13 18:20:50 +03:00
Pavel Boyko 038e05bfd5 ChannelNumber attribute added to YansWifiPhy. Now it is possible to setup wifi channel using WifiPhyHelper::Set() method. 2009-11-13 14:51:59 +03:00
Pavel Boyko aad89f3e8a cosmetics 2009-11-13 13:23:08 +03:00
Kirill Andreev d47f2a3b86 [Bug 740] OLSR MprCompute () works wrong: fixed 2009-11-13 11:47:02 +03:00
fmoatamr f428177e25 Make building works under g++-4.0.4,4.1.2 and OSX PPC 2009-11-12 14:08:51 +01:00
Guillaume Seguin 0289746207 Simulator::SetScheduler now takes an ObjectFactory 2009-11-12 13:19:35 +01:00
Mathieu Lacage cdaa394512 merge with HEAD 2009-11-12 13:02:55 +01:00
Mathieu Lacage 1668a400c9 replace RefCountBase with SimpleRefCount<> to avoid duplicate refcounting implementations. 2009-11-12 13:01:01 +01:00
Faker Moatamri d2d081606f Rescan python bindings 2009-11-12 10:20:26 +01:00
Sebastien Vincent 396cd96128 Merge with ns-3-dev. 2009-11-12 09:52:54 +01:00
Sebastien Vincent 1dd111e85d Merge with Fabian's repository. 2009-11-11 16:25:10 +01:00
Sebastien Vincent 42369e043e Bug #729 IPv6 over PPP. 2009-11-11 16:21:18 +01:00
Andras Varga 49d1be220f Bug #645: fixes for opening stats file with OMNeT++ 2009-11-11 12:44:09 +01:00
Phillip Sitbon 6a54bf77c4 Variables time and position in waypoint are public as in the original code 2009-11-11 11:57:14 +01:00
Andrey Mazo c7418563b6 Mesh: make GetFields () const 2009-11-11 00:27:47 +03:00
Andrey Mazo 24d5900b68 Mesh: add constructor to TypeId of WifiInformationElementVector 2009-11-11 00:27:09 +03:00
Craig Dowell c4ad800f32 correct some wildly out-of-date doxygen 2009-11-10 11:03:04 -08:00
Tom Henderson 81d7dad715 Document changes to YansWifiPhy defaults 2009-11-10 06:14:11 -08:00
Tom Henderson 3f2d10b3c8 Point to CHANGES.html 2009-11-10 06:13:29 -08:00
Pavel Boyko 3e852713a3 Bug 689: default energy detection and CCA thresholds are changed to be more realistic. 2009-11-10 14:44:23 +03:00
Phillip Sitbon a12e6a18c2 Add Waypoint Mobility model to mainstream 2009-11-10 12:10:35 +01:00
Guillaume Seguin fa3ec32522 set the implementation Scheduler after setting the implementation 2009-11-10 10:31:51 +01:00
Mathieu Lacage 0f37dd8bdc remove uneeded header 2009-11-10 07:45:32 +01:00
Mathieu Lacage f0a2528a9f gah, we don't want to copy the count in the assignment operator 2009-11-09 16:45:54 +01:00
Mathieu Lacage 1fc1107e92 delete dead code 2009-11-09 16:02:05 +01:00
Andrey Mazo c057928e1e Remove my old email from AUTHORS list. 2009-11-09 12:24:51 +03:00
Tom Henderson 4a367fd431 update AUTHORS list 2009-11-06 15:22:33 -08:00
Mathieu Lacage f8fe3ebcb3 Ipv4L3Protocol::GetInterface optimization 2009-11-06 15:16:18 -08:00
Mathieu Lacage a0ff88e591 Optimization: use a shared reference counter instead of a per-object counter in Object::Ref/Unref 2009-11-06 17:47:44 +01:00
Mathieu Lacage 622273405c merge with HEAD 2009-11-06 11:27:17 +01:00
Mathieu Lacage b1400fd928 Optimization: try to optimistically dynamically_cast in case the requested object is the first entry in the aggregate buffer. 2009-11-06 11:27:04 +01:00
Craig Dowell 932c44209e Make tests pass on MinGW, add fifth tutorial example 2009-11-05 22:29:53 -08:00
Craig Dowell d2837e960b branch merge 2009-11-05 19:15:28 -08:00
Craig Dowell 4450bbafc3 pass explicit temp directory to test suites 2009-11-05 19:14:37 -08:00
Mathieu Lacage c407986259 merge with HEAD 2009-11-05 21:04:37 +01:00
Mathieu Lacage 580033fc2b Optimize Object::GetObject. Introduce an array of aggregates and sort is by access frequency. 2009-11-05 21:04:05 +01:00
Kirill Andreev b47dff2311 mesh:Fixed valgrind errors 2009-11-05 13:45:33 +03:00
fmoatamr 46d64d4b8e Bug 705: Make building works under Mingw by disabling socket.h and in.h includes only when Mingw is used 2009-11-05 11:17:44 +01:00
Craig Dowell 41b20ef8ea swap in released 3.6 release notes 2009-11-04 21:08:32 -08:00
Craig Dowell 486d478dae Remove mingw from list of supported platforms 2009-11-04 20:28:31 -08:00
Mathieu Lacage 6a66402911 Optimize Object::GetObject. A 40% improvement on some testcases 2009-11-04 22:08:21 +01:00
Sebastien Vincent 9d4851571d Use RouteOutput instead of getting Ipv6StaticRouting and call LookupStatic. 2009-11-04 14:42:58 +01:00
Kirill Andreev 3bb49b6aa4 Mesh: fixed updating routing information in HWMP, fixed precursor list in
routing table
2009-11-03 12:50:18 +03:00
Sebastien Vincent 87e38843a3 Merge with ns-3-dev. 2009-11-02 18:16:09 +01:00
Sebastien Vincent 66604a86b3 Update. 2009-11-02 18:08:16 +01:00
Sebastien Vincent c4a9f38078 Indent header files. 2009-11-02 15:59:19 +01:00
Sebastien Vincent 40fb2639e2 Update. 2009-11-02 15:48:04 +01:00
Kirill Andreev 970c98baa8 Mesh: fixed initiating proactive PREQ 2009-11-02 12:28:38 +03:00
Fabian Mauchle c4749e0afb Ipv6Extension-Option link 2009-11-02 09:48:21 +01:00
Gustavo J. A. M. Carneiro 4fe473bca2 Bug 733: OLSR MPR Computation give incorrect result 2009-11-01 22:47:04 +00:00
Craig Dowell acaad3a93d remind test.py how to build on unix and limit build scope when posible 2009-10-30 10:23:40 -07:00
Pavel Boyko 951f577403 [aodv] Reference traces added 2009-10-30 13:09:05 +03:00
Pavel Boyko dae3b91ebc [aodv] Cosmetics 2009-10-30 13:00:24 +03:00
Pavel Boyko 0ba754ce77 [aodv] cosmetics 2009-10-30 12:15:20 +03:00
Pavel Boyko 9bd08cd047 [aodv] doxygen.conf reverted to ns-3-dev state 2009-10-30 12:14:00 +03:00
Elena Buchatskaia f13ad5aebf script description added 2009-10-29 17:25:28 +03:00
Elena Buchatskaia 7653d2fc35 missing doxygen comments added 2009-10-29 17:03:17 +03:00
Elena Buchatskaia 4f3932504c time diagram + fixed hop count 2009-10-29 16:37:08 +03:00
Kirill Andreev 30bcda7b13 Mesh: HWMP: fixed proactive routes 2009-10-29 15:39:41 +03:00
Gustavo J. A. M. Carneiro 1fc87be0b0 Bring back the --doxygen-no-build option from the dead. 2009-10-29 11:12:12 +00:00
Elena Buchatskaia 8e1a3c6b15 [aodv] braces for loops added 2009-10-29 11:04:47 +03:00
Mirko Banchi 0af2cc7a7f A-MSDU aggregation is not a default feature. 2009-10-28 18:27:43 +01:00
Elena Buchatskaia 183d266c64 coding style 2009-10-28 18:29:51 +03:00
fmoatamr a93f09f7de Fix testing under Mac OS X 2009-10-28 15:43:43 +01:00
Elena Buchatskaia 21c59a6a6a description of overall aodv model design added 2009-10-28 15:41:21 +03:00
Pavel Boyko d555fcab12 [aodv] Broken chain ping regression added (without reference traces yet) 2009-10-28 12:29:58 +03:00
Pavel Boyko fdbae1e5a2 merge 2009-10-28 11:48:26 +03:00
Pavel Boyko 663d743257 Pcap::Diff() method added to compare PCAP traces packet-by-packet 2009-10-28 11:43:57 +03:00
Kirill Andreev 7531f59258 Mesh: fixed FLAME PATH_UPDATE procedure, fixed mesh.cc, valgrind errors in
FLAME
2009-10-27 18:43:45 +03:00
Pavel Boyko be2b8da5b6 merge 2009-10-27 16:27:19 +03:00
Andrey Mazo 07112c91bc omit -march=native for <gcc-4.2;
pass -fomit-frame-pointer and -march=native only to gcc and icc.
2009-10-27 13:56:38 +03:00
Andrey Mazo 5f8471d37b mesh: small doxygen fix. 2009-10-27 13:42:27 +03:00
Pavel Boyko d83e524ed8 [aodv] Remove obsolete regression 2009-10-27 13:35:54 +03:00
Craig Dowell 3936de47d2 Make test.py work on MinGW 2009-10-27 01:05:46 -07:00
Unknown 306b8c892b test.py prints example elapsed times 2009-10-27 00:19:02 -07:00
Craig Dowell 0fa02f5f5d try and make test.py a bit more portable 2009-10-26 23:44:04 -07:00
Craig Dowell e17fe2e7cf make win32 compile again 2009-10-26 14:50:38 -07:00
Craig Dowell 1ea257ac14 Apply Gustavo's patch for MinGW compatibiliy 2009-10-26 11:26:35 -07:00
Sebastien Vincent 7b8fec936e Merge with ns-3-dev; 2009-10-26 11:27:37 +01:00
Gustavo J. A. M. Carneiro 4bcced389f Python API rescan 2009-10-26 10:15:22 +00:00
Pavel Boyko 94349a8333 [aodv] Rename Elena 2009-10-26 10:24:20 +03:00
Pavel Boyko 1fb3f59f46 [aodv] DPD cosmetics 2009-10-26 10:20:01 +03:00
Pavel Boyko db4c9efc2e [aodv] Code style fixes proposed by Faker in his review 2009-10-26 10:11:26 +03:00
Pavel Boyko e02daf1db4 [aodv] Aodv and DPD moved to routing/manet. OLSR to follow after review/merge. 2009-10-26 09:35:13 +03:00
Pavel Boyko 6929d0b3be merge 2009-10-26 09:21:20 +03:00
Tom Henderson 0d5e8b4bfa add back TCP test case 2009-10-23 15:54:35 -07:00
Andrey Mazo 217b044c77 append {CC,CXX,LINK,LD}FLAGS_EXTRA to corresponding {CC,CXX,LINK}FLAGS. 2009-10-23 17:35:38 +04:00
Andrey Mazo 0b82cab889 append -fomit-frame-pointer and -march=native to CXXFLAGS in release profile. 2009-10-23 17:31:36 +04:00
Andrey Mazo b14f273040 introduce new build profile "release": -O3 -g0. 2009-10-23 17:23:45 +04:00
Kirill Andreev 664f556dbd Merge 2009-10-23 16:23:38 +04:00
Kirill Andreev 7c4f42fbf1 Mesh: fixed coding style 2009-10-23 16:22:56 +04:00
Gustavo J. A. M. Carneiro e9e43bd05c Update the build.txt file with new WAF information 2009-10-23 13:08:12 +01:00
Gustavo J. A. M. Carneiro e520be0836 Merge in upgrade to WAF 1.5.9 2009-10-23 13:05:56 +01:00
Kirill Andreev 84e1fc122d Mesh: fixed HWMP sequence and metric filtering, added route discovery time
trace source, fixed beacon collision avoidanceadded ability to enable/disable
BCA
2009-10-23 15:34:14 +04:00
Sebastien Vincent 13d011183e Merge with ns-3-dev. 2009-10-22 15:37:46 +02:00
Sebastien Vincent f5756b9467 Routing type 0 support. 2009-10-22 15:21:24 +02:00
Elena Buchatskaia 56981bdd00 dpd added 2009-10-22 17:17:40 +04:00
Sebastien Vincent 5423e280db Constant value. 2009-10-22 13:25:06 +02:00
Craig Dowell bdb28bbea6 Added tag ns-3.6 for changeset d55c479666ac 2009-10-21 17:19:03 -07:00
Craig Dowell 970e4b6d2d remove comment referencing non-working use case 2009-10-21 00:17:14 -07:00
Sebastien Vincent 6c9379c9f4 Remove old stuff. 2009-10-20 16:05:49 +02:00
Sebastien Vincent 9f7fd491f8 Coding style. 2009-10-20 14:08:01 +02:00
Tom Henderson f8e7971e6f Remove SetEdcaParameterForAc() from manual 2009-10-19 20:55:52 -07:00
Craig Dowell 47ae19b2d0 branch merge 2009-10-20 12:05:10 -07:00
Craig Dowell b2dbe4454e Backed out changeset 04cc3ffe0202 2009-10-20 12:04:20 -07:00
Craig Dowell dba4030746 add closing section to tutorial 2009-10-20 11:13:22 -07:00
Craig Dowell 1f8d1c854d tracing tutorial changes 2009-10-20 10:45:12 -07:00
Craig Dowell 48ee52fffb Make tests work with MinGW (make win32-system-wall-clock-ms work) 2009-10-20 10:05:57 -07:00
Craig Dowell 7946c74a80 Added tag ns-3.6-RC4 for changeset 39a82d7a0d66 2009-10-19 22:21:22 -07:00
Craig Dowell d59f3b1bb4 branch merge 2009-10-19 18:47:30 -07:00
Craig Dowell 6450db55f2 tutorial nits 2009-10-19 18:47:01 -07:00
Craig Dowell 30dac288f5 Rename SimpleSource to MyApp 2009-10-19 17:35:02 -07:00
Craig Dowell 0b559a7c8c fill out tutorial tracing section with semi-real plot 2009-10-19 16:44:41 -07:00
Tom Henderson c381234e62 additional manual cleanup 2009-10-19 07:54:31 -07:00
Tom Henderson 42ba205efd some cleanup of part 1 of manual 2009-10-18 22:11:29 -07:00
Sebastien Vincent d33666ce23 Update. 2009-10-18 18:20:10 +02:00
Sebastien Vincent 69e94e521d Update e-mail address of David. 2009-10-18 16:32:00 +02:00
Sebastien Vincent da9f8a0aae Add examples (loose-routing-ipv6 not working yet). 2009-10-18 16:29:38 +02:00
Sebastien Vincent dbce517e60 Merge with ns-3-dev. 2009-10-18 16:25:27 +02:00
Sebastien Vincent b751956150 IPv6 Fragmentation support. 2009-10-18 15:55:34 +02:00
Tom Henderson 6a6de8bbfa add new dia source 2009-10-17 16:02:25 -07:00
Sebastien Vincent fbea0b7ca2 More on IPv6 extensions support. 2009-10-16 11:33:56 +02:00
Sebastien Vincent c48e444771 Merge with ns-3-dev. 2009-10-16 10:25:12 +02:00
Craig Dowell 117fa7f3c2 release steps tweaks 2009-10-15 23:55:06 -07:00
Craig Dowell d0ffc407ac Added tag ns-3.6-RC3 for changeset 79ff6ad1adbb 2009-10-15 22:44:41 -07:00
Tom Henderson 41c62223ee add figure for manual overview 2009-10-15 15:59:52 -07:00
Tom Henderson ae2b92f330 a few nits in the release notes 2009-10-16 17:17:06 -07:00
Gustavo J. A. M. Carneiro 1a742a3c02 Upgrade pybindgen to fix bug #723 2009-10-17 00:30:07 +01:00
Tom Henderson c237cbe114 Manual organization 2009-10-16 07:13:05 -07:00
Sebastien Vincent 9086450bea Add IPv6 extension files from old ns-3-ipv6 repository (not working yet). 2009-10-15 15:11:27 +02:00
Andrey Mazo c0d01261d0 remove some redundant clean ups, includes 2009-10-15 14:32:19 +04:00
Andrey Mazo b252f68f9d bug 711: example mesh/mesh fails valgrind.
also fix several possible leaks.
2009-10-15 14:10:02 +04:00
Andrey Mazo af27a1388c add NS_LOG_FUNCTION to several constructors/destructors/DoDisposes 2009-10-15 13:49:42 +04:00
Craig Dowell ac9dc12e94 add flowmon to RELEASE_NOTES 2009-10-15 10:53:31 -07:00
Craig Dowell 4eba1f033e tweak release steps 2009-10-14 11:20:49 -07:00
Craig Dowell 4fb0057dc7 Added tag ns-3.6-RC2 for changeset 899604299046 2009-10-14 10:24:55 -07:00
Craig Dowell 64450e03cd plug leaks (bug 711) 2009-10-13 22:41:30 -07:00
Craig Dowell 88cfec21eb release Ptrs in mesh-point-device 2009-10-13 12:51:46 -07:00
Craig Dowell 255b29974a Stray () in test.py (bug 718) 2009-10-13 10:23:21 -07:00
Craig Dowell 7473705ef0 add leak-check=full to test.py to get more info (bug 711) 2009-10-13 00:21:39 -07:00
Craig Dowell 878ce49230 fix valgrind complaints (bug 711) 2009-10-12 23:31:58 -07:00
Craig Dowell 5516d48909 refalgamize temporary files in test.py 2009-10-12 14:01:36 -07:00
Craig Dowell f516e4b664 tweak release steps 2009-10-09 23:51:23 -07:00
Craig Dowell 96003f4dd8 release steps tweaks 2009-10-09 21:49:47 -07:00
Craig Dowell 9911779ab6 Added tag ns-3.6-RC1 for changeset 549243b47311 2009-10-09 21:29:30 -07:00
Craig Dowell 2d135d4f85 Update release steps 2009-10-09 21:28:50 -07:00
Craig Dowell ea723b2503 update CHANGES.html and RELEASE_NOTES for release 2009-10-09 21:18:24 -07:00
Craig Dowell 87d0e09bc7 Separate the index 2009-10-09 20:52:19 -07:00
Craig Dowell 13826cf904 update tutorial paths for new examples directory 2009-10-09 20:50:49 -07:00
Craig Dowell cabdaadcf8 Update tutorial typos 2009-10-09 20:50:17 -07:00
Craig Dowell dafb0530cc fix ns3-tcp-cwnd unit test 2009-10-09 15:52:01 -07:00
Craig Dowell 4ce4288ecb teach test.py to skip selected tests 2009-10-09 12:54:54 -07:00
Sebastien Vincent a68d88fb5c Merge with ns-3-dev. 2009-10-09 19:44:13 +02:00
Sebastien Vincent 6cdc60baf0 Fix valgrind errors for simple-wifi-frame-aggregation example. 2009-10-09 19:31:39 +02:00
Andrey Mazo 204e61b992 fix most of doxygen warnings 2009-10-09 18:36:39 +04:00
fmoatamr 6e7d010e52 Fix the compiling error: \"Cannot find definitions for fixed-width integral types (uint8_t, uint32_t, etc.)\" under Cygwin 2009-10-09 16:07:20 +02:00
Andrey Mazo a5614b5862 Fix typos in tutorial. 2009-10-09 15:45:17 +04:00
Andrey Mazo d43166d21b memset () wants #include <cstring>. 2009-10-09 12:05:36 +04:00
Craig Dowell 482ed05b77 valgrind complains about uninitialized buffer even if we don't care 2009-10-08 20:32:00 -07:00
Craig Dowell a56b60f6ff more tracing tutorial words 2009-10-08 19:20:28 -07:00
Craig Dowell 7aa6cb832a update doc/main.h to say ./waf doxygen builds documentation 2009-10-08 18:02:44 -07:00
Craig Dowell 1acc1b5a65 remind waf how to generate introspected doxygen 2009-10-08 17:57:06 -07:00
Craig Dowell 4a6d30fbd5 tracing tutorial stuff 2009-10-08 13:59:26 -07:00
Craig Dowell 94c2d097f3 add fourth.cc to example tests and wordsmith tracing tutorial a bit 2009-10-08 11:37:29 -07:00
Craig Dowell 9a9b093416 branch merge 2009-10-08 10:36:58 -07:00
Craig Dowell 33b3bb4c40 add tracing tutorial piece 2009-10-08 10:36:26 -07:00
Sebastien Vincent a233d59302 Fix valgrind error for icmpv6-redirect example. 2009-10-08 17:31:58 +02:00
Pavel Boyko af9bc5595a [aodv] Fix aodv.cc example & helpers 2009-10-08 15:47:59 +04:00
Pavel Boyko 848e8d0123 merge with code.nsnam.org 2009-10-08 15:30:36 +04:00
Pavel Boyko b787ebfd70 [aodv] Test rewrite finished 2009-10-08 15:28:14 +04:00
fmoatamr ed159f7cbf Fix the compiling error: \"Cannot find definitions for fixed-width integral types (uint8_t, uint32_t, etc.)\" under MacOS 2009-10-08 12:56:47 +02:00
Pavel Boyko 72f7f03159 [aodv] Test rewrite in progress 2009-10-08 14:35:17 +04:00
Pavel Boyko 4f9f202b2d aodv: test rewrite in progress 2009-10-08 14:18:05 +04:00
Kirill Andreev 992e42acc1 Mesh: restoring DsFrom and DsTo flags when setting type QosData 2009-10-08 13:53:21 +04:00
Craig Dowell 47845a52b2 gcc 3.4.6 doesn't like implicit type conversion from double to unsigned int 2009-10-08 01:02:28 -07:00
Craig Dowell c97d8c27bd branch merge 2009-10-08 00:17:11 -07:00
Craig Dowell 914b005571 Words about tracing in tutorial 2009-10-08 00:16:55 -07:00
Sebastien Vincent b373a3ee69 Python scan (x86 and x86-64). 2009-10-08 07:10:54 +02:00
Josh Pelkey b9736c4a9a Fix for bug 615 2009-10-07 23:06:21 -04:00
Josh Pelkey 4ff4237b40 Testcase for bug 647 2009-10-07 23:02:25 -04:00
Josh Pelkey d496927da7 Fix for bug 647 2009-10-07 22:59:49 -04:00
Josh Pelkey 742f18415e TCP bug fixes 424, 426, 559, 663, 664, 697 2009-10-07 20:55:43 -04:00
Josh Pelkey 63d9935fc2 Removed MPI net-anim code 2009-10-07 16:20:49 -04:00
Sebastien Vincent 5882f56ea8 Typo. 2009-10-07 21:46:29 +02:00
Craig Dowell 4194de64de Tom's update to Gustavo's patch for bug 676. 2009-10-06 23:00:21 -07:00
Craig Dowell 2ecfd78d79 Gustavo patch for bug 676 2009-10-06 22:59:55 -07:00
Craig Dowell 3abf4a5910 convince waf to run test.py on check command 2009-10-06 22:54:24 -07:00
Craig Dowell 104b676108 update test.py documentation 2009-10-06 22:47:07 -07:00
Craig Dowell d61e9266d4 add valgrind powers back to test.py 2009-10-06 22:01:40 -07:00
Craig Dowell a52357aa83 split examples, add examples, tweak test.py to minimize builds 2009-10-06 19:34:29 -07:00
Pavel Boyko c30f32c0bd code cleanup 2009-10-06 15:31:30 +04:00
Gustavo J. A. M. Carneiro ee0e346c4d typo 2009-10-05 15:32:12 +01:00
Mathieu Lacage c23ef899ea disable test to avoid compiler failures 2009-10-05 16:18:24 +02:00
Tom Henderson 7fc3cebfd2 branch merge 2009-10-04 22:56:53 -07:00
Tom Henderson 33026156cd Fix documentation of the propagation loss test suite 2009-10-04 22:56:35 -07:00
Craig Dowell 3e6c98decb Doxygen-o-matic 2009-10-04 22:52:12 -07:00
Tom Henderson e3a6eefc88 Fix propagation-loss-model test suite; make it a unit test 2009-10-04 22:46:36 -07:00
Craig Dowell 4f45471b71 Piles o' doxygen 2009-10-04 21:46:30 -07:00
Craig Dowell dae80627ee Doxygen and wscript messages point to test.py 2009-10-04 20:52:24 -07:00
Tom Henderson d4ebb47386 do not reinitialize in copy constructor 2009-10-03 16:21:58 -07:00
Tom Henderson 1975f950a5 add copy constructor to InternetStackHelper 2009-10-03 16:02:25 -07:00
Tom Henderson 81967bcaec document how to use gdb with test framework 2009-10-03 16:01:50 -07:00
Tom Henderson 804ddc729e make mixed-wireless examples use InternetStackHelper::Reset 2009-10-03 15:22:37 -07:00
Tom Henderson f66a9b42b2 add ability to reset InternetStackHelper w/o assigning a temporary 2009-10-03 15:21:52 -07:00
Tom Henderson a8a9fa3bdc allow assignment operator for InternetStackHelper 2009-10-02 15:40:38 -07:00
Craig Dowell 20d2495b80 remove unbuilt, obsolete sample 2009-10-02 11:25:31 -07:00
Tom Henderson 9ab1607520 Fix memory management of routing helpers (bug 678) 2009-10-01 22:49:25 -07:00
Tom Henderson c0ff56a6e0 allow static and global routing to deliver local packets (bug 651) 2009-10-01 21:51:03 -07:00
Craig Dowell e03eac3282 keep wifi-ap from spewing all over std_out during tests 2009-10-01 14:12:56 -07:00
Craig Dowell 4fa0e51d0f have test.py return status 2009-10-01 11:53:19 -07:00
Kirill Andreev d592f7a230 Mesh: 802.11 header is set to QosData if QosTag exists. 2009-10-01 17:38:21 +04:00
Gustavo J. A. M. Carneiro 05e8a59de5 python-scan 2009-10-01 14:22:40 +01:00
Mathieu Lacage 0150eff216 compiler complains about missing line at end of file 2009-10-01 14:08:52 +02:00
Mathieu Lacage 72341baa2a disable crashing test 2009-10-01 14:06:38 +02:00
Mathieu Lacage 276d00dd48 avoid crash when nsc is not present 2009-10-01 13:52:25 +02:00
Mathieu Lacage 620130d5c2 actually port the ptr test code 2009-10-01 13:41:21 +02:00
Mathieu Lacage 42c5970153 kill dead code 2009-10-01 13:41:02 +02:00
Mathieu Lacage c940ca5a90 bug 675: kill old test framework 2009-10-01 13:17:24 +02:00
Pavel Boyko 901e12f2da merge 2009-10-01 15:21:21 +04:00
Pavel Boyko 44ef250c21 udp test ported (the last one!) 2009-10-01 15:20:54 +04:00
fmoatamr 227c5734a2 Conform ipv4-test with the new test suite 2009-10-01 13:00:04 +02:00
fmoatamr d906336402 Conform ipv6-test with the new test suite 2009-10-01 12:38:12 +02:00
Mathieu Lacage 50c63f3bc2 merge with HEAD 2009-10-01 12:06:03 +02:00
Mathieu Lacage 9e75b1a633 function is used only when logging is enabled 2009-10-01 12:05:20 +02:00
Pavel Boyko 2c262cfc82 merge 2009-10-01 13:59:43 +04:00
Pavel Boyko 01576478a0 packet test suite ported to new framework 2009-10-01 13:59:26 +04:00
Pavel Boyko 8426a04201 packet-metadata test suite ported to new framework 2009-10-01 13:39:14 +04:00
Pavel Boyko c130e5a9de merge 2009-10-01 13:25:21 +04:00
Mathieu Lacage 9043be3cd7 merge with HEAD 2009-10-01 11:24:55 +02:00
Pavel Boyko b71856629c buffer test suite ported 2009-10-01 13:23:45 +04:00
Mathieu Lacage 5b06c973f6 bug 648: doxygen 2009-10-01 11:22:26 +02:00
Mathieu Lacage 72c40036ea bug 648: doxygen 2009-10-01 11:16:04 +02:00
Mathieu Lacage bcbcb7de49 merge with HEAD 2009-10-01 10:21:12 +02:00
Mathieu Lacage 1d0149b622 debug logging 2009-10-01 10:20:59 +02:00
Pavel Boyko b5e3e28830 devices-point-to-point test suite ported to new framework 2009-10-01 12:00:02 +04:00
Craig Dowell c1142f7738 Refalgamize test framework to allow multiple test failures 2009-09-30 20:26:33 -07:00
Pavel Boyko df98946fc8 some aodv unit tests ported to new framework. 4 left. 2009-09-30 20:50:44 +04:00
Mathieu Lacage aa11d1f134 merge with HEAD 2009-09-30 18:44:51 +02:00
Mathieu Lacage 41f78bb85e bug 675: convert unit tests to new test framework 2009-09-30 18:44:35 +02:00
Pavel Boyko e12ee5c4a5 merge 2009-09-30 20:15:49 +04:00
Pavel Boyko 6950c31244 MilliSeconds(double) fixed to MilliSeconds(int) 2009-09-30 20:15:41 +04:00
Pavel Boyko c3f539d8ca merge 2009-09-30 20:02:41 +04:00
Pavel Boyko 594e1585fa wifi unit tests ported to new framework 2009-09-30 20:02:17 +04:00
Pavel Boyko 481016be8b merge 2009-09-30 19:17:16 +04:00
Gustavo J. A. M. Carneiro ce1a38807e merge 2009-09-30 16:16:14 +01:00
Pavel Boyko 1eb891de9a devices-mesh-dot11s test suite 2009-09-30 19:16:10 +04:00
Gustavo J. A. M. Carneiro 678840e368 Port the Histogram and EventGarbageCollector unit tests to the new test framework (bug 675) 2009-09-30 16:15:48 +01:00
Pavel Boyko 72d26cfce9 devices-mesh-flame test suite 2009-09-30 18:21:52 +04:00
Mathieu Lacage cf97b4d86b bug 675: convert unit tests to new test framework 2009-09-30 15:15:18 +02:00
Mathieu Lacage b56a839c44 bug 675: convert unit tests to new test framework 2009-09-30 14:54:53 +02:00
Mathieu Lacage ca736d6e8d merge with HEAD 2009-09-30 14:24:49 +02:00
Mathieu Lacage 2df88d723f bug 675: convert unit tests to new test framework 2009-09-30 14:24:04 +02:00
Gustavo J. A. M. Carneiro 2b5462916b merge 2009-09-30 12:42:20 +01:00
Gustavo J. A. M. Carneiro 25f672a80d Rescan API for Python 2009-09-30 12:41:58 +01:00
Mathieu Lacage b63393d355 remove un-needed code 2009-09-30 13:32:48 +02:00
Mathieu Lacage fcf9745f91 fix stupid test conversion error 2009-09-30 13:23:54 +02:00
Mathieu Lacage 1ea9a29793 remove stupid XXX 2009-09-30 13:20:10 +02:00
Andrey Mazo f4ab1d87c6 Add explicit typecasts for gcc-4.1.2 2009-09-30 13:15:16 +02:00
Pavel Boyko 1441c8c8f5 devices/mesh unit tests ported to new framework 2009-09-30 14:33:30 +04:00
Mathieu Lacage 3cd32263ef merge with HEAD 2009-09-30 11:09:35 +02:00
Mathieu Lacage 1d515320dc fix old bug: canceled destroy events are expired 2009-09-30 11:09:18 +02:00
Mathieu Lacage f7e39fc9f3 bug 675: convert unit tests to new test framework 2009-09-30 11:08:57 +02:00
Mathieu Lacage 09576cd905 according to C language lawyers, this construct is undefined. In practice, its gcc definition is not what you want: the variable content is read before calling DoRun, and is ored+stored after calling DoRun. 2009-09-30 10:50:03 +02:00
Craig Dowell 88d279cf2d Remove and replace basic random number unit tests (bug 675) 2009-09-29 21:44:59 -07:00
Craig Dowell 5b8d79baf0 Remove and replace traced-callback unit tests (bug 675) 2009-09-29 20:45:27 -07:00
Craig Dowell a03edd5fcc If test suite not found, return failure 2009-09-29 19:58:29 -07:00
Craig Dowell 7f89c4c222 Remove and replace object unit tests (bug 675) 2009-09-29 12:34:07 -07:00
Craig Dowell 797adcf36e fix test.py -v 2009-09-29 10:16:17 -07:00
Pavel Boyko dc1fdc9b11 wifi: bandwidth fixed for 5MHz modes 2009-09-29 19:08:28 +04:00
Mathieu Lacage c5d81b203d merge with HEAD 2009-09-29 16:47:10 +02:00
Mathieu Lacage 88185c4b33 bug 675: convert unit tests to new test framework 2009-09-29 16:46:41 +02:00
Mathieu Lacage 8fc1f7f02a merge with HEAD 2009-09-29 16:30:51 +02:00
Mathieu Lacage 65e4c20ca2 forgot to add template testcase 2009-09-29 16:30:38 +02:00
Josh Pelkey 3bb03a5e1b Bug 682: UdpEchoClient does not reset socket on StopApplication 2009-09-29 10:30:23 -04:00
Mathieu Lacage 40904e24ad bug 675: convert unit tests to new test framework 2009-09-29 16:26:40 +02:00
Josh Pelkey e519d6ef5d merge 2009-09-29 10:12:57 -04:00
Mathieu Lacage ae88f3d16f bug 675: convert unit tests to new test framework 2009-09-29 16:04:27 +02:00
Josh Pelkey 5b02c55613 Bug 680, moving trace source over to channel 2009-09-29 09:58:00 -04:00
Mathieu Lacage 06c72254f1 I know why we need to return false uncondtionally 2009-09-29 15:49:37 +02:00
Mathieu Lacage 7b2f633033 bug 675: convert unit tests to new test framework 2009-09-29 15:47:41 +02:00
Mathieu Lacage cefaefd2a6 Bug 675: convert unit tests to new test framework 2009-09-29 11:30:43 +02:00
Mathieu Lacage 7af21e6700 Bug 675: convert unit tests to new test framework 2009-09-29 11:17:27 +02:00
Mathieu Lacage 4ff82bbda4 bug 675: convert unit tests to new unit test framework 2009-09-29 11:01:07 +02:00
Craig Dowell 3a11ae353d update tcp interop response vectors 2009-09-28 21:57:59 -07:00
Craig Dowell 9ff06c2408 fix name service unit test 2009-09-28 20:18:49 -07:00
Craig Dowell 2fec093fad Add Names::Clear 2009-09-28 20:12:45 -07:00
Craig Dowell 100a7b1994 get rid of names silly singleton and rescan 2009-09-28 19:39:49 -07:00
Craig Dowell 00ff28fa0f Windows needs entire path 2009-09-28 17:18:12 -07:00
Craig Dowell 6be3b4fe52 branch merge 2009-09-28 10:11:05 -07:00
Craig Dowell 57ff196581 Remove multiprocessing dependency in test.py 2009-09-28 10:04:32 -07:00
Pavel Boyko 6f8649e209 merge 2009-09-28 19:40:30 +04:00
Tom Henderson ab0ebeb35d merge with tip 2009-09-28 01:06:47 -07:00
Tom Henderson d80e9fc4ac Add wifi-interference test suite 2009-09-28 01:06:21 -07:00
Mathieu Lacage 725e77c03f fix build for gcc 3.4.6 2009-09-28 09:57:03 +02:00
Mathieu Lacage 9d5b7aa3db workaround lack of multiprocessing module 2009-09-28 09:35:51 +02:00
Tom Henderson b6fcdf98e6 Add sample test suite file 2009-09-27 23:51:23 -07:00
Tom Henderson dc9a6f22cb remove obsolete samples/main-test.cc 2009-09-27 23:46:10 -07:00
Duy Nguyen b831c95b85 Update multirate.cc example 2009-09-27 13:13:18 -07:00
Duy Nguyen 9a598e255e Bug 666: Fixed wifi rates off by factor of 1000000 in ascii output 2009-09-27 00:35:38 -07:00
Tom Wambold 9965713943 fix memory leaks 2009-09-26 08:44:20 -07:00
Mathieu Lacage f60e34c899 allow --check --valgrind to pass again 2009-09-26 16:55:06 +02:00
Duy Nguyen 04e650f6f1 Fixed minstrel error: unnecessary UpdateStats in DoGetRtsMode 2009-09-25 22:25:58 -07:00
Craig Dowell 95177cc4a4 Remove and repalce global-value unit test (bug 675) 2009-09-25 18:18:19 -07:00
Craig Dowell 4e68f4c711 remove, not ifdef out 2009-09-25 17:39:44 -07:00
Craig Dowell c1711788e0 Remove and replace config unit test (bug 675) 2009-09-25 17:37:33 -07:00
Duy Nguyen 7ffc7371db Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc 2009-09-25 14:38:12 -07:00
Craig Dowell 8c2d2cb0dd Remove and replace Callback unit test, add examples to test.py 2009-09-25 14:10:28 -07:00
Craig Dowell 58566fbb42 branch merge 2009-09-25 10:38:55 -07:00
Craig Dowell 5fd64b422f remove names.cc unit test (bug 675) 2009-09-25 10:38:36 -07:00
Andrey Mazo 937b0149f2 Bug 681: wrong compilation options for icpc (Intel C/C++ Compiler) 2009-09-25 12:28:32 +01:00
Gustavo J. A. M. Carneiro 3c16533c21 Put back the configure check to disable python bindings in cygwin, due to our inability to install gccxml in cygwin. 2009-09-25 12:15:27 +01:00
Gustavo J. A. M. Carneiro 4cbaa7c8f4 merge 2009-09-25 11:48:05 +01:00
Craig Dowell 02c9beac45 Remove and replace type traits unit test (bug 675) 2009-09-24 23:48:35 -07:00
Tom Wambold b86c706b6b PacketBB: Tidy up some memory leaks. 2009-09-24 18:05:36 -04:00
Craig Dowell c1d415cbee branch merge 2009-09-24 12:15:33 -07:00
Craig Dowell dd98ef2ee9 Remove and replace CommandLine BVT (bug 675) 2009-09-24 12:15:14 -07:00
Tom Wambold 615c4eb4d5 Merge ns-3-dev. 2009-09-24 10:57:41 -04:00
Craig Dowell b712ca8fab crashing examples should print red in html 2009-09-23 15:38:36 -07:00
Tom Wambold 68096ac918 remove and replace packetbb unit tests (bug 675) 2009-09-23 15:35:26 -07:00
Craig Dowell b40ea0f3b5 branch merge 2009-09-23 15:20:41 -07:00
Craig Dowell 8f7f202b7e Remove and replace attribute unit tests (bug 675) 2009-09-23 15:20:23 -07:00
Aleksey Kovalenko 912e6dc45a bug 687: Build failed with GSL in non-default location 2009-09-23 20:48:43 +04:00
Tom Henderson 500edb252d Testing document edits 2009-09-23 08:37:09 -07:00
Mathieu Lacage a0dbfe494e bump up nsc version requirement 2009-09-23 08:57:40 +02:00
Tom Henderson 8cff1e1cfd Manual formatting fixes 2009-09-22 20:54:05 -07:00
Mathieu Lacage 904a2b4410 bug 643: Interference Helper does not account properly for simultaneous events 2009-09-22 17:33:03 +02:00
Gustavo J. A. M. Carneiro 16835e0b5d Python: allow multiple api definitions directories, one per data model. 2009-09-22 16:13:42 +01:00
Duy Nguyen d9f4c30720 Fixed Minstrel rate potential seg fault due to calling UpdateStats before being initialized 2009-09-21 23:44:59 -07:00
Craig Dowell b803da1d39 Add a ChannelList namespace (bug 680) 2009-09-21 11:21:05 -07:00
Gustavo J. A. M. Carneiro 6214778dc3 Rescan API for Python 2009-09-21 17:53:43 +01:00
Gustavo J. A. M. Carneiro 023fa2e874 Upgrade to upstream WAF 1.5.9 plus a bunch of 'waf tools' layered on top. 2009-09-21 10:59:21 +01:00
Tom Henderson 1a246bf628 fix test document build 2009-09-19 21:38:12 -07:00
Tom Henderson 8f50776516 fix manual build 2009-09-19 16:24:55 -07:00
Craig Dowell 578024650f move net-anim to contrib 2009-09-18 15:07:12 -07:00
Craig Dowell 25974ce348 ===================================================================
new file mode 100644
2009-09-18 14:14:34 -07:00
Sebastien Vincent 361382a57c Merge with ns-3-dev. 2009-09-18 22:20:27 +02:00
Sebastien Vincent 9f16bba32e Fix some doxygen warnings revealed by WARN_NO_PARAMDOC=YES in doc/doxygen.conf. 2009-09-18 22:18:06 +02:00
Josh Pelkey c13f67a457 Minor documentation typo 2009-09-18 12:59:01 -04:00
Sebastien Vincent fac12d7448 Doxygenize. 2009-09-18 18:21:15 +02:00
Josh Pelkey 4273c4d1ba Merge NixVector Routing code 2009-09-18 10:32:07 -04:00
Gustavo J. A. M. Carneiro 81fc7f1bf5 Add an example with Wifi, OLSR, and Flow Monitor. 2009-09-18 12:27:17 +01:00
Gustavo J. A. M. Carneiro f3fcf457ec merge 2009-09-18 11:44:13 +01:00
Gustavo J. A. M. Carneiro e3477c5525 rescan python bindings so that FlowMonitor::GetFlowStats binding works 2009-09-18 11:43:39 +01:00
Kirill Andreev d8587dc1c5 Mesh: fixed peer link reopening - always overwrite peerLinkId. 2009-09-18 14:22:15 +04:00
Sebastien Vincent f19c5ff408 Fix build on g++-4.x. 2009-09-17 07:25:36 +02:00
Sebastien Vincent 0836862402 NdiscCache copy constructor private + python rescan. 2009-09-16 20:08:47 +02:00
Sebastien Vincent afeae4240d Export more IPv6 includes. 2009-09-16 18:56:29 +02:00
Gustavo J. A. M. Carneiro 28f016ad5b merge with ns-3-dev 2009-09-16 15:27:54 +01:00
Gustavo J. A. M. Carneiro d40fbea6de Python bindings rescan 2009-09-16 15:03:25 +01:00
Gustavo J. A. M. Carneiro 80083950b3 Missing code, methods declared but not implemented... 2009-09-16 15:03:00 +01:00
Gustavo J. A. M. Carneiro c3faf85ce2 make sure we run the pybindgen command in --check and --regression 2009-09-16 14:26:46 +01:00
Gustavo J. A. M. Carneiro ffbf0e4221 Export header ie-dot11s-id.h, disable a few copy contructors, to make Python bindings compile. 2009-09-16 14:04:53 +01:00
Gustavo J. A. M. Carneiro 2bd10119d1 merge 2009-09-16 11:01:57 +01:00
Pavel Boyko 11b6f74f26 Build fix for g++ 4.0.4 ('... may be used uninitialized in this function') 2009-09-16 13:28:06 +04:00
Tom Wambold a8a0ce0d13 PacketBB: Converted test script to use new testing framework. 2009-09-15 16:25:49 -04:00
Craig Dowell 865279bd09 branch merge 2009-09-15 11:57:40 -07:00
Craig Dowell a74ef75541 silly typos and add disclaimer 2009-09-15 11:57:12 -07:00
Sebastien Vincent 977aed1d7f Merge with ns-3-dev. 2009-09-15 17:38:08 +02:00
Sebastien Vincent 8cd2f7b8e5 Add a way to disable DAD via an Icmpv6L4Protocol attribute. 2009-09-15 17:32:23 +02:00
Sebastien Vincent 473d80ea54 Fix main-random-topology sample. 2009-09-15 17:29:09 +02:00
Pavel Boyko b51933502b build fix (g++ 4.0.4 and 4.4.0 optimized only) 2009-09-15 19:05:39 +04:00
Ramon Bauza 55bf5fc2e7 Doxy doc for Wifi channel switching 2009-09-15 14:33:04 +02:00
Gustavo J. A. M. Carneiro 13f22f74ca Fix InternetStackHelper::EnableAsciiAll to work with the new Drop signature 2009-09-15 13:01:28 +01:00
Gustavo J. A. M. Carneiro a4036e14fb Modifications to the Ipv6L3Protocol::Drop trace source to align with Ipv4L3Protocol::Drop 2009-09-15 13:00:29 +01:00
Gustavo J. A. M. Carneiro fe07997f95 Fix the example stop time to make regression tests pass again 2009-09-15 12:58:31 +01:00
Mathieu Lacage 5c884dcef4 merge with HEAD 2009-09-15 13:14:37 +02:00
Mathieu Lacage c8949c75a8 put all wifi news together 2009-09-15 13:04:28 +02:00
Gustavo J. A. M. Carneiro 4fff24300a merge with ns-3-dev 2009-09-15 11:35:21 +01:00
Ramon Bauza ddfe9023eb Channel switching support for Wifi 2009-09-15 10:47:02 +02:00
Craig Dowell a9b0bc855a add some words about tracing to the manual 2009-09-15 00:05:36 -07:00
Craig Dowell fc7ea88b35 quiet valgrind in NOTREACHED case 2009-09-14 21:49:43 -07:00
Craig Dowell b3217a0fa8 added words to help understand callbacks 2009-09-14 18:03:30 -07:00
Pavel Boyko f57933cd7d Merge with code.nsnam.org 2009-09-14 10:19:55 +04:00
Pavel Boyko adad3f4b9f Cosmetics 2009-09-14 10:19:33 +04:00
Craig Dowell 55a729aca7 fat fingers 2009-09-13 21:53:06 -07:00
Craig Dowell 52d5749a27 Quiet silly compiler error 2009-09-13 20:29:29 -07:00
Craig Dowell 28346e21ce gcc 3.4 complained about virtual methods without virtual destructor 2009-09-13 15:35:33 -07:00
Tom Wambold 0ae600a3ec merge PacketBB 2009-09-13 09:38:01 -07:00
Craig Dowell ae814b5f5c fc11 is pretty picky about headers 2009-09-12 22:55:20 -07:00
Craig Dowell 05610b3c56 test framework should probably work on all supported machines 2009-09-12 20:00:36 -07:00
Craig Dowell 3ad8ddf899 add test and validation framework 2009-09-12 19:44:17 -07:00
Tom Wambold 124ed7e91b PacketBB: Typo in comment. 2009-09-11 12:16:21 -04:00
Tom Wambold 0785e918e2 PacketBB: A bit more documentation. 2009-09-11 12:11:23 -04:00
Tom Wambold bf9984d28a PacketBB: Removed unnecessary forward declarations. 2009-09-11 12:00:38 -04:00
Tom Wambold 7d7681d6bc PacketBB: Moved from src/contrib to src/node. 2009-09-11 11:52:47 -04:00
Tom Wambold ea886c586f PacketBB: Doxygen documentation. Still have some more I want to write. 2009-09-11 00:52:23 -04:00
Tom Wambold 94bf0517f7 PacketBB: Forgot to add Pbb prefix to enum. 2009-09-10 15:35:16 -04:00
Tom Wambold 0745740c07 PacketBB:: Removed pbb namespace, instead prefix class names with Pbb. 2009-09-10 15:33:23 -04:00
Tom Wambold 2c107a11d6 Merged ns-3-dev. 2009-09-10 15:32:38 -04:00
Kirill Andreev 17a463d970 Merge with ns-3-dev 2009-09-10 15:08:14 +04:00
Kirill Andreev b90238c308 Added 11s description to ELEASE_NOTES, fixed dependencies in building 2009-09-10 15:07:34 +04:00
Gustavo J. A. M. Carneiro acf666912b Switch to the official pybindgen 0.12 release 2009-09-10 11:41:33 +01:00
Kirill Andreev 5cccb40d46 Added comments in mesh.cc 2009-09-10 14:13:48 +04:00
Gustavo J. A. M. Carneiro 06c4210f6c Add a waf --doxygen-no-build option, for a quicker testing loop of doxygen documentation 2009-09-09 11:32:50 +01:00
Gustavo J. A. M. Carneiro c6cb54e62e Fix waf --check error when python bindings are not enabled 2009-09-09 11:31:16 +01:00
Pavel Boyko a128182af9 raw-socket-factory.cc,h removed 2009-09-09 14:23:39 +04:00
Pavel Boyko df9b4a58db doxygen cosmetics 2009-09-09 14:14:00 +04:00
Borovkova Elena d29646249c removed outdated TODO
: Enter commit message.  Lines beginning with 'HG:' are removed.
2009-09-09 13:59:11 +04:00
Borovkova Elena 11ab0b983c merge with ns-3-dev 2009-09-09 12:33:16 +04:00
Borovkova Elena d2c93355a0 preparation for merge with ns-3-dev 2009-09-09 12:19:22 +04:00
Sebastien Vincent d52260e378 Schedule unicast RA in response to RS. 2009-09-08 18:45:44 +02:00
Sebastien Vincent 5db36bee27 Cleanup, reindent, NULL -> 0. 2009-09-08 18:40:47 +02:00
Gustavo J. A. M. Carneiro 796e3d17d8 Doxygen documentation for FlowMonitor 2009-09-08 17:33:05 +01:00
Gustavo J. A. M. Carneiro be1e0dea3f merge with ns-3-dev 2009-09-08 13:57:17 +01:00
Kirill Andreev 61ac2171bd Build fix 2009-09-08 11:41:44 +04:00
Kirill Andreev 3e38891e52 Merge with code.nsnam.org 2009-09-08 11:27:50 +04:00
Sebastien Vincent d114b7872d Add comments about the choice of default route in a two (or more) IPv6 prefixes link. 2009-09-08 07:07:58 +02:00
Sebastien Vincent df6e93bddf Python rescan. 2009-09-08 06:37:37 +02:00
Sebastien Vincent 8cbdcd69c1 [Bug 653] NetDevice link change callback (SetLinkChangeCallback -> AddLinkChangeCallback). 2009-09-08 06:29:26 +02:00
Sebastien Vincent 345a0d99e2 Doxygen. 2009-09-07 18:27:40 +02:00
Sebastien Vincent 9285510a27 Rescan python bindings. 2009-09-07 18:03:20 +02:00
Sebastien Vincent 542d4c31a2 Add metric and longest prefix match support for IPv6. 2009-09-07 18:03:01 +02:00
Kirill Andreev d7d6cf54ff Random variable definitions were removed from conditional code 2009-09-07 16:04:15 +04:00
Gustavo J. A. M. Carneiro aad99865f2 Bug #609: --check and --regression should build only the required binaries 2009-09-07 11:59:10 +01:00
fmoatamr d407199f86 Cast uint32_t into unsigned int for compatibility with cygwin 2009-09-07 11:45:05 +02:00
Guillaume Seguin 381f677bd5 Don't recompute NodeList::End () at every loop in GlobalRouteManagerImpl 2009-09-05 16:31:07 -07:00
Tom Henderson a355cc5bac Fix doxygen errors 2009-09-04 18:02:03 -07:00
Tom Henderson a0612ce1e2 fix logging error for WithdrawRoute () 2009-09-04 17:33:08 -07:00
Tom Henderson 7f0185714a Manual spelling fixes from Johannes Buchner 2009-09-04 17:23:34 -07:00
Sebastien Vincent 5d81bfac00 Fix Python coding style. 2009-09-04 17:27:33 +02:00
Sebastien Vincent 27ae061065 Add IPv6 python example. 2009-09-04 16:25:55 +02:00
Sebastien Vincent c69ee1333b Fix python examples. 2009-09-04 16:23:38 +02:00
Gustavo J. A. M. Carneiro f8002519ad Bug #620: Build system --run target seems to forget copying updated headers 2009-09-04 12:06:54 +01:00
Gustavo J. A. M. Carneiro ab7c536321 Allow ns3moduleheader taskgen with empty list of source headers (for completely optional ns-3 modules) 2009-09-02 17:43:28 +01:00
Kirill Andreev f1fa986e58 Headers: structured 2009-09-02 14:58:36 +04:00
Gustavo J. A. M. Carneiro 6f68b76662 Don't python-bind the class NscTcpL4Protocol, it is implementation detail. 2009-09-02 11:29:23 +01:00
Kirill Andreev 6597544d3c Fix 2009-09-01 23:35:36 +04:00
Kirill Andreev 1368752e4d Fix 2009-09-01 21:21:55 +04:00
Tom Henderson 188b10598c update static routing bindings 2009-08-31 23:38:48 -07:00
Antti Makela df6c8846cd Static routing with support for metrics and longest prefix match 2009-08-31 23:35:16 -07:00
Tom Henderson c3c6f80c7a update global routing bindings 2009-08-31 23:11:29 -07:00
Antti Makela 9248053941 Allow injection of routes to Ipv4GlobalRouting 2009-08-31 23:05:26 -07:00
Gustavo J. A. M. Carneiro f9f81fd6a8 merge 2009-08-31 18:54:46 +01:00
Gustavo J. A. M. Carneiro e29d6c5023 Update Python bindings 2009-08-31 18:53:55 +01:00
Gustavo J. A. M. Carneiro b4ac818c51 Modify example to enable FlowMonitor via command-line option. 2009-08-31 18:53:20 +01:00
Gustavo J. A. M. Carneiro b584261427 Add a new 'flow-monitor' module. 2009-08-31 18:50:38 +01:00
Gustavo J. A. M. Carneiro 623726eeb0 Ipv4L3Protocol::Drop trace source enhanced, and add new SendOutgoing, UnicastForward, and LocalDeliver trace sources, for the FlowMonitor. 2009-08-31 18:48:37 +01:00
Mathieu Lacage 06a961f80c rescan 2009-08-31 15:29:20 +02:00
Mathieu Lacage 49a41d2925 make sure python does not wrap copy constructor and assignment operator 2009-08-31 13:01:48 +02:00
Gustavo J. A. M. Carneiro 43ea214b4f Re-scan Python bindings and use newer PyBindGen. 2009-08-31 11:31:32 +01:00
Gustavo J. A. M. Carneiro f5cdf259cc Make some copy-constructors private, remove not implemented method declarations, to make Python bindings work. 2009-08-31 11:30:47 +01:00
Kirill Andreev 3c972084ee Bugfix 2009-08-28 23:15:26 +04:00
Tom Wambold 6cc6c53031 PacketBB: Added assert checks to the Get*() methods, along with comments. 2009-08-28 10:56:37 -04:00
Kirill Andreev 87a315ca32 doc fixes 2009-08-28 15:06:27 +04:00
Kirill Andreev 8e349455d9 Documenation fixes 2009-08-27 19:56:46 +04:00
Kirill Andreev 7176275cec Dot11s overview moved to dot11s module 2009-08-27 17:23:38 +04:00
Andrey Mazo a9ad9cd51e Some doxygen fixes (spelling, etc). 2009-08-27 16:35:53 +04:00
Kirill Andreev 38e5fe4ec9 Installers moved to src/helper 2009-08-27 13:38:13 +04:00
Kirill Andreev 3f6a30b19c Failed destination is structure of HWMP 2009-08-27 12:57:54 +04:00
Kirill Andreev 730963b6ec Doxygen: fixed warnings 2009-08-27 12:24:22 +04:00
Borovkova Elena e72c9054fe Attributes added 2009-08-27 11:14:39 +04:00
Kirill Andreev 8d82148bf7 Merge with code.nsnam.org 2009-08-26 15:29:03 +04:00
Kirill Andreev 46b0d9d628 Stupid fixes 2009-08-25 20:12:53 +04:00
Kirill Andreev 0f5154d9de Restructured helper - removed MeshInterfaceHelper 2009-08-25 18:16:26 +04:00
Kirill Andreev c29a242067 Code review fixes 2009-08-25 17:21:34 +04:00
Kirill Andreev bf8d1de536 PrintInformation replaced with Prin in information elements, added operator
"<<" for all information elements
2009-08-25 15:27:49 +04:00
Kirill Andreev 42e5bb46f2 Restructured files, removed unneeded includes 2009-08-25 14:37:10 +04:00
Kirill Andreev b207444d5f All information elements are tested inside WifiInformationElementVector test 2009-08-25 14:15:44 +04:00
Kirill Andreev 009d9f8f4e Removed inheritance from Header in WifiInformationElement. TODO: restore unit
tests and Print capability (operator "<<").
2009-08-25 12:52:51 +04:00
Mathieu Lacage 5cd80be903 export headers from internet-stack 2009-08-25 08:52:57 +02:00
Mathieu Lacage 979b638d6a export sgi-hashmap.h 2009-08-25 08:41:04 +02:00
Duy Nguyen d667ae10fc update multi-rate-first.cc and multi-rate-second.cc 2009-08-24 19:11:41 -07:00
Duy Nguyen 0b3a200f65 Fixed WifiMacHeader Print Control Characters bug 661 2009-08-24 19:03:58 -07:00
Duy Nguyen a167b1dbcf Fixed erroneous first return of Normal Variable 2009-08-24 18:31:59 -07:00
Kirill Andreev 1b6137af25 Start to remove inheritance from header in WifiInformationElement 2009-08-24 21:32:41 +04:00
Kirill Andreev 544f915f0e Cosmetics: '\n' was replaced with std::endl, Camel case for attributes 2009-08-24 18:05:31 +04:00
Nicola Baldo 02bc21d977 updated release notes 2009-08-24 13:35:41 +02:00
Nicola Baldo 2dcc93a0ae added AthstatsWifiTraceSink and AthstatsHelper 2009-08-24 13:32:06 +02:00
Nicola Baldo 53f3c0654d new trace sources for WifiRemoteStationManager 2009-08-24 13:09:32 +02:00
Tom Henderson a508d4dd35 fix build issue on radvd casts 2009-08-23 20:54:31 -07:00
Sebastien Vincent 1f8767ac28 second phase of IPv6 checkins from Univ. of Strasbourg team 2009-08-22 14:36:55 -07:00
Tom Henderson d2acbc3eba missing include 2009-08-23 14:00:50 -07:00
Tom Henderson 40359e3f55 Rescan bindings 2009-08-22 15:38:32 -07:00
Tom Henderson 2276ac9097 coding style cleanup 2009-08-22 15:35:15 -07:00
Tom Henderson 18c4ed4f10 allow Ipv4Mask constructor to accept a string /32, /24 etc. in constructor 2009-08-22 15:32:30 -07:00
Antti Makela 6493da4fd5 [bug 634] patch to grab prefix length from Ipv4Mask 2009-08-22 14:58:27 -07:00
Tom Wambold ff9f6045be Added Doxygen comments to PacketBB. 2009-08-21 18:47:36 -04:00
Tom Wambold 2f45cf66bb Typo in PacketBB test. 2009-08-21 16:31:55 -04:00
Tom Wambold f7d03b68c9 Merge from ns-3-dev. 2009-08-21 16:24:02 -04:00
Tom Wambold 5ee5fd9c8c Minor style fixes. 2009-08-21 16:23:41 -04:00
Kirill Andreev 9e65a76f58 Review fixes 2009-08-21 23:33:52 +04:00
Borovkova Elena ddefeb0a16 use Ipv4L3Protocol instead of Ptr<Ipv4Interface> 2009-08-21 18:14:36 +04:00
Kirill Andreev 3e86ad365c Stupid fix 2009-08-20 18:33:57 +04:00
Kirill Andreev 4f836ad0bc Added closing link due to transmission failure. 2009-08-20 18:24:23 +04:00
Borovkova Elena 300d532d5f coding style 2009-08-20 15:33:01 +04:00
Borovkova Elena c40e3aa995 coding style + comments 2009-08-20 13:28:49 +04:00
Borovkova Elena c387240efd forwarding broadcast fixed + sending RERR fixed 2009-08-20 12:39:09 +04:00
Borovkova Elena 0813c9f0eb send to limited broadcast fixed 2009-08-19 16:25:22 +04:00
Borovkova Elena d4e5ff2659 TCP traffic in aodv script 2009-08-19 13:49:41 +04:00
Borovkova Elena 0f7972dbae broadcast UDP traffic in aodv script 2009-08-19 12:41:52 +04:00
Borovkova Elena ecbf4ff88d merge 2009-08-19 12:13:07 +04:00
Pavel Boyko df6c969381 Do not set ttl = 1 for broadcasts 2009-08-19 12:19:04 +04:00
Borovkova Elena 870daaf4c3 udp traffic added into aodv script + problem with remove fixed 2009-08-19 11:51:09 +04:00
Pavel Boyko e18dc41f07 merge + Ip routing protocol reverted 2009-08-19 10:34:32 +04:00
Pavel Boyko afc333e6ce bcast forwarding seems to be fixed 2009-08-19 10:29:51 +04:00
Borovkova Elena dafcde918b RREQ rate limit added 2009-08-18 22:23:13 +04:00
Pavel Boyko 6f1391f19f oops 2009-08-18 20:16:52 +04:00
Pavel Boyko 3ebd5bcaf3 Broken link monitoring fixed, now it works in aodv-with-interface-down test 2009-08-18 20:07:39 +04:00
Borovkova Elena 0ace44eaeb logic checked 2009-08-18 16:40:55 +04:00
Borovkova Elena 8f9572aaf9 unit tests corrected 2009-08-18 16:10:06 +04:00
Pavel Boyko 748cc13acf merge 2009-08-18 15:08:07 +04:00
Pavel Boyko 638c48851e ?? 2009-08-18 15:07:41 +04:00
Pavel Boyko 522bd8dbcc Includes cleanup + layer 2 link failure detection (untested) 2009-08-18 15:07:25 +04:00
Borovkova Elena 2999079c83 problem with protocol number fixed 2009-08-18 14:48:12 +04:00
Kirill Andreev 1efff48918 Standard added to helper 2009-08-18 13:31:37 +04:00
Kirill Andreev 0a23b2294a Merge with code.nsnam.org 2009-08-18 13:25:36 +04:00
Borovkova Elena 44e149b17f RecvReplyAck added 2009-08-18 12:17:49 +04:00
Borovkova Elena 04a0d79e09 merge 2009-08-18 12:02:20 +04:00
Kirill Andreev 679c50dc8f Merge with ns-3-dev 2009-08-18 12:01:35 +04:00
Borovkova Elena e542f6571d raw socket killed 2009-08-18 12:00:59 +04:00
Kirill Andreev 17bfa2237c Added adhoc trace sources fro TxOk and TxError 2009-08-18 11:47:17 +04:00
Borovkova Elena 3958c34492 local repair killed 2009-08-18 11:18:03 +04:00
Borovkova Elena f716cef6c9 expanding ring search killed 2009-08-18 11:03:44 +04:00
Borovkova Elena e1d6d027a6 cosmetics 2009-08-18 10:47:08 +04:00
Craig Dowell 6c58559614 fix build for gcc 3.4 2009-08-17 18:58:54 -07:00
Borovkova Elena 32dfe417fe forwarding RERR corrected 2009-08-17 16:08:52 +04:00
Borovkova Elena 70d84def83 Send RERR message when no active route to forward packet 2009-08-17 15:37:17 +04:00
Borovkova Elena 9ea6170d69 RoutingProtocol::NotifyRemoveAddress added 2009-08-17 13:19:23 +04:00
Borovkova Elena 6472aaac1b RoutingProtocol::NotifyAddAddress added 2009-08-17 12:53:48 +04:00
Borovkova Elena cf5bd2898a RoutingProtocol::NotifyInterfaceDown added 2009-08-17 12:15:55 +04:00
Borovkova Elena 3d47c1076d RoutingProtocol::NotifyInterfaceUp added 2009-08-17 11:23:50 +04:00
Borovkova Elena bd96a9afb7 sending RERR corrected 2009-08-17 10:58:09 +04:00
Borovkova Elena cfb67261a1 local repair in progress 2009-08-14 18:14:16 +04:00
Borovkova Elena 1312321f21 comments added 2009-08-14 16:00:01 +04:00
Borovkova Elena 6a6b097292 Forward broadcasts added 2009-08-14 15:27:30 +04:00
Mathieu Lacage d823f1f47d add doxygen 2009-08-14 12:31:13 +02:00
Mathieu Lacage 2be1c55528 update examples to new standard API 2009-08-14 12:31:08 +02:00
Mathieu Lacage 202ac1ff1e bug 641: forgot to add files. 2009-08-14 12:25:16 +02:00
Mathieu Lacage add3b122d5 merge with HEAD 2009-08-14 12:22:18 +02:00
Mathieu Lacage d365379e45 bug 641: CwMin setting for 802.11b 2009-08-14 12:21:39 +02:00
Mathieu Lacage 893360bfe5 rescan python 2009-08-14 11:53:27 +02:00
Mathieu Lacage 7e5b776cda introduce Vector2D and Vector3D 2009-08-14 11:53:23 +02:00
Borovkova Elena efd9cbeda4 RoutingProtocol::Drop added 2009-08-14 13:47:49 +04:00
Borovkova Elena b25206c736 RoutingProtocol::DropFromQueue killed 2009-08-14 13:35:47 +04:00
Borovkova Elena 693aba6456 sending gratuitous RREP + AckRequired flag control corrected 2009-08-14 13:26:50 +04:00
Gary Pei 9bfce1c7b2 add Standard attribute to wifi-clear-channel-cmu, for clarity 2009-08-13 23:03:13 -07:00
Tom Wambold afe998d27d Adding PacketBB (RFC 5444) library, along with test. 2009-08-13 23:30:03 -04:00
Borovkova Elena a595a94191 aodv script changed 2009-08-13 18:42:13 +04:00
Borovkova Elena 76133f4a25 UpdateRouteToNeighbor changed to take into account case, when route to node exists in routing table with hop count != 1 2009-08-13 17:30:28 +04:00
Borovkova Elena d0206234c8 heuristics of RREP_ACK needs added 2009-08-13 17:16:38 +04:00
Mathieu Lacage fe570568ec rescan python 2009-08-13 13:39:23 +02:00
Nicola Baldo e8fa8c79ab bug 644: make sure we set standard and frequency correctly in radiotap output 2009-08-13 13:39:14 +02:00
Mathieu Lacage 2cced11f1e merge with HEAD 2009-08-13 13:12:44 +02:00
Mathieu Lacage 990b54684c bug 654: avoid segfault with ConfigStore loading 2009-08-13 13:12:16 +02:00
Guillaume Seguin 0ff784c41f use ascii writer 2009-08-13 12:54:22 +02:00
Guillaume Seguin c11373476e add an ascii writer class 2009-08-13 12:54:21 +02:00
Wilson Thong e0160608a7 bug 638: add missing tx trace source 2009-08-13 09:47:53 +02:00
Nicola Baldo 605ca58e9b bug 639: add configurable capture size to pcap 2009-08-13 09:36:53 +02:00
Nicola Baldo 0372fed519 bug 639: Buffer::CopyData is buggy. 2009-08-13 09:36:16 +02:00
Mathieu Lacage ba865deb53 add duy nguyen, sort list alphabetically 2009-08-13 09:09:53 +02:00
Duy Nguyen 5ed18f1374 add minstrel examples 2009-08-13 09:06:17 +02:00
Mathieu Lacage b632c051c7 rescan python 2009-08-13 09:06:01 +02:00
Mathieu Lacage 11679dc9c5 stub release notes for 3.6 2009-08-13 08:47:59 +02:00
Duy Nguyen 63802def20 add an implementation of the minstrel rate control algorithm 2009-08-13 08:45:47 +02:00
Kirill Andreev 7106d93481 Fixed broadcast propagation in FLAME 2009-08-12 20:49:39 +04:00
Gustavo J. A. M. Carneiro 0ceaecc18f Reorder the #includes in ns3module_helpers.cc to solve Fedora 11 compilation error 2009-08-12 12:07:25 +01:00
Tom Henderson 3ae5224641 fix Ipv4 doxygen error 2009-08-11 21:29:18 -07:00
Borovkova Elena e57621c017 aodv script changed 2009-08-08 23:55:26 +04:00
Tom Henderson 925f920b09 document how to assign attributes in constructor 2009-08-07 16:02:06 -07:00
Tom Henderson b93690cac7 fix manual for ConfigStore 2009-08-07 15:34:45 -07:00
Borovkova Elena bbf0d83c54 comments added 2009-08-07 14:48:22 +04:00
Duy Nguyen dc035d6142 fix for bug 650 (PacketSocket Close() 2009-08-06 21:58:04 -07:00
Borovkova Elena 7e98d72e1e in progress 2009-08-07 00:19:37 +04:00
Borovkova Elena e45e252c0d jitter added for hello 2009-08-06 20:43:17 +04:00
Borovkova Elena 0c65bd0c60 optimizations made configurable 2009-08-06 20:05:18 +04:00
Kirill Andreev e2503ee3a5 Removed constructor from header 2009-08-06 13:11:15 +04:00
Kirill Andreev 288264f0d4 Exponential retry timer for PREQ 2009-08-06 13:09:02 +04:00
Tom Henderson 7d21df488f Implement UdpSocketImpl::Close () 2009-08-05 20:53:44 -07:00
Pavel Boyko 2228a32b8f Route lookup removed in ARP request (see bug 606) 2009-08-06 10:23:12 +04:00
Borovkova Elena fc9ae9ff5e change functions for convenience 2009-08-05 23:35:50 +04:00
Borovkova Elena 0b13bf2538 SendPacketFromRawSocket = BuildPacket + socket->SendTo() 2009-08-05 23:04:55 +04:00
Borovkova Elena c895721193 forwarding detached from RouteInput 2009-08-05 19:19:32 +04:00
Borovkova Elena 143cab923c #define AODV_PORT killed 2009-08-05 18:33:24 +04:00
Borovkova Elena 3d2b412854 comments added 2009-08-05 18:26:17 +04:00
Borovkova Elena 0f8ad51058 unit test for neighbors repaired 2009-08-05 17:55:12 +04:00
Borovkova Elena 9ad9527983 merge 2009-08-05 15:27:54 +04:00
Borovkova Elena 334ffeedb5 merge 2009-08-05 15:27:42 +04:00
Borovkova Elena e43fa493b0 routing table's timer moved in class RoutingTable 2009-08-05 14:51:05 +04:00
Borovkova Elena 2c9182fc2f neighbor's timer moved in class Neighbors 2009-08-05 13:56:12 +04:00
Pavel Boyko d89e091991 linux build fix 2009-08-05 12:50:19 +04:00
Borovkova Elena 523ab1d67a unit test for neighbors added 2009-08-05 12:14:59 +04:00
Borovkova Elena ef43a73292 neighbors moved in separate class 2009-08-04 23:01:35 +04:00
Pavel Boyko 1d9111f6e8 Fix ping to corretly receive late replies 2009-08-04 19:26:50 +04:00
Pavel Boyko 857a574763 include fixed 2009-08-04 19:10:27 +04:00
Borovkova Elena dadcb2e987 logic checking in progress 2009-08-04 17:50:00 +04:00
Kirill Andreev 4b03fa559f Fixed FLAME add path 2009-08-04 17:35:24 +04:00
Kirill Andreev ca157f44e6 Fixed seqno overflow 2009-08-04 14:57:35 +04:00
Borovkova Elena a2a7f2452e D and G flags moved in protocol parameters 2009-08-04 14:33:32 +04:00
Borovkova Elena 216f82e8e4 unit test for IdCache added 2009-08-04 14:12:09 +04:00
Borovkova Elena 7fafca570e unit tests updated 2009-08-04 13:26:12 +04:00
Borovkova Elena 7f2befa7c5 unit test for RequestQueue updated 2009-08-04 12:08:36 +04:00
Kirill Andreev e69fddf279 Removed stupid output 2009-08-03 19:22:42 +04:00
Kirill Andreev 042aee0756 Added path update to FLAME 2009-08-03 19:13:46 +04:00
Borovkova Elena df87716f54 cosmetics 2009-08-03 18:54:00 +04:00
Borovkova Elena 6318535586 id cache moved in separate class 2009-08-03 18:42:39 +04:00
Borovkova Elena 23efe1bd23 defines in aodv-rqueue.h killed + fields hadles in QueueEntry added 2009-08-03 15:07:02 +04:00
Borovkova Elena dd7358c578 unit test for routing table updated 2009-08-03 14:09:24 +04:00
Borovkova Elena 27e86764f4 unit test for routing table entry added 2009-08-03 00:27:43 +04:00
Pavel Boyko b228fa8ac9 AODV cosmetics 2009-08-02 15:19:07 +04:00
Borovkova Elena f331f69856 aodv crash test changed to fail for 60 nodes in disc and 1 node 155 m apart from the disc 2009-08-02 00:32:00 +04:00
Borovkova Elena 94b98cdbf9 expanding ring search added 2009-08-01 23:01:05 +04:00
Borovkova Elena b472f81bae route lifetime management fixed 2009-08-01 21:47:33 +04:00
Borovkova Elena 34b3df714e finding duplicated broadcast packet by packet uid 2009-08-01 11:08:30 +04:00
Borovkova Elena 0b297aa835 ./waf --run aodv_crash (when size=63 work well, but when size=64 fail) 2009-07-31 20:57:25 +04:00
Kirill Andreev fd2bfa29c1 Fix 2009-07-31 19:38:26 +04:00
Kirill Andreev 736101135a Removed unneded changes from wifi 2009-07-31 18:32:29 +04:00
Kirill Andreev 2d3da91bc6 Merge with code.nsnam.org 2009-07-31 18:09:24 +04:00
Kirill Andreev 99aa60cd0a Added root mesh point as argument of command line 2009-07-31 17:52:18 +04:00
Borovkova Elena c33f835d4a Attributes added 2009-07-31 17:11:11 +04:00
Kirill Andreev a09c1311a8 Removed FindFirst from WifiInformationElement 2009-07-31 17:08:42 +04:00
Kirill Andreev 11fdc00dd7 Added wifi-information-element-vector 2009-07-31 14:13:10 +04:00
Borovkova Elena a7434537b2 sending broadcast aodv packet fixed 2009-07-31 10:47:26 +04:00
Borovkova Elena bfec349d77 RecvReply changed to respond properly to receive RREP with origin address != receiver address, but == local address of another interface 2009-07-30 11:14:47 +04:00
Borovkova Elena cc4a5ac145 RawSocketImpl::ForwardUp fixed 2009-07-29 13:52:00 +04:00
Borovkova Elena 9570bff635 routing table changed 2009-07-29 11:47:06 +04:00
Kirill Andreev c2f0400867 Fixed order in which we add queues to mac 2009-07-29 11:19:59 +04:00
Kirill Andreev d1aa099ffe Fix 2009-07-28 20:26:59 +04:00
Kirill Andreev 6318ca7f71 QosFix 2009-07-28 20:22:15 +04:00
Borovkova Elena ff7cc0bd55 BuildHeader added + support of raw socket in ipv4-l3-protol added 2009-07-28 14:23:22 +04:00
Tom Henderson c4145809c9 bug 642: allow multiple InternetStackHelpers to be instantiated 2009-07-27 23:04:19 -07:00
Borovkova Elena 807146f0b0 Raw socket nearly work 2009-07-27 14:47:14 +04:00
Kirill Andreev 901998af20 Removed HwmpRtable::LookupResult constructor code from header. 2009-07-27 14:05:20 +04:00
Borovkova Elena 7d2132a408 raw socket added 2009-07-26 22:22:00 +04:00
Tom Henderson 61672f39a8 Fix first.py example 2009-07-26 07:25:19 -07:00
Borovkova Elena 674c57afcd SendRouteReplyAck() added 2009-07-26 11:15:52 +04:00
Kirill Andreev 57634eb170 back out Radiotap header change causing regression 2009-07-24 07:04:29 -07:00
Borovkova Elena 75c7c95047 Send aodv control traffic to the next hop rather then to the destination. 2009-07-24 14:48:55 +04:00
Borovkova Elena c3c7eeaece consmetics 2009-07-24 11:47:26 +04:00
Borovkova Elena 5baccd07dc logic checking in progress 2009-07-23 22:11:23 +04:00
Kirill Andreev 41e7ba85df Fixed seqno in HWMP 2009-07-23 13:39:51 +04:00
Borovkova Elena 901fbd8cba work in progress 2009-07-22 18:46:33 +04:00
Kirill Andreev b153f09d7f Merge with code.nsnam.org 2009-07-22 16:57:12 +04:00
Kirill Andreev 8c54424eeb Restored newline at namespace 2009-07-22 16:43:43 +04:00
Kirill Andreev 647fee7062 Fixes of coding style 2009-07-22 16:13:32 +04:00
Kirill Andreev 4ccf679752 Fixed coding style 2009-07-22 15:56:55 +04:00
Kirill Andreev b7e2438171 Fixed coding style 2009-07-22 14:52:42 +04:00
Kirill Andreev 2791a25065 Fixed coding style in helpers and mesh 2009-07-22 13:31:31 +04:00
Borovkova Elena 2de6522e11 handle active neighbors added 2009-07-22 11:37:06 +04:00
Borovkova Elena 00f4f789b3 control of duplicated packet added 2009-07-21 19:06:06 +04:00
Kirill Andreev be731d808b Removed dynamic_cast 2009-07-21 15:49:24 +04:00
Borovkova Elena 1b12ecd266 send RERR message in progress 2009-07-21 15:19:16 +04:00
Kirill Andreev e4f7983686 Statistics removed from headers 2009-07-21 13:14:52 +04:00
Kirill Andreev 1fb5e143a7 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
changes: added {} and spaces befor '('
2009-07-21 12:51:09 +04:00
Kirill Andreev a92d4f714d removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed. 2009-07-21 11:33:27 +04:00
Borovkova Elena e71ccacf11 buffering data packets added 2009-07-20 17:54:05 +04:00
Borovkova Elena 1aab193845 queue modified 2009-07-20 15:15:55 +04:00
Borovkova Elena 893f157c27 queue modified 2009-07-20 15:13:36 +04:00
Borovkova Elena cc490dc774 hello messeges added 2009-07-17 16:12:26 +04:00
Borovkova Elena 0f89af7fd3 SendReplyByIntermediateNode added 2009-07-17 14:27:53 +04:00
Borovkova Elena ba02be81fa seqno comparision corrected 2009-07-17 11:10:23 +04:00
Borovkova Elena dd67b92ac9 mothods, classes and members renamed 2009-07-16 18:25:49 +04:00
Kirill Andreev bbb9ae6dd3 Fixed review comments 2009-07-16 17:57:23 +04:00
Pavel Boyko 0888097992 Review issue 88093: Minor changes in wifi module needed by 802.11s 2009-07-16 16:55:20 +04:00
Pavel Boyko 5665cf136d merge 2009-07-16 15:57:19 +04:00
Pavel Boyko dae8a0debb Initial multichannel support in Yans Wifi PHY. 2009-07-16 15:56:42 +04:00
Mathieu Lacage 82f915fd5a fix optimized build for true 2009-07-16 13:40:56 +02:00
Mathieu Lacage 4b26cca7e6 rescan python 2009-07-16 13:12:34 +02:00
Kirill Andreev a5f9327d99 Merge with ns3aodv 2009-07-16 14:58:10 +04:00
Pavel Boyko 93e0c1aa13 Duplicate detection fixed in RREQ forwarding 2009-07-16 15:00:40 +04:00
Kirill Andreev 989fa61160 Merge with code.nsnam.org 2009-07-16 14:57:43 +04:00
Mathieu Lacage cf7de38ffd bug 381: Wifi crashes on shutdown 2009-07-16 12:31:26 +02:00
Borovkova Elena f230195568 merge 2009-07-16 14:17:51 +04:00
Borovkova Elena a407d1cca2 Ptr<Ipv4Route> added in routing table 2009-07-16 14:15:54 +04:00
Kirill Andreev a3cac79763 Bug 625: Wrong calculation of GetAccessGrantStart in DcfManager. 2009-07-16 13:51:12 +04:00
Nicola Baldo 890bd62643 fixed g++-3.4 build 2009-07-16 11:19:43 +02:00
Pavel Boyko 400781292e AODV copyright changed to IITP 2009-07-16 12:24:41 +04:00
Kirill Andreev add92d0ed5 Merge with ns3dev 2009-07-16 11:51:46 +04:00
Kirill Andreev 9adc1a454a Merge with ns-3-dev 2009-07-16 11:51:24 +04:00
Mathieu Lacage 52d2d61105 fix optimized build 2009-07-15 14:59:44 +02:00
Mathieu Lacage 0d45e73575 merge with HEAD 2009-07-15 14:49:37 +02:00
Borovkova Elena 1a35817041 UpdateNeighbor fixed 2009-07-15 16:35:22 +04:00
Pavel Boyko 759dbef290 merge 2009-07-15 16:04:29 +04:00
Pavel Boyko 2cc95146d6 size bug in aodv example fixed 2009-07-15 16:03:57 +04:00
Borovkova Elena 004156cd28 header flags fixed 2009-07-15 15:41:42 +04:00
Borovkova Elena 6ae41a5dc7 RecvReply fixed 2009-07-15 15:09:14 +04:00
Nicola Baldo 85f7e477a8 made InterferenceHelper::CalculateTxDuration () static 2009-07-15 13:06:11 +02:00
Pavel Boyko e05b15814c ARP SendReply() fixed to not use routing 2009-07-15 14:17:30 +04:00
Borovkova Elena d168543db9 in process 2009-07-15 12:39:17 +04:00
Mathieu Lacage 9028ab74c9 make sure memory is initialized 2009-07-15 08:36:41 +02:00
Pavel Boyko 93ed50fad1 AODV protocol in progress 2009-07-14 18:11:25 +04:00
Pavel Boyko f38e5b6a5f RREQ reveived 2009-07-14 17:12:05 +04:00
Pavel Boyko dfd1652a5c AodvProtocol in progress, doesn't work 2009-07-14 16:05:23 +04:00
Pavel Boyko 6c7a56b7ba SendRequest seems to be fixed 2009-07-14 15:08:31 +04:00
Borovkova Elena 64b50db66e raw socket 2009-07-14 13:45:21 +04:00
Pavel Boyko 898e82c24c TODO fixed 2009-07-14 10:02:12 +04:00
Pavel Boyko cbc99d1850 merge 2009-07-14 09:44:09 +04:00
Pavel Boyko 08630a05ec ChannelId -> ChannelNumber and also in the base class WifiPhy 2009-07-14 09:43:58 +04:00
Ramon Bauza 70c0c5b283 Support for 5 and 10Mhz wifi channels 2009-07-13 14:30:12 +02:00
Borovkova Elena 5291cb4040 SendRequeat in progress 2009-07-13 15:04:31 +04:00
Mathieu Lacage 04b32fd736 bug 627: Jakes Propagation Loss Model doesn't properly calculate signal loss 2009-07-13 09:57:32 +02:00
Pavel Boyko ced9c50874 Use operator== instead of operator!= in NS_TEST_ASSERT_EQUAL 2009-07-13 09:07:02 +02:00
Borovkova Elena 38329a3d2c merge 2009-07-13 09:11:55 +04:00
Borovkova Elena 5250bf3963 merge 2009-07-13 09:05:07 +04:00
Craig Dowell f4e1452ceb emu device shouldn't be adding an FCS 2009-07-10 11:56:35 -07:00
Craig Dowell 1dd403987a harden emu net device against malformed packets 2009-07-10 09:50:24 -07:00
Kirill Andreev eb148dc987 Fix 2009-07-10 18:43:24 +04:00
Kirill Andreev 52b975e332 Removed test tag adding 2009-07-10 18:31:24 +04:00
Kirill Andreev 7aaec2d39b QoS in 802.11s implementation 2009-07-10 18:30:39 +04:00
Kirill Andreev 9ee9ec1c49 Initial QoS implementation in 802.11s 2009-07-10 17:59:20 +04:00
Borovkova Elena c789247dce RecvRequest added 2009-07-10 10:02:21 +04:00
Borovkova Elena 1ca8e61615 Set, Get methods for aodv_rt_entry added 2009-07-09 20:53:03 +04:00
Borovkova Elena 2abc08f9ef BroadcastId methods and SendRequest() added 2009-07-09 20:34:34 +04:00
Borovkova Elena 2f0a14da72 BroadcastId methods and SendRequest() added 2009-07-09 20:11:46 +04:00
Borovkova Elena 3fa9b9df05 BroadcastIdCache methods and SendRequest() added 2009-07-09 19:52:34 +04:00
Pavel Boyko 6395eae87d AODV logs 2009-07-09 16:20:03 +04:00
Pavel Boyko 4dac3c28d1 Use ping in AODV example + multiple V4Ping enhancements to produce pingish output 2009-07-09 16:07:04 +04:00
Pavel Boyko f18d57cae6 AODV example added. Use ./waf --run aodv 2009-07-09 14:44:08 +04:00
Kirill Andreev 0794ff9ac6 PREQ, PREP overflow is handled correctly 2009-07-09 14:07:14 +04:00
Pavel Boyko 9c53293f9e AodvHelper just added 2009-07-09 12:54:21 +04:00
Borovkova Elena 1042689880 TypeHeader added 2009-07-09 12:26:48 +04:00
Tom Henderson fe614e6e90 fix bug preventing the sending of packets to a local IP address (bug 632) 2009-07-08 21:45:23 -07:00
Kirill Andreev a2e6fed026 Action values are made in accordance with Draft3.0 2009-07-09 00:07:53 +04:00
Tom Henderson 1817b596db a few more doxygen fixes 2009-07-08 10:47:22 -07:00
Tom Henderson e56c013bb1 fix doxygen errors 2009-07-08 10:05:39 -07:00
Kirill Andreev 5bb7f77f3d Fixed PERR propagation 2009-07-08 18:45:39 +04:00
Kirill Andreev c915b08c75 Fixed overflow 2009-07-08 17:06:37 +04:00
Kirill Andreev 3e87d2038e Bugfix 2009-07-08 15:38:57 +04:00
Gustavo J. A. M. Carneiro 97615b3dfc Bug 628: Virtual Net Device's DoDispose doesn't clean up properly; patch by Antti Mäkelä. 2009-07-08 11:14:16 +01:00
Kirill Andreev 37ea473a91 HWMP-Statistics: added number of initiated PREQ, PREP, PERR 2009-07-08 13:50:43 +04:00
Kirill Andreev ae6b314c1f Fixed PREQ propagation, added comments to PREQ information element 2009-07-08 13:42:46 +04:00
Mirko Banchi 7c019c2ef3 coding style 2009-07-07 23:48:03 +02:00
Mirko Banchi 9cd2aaf73e coding style 2009-07-07 23:43:47 +02:00
Mathieu Lacage ceccfdbb80 avoid excessive calls to GetObject during topology construction 2009-07-07 21:18:01 +02:00
Borovkova Elena 051a833eaf AODV_Precursor killed 2009-07-07 18:39:57 +04:00
Borovkova Elena 7c51201748 replacement of the vector by a map in rtable 2009-07-07 18:27:53 +04:00
Mathieu Lacage 37f9bb6100 kill confusing virtual keywords 2009-07-07 16:18:55 +02:00
Pavel Boyko a9da8ac9e7 Permissions corrected 2009-07-07 17:45:08 +04:00
Pavel Boyko aa99830fa6 AODV RoutingProtocol stub finished 2009-07-07 17:31:43 +04:00
Pavel Boyko 12fcc9d9d9 AODV protocol copy-paste in progress 2009-07-07 16:28:01 +04:00
Pavel Boyko 66ec73863f aodv::RoutingProtocol just added 2009-07-07 15:23:12 +04:00
Mathieu Lacage 1da654aeb0 kill dead code 2009-07-07 13:05:23 +02:00
Mathieu Lacage d90fd1db17 add StaticCast to mirror DynamicCast and ConstCast 2009-07-07 13:03:21 +02:00
Pavel Boyko 4629147ade merge 2009-07-07 13:42:58 +04:00
Pavel Boyko f27ae1792b packets cosmetics 2009-07-07 13:41:03 +04:00
Borovkova Elena 70205ec810 print header + cosmetics 2009-07-07 13:06:17 +04:00
Borovkova Elena 42a15f1229 cosmetics 2009-07-07 12:42:15 +04:00
Borovkova Elena e02d95fa41 cosmetics 2009-07-07 12:11:45 +04:00
Borovkova Elena 14ece96f9d hello message header 2009-07-07 12:07:31 +04:00
Borovkova Elena ebd942a1e5 merge 2009-07-07 11:27:15 +04:00
Borovkova Elena 7d21770a21 RERR header unit test 2009-07-07 11:03:54 +04:00
Pavel Boyko b0ef7b6fa3 doxygen cosmetics 2009-07-07 09:40:18 +04:00
Borovkova Elena 3cde38f92f RERR header 2009-07-06 23:01:03 +04:00
Borovkova Elena 6a32ee2209 RREP_ACK unit test 2009-07-06 22:58:31 +04:00
Borovkova Elena 736fbc07e6 RREP_ACK header 2009-07-06 22:57:10 +04:00
Borovkova Elena 7bee848ad0 RREP unit test 2009-07-06 22:54:19 +04:00
Borovkova Elena 8b09ce91da RREP header 2009-07-06 22:51:52 +04:00
Kirill Andreev 288a157a07 Added comments and statistics to flame 2009-07-06 14:31:55 +04:00
Pavel Boyko 5c44d2ec15 RREQ unit test 2009-07-06 12:54:22 +04:00
Pavel Boyko 5224425588 Rtable cosmetics + RREQ header 2009-07-06 12:44:34 +04:00
Borovkova Elena 150fcb3ac8 comments added 2009-07-05 17:32:12 +04:00
Borovkova Elena 9c3edb1309 aodv_rtable unit test added 2009-07-05 16:59:03 +04:00
Pavel Boyko 083c2e7780 doxy fix 2009-07-05 12:28:45 +04:00
Pavel Boyko 39743c8656 merge with ns-3.5 2009-07-05 11:42:32 +04:00
Mathieu Lacage 7b134cbafb merge with HEAD 2009-07-04 08:54:33 +02:00
Mathieu Lacage 9d5557f7b9 bring back the -dev version number 2009-07-04 08:53:44 +02:00
Mathieu Lacage e3015a9df6 Added tag ns-3.5 for changeset c975274c9707 2009-07-04 08:15:48 +02:00
Mathieu Lacage a5e2a67564 bump version number 2009-07-04 08:14:57 +02:00
Mathieu Lacage c07a0c5116 tweaks 2009-07-04 08:14:38 +02:00
Craig Dowell e9fc1f1d73 branch merge 2009-07-03 08:27:22 -07:00
Craig Dowell fefc37fb32 updates to manual for 3.5 2009-07-03 08:26:52 -07:00
Gustavo J. A. M. Carneiro 3b71ecc23c More virtual-net-device.cc bug fixes 2009-07-03 16:15:06 +01:00
Gustavo J. A. M. Carneiro a937e5b60e merge 2009-07-03 14:14:25 +01:00
Gustavo J. A. M. Carneiro e53734ed32 Add doxygen for BridgeHelper 2009-07-03 14:12:28 +01:00
Pavel Boyko 24522ff844 Unit test for rqueue added 2009-07-03 16:42:51 +04:00
Nicola Baldo bf7bb688d8 merged ns-3-dev 2009-07-03 13:52:20 +02:00
Pavel Boyko 62d10ad156 AODV rqueue fixes 2009-07-03 15:50:19 +04:00
Nicola Baldo 6bdfdc8dc5 implemented GlobalValue::GetValueByName () 2009-07-03 13:43:43 +02:00
Unknown a24a8fef88 AODV queue added 2009-07-03 15:09:25 +04:00
Gustavo J. A. M. Carneiro ebc34d951b Fix the virtual-net-device.cc example; thanks Antti Mäkelä. 2009-07-03 11:17:38 +01:00
Craig Dowell 1d0f46f3a3 updates to manual for 3.5 2009-07-03 08:26:52 -07:00
Gustavo J. A. M. Carneiro 41a77b945e Add doxygen for BridgeHelper 2009-07-03 14:12:28 +01:00
Gustavo J. A. M. Carneiro 4884b6da1f Fix the virtual-net-device.cc example; thanks Antti Mäkelä. 2009-07-03 11:17:38 +01:00
Pavel Boyko 1f8626e16e mails updated + boyko 2009-07-03 12:59:49 +04:00
Pavel Boyko 7f008d667f Code cleanup for merge into the mainline 2009-07-03 12:02:30 +04:00
Mathieu Lacage f1d5f90af7 tweak doxygen 2009-07-03 09:08:01 +02:00
Pavel Boyko 80909769fa MeshPointDevice::SetAddress () 2009-07-03 10:10:25 +04:00
Pavel Boyko 5f0da2733d merge with ns-3-dev (3.5 rc3) 2009-07-03 09:59:04 +04:00
Tom Henderson 3ce8fe78e7 fix internet-stack figures 2009-07-02 22:36:44 -07:00
Tom Henderson 46a5e35038 fix internet-stack figures 2009-07-02 22:10:38 -07:00
Tom Henderson 6f9dada430 some fixes to the manual for IPv4 refactoring 2009-07-02 21:57:00 -07:00
Mathieu Lacage 138b79f906 get rid of some doxygen warnings 2009-07-02 16:38:53 +02:00
Mathieu Lacage 3da4a8e241 add file to avoid stupid warning. 2009-07-02 16:33:35 +02:00
Mathieu Lacage 49755eba49 merge with HEAD 2009-07-02 15:35:52 +02:00
Mathieu Lacage db1bc136af use the new global value anchors to reference RngSeed and RndRun 2009-07-02 15:33:27 +02:00
Mathieu Lacage 35a025338e add an anchor for each generate documentation for a GlobalValue 2009-07-02 15:33:08 +02:00
Mathieu Lacage 2cb7749057 document how a GlobalValue can be set from the command-line and with an environment variable 2009-07-02 15:32:37 +02:00
Andrey Hippo cfc93e2f83 escape html special characters 2009-07-02 15:13:27 +02:00
Andrey Hippo a3bc8265a8 download url should point to allinone tarball 2009-07-02 15:11:03 +02:00
Tom Henderson b49f043827 document global routing API changes 2009-07-02 05:38:33 -07:00
Pavel Boyko 8e3b38b9d7 cosmetics 2009-07-02 14:52:34 +04:00
Pavel Boyko 8f7f51dc0b AODV routing table added 2009-07-02 14:44:44 +04:00
Pavel Boyko 6d411613c3 wscript added 2009-07-02 13:39:00 +04:00
Pavel Boyko 67e0e1e574 RFC added 2009-07-02 13:36:19 +04:00
Craig Dowell 84e4408f47 update tutorial for ns-3.5 2009-07-01 23:08:07 -07:00
Andrey Mazo 96117dfbf4 fix flags (de)serialization in PREQ;
improve some bit operations.
2009-07-01 21:54:24 +04:00
Mathieu Lacage 3fa62efbe7 merge 2009-07-01 14:39:25 +02:00
Mathieu Lacage 8c0433d154 typo 2009-07-01 14:38:43 +02:00
Mathieu Lacage a1315b7194 Added tag ns-3.5-rc3 for changeset a600c11ff8d4 2009-07-01 12:47:40 +02:00
Craig Dowell 80ce2b0bd4 remove dead code 2009-07-01 09:28:06 +02:00
Craig Dowell 19206d13d6 branch merge 2009-06-30 23:58:56 -07:00
Craig Dowell 8058603715 quiet optimizer 2009-06-30 23:58:10 -07:00
Andrey Hippo 122c7489ea bug 618: angle paranthesis in CHANGES.html 2009-07-01 08:20:39 +02:00
Craig Dowell 70a75e4503 bug 521. Ipv4 global routing inefficient. Updated Tom's patch 2009-06-30 23:15:04 -07:00
Craig Dowell 25ca1e2099 quiet valgrind during attribute initialization 2009-06-30 10:31:11 -07:00
Pavel Boyko 2cd65e7585 XML reports simplified for better parsing 2009-06-30 18:13:44 +04:00
Gustavo J. A. M. Carneiro a496294283 Print the names of unit tests that fail in the task collector 2009-06-30 10:46:57 +01:00
Tom Henderson 771e01ad47 (bug 613) Tcp should NotifyDataRecv () when a FIN arrives 2009-06-26 19:05:28 -07:00
Tom Henderson 5da5708745 (bug 427) Tcp Close() should not call ShutdownSend() 2009-06-26 19:27:34 -07:00
Craig Dowell 8d1a3986a1 branch merge 2009-06-29 21:39:49 -07:00
Craig Dowell 256e72cd82 Fix bug 579 -- TCP congestion window is not updated whent segment size chages 2009-06-29 21:38:35 -07:00
Ewgenij Starostin 31b09df563 Fix 559, cpSocketImpl doesnt free endpoint quickly enough after being closed 2009-06-29 14:35:32 -07:00
Mathieu Lacage ee31b9fcfe add missing Ptr<Packet> argument. Pointed out by josh pelkey 2009-06-29 13:24:10 +02:00
Tom Henderson 0fd3dc8487 Fix comments on dynamic-global-routing.cc example 2009-06-26 19:21:53 -07:00
Mathieu Lacage 7e4f136def Added tag ns-3.5-rc2 for changeset 8562a42accf6 2009-06-26 15:56:14 +02:00
Mathieu Lacage 4f278bd3da merge with HEAD 2009-06-26 15:38:03 +02:00
Mathieu Lacage f14081b9e9 bug 600: lower the default routing priority of Ipv4GlobalRouting; move to helper 2009-06-26 15:34:16 +02:00
Mathieu Lacage bb9b379e0a buggy attribute definitions. 2009-06-26 15:31:20 +02:00
Kirill V. Andreev af3c9b638e bug 610: Wrong PointerChecker in attribute of Ipv4Interface 2009-06-26 15:27:39 +02:00
Kirill V. Andreev 93d827a8dd bug 595: PHY may start receive packet inside SIFS. Fix stray assert 2009-06-26 15:25:51 +02:00
Mathieu Lacage 651267d6f4 update RELEASE_NOTES in preparation of rc2 2009-06-26 13:58:03 +02:00
Gustavo J. A. M. Carneiro a95927ec17 bug 596: unbounded tcp queue is evil 2009-06-26 13:40:14 +02:00
Mathieu Lacage 74f0f8d9fe rewrite tcp test application to handle short writes correctly 2009-06-26 13:39:35 +02:00
Gustavo J. A. M. Carneiro d1a4ff3a99 bug 605: Nqsta MAC should ignore beacons SSIDs while waiting for association response 2009-06-26 12:57:29 +02:00
Mathieu Lacage a5edf27444 update bindings 2009-06-26 10:56:59 +02:00
Tom Henderson c2c9ee3b2f bug 63: allow enabling or disabling ip forwarding on a per-interface basis 2009-06-26 10:56:51 +02:00
Mathieu Lacage 6c41c5295b add documentation for new wifi rate control algorithms 2009-06-26 10:48:35 +02:00
Tom Henderson fdaf01581e bug 608: painful to enable logging of all wifi components 2009-06-26 10:35:46 +02:00
Mathieu Lacage db9d8c377e rescan bindings 2009-06-26 09:55:45 +02:00
Josh Pelkey ac0905c49a bug 592: Ipv4RoutingProtocol::RouteOutput needs a packet pointer argument for reactive protocols 2009-06-26 09:55:36 +02:00
Mathieu Lacage 12251420b1 bug 601: Small typo in SequenceControlSmaller 2009-06-26 09:46:21 +02:00
Guillaume Seguin 7f407e72a7 bug 604: Simulator::SetImplementation buggy 2009-06-26 08:58:05 +02:00
Ma Keith bd55dff429 bug 607: AttributeList::Deserialize buggy 2009-06-26 08:56:13 +02:00
Mathieu Lacage 79457aef53 merge with HEAD 2009-06-25 15:26:44 +02:00
Kirill V. Andreev f2eac3fe7a bug 595: PHY may start receive packet inside SIFS 2009-06-25 15:25:10 +02:00
Mathieu Lacage 0a600a2958 go back to ns-3-dev VERSION 2009-06-25 14:31:09 +02:00
Mathieu Lacage 2f00f47bd6 Added tag ns-3.5-rc1 for changeset 13a5b15fbe34 2009-06-25 14:30:46 +02:00
Mathieu Lacage 3d7639ca76 3.5-rc1 2009-06-25 14:30:40 +02:00
Mathieu Lacage 91530cf31b make dist generation work again 2009-06-25 14:15:27 +02:00
Mathieu Lacage 1a6af370ed ignore emacs backup files 2009-06-25 09:21:18 +02:00
Mathieu Lacage ff9f48f46e fix mingw regression tests 2009-06-25 09:07:44 +02:00
Mathieu Lacage 4b60e5a518 update ignore rules 2009-06-25 09:07:31 +02:00
Tom Henderson 47562ea031 do not assert if remote side of a PointToPoint link doesn't participate in global routing 2009-06-24 21:53:55 -07:00
Tom Henderson fe7629c55b update bindings 2009-06-24 15:31:53 -07:00
Pavel Boyko c7cbb7cf7c cosmetics 2009-06-22 21:18:44 +04:00
Pavel Boyko 1811703940 RX/TX/FWD stats in MeshPointDevice 2009-06-22 21:14:30 +04:00
Pavel Boyko 9941bfd7af Flame review 2009-06-22 14:39:25 +04:00
Tom Henderson ff9be7595d WifiHelper method to enable all Wifi logging 2009-06-19 20:26:51 -07:00
Tom Henderson 8a340adfe9 some wifi manual updates 2009-06-24 14:35:07 -07:00
Gustavo J. A. M. Carneiro 227f2f134d When comparing regression traces, ignore newline differences for text files (.tr and .mob extensions); this makes regression testing in win32/mingw pass. 2009-06-24 19:38:59 +01:00
Gustavo J. A. M. Carneiro 14254434a3 merge 2009-06-24 18:43:04 +01:00
Gustavo J. A. M. Carneiro b0976ab1ae Fix win32/mingw bug running commands with command-template: needed to escape backslashes before calling shlex.split(). 2009-06-24 18:42:07 +01:00
Gustavo J. A. M. Carneiro 4b6439b386 Handle WindowsError exception in subprocess.Popen called from _run_argv 2009-06-24 16:12:09 +01:00
Unknown f3f00a8548 Minor tweak to stats example. 2009-06-24 10:57:52 -04:00
Unknown b296219099 Minor tweaks to stats API. 2009-06-24 10:43:52 -04:00
fmoatamr dba53a8651 Bug 456: doxygen introspection for trace source config paths is wrong 2009-06-24 09:45:31 +02:00
Francesco Malandrino de2872bf8b New Zipf random variable 2009-06-23 22:42:09 -07:00
Craig Dowell 6e8b7012e7 Finally make tap bridge work with VMs (bug 569) 2009-06-23 22:12:35 -07:00
Craig Dowell c3b6466263 Allow UDP echo client to specify packet contents 2009-06-23 19:44:57 -07:00
Craig Dowell 2216302dd8 remind v4ping.cc that echo data is variable length 2009-06-22 18:29:43 -07:00
Craig Dowell fb7c0f99fb variable size buffer for icmpv4 echo header 2009-06-22 18:08:01 -07:00
Tom Henderson b16dec0d2a rescan bindings 2009-06-21 23:38:40 -07:00
Tom Henderson 9f286430dd move list routing and static routing to src/routing directories 2009-06-21 23:32:23 -07:00
Tom Henderson d7289c1901 Remove Ipv4Interface::GetMtu () 2009-06-21 22:36:43 -07:00
Tom Henderson 441cedb655 cleanup ip alias unfinished cases (bug 591) 2009-06-21 22:29:08 -07:00
Tom Henderson 21fb8dd090 avoid using non-portable reverse iterator methods 2009-06-19 14:12:59 -07:00
Tom Henderson 9e75028723 merge with tip 2009-06-19 07:51:57 -07:00
Tom Henderson de1319ba77 fix examples and documentation for CalcChecksum changes 2009-06-19 07:50:05 -07:00
Faker Moatamri de1a37f41f Bug 597: Ns-3 doesn't compile under MingWin 2009-06-19 16:49:09 +02:00
Tom Henderson ba656765ea rescan bindings 2009-06-19 07:25:40 -07:00
Kirill Andreev 6a3fcbce7c Broadcast timer bugfix 2009-06-19 14:13:35 +04:00
Kirill Andreev 9beea07f8f Merge with code.nsnam.org 2009-06-19 12:58:35 +04:00
Kirill Andreev 43f91caa75 Flame bugfixes 2009-06-19 12:38:01 +04:00
Mathieu Lacage a202b567d1 forgot to add bindings for new module 2009-06-19 09:17:08 +02:00
Mathieu Lacage e8a4113e96 bug 491: It is painful to enable all checksums 2009-06-19 09:13:29 +02:00
Tommaso Pecorella c79635f21e bug 562: bug in TagBuffer::WriteU64 2009-06-19 09:06:35 +02:00
Kirill V. Andreev bf807a4681 bug 585: NAV bug 2009-06-19 09:04:27 +02:00
Mathieu Lacage c8c45ce693 update for API changes 2009-06-19 09:01:26 +02:00
Mathieu Lacage 0d5554a509 make CreateObject<> behave like Create<>: use positional constructor arguments rather than attribute lists. 2009-06-19 08:43:58 +02:00
Mathieu Lacage 4d3208e9df merge with head 2009-06-19 08:37:15 +02:00
Mathieu Lacage 6282187a57 kill unused method 2009-06-19 08:36:48 +02:00
Kirill Andreev 867841acf6 One of the most stupid bugs..... 2009-06-19 00:00:55 +04:00
Kirill Andreev e193f3f640 Fixed seqno and ttl filter: changed order 2009-06-18 20:52:43 +04:00
Kirill Andreev c1e54cc959 Fixes 2009-06-18 20:12:32 +04:00
Kirill Andreev 209dc98078 Flame: added correct seqno filtering, added broadcast timers 2009-06-18 19:50:39 +04:00
Kirill Andreev 63d344aae7 Fixed names 2009-06-18 18:25:50 +04:00
Kirill Andreev 628ac9bca7 Fixed names: now protocols are called *-protocol.[h,cc], plugin is called
*-protocol-mac.[cc,h]
2009-06-18 18:07:22 +04:00
Kirill Andreev c468013d95 Fixed peer link status notification 2009-06-18 16:51:28 +04:00
Kirill Andreev c9536cdbf0 Initial flame implementation 2009-06-18 16:50:52 +04:00
Kirill Andreev 666a0102bd Restructured L2RoutingProtocol: added cleanup function, which deletes all tags
and headers
2009-06-18 13:50:43 +04:00
fmoatamr 8f565ad9dd Bug 589: UdpSocketImpl unit test is leaking 2009-06-18 11:43:40 +02:00
Kirill Andreev 43dbadd11b Flame stack initialized 2009-06-17 20:37:32 +04:00
Mathieu Lacage e66efe0eaf remove dead code 2009-06-17 17:05:51 +02:00
Kirill Andreev 43fde668f1 Restructured installers 2009-06-17 18:50:57 +04:00
Kirill Andreev 49fe4a8b4f Added flame tag 2009-06-17 17:24:34 +04:00
Kirill Andreev 5c20e81c3c Added flame rtable, fixed DoDispose in HwmpRtable 2009-06-17 16:29:13 +04:00
Gustavo J. A. M. Carneiro a16a9ab36f merge with ns-3-dev 2009-06-17 12:07:25 +01:00
Kirill Andreev 21dd821e5f Added FLAME header 2009-06-17 14:28:09 +04:00
Gustavo J. A. M. Carneiro 1fd46789b4 Bug #594: cygwin won't build. 2009-06-17 11:26:36 +01:00
Kirill Andreev 0a8c64ab1b Fixes 2009-06-16 19:23:23 +04:00
Kirill Andreev 618c7cbeea Merge 2009-06-16 18:21:23 +04:00
Kirill Andreev e6ac62ac02 Fixed MBCA 2009-06-16 18:20:34 +04:00
Pavel Boyko 0bb18e90df merged with nsnam 2009-06-16 17:58:16 +04:00
Pavel Boyko 84e9d6f051 Beacon interval is 0.5s by default 2009-06-16 17:58:06 +04:00
Craig Dowell 1207fdcbd2 update dox for waf --check 2009-06-15 15:42:32 -07:00
Andrey Hippo 582b959a4d tuturial fixes 2009-06-15 15:22:33 -07:00
Kirill Andreev 78d6c249ba Fixed PrintInformation method in dot11s-ie-* 2009-06-15 20:38:30 +04:00
Kirill Andreev 4c5918dcf7 Removed unneded if 0 -- endif 2009-06-15 19:31:30 +04:00
Kirill Andreev 77b3ed6cb9 added 'const' label to packet in MeshPointDevice::Forward and
L2RoutingProtocol::RequestRoute
2009-06-15 19:06:23 +04:00
Pavel Boyko 9e1e68aa10 merge 2009-06-15 18:42:23 +04:00
Pavel Boyko 5305c93156 bugfix in MeshPointDevice::ReceiveFromDevice () 2009-06-15 18:42:11 +04:00
Kirill Andreev 2f09fc13dd Fixed peer management state machine 2009-06-15 18:14:06 +04:00
Kirill Andreev ac436ea5d3 Fixed tests, removes NS_ASSERT (false) 2009-06-15 18:02:09 +04:00
Aleksey Kovalenko 84e4417867 ignore events in peer-link state machine 2009-06-15 14:02:18 +04:00
Pavel Boyko cc543c37cf cosmetics 2009-06-15 13:22:44 +04:00
Pavel Boyko 9e3201285f Faker's code review response 2009-06-15 13:10:56 +04:00
Tom Henderson 9de325a34c correct a few XXX in the Ipv4L3Protocol class 2009-06-14 20:57:52 -07:00
Tom Henderson 9dadd7c543 remove obsolete XXX from UdpHeader API 2009-06-14 20:53:29 -07:00
Tom Henderson e86857b5c6 fix for bug 588 2009-06-13 15:57:04 -07:00
Tom Henderson 6a0ad8f80f Fix bug 587 for ListRoutingProtocol bug; add unit test 2009-06-13 14:59:35 -07:00
Tom Henderson 234df20364 Move Ipv4ListRouting to src/internet-stack; get rid of Impl class 2009-06-12 14:43:22 -07:00
Mathieu Lacage 0dca6fc55c Remove static routing dependencies in code 2009-06-12 13:44:19 -07:00
Gustavo J. A. M. Carneiro 30bf674bb5 merge 2009-06-12 12:33:57 +01:00
Gustavo J. A. M. Carneiro 31af526c8b Run unit tests as indenpendent WAF tasks 2009-06-12 12:33:37 +01:00
Gustavo J. A. M. Carneiro 17eaca49f3 Upgrade to WAF 1.5.8 2009-06-12 12:33:21 +01:00
Gustavo J. A. M. Carneiro 701f1e4285 Don't remove all tags, only the SocketAddressTag. 2009-06-12 10:31:19 +01:00
Gustavo J. A. M. Carneiro 608435583c Remove packet tags before reinjecting the packet into the stack 2009-06-11 16:12:11 +01:00
Gustavo J. A. M. Carneiro 3b32d5c813 merge 2009-06-11 16:02:58 +01:00
Gustavo J. A. M. Carneiro 00d790a27b VirtualNetDevice: Single Receive() (promisc. one); add trace sources to align better with CsmaNetDevice. Add SetAddress() 2009-06-11 16:02:10 +01:00
Mathieu Lacage fa6d46b9ea document default 2009-06-10 23:09:04 +02:00
Kirill Andreev a24f67f48d Merge after bug 556 2009-06-10 20:26:44 +04:00
Kirill Andreev 76deab84af Fixed names 2009-06-10 18:57:27 +04:00
Kirill Andreev 11c6653265 Fixed removing tag when pass packet to upper layer 2009-06-10 17:33:12 +04:00
Kirill Andreev d8b0835ea6 GetTypeId removed from classes, not inherited from Object 2009-06-10 15:41:23 +04:00
Mathieu Lacage 282f653bed register missing constructors 2009-06-10 11:13:49 +02:00
Kirill Andreev 429802873b Fix 2009-06-10 13:02:39 +04:00
Kirill Andreev fce22caf9e Added dot11s installator, fixed bug with adding tag in proactive mode of HWMP 2009-06-10 12:51:49 +04:00
Mathieu Lacage f58cfa0e5f move global routing code into global routing directory 2009-06-10 08:36:51 +02:00
Kirill Andreev 1716b106dc Helper restructure: done 2009-06-09 21:14:42 +04:00
Kirill Andreev 71a4eb6a10 Restructured mesh - helper 2009-06-09 21:08:32 +04:00
Gustavo J. A. M. Carneiro 42a6040d16 merge 2009-06-09 18:00:52 +01:00
Gustavo J. A. M. Carneiro 858f8d61f1 Make the value returned by VirtualNetDevice::IsPointToPoint configurable. 2009-06-09 18:00:24 +01:00
Gustavo J. A. M. Carneiro 14167f7052 cleanup virtual netdevice example 2009-06-09 17:48:51 +01:00
Gustavo J. A. M. Carneiro e5d8b21954 Rename TapNetDevice to VirtualNetDevice 2009-06-09 17:42:57 +01:00
Kirill Andreev f3201b79cf Added interface helper 2009-06-09 20:13:11 +04:00
Tom Henderson f39c6618ba fix doxygen collision 2009-06-09 06:47:18 -07:00
Tom Henderson 45685b2ad5 add two AUTHORS 2009-06-09 06:10:09 -07:00
Mathieu Lacage 355aaab7c9 rescan python 2009-06-09 09:21:48 +02:00
Mathieu Lacage d05448114d use packet tags rather than byte tags to match TcpSocketImpl and UdpSocketImpl 2009-06-09 09:13:42 +02:00
Mathieu Lacage 6baf920c89 merge 2009-06-09 09:06:04 +02:00
Craig Dowell 6f09987703 fix build 2009-06-08 16:58:28 -07:00
Mathieu Lacage b1dc85e1c7 no need to keep around a Ptr<Packet> 2009-06-08 16:45:13 +02:00
Mathieu Lacage 2ae6d337a3 don't call PeekData if we can 2009-06-08 16:44:21 +02:00
Mathieu Lacage 1825edbc27 no need to call PeekData+memcpy. use CopyData instead 2009-06-08 16:43:55 +02:00
Mathieu Lacage d0ae1f4850 avoid extra memory allocations when using PcapWriter 2009-06-08 16:43:21 +02:00
Mathieu Lacage a0d182c7d8 CopyData is more efficient than a PeekData+memcpy pair 2009-06-08 16:42:06 +02:00
Mathieu Lacage f7785146ea merge 2009-06-08 15:11:04 +02:00
Mathieu Lacage e58334e8bd Backed out changeset d21a2eafb84d 2009-06-08 15:10:49 +02:00
Andrey Mazo bde21dc52e Merge changes from ns-3-dev. 2009-06-08 16:30:52 +04:00
Mathieu Lacage 4b82af5fd1 bug 580: doxygen introspection does not document global values 2009-06-08 14:14:04 +02:00
Kirill V. Andreev 882c2646d1 bug 584: NAV duration is set incorrectly in MacLow::DoNavResetNow 2009-06-08 13:50:38 +02:00
Pavel Boyko 77efe54de3 merge fix 2009-06-08 15:48:46 +04:00
Kirill V. Andreev 1cea99ae5c bug 581: error in double include of dcf-manager.h 2009-06-08 13:47:04 +02:00
Mathieu Lacage a6df997965 bug 583: Simulator::SetImplementation not implemented 2009-06-08 13:44:51 +02:00
Pavel Boyko 3ee1c61439 merge fix 2009-06-08 15:42:43 +04:00
Kirill V. Andreev 7f4d04d9f7 bug 556: DcfManager does not handle AckTimeout properly when there are multiple queues 2009-06-08 13:37:30 +02:00
Pavel Boyko d18f8da347 Large merge with nsnam 2009-06-08 15:12:15 +04:00
Mathieu Lacage 4af7bfa985 doh. stupid, stupid, untested typo. 2009-06-08 09:43:47 +02:00
Mathieu Lacage 22f1c511e2 remove dead reference to EnableMetadata 2009-06-08 09:24:25 +02:00
Tom Henderson e58859c824 update manual for new tag API 2009-06-08 09:22:29 +02:00
Mathieu Lacage 8dfb6eb0dc merge with HEAD 2009-06-08 09:19:00 +02:00
Tom Henderson ea17ed970e main-ptr sample program was left out of build 2009-06-05 09:46:08 -07:00
Kirill Andreev e418326f6a Mesh id cosmetic fixes 2009-06-05 16:06:25 +04:00
Craig Dowell f240bf1ecd update to new trace hook in object-names example 2009-06-04 12:07:48 -07:00
Kirill Andreev a24a335900 Fix 2009-06-04 16:43:15 +04:00
Kirill Andreev 1e8079187f Fixed setting slot and sifs time to mac-low 2009-06-04 16:42:37 +04:00
Pavel Boyko 378f02680c merge 2009-06-04 10:51:23 +04:00
Pavel Boyko e8606c8cc2 HWMP attributes uinteger -> boolean fix 2009-06-04 10:51:13 +04:00
Mathieu Lacage 92d6541dfc remove byte tags too 2009-06-04 08:41:27 +02:00
Mathieu Lacage 421ea7d458 update documentation 2009-06-04 08:41:15 +02:00
Mirko Banchi 86fe6ca4ea aggregated MSDUs must not lose their tags 2009-06-03 20:58:39 +02:00
Mathieu Lacage dc7bfd5411 fix build with gcc 3.4.6 2009-06-03 17:42:22 +02:00
Mathieu Lacage a0ba80de4b make it fit on my monitor 2009-06-03 17:42:13 +02:00
Mathieu Lacage 3acde4b6c5 rescan python bindings 2009-06-03 17:40:03 +02:00
Kirill Andreev 41732e3923 Airtime link metric is documented 2009-06-03 18:58:35 +04:00
Mathieu Lacage 3550e0ffb0 update AUTHORS 2009-06-03 13:19:06 +02:00
Mathieu Lacage 774f0929d9 merge with HEAD 2009-06-03 13:17:23 +02:00
Mathieu Lacage c442b0788b remove duplicate filename declaration 2009-06-03 13:17:04 +02:00
Nicola Baldo 22f45c914a added support for radiotap and prism headers 2009-06-03 11:53:26 +02:00
Mathieu Lacage 023ee11f37 bug 535: UDP/TCP ShutdownRecv incorrect 2009-06-03 10:04:51 +02:00
Mathieu Lacage 77014e909b bug 561: CommandLine based programs should exit with non-zero return if bad parameters are given 2009-06-03 10:02:25 +02:00
Mathieu Lacage 0560edaa40 bug 550: NetDevice::GetChannel method need clarification 2009-06-03 09:48:31 +02:00
Mathieu Lacage a8e074d6e3 new tags 2009-06-03 08:49:40 +02:00
Mathieu Lacage 661691fdc3 merge with HEAD 2009-06-02 19:46:01 +02:00
Mathieu Lacage 1a7d263bfa Backed out changeset b7faa7398d1e 2009-06-02 19:45:03 +02:00
Pavel Boyko 833865e151 bug 572: Tag offsets not updated in Packet::PeekData 2009-06-02 19:40:05 +02:00
Gustavo J. A. M. Carneiro 05705c796c api docs fixes 2009-06-02 18:35:05 +01:00
Mathieu Lacage e2516b5ef1 merge with HEAD 2009-06-02 16:38:24 +02:00
Mathieu Lacage 3cac2b93bb improve logging output 2009-06-02 16:37:41 +02:00
Mathieu Lacage ec6fbe54f4 add missing log call 2009-06-02 16:23:39 +02:00
Kirill Andreev ef7e07f86b Fixed TTL 2009-06-02 10:44:31 +04:00
Kirill Andreev 2ca7f6c030 Fix 2009-06-01 19:31:33 +04:00
Kirill Andreev ce74646584 Fix 2009-06-01 18:52:46 +04:00
Kirill Andreev 7bffd94f45 Airtime metric fixed 2009-06-01 18:46:20 +04:00
Kirill Andreev 24f016c79c Added dropped TTL field to stats 2009-06-01 14:06:11 +04:00
Kirill Andreev 3bfe1464a1 Statistics fixed 2009-06-01 13:11:30 +04:00
Kirill Andreev fd3e71d7f8 Fix 2009-06-01 12:39:42 +04:00
Kirill Andreev 2b4fcb6436 Merge 2009-06-01 12:33:02 +04:00
Kirill Andreev a688fb2751 Fixed dublicates in broadcasts 2009-06-01 12:32:37 +04:00
Tom Henderson fd3a3f8881 more doxygen cleanup 2009-05-31 22:11:52 -07:00
Tom Henderson 81bde7afdf Doxygen cleanup 2009-05-30 15:20:56 -07:00
Tom Henderson c689bb0303 some revisions to the routing section of the manual 2009-05-30 10:38:27 -07:00
Gustavo J. A. M. Carneiro 3cc72e4626 merge 2009-05-30 17:37:38 +01:00
Gustavo J. A. M. Carneiro 5839b484bb Add an example for TapNetDevice 2009-05-30 17:36:50 +01:00
Gustavo J. A. M. Carneiro 7c33f16166 Remove TapNetDevice::[GS]etName; a couple of bug fixes. 2009-05-30 17:36:29 +01:00
Tom Henderson ddb42cdc0d Enable EmuNetDevice for multicast, based on underlying device (bug 571) 2009-05-29 06:40:34 -07:00
Tom Henderson 017a9d1a79 add comment about NS_OBJECT_ENSURE_REGISTERED() macro to the manual 2009-05-29 13:33:20 -07:00
Pavel Boyko a784a4b2bb merge 2009-05-29 16:47:28 +04:00
Mathieu Lacage bf0c6fa9db fix link on osx 2009-05-29 14:44:12 +02:00
Pavel Boyko 69eb2191f2 Correct merge + Tag -> ByteTag changes 2009-05-29 16:40:24 +04:00
Pavel Boyko f7fdbd7ca8 merge 2009-05-29 15:54:23 +04:00
Pavel Boyko 6f24e0879d RemoveAllTags -> RemoveAllByteTags 2009-05-29 15:54:15 +04:00
Kirill Andreev 93532bca9b Fixed build 2009-05-29 12:57:54 +04:00
Mathieu Lacage 8470920dd1 fix build 2009-05-29 10:22:31 +02:00
Pavel Boyko db498d9f24 merge 2009-05-29 10:15:32 +04:00
Pavel Boyko 3feb3c9a24 merge with nsnam.org 2009-05-29 10:15:19 +04:00
Tom Henderson d135c7a71c api changes and release notes for IPv4 routing rework 2009-05-28 21:41:45 -07:00
Tom Henderson 1191db6cd4 bindings/ changes for IPv4 routing rework 2009-05-28 21:38:49 -07:00
Tom Henderson b002b52934 examples/ changes for IPv4 routing rework 2009-05-28 21:38:06 -07:00
Tom Henderson f2804fd500 src/ and utils/ changes for IPv4 routing rework 2009-05-28 21:37:25 -07:00
Mathieu Lacage 04f4929b8f update RELEASE_NOTES 2009-05-28 20:16:56 +02:00
Gary Pei 7b6bf39786 802.11b PHY support 2009-05-28 20:10:27 +02:00
Gary Pei a5f5038994 Fixed propagation loss model 2009-05-28 20:09:28 +02:00
Mathieu Lacage 96a75ab17e merge with head 2009-05-28 18:25:53 +02:00
Timo Bingmann 80c6afdc9d typo 2009-05-28 18:24:41 +02:00
Timo Bingmann b216bebf29 const cleanup 2009-05-28 18:21:05 +02:00
Timo Bingmann 22e869d829 test propagation loss models 2009-05-28 18:19:51 +02:00
Timo Bingmann b6c91e78f8 Nakagami propagation loss model from ns2 2009-05-28 18:19:23 +02:00
Timo Bingmann 76b4f1840b increment precision of PI 2009-05-28 18:15:23 +02:00
Gustavo J. A. M. Carneiro 522b2711da Pull in new pybindgen version for bug fixes 2009-05-28 17:13:44 +01:00
Timo Bingmann 53f38a0f41 const cleanup 2009-05-28 17:52:17 +02:00
Mathieu Lacage 7e2cb3dd60 move GetEifsNoDifs to DcfManager 2009-05-28 17:49:52 +02:00
Timo Bingmann c818ab2eb3 move GetEifsNoDifs to DcfManager 2009-05-28 17:49:38 +02:00
Mirko Banchi f299e0e1cc last amsdu subframe in an A-MSDU should have no padding 2009-05-28 11:07:41 +02:00
Andrey Mazo 4366a32cd8 Moving to IEEE 802.11s Draft 3.0 (Mesh Control Field, Beacon Timing Element):
fix Mesh Control field:
		Mesh Flags bit endianness,
		Mesh Sequence Number byte endianness;
	fix Action Category names;
	fix Beacon Timing Element neighbors field deserialization.
2009-05-27 17:40:28 +04:00
Kirill Andreev b5797604c0 Added link metric report IE 2009-05-27 16:48:02 +04:00
Andrey Mazo 450348d5db Moving to IEEE 802.11s Draft 3.0 (Mesh Configuration Element)
fix Mesh Capability field;
	remove old protocol Identifiers;
	fix links to the draft.
2009-05-25 17:04:53 +04:00
Pavel Boyko 443a4c44ba assert 2009-05-25 11:00:17 +04:00
Gustavo J. A. M. Carneiro 7605d91dbe Add TapNetDevice (formerly known as VirtualNetDevice) 2009-05-24 16:18:20 +01:00
Mathieu Lacage d103e5418c Don't allow pybindgen version greater than our requested version, to avoid python scanning generating backward incompatible API defs. 2009-05-24 11:39:41 +01:00
Andrey Mazo 9b72ea8005 Moving to IEEE 802.11s Draft 3.0:
changed Reason Codes;
	changed Element IDs.
Added Capability field initialization.
2009-05-22 22:53:10 +04:00
Kirill Andreev 792bb590de Fix 2009-05-22 17:47:50 +04:00
Kirill Andreev 41a0444b0b Merge 2009-05-22 17:27:34 +04:00
Kirill Andreev ede41dc54d Mesh ID is made separately from SSID 2009-05-22 17:27:10 +04:00
Andrey Mazo 6603dba9e3 Merge changes from ns-3-dev. 2009-05-22 14:58:43 +04:00
Kirill Andreev 959653b5fa Fixed endianess 2009-05-22 14:02:35 +04:00
Kirill Andreev e9538480ae Restructured mesh configuration element 2009-05-22 13:58:39 +04:00
Tom Henderson 71272db683 initialize timer in Timer unit tests 2009-05-21 06:46:38 -07:00
Tom Henderson 0e9b2360a2 Fix bug 570 (ArpCache not registered) 2009-05-21 06:07:03 -07:00
Tom Henderson 9cdc0cfd71 rescan python bindings 2009-05-21 06:04:40 -07:00
Tom Henderson 4159520b4b fix packet tag manual documentation 2009-05-21 06:03:42 -07:00
Kirill Andreev 1056863f4c Fix 2009-05-21 16:44:21 +04:00
Kirill Andreev 35f1af2059 Statistics fixed 2009-05-21 16:35:55 +04:00
Kirill Andreev f20a2e4b31 Interface stats added 2009-05-20 20:08:35 +04:00
Kirill Andreev 7e6583b578 ResetStats added 2009-05-20 19:12:51 +04:00
Kirill Andreev 20657160bf Statistics - almost done 2009-05-20 18:30:27 +04:00
Mathieu Lacage fa5e05290d fix uninitialized variable 2009-05-20 15:54:56 +02:00
Kirill Andreev 4d14e87f97 Infrastructure for statistics is done 2009-05-20 14:03:26 +04:00
Kirill Andreev 42adb8b0f9 Added statistcs structures 2009-05-20 12:44:58 +04:00
Kirill Andreev c60ae045e7 Added statistics for PMP-MAC 2009-05-19 19:58:24 +04:00
Fabian Mauchle 9c63493280 bug 568: Timer's default destroy policy not set. 2009-05-19 15:41:01 +02:00
Andrey Hippo 0abda7e938 bug 567: --enable-static does not work on i686 2009-05-19 15:39:15 +02:00
Mathieu Lacage bf673cf808 rescan python 2009-05-19 15:35:05 +02:00
Mathieu Lacage 2f0944386f bug 560: remove deprecated methods. 2009-05-19 15:34:20 +02:00
Gustavo J. A. M. Carneiro e37a5eed7a Don't event try to enable -Wl,--soname option if we're not on linux. 2009-05-18 14:10:49 +01:00
Gustavo J. A. M. Carneiro 990960bbca Add -Wl,--soname=libns3.so to link flags to allow dlopen hacks
Mathieu's explanation:
"""
In python, I want to load the ns3 python bindings without having to
install libns3.so in /usr and without having to configure
LD_LIBRARY_PATH. So, I need to dlopen (RTLD_GLOBAL) libns3.so before
doing imp.find_module ('ns3') to ensure that python finds the libns3.so
library. To do the dlopen, I need to give a full path to libns3.so but,
if you do this without a soname, the dynamic loader does not know about
libns3.so: it knows only about /foo/bar/libns3.so.
"""
2009-05-18 11:06:26 +01:00
Andrey Mazo dd025e8ff6 Revert commit [c259eaefdd7f]. Make compiler happy. 2009-05-15 13:52:35 +04:00
Pavel Boyko 86aa196354 merge with http://code.nsnam.org/ns-3-dev 2009-05-14 16:32:15 +04:00
Mathieu Lacage 61fe7606d8 add missing constructor 2009-05-14 10:21:38 +02:00
Adrian S. W. Tam 32a92483aa fixed packet trace time bomb in csma 2009-05-11 11:18:18 -07:00
Mirko Banchi dcf19a8a72 mismatching type 2009-05-11 14:02:17 +02:00
Adrian S.-W. Tam 2fba7f868e test and fix Buffer::Iterator::WriteHtolsbU64, Buffer::Iterator::ReadU64 , Buffer::Iterator::ReadLsbtohU64 2009-05-07 09:13:06 +02:00
Mathieu Lacage a41ad5c951 improve wording 2009-05-05 16:08:36 +02:00
Mathieu Lacage 2296cdca9d enable python+static build on osx 2009-05-05 14:55:23 +02:00
Mathieu Lacage 0f13d33e4a enable static builds on cygwin 2009-05-05 14:47:08 +02:00
Mathieu Lacage 87c9c58765 enable darwin static builds 2009-05-05 12:00:29 +02:00
Mathieu Lacage f09595116e merge 2009-05-04 20:22:08 +02:00
Mathieu Lacage 83eb1a3a33 attempt to detect broken --enable-static invocations. 2009-05-04 20:21:37 +02:00
Mathieu Lacage a269556050 pass regression tests on mingw 2009-05-04 16:30:53 +02:00
Kirill Andreev c9629149c1 Merge 2009-05-04 17:14:51 +04:00
Pavel Boyko 5c9103eb95 IE tests cleanup 2009-05-04 18:08:49 +04:00
Kirill Andreev 11d0526137 Fixed removing peer links 2009-05-04 17:13:20 +04:00
Mathieu Lacage b5685eb9ee Fix build on osx-ppc optimized gcc 4.0.1 2009-05-04 11:24:17 +02:00
Kirill Andreev deb0af06ec Removed peer cleanup 2009-05-04 00:04:21 +04:00
Kirill Andreev 3300dc8b17 Filtering outgoing frames if peer link does not exist. Fixed order of going
through plugins
2009-05-02 16:51:00 +04:00
Kirill Andreev a90843d9af Lifetime bugfix 2009-05-02 15:33:42 +04:00
Tom Henderson 3c5b3218d8 remove Control-M from example 2009-05-01 09:07:04 -07:00
Kirill Andreev 10f3b53965 Peer link cleanup bugfix 2009-05-01 17:20:30 +04:00
Mirko Banchi 6bf3f47ea5 update manual 2009-05-01 14:34:27 +02:00
Kirill Andreev e90fd93821 Fixed asimmetrical routes 2009-05-01 13:59:09 +04:00
Kirill Andreev 4a5151fd90 Some fixes 2009-04-30 20:43:52 +04:00
Mirko Banchi 1066eb4764 fix access class table 2009-04-30 14:11:58 +02:00
Gustavo J. A. M. Carneiro 7197fc0d27 Fix Python bindings build with gcc < 4 2009-04-30 10:57:30 +01:00
Kirill Andreev 9f10c93c93 Merge with ns3dev 2009-04-30 12:35:57 +04:00
Pavel Boyko 8b5a8fdfbc Dot11sMacHeader renamed to MeshHeader to correspond standard 2009-04-30 13:28:45 +04:00
Kirill Andreev eeb792ef9a Fixed routing information with neighbours, fixed address3 in management
frames (PREQ, PREP, PERR), fixed bug with PERR
2009-04-30 12:35:26 +04:00
Pavel Boyko 51759b2b3c Route requests queueing moved from base MeshL2RoutingProtocol to derived HwmpRoutingProtocol 2009-04-30 11:53:19 +04:00
Pavel Boyko 379731a710 merge 2009-04-30 10:57:22 +04:00
Pavel Boyko f3ea3afb50 cosmetics 2009-04-30 10:56:59 +04:00
Andrey Mazo b5cf6d7094 Changed IE Element IDs according to open80211s implementation. 2009-04-30 07:37:01 +04:00
Mirko Banchi 1a4b128917 update tutorial 2009-04-29 20:55:56 +02:00
Kirill Andreev 12607538fd Bugfix 2009-04-29 20:01:23 +04:00
Kirill Andreev 2daa651923 Ack timeout patch was merged. HWMP: DO=1 by default, if packet is unresolved -
we queue it
2009-04-29 19:37:19 +04:00
Andrey Mazo 2464875e40 Fix merge [a2d2f08f531e] . 2009-04-29 19:28:46 +04:00
Pavel Boyko 0b3595f809 don't allow bridge mesh points 2009-04-29 18:59:48 +04:00
Pavel Boyko af7703da5f Mehs point MAC address is now known to all interfaces and included into beacons as Address3 2009-04-29 18:31:47 +04:00
Kirill Andreev 933d9b22fe Merge with ns-3-dev 2009-04-29 18:26:25 +04:00
Kirill Andreev 717d487045 Outgoing data packets are dropped if there is no active link, MultihopAction
renamed to Action (as it should be)
2009-04-29 16:56:28 +04:00
Kirill Andreev 874d07b427 Fixed PREQ lifetime 2009-04-29 16:18:50 +04:00
Kirill Andreev 89f3cdb1d9 Merge with ns3dev 2009-04-29 13:06:55 +04:00
Kirill Andreev 28c51fd63a Fixed wifi-failure 2009-04-29 13:06:06 +04:00
Mirko Banchi 16b6cfbe71 update wifi.h 2009-04-28 14:26:28 +02:00
Mathieu Lacage 8c45fd2537 merge 2009-04-28 09:26:19 +02:00
Mathieu Lacage dcb0180fcd update CHANGES.html 2009-04-28 09:25:48 +02:00
Mathieu Lacage bb1a035f3c rescan python 2009-04-28 09:25:41 +02:00
Fabian Mauchle cf746e147e remove Mac48Address::IsMulticast 2009-04-28 09:25:33 +02:00
Tom Henderson aec5c8817d fix small pdf generation problem reported by Faker 2009-04-27 22:46:50 -07:00
Kirill Andreev 3e9e5fa18f Fix 2009-04-28 00:20:40 +04:00
Kirill Andreev 3a9591ee91 Flags bugfix 2009-04-27 23:35:36 +04:00
Kirill Andreev d41925794b Intermediate reply bugfix 2009-04-27 23:31:54 +04:00
Mathieu Lacage 09191d648e rescan python bindings 2009-04-27 16:50:16 +02:00
Mathieu Lacage 14323090c0 help python bindings 2009-04-27 16:49:40 +02:00
Mathieu Lacage 9ad38da398 explain rationale for current GetMulticast methods 2009-04-27 09:25:05 +02:00
Mathieu Lacage 0c4d04a0af bug 558: qos-tag.h is gone missing from wscript 2009-04-27 09:09:35 +02:00
Craig Dowell 8e75aa36cb new emu-ping example 2009-04-26 18:44:03 -07:00
Craig Dowell 5ff4351d92 expand emu search for creator, don't check FCS 2009-04-26 18:20:07 -07:00
Tom Henderson aaab024589 merge with tip 2009-04-26 15:36:59 -07:00
Tom Henderson cb77b59846 fix texinfo warnings 2009-04-26 15:36:15 -07:00
Mirko Banchi 392183de10 Swap values of QosAckPolicy 2009-04-26 23:47:09 +02:00
Mirko Banchi af293e7d1d Added API changes for wifi helpers 2009-04-26 13:27:23 +02:00
Mirko Banchi edec79c2c6 Added new ns-3.5 wifi features in RELEASE_NOTES 2009-04-26 12:49:24 +02:00
Tom Henderson a8a6bc74c3 fix texinfo errors 2009-04-25 14:56:52 -07:00
Craig Dowell 2df852c18b Add explicit socket close to udp echo for consistency 2009-04-24 16:00:44 -07:00
Faker Moatamri 3113083ede bug 377: --lcov-report not working fully 2009-04-24 11:14:10 +02:00
Mirko Banchi 8a94aee8aa add qos MACs 2009-04-24 10:21:37 +02:00
Mathieu Lacage cc5c5444ec rescan python 2009-04-24 10:02:10 +02:00
Mirko Banchi 9f0c9cd975 Add WifiMacHelper 2009-04-24 10:01:41 +02:00
Mathieu Lacage 3a2586631b mark copy constructor and assignment operator as private to avoid exporting wifi-mac-queue.h for python bindings 2009-04-24 09:57:16 +02:00
Mirko Banchi abf50ad835 shared facility for qos support 2009-04-24 09:16:28 +02:00
Mathieu Lacage 80ea9e64e6 rename 'index' variable to 'type' 2009-04-24 09:11:48 +02:00
Mirko Banchi 2f101f268f new methods to look in the packet queue 2009-04-24 09:10:14 +02:00
Mirko Banchi 7562c13a09 add amsdu field 2009-04-24 09:07:00 +02:00
Mathieu Lacage fa14d10537 coding style 2009-04-24 09:04:39 +02:00
Mirko Banchi 31806d1304 keep track of sequence number on per-destination basis 2009-04-24 08:57:04 +02:00
Mirko Banchi 2051a68af5 ensure we use a correct typename for the TypeId 2009-04-24 08:52:46 +02:00
Faker Moatamri 99df5ad589 improve internals documentation 2009-04-23 10:34:24 +02:00
Faker Moatamri f38772431e bug 533: Multiplication of Scalar variables does not give expected result 2009-04-23 09:35:16 +02:00
Kirill Andreev 84601556c1 Bugfixes 2009-04-22 21:40:06 +04:00
Kirill Andreev 15a866d6c4 bugfix 2009-04-22 21:32:35 +04:00
Kirill Andreev f9eecd297e Bugfixes 2009-04-22 21:30:02 +04:00
Mathieu Lacage 5dff0e0ca6 enable static builds, even when python is enabled 2009-04-22 17:22:41 +02:00
Mathieu Lacage 7eda961b1f Backed out changeset 4d9d3ff807a9
Does not work on x86-64.
2009-04-22 13:59:10 +02:00
Mathieu Lacage b00c5e751e enable static libns3 builds for python module 2009-04-22 13:06:22 +02:00
Kirill Andreev a5b6dd2704 Peer link frame - done 2009-04-22 14:00:09 +04:00
Kirill Andreev 9e71015a84 Restructured peer link frame 2009-04-22 13:12:22 +04:00
Kirill Andreev c1645288e1 Bugfix 2009-04-21 19:17:54 +04:00
Kirill Andreev f0b5cc8451 Merge 2009-04-21 18:36:55 +04:00
Kirill Andreev 32d4a70eea Removed mesh header from acion management frames 2009-04-21 18:35:53 +04:00
Mathieu Lacage 8f1bc5d5ad bug 537: no support to build static ns-3 binaries 2009-04-21 14:38:47 +02:00
Pavel Boyko 2db6112c90 merge 2009-04-21 16:22:45 +04:00
Pavel Boyko 7b502ab37e MulthopAction -> Action management frames in 802.11s according to std 2009-04-21 16:13:45 +04:00
Mathieu Lacage 39015b48cb merge 2009-04-21 12:32:55 +02:00
Mathieu Lacage b317ef997a don't link the tap-creator helper into the ns3 library 2009-04-21 12:32:05 +02:00
Gustavo J. A. M. Carneiro ba5c9355f6 Force valgrind to not be used for Python tests 2009-04-21 11:13:19 +01:00
Gustavo J. A. M. Carneiro 168515d842 Make sure the 'g++ -print-file-name' code does not break if gcc doesn't know anything about the libstdc++.so file. 2009-04-21 10:55:07 +01:00
Mathieu Lacage 44afc7b413 remove dead code 2009-04-21 11:18:05 +02:00
Gustavo Carneiro 7004b72781 bug 553: Running code built with a special gcc 2009-04-21 09:58:58 +02:00
Tom Henderson b5b4532e9f update CHANGES.html 2009-04-20 20:52:51 -07:00
Tom Henderson a2d89754b9 remove temporary README.api 2009-04-20 20:15:17 -07:00
Tom Henderson 5b6c5c936a merge with tip 2009-04-20 19:53:22 -07:00
Craig Dowell f55e4e0f58 put DeviceName Attribute back in emu net device 2009-04-20 19:36:31 -07:00
Gustavo J. A. M. Carneiro 1edb42fee9 Fix a build script bug 2009-04-20 19:08:41 +01:00
Gustavo J. A. M. Carneiro 21914357fb Upgrade to WAF 1.5.5 2009-04-20 17:39:54 +01:00
Gustavo J. A. M. Carneiro 1643605078 Make the --enable-sudo option work correctly again 2009-04-19 14:51:51 +01:00
Tom Henderson f9bb69ba63 rescan bindings 2009-04-17 15:46:01 -07:00
Tom Henderson eb56a55000 Remove m_peer from Ipv4InterfaceAddress class (unused member) 2009-04-17 15:38:53 -07:00
Tom Henderson 12f755079e fix merge issues 2009-04-17 15:10:23 -07:00
Tom Henderson bd5cf9cb07 merge with tip 2009-04-17 12:33:17 -07:00
Andrey Mazo 01220f5b88 Fix after update from ns-3-dev: substitute removed NetDevice::GetName() method. 2009-04-17 21:23:03 +04:00
Andrey Mazo b871da5c23 Merge changes from ns-3-dev. 2009-04-17 21:21:24 +04:00
Craig Dowell e22cd479c4 cleanup raw sockets on Ipv4L3Protocol shutdown 2009-04-17 10:15:11 -07:00
Mathieu Lacage e2983b9958 merge 2009-04-17 18:19:03 +02:00
Mathieu Lacage 1c1c75302b merge 2009-04-17 17:45:16 +02:00
Gustavo J. A. M. Carneiro 0c8ec6fa07 HierarchicalMobilityModel: allow the parent model to be NULL, make the child/parent setters public, and add more detailed documentation; closes bug #511 2009-04-17 15:35:22 +01:00
Gustavo J. A. M. Carneiro e65ce189da merge 2009-04-17 15:11:38 +01:00
Gustavo J. A. M. Carneiro 27cafe1db2 Now _really_ fix #551 2009-04-17 15:11:07 +01:00
Mathieu Lacage eb76ef65e9 bug 552: build with gcc 4.4 2009-04-17 15:22:41 +02:00
Mathieu Lacage 2961e29d7c merge 2009-04-17 14:06:51 +02:00
Mathieu Lacage b3507de41f output rraa simulation 2009-04-17 14:06:20 +02:00
Mathieu Lacage af651b44a9 register a correct TypeId 2009-04-17 13:45:25 +02:00
Gustavo J. A. M. Carneiro a84c274612 merge 2009-04-17 12:44:34 +01:00
Gustavo J. A. M. Carneiro 0ffb6a5549 Enable the link option --enable-auto-import on cygwin; closes #525. 2009-04-17 12:44:11 +01:00
Mathieu Lacage 08c152ff85 fix typo 2009-04-17 13:11:41 +02:00
Mathieu Lacage f118d2df6b make debug builds work again 2009-04-17 12:58:22 +02:00
Mathieu Lacage 5846c0fc2a handle rts somewhat better 2009-04-17 11:43:14 +02:00
Mathieu Lacage b225d123c8 order similarly to base class 2009-04-17 11:06:26 +02:00
Mathieu Lacage 6148894498 cleanup 2009-04-17 11:06:05 +02:00
Federico Maguolo 9e0617b9fc cara rate control 2009-04-17 10:59:51 +02:00
Mathieu Lacage e9f4c3f120 rescan python 2009-04-17 09:59:59 +02:00
Mathieu Lacage dbf5feba29 cleanup 2009-04-17 09:59:54 +02:00
Mathieu Lacage 970779ab0e add reference to paper 2009-04-17 09:56:04 +02:00
Mathieu Lacage 383f8cb027 cleanup a bit 2009-04-17 09:34:43 +02:00
Mathieu Lacage 4ab9fd3263 use manager variables instead of per-station variables 2009-04-17 09:23:50 +02:00
Mathieu Lacage e8e7ca3ad1 coding style 2009-04-17 09:17:19 +02:00
Mathieu Lacage 6a54ac4a5d merge 2009-04-17 09:13:50 +02:00
Federico Maguolo 5a9a6eab99 bug 536: aarf-cd rate control 2009-04-17 09:13:14 +02:00
Gustavo J. A. M. Carneiro 735164d2cd script typo fix; bug #551. 2009-04-16 22:20:37 +01:00
Gustavo J. A. M. Carneiro 7ddd83ed2c Detect valgrind memory leak reports; based on patch by Mathieu Lacage; closes bug #532 2009-04-16 16:47:02 +01:00
Timo Bingmann acb6ddb685 make ./waf check pass again. 2009-04-16 15:58:22 +02:00
Kirill Andreev ad35fe761a Preq queue bugfix. deleted m_myPreq 2009-04-16 16:36:19 +04:00
Mathieu Lacage 713628977f merge 2009-04-16 13:29:37 +02:00
Nicola Baldo 22545849a4 bug 534: non-const Ptr<T>::operator * () returns const reference 2009-04-16 13:28:51 +02:00
Kirill Andreev 9d109ef601 More than one root works 2009-04-16 15:21:09 +04:00
Gustavo J. A. M. Carneiro fe935b18d2 waf fix 2009-04-16 12:02:11 +01:00
Kirill Andreev f2a313666a Fixed proactive mode. 1 root works 2009-04-16 14:53:21 +04:00
Gustavo J. A. M. Carneiro 59a10746ae merge 2009-04-16 11:02:11 +01:00
Mathieu Lacage 1c60682201 bug 548: missing license header 2009-04-16 11:30:25 +02:00
Timo Bingmann 8c84b0781e bug 531: Adds NonUnicastMode attribute to WifiRemoteStationManager 2009-04-16 11:17:31 +02:00
Mathieu Lacage 48d617eb9d rescan python 2009-04-16 11:10:27 +02:00
Mathieu Lacage 1177cadc35 bug 498: Object Name Service Obsoletes Legacy Naming 2009-04-16 11:10:17 +02:00
Mathieu Lacage 306fe22769 bug 542: invalid trace paths 2009-04-16 11:00:13 +02:00
Mathieu Lacage d2631f6102 detect duplicate attributes, even in parent classes 2009-04-16 10:55:56 +02:00
Mathieu Lacage 5cdcf130a5 rename attribute from Position to PositionAllocator to avoid conflict with Position attribute defined in ns3::MobilityModel 2009-04-16 10:55:42 +02:00
Mathieu Lacage c9c9a434d4 bug 544: TypeId::AddTraceSource should assert on duplicate trace source name 2009-04-16 10:27:55 +02:00
Timo Bingmann 9613fb839c bug 475: GammaVariable and ErlangVariable 2009-04-16 10:07:48 +02:00
Mathieu Lacage 3f90d9595a scan python 2009-04-16 09:25:32 +02:00
Kirill Andreev 3274c58cc8 Bugfixes. Changed traversal time, because 4x4 network does not work 2009-04-15 20:15:10 +04:00
Kirill Andreev 36ab0b3f78 Fixed bug pith routing information collected from PREP 2009-04-15 16:42:38 +04:00
Nicola Baldo a9fce22aa7 noiseFloor -> noiseFigure (bug 543) 2009-04-15 13:56:01 +02:00
Gustavo J. A. M. Carneiro 62add283d4 Upgrade to WAF 1.5.4 2009-04-13 23:10:37 +01:00
Tom Henderson 3dab88580e update api documentation 2009-04-12 22:41:33 -07:00
Tom Henderson ce3e1d31a6 Remove class Ipv4Impl 2009-04-12 22:40:31 -07:00
Pavel Boyko 691551c2e5 Doxygen cleanup 2009-04-13 09:33:58 +04:00
Tom Henderson 20e82987c9 Update README 2009-04-12 22:14:34 -07:00
Tom Henderson 5c3fa90cac Implementation cut over to use Ipv4InterfaceAddress 2009-04-12 22:13:49 -07:00
Pavel Boyko a67a74a345 build fix: cc1plus: warnings being treated as errors
../src/devices/mesh/dot11s/hwmp-protocol.cc: In member function ‘void ns3::dot11s::HwmpProtocol::ReceivePrep(ns3::dot11s::IePrep, ns3::Mac48Address, uint32_t, uint32_t)’:
../src/devices/mesh/dot11s/hwmp-protocol.cc:443: error: suggest parentheses around && within ||
Build failed
2009-04-13 09:12:18 +04:00
Kirill Andreev b8e77d08fa Airtime metric finished 2009-04-10 14:30:48 +04:00
Kirill Andreev a593d80a98 Resturctured peer link frame - removed unneeded field "subtype", added unit
test to it
2009-04-10 12:41:10 +04:00
Kirill Andreev 0b90a625e1 MeshWifiMacHeader moved to Dot11sMacHeader. test to it is written 2009-04-09 18:52:20 +04:00
Gustavo J. A. M. Carneiro 069c9f301e Fix receiving bug in BridgeNetDevice regarding packet for the node itself
A node containing a BridgeNetDevice has two interfaces, the bridge netdevice adopts one of the MAC addresses as its own address.  Whenever a packet has to be sent by the node itself (as opposed to bridged), the packets are sent using that MAC address.  The source MAC address used when transmitting in one real netdevice may end up being the MAC address of another real netdevice, and any eventual reply will arrive with a destination MAC address of that other netdevice.  Therefore, when receiving packets of type PACKET_OTHERHOST we need to check for this condition, instead of always assuming the packet is to be forwarded.
2009-04-09 15:17:28 +01:00
Kirill Andreev bfb3f65003 Added proper flags to HWMP PREQ, routing information is updated in accordance
with D3.0
2009-04-09 17:47:14 +04:00
Kirill Andreev 4cfcf907f1 Peer management state machine has been changed in accordance with D3.0 2009-04-09 14:57:44 +04:00
Kirill Andreev 54fdb7f909 Added {} in 'if' where ASSERT exists 2009-04-09 13:16:27 +04:00
Kirill Andreev 3792ce12fb Optimized version complies and works 2009-04-09 12:53:26 +04:00
Tom Henderson 13140ee899 update documentation 2009-04-08 22:32:44 -07:00
Tom Henderson a1f5b19c5a implementation and plumbing of Ipv4InterfaceAddress class 2009-04-08 16:07:34 -07:00
Tom Henderson 0528a56c4d Ipv4::ifIndex -> Ipv4::interface 2009-04-08 13:35:34 -07:00
Tom Henderson 621e40bce8 File for documenting API changes of this repo 2009-04-08 13:35:02 -07:00
Kirill Andreev 15a362445e Unit testing for dot11s-IE 2009-04-08 20:58:40 +04:00
Kirill Andreev 79b01d701e Broadcast is not forwarded twice into the same channel 2009-04-08 18:17:33 +04:00
Kirill Andreev b349a7045c Added docs to peer link frame cleass, mesh-wifi-mac-header has been moved to
dot11s namespace
2009-04-08 17:50:52 +04:00
Kirill Andreev 22980d88a3 Fixed bug with uninitialized TAG 2009-04-08 17:23:41 +04:00
Kirill Andreev 1d808caeca Bugfixes 2009-04-08 14:57:57 +04:00
Kirill Andreev 38d5a32df1 Added airtime link metric. packet error rate is not done yet 2009-04-08 12:55:03 +04:00
Kirill Andreev 95cc866cc3 Bugfixes 2009-04-07 20:57:18 +04:00
Kirill Andreev 6900402c16 Unicast chain instead of broadcast data frame added. Metric
calculation:unfinished
2009-04-07 20:24:39 +04:00
Tom Henderson 3a277c0b56 revert gtk-config-store in csma-broadcast example 2009-04-06 22:05:02 -07:00
Gustavo J. A. M. Carneiro 199680e76e Add code that, when waf is updated in a future version, makes sure python bindings are re-generated whenever the optional features set changes. 2009-04-06 13:05:59 +01:00
Sebastien Vincent df508b44f6 Fix bug 529 (logged values in hex after using Ipv6Address::Print). 2009-04-06 11:12:42 +02:00
Tom Henderson 1f612b1dc0 fix csma-broadcast for regression script 2009-04-04 13:48:13 -07:00
Mathieu Lacage 0b4406a005 fix typo 2009-04-03 20:09:07 +02:00
Kirill Andreev 97b31efba4 Bugfixes. HWMP on 2-interface network works! 2009-04-02 20:41:08 +04:00
Kirill Andreev 22b8bfc40f Merge 2009-04-02 19:20:01 +04:00
Kirill Andreev 40d4dc921f Bugfixes with tag 2009-04-02 19:18:36 +04:00
Pavel Boyko dd9274a08d Cleanup 2009-04-02 17:59:56 +04:00
Pavel Boyko adce54584f bugfix in YansWifiChannel::Send 2009-04-02 17:57:18 +04:00
Pavel Boyko d9ecacf5c2 merge 2009-04-02 17:26:38 +04:00
Pavel Boyko 6d9f90af7d Add spread interfaces frequency channels option 2009-04-02 17:26:20 +04:00
Gustavo J. A. M. Carneiro 3e22a2d98d Less error hiding anti-pattern when running regression tests. 2009-04-02 13:16:13 +01:00
Andrey Mazo 1f55df0670 Fix compiler "unused variable" warning. 2009-04-02 16:05:25 +04:00
Andrey Mazo 2b260999f8 Merge changes from ns-3-dev. 2009-04-02 14:58:20 +04:00
Pavel Boyko 2e346b1922 Frequency channel switch on channel, PHY and MAC levels 2009-04-02 14:33:38 +04:00
Kirill Andreev d0a68752eb Peer link restructured to support multi-interface 2009-04-02 13:38:38 +04:00
Raj Bhattacharjea 9a4d43a6c1 Tag ns-3.4 2009-04-01 19:16:18 -04:00
Raj Bhattacharjea 9400f0aed8 Update AUTHORS for ns-3.4 2009-04-01 19:09:12 -04:00
Kirill Andreev 143688ef05 Bugfix 2009-04-01 20:48:05 +04:00
Pavel Boyko 8cf586dea4 merge with ns3dev 2009-04-01 18:45:18 +04:00
Pavel Boyko 6e1a80ecb8 Mesh test refactored, see --pcap and --interfaces command line arguments 2009-04-01 18:43:58 +04:00
Pavel Boyko 8de7e3dbe5 802.11s helper (ns3::dot11s::MeshWifiHelper) refactored 2009-04-01 18:05:36 +04:00
Kirill Andreev 1bcc51a601 Reverted changes in wif-remote-station-manager concerned with tx-statistics 2009-04-01 17:50:19 +04:00
Kirill Andreev 65b7c9d725 PREQ queue bugfix, tested proactive mode, removed unnseded debug messages 2009-04-01 17:38:22 +04:00
Kirill Andreev 1159e736f2 Removed commented code, removed unneded debg messages 2009-04-01 16:53:20 +04:00
Kirill Andreev 4e669562c8 Merge with ns3dev 2009-04-01 16:21:42 +04:00
Kirill Andreev 39bf762761 Reactive HWMP is ported! 2009-04-01 16:21:24 +04:00
Pavel Boyko af32684b40 Make routing protocol attribute of mesh point to be accessable by Config:: 2009-04-01 16:14:05 +04:00
Pavel Boyko df751a24e7 Old HWMP routing table test removed from examples. 2009-04-01 14:12:53 +04:00
Pavel Boyko dd699e5338 Build fix 2009-04-01 14:08:52 +04:00
Pavel Boyko 4ba116b0f5 HwmpRtable unit test + cleanup 2009-04-01 14:05:21 +04:00
Kirill Andreev f9888706b3 Added unicast PREQ, peer link status callback. 2009-04-01 13:38:09 +04:00
Craig Dowell d6c8c9d556 prettify CHANGES and add behavior changed section for ns-3.4 2009-03-31 10:32:16 -07:00
Kirill Andreev 1b726f6c06 Ported to new tags 2009-03-31 20:08:05 +04:00
Kirill Andreev 6ba7122c7b Data frames can go 2009-03-31 18:50:12 +04:00
Kirill Andreev 9ca44123a5 PREP propagation ported!!! 2009-03-31 18:04:54 +04:00
Pavel Boyko 2098df3b03 PREQ unit test created 2009-03-31 15:24:16 +04:00
Pavel Boyko e2ecae602b RANN test cleanup 2009-03-31 14:55:03 +04:00
Pavel Boyko 28cda227f2 Unit test for RANN information element 2009-03-31 14:44:29 +04:00
Pavel Boyko 107042648d HWMP headers cleanup to create correct doxygen docs 2009-03-31 12:40:39 +04:00
Craig Dowell 44d76f210b use tar xjf instead of bunzip in tutorial 2009-03-30 16:54:50 -07:00
Craig Dowell 99f822add2 RELEASE_NOTES shouldn't refer to past releases as future releases 2009-03-30 16:36:19 -07:00
Craig Dowell 2a083e6095 RELEASE_NOTES for ns-3.4 2009-03-30 16:32:42 -07:00
Craig Dowell 3b663898ae Update CHANGES for ns-3.4 from hg log 2009-03-30 15:47:38 -07:00
Kirill Andreev 288de2cad1 restructured precursors in rtable 2009-03-30 22:22:16 +04:00
Pavel Boyko f777caceb9 dot11s-codes.h removed. StatusCode enum is found to be unused and removed. ReadonCode enum is moved to dot11s/ie-dot11s-peer-management.h 2009-03-30 18:13:48 +04:00
Pavel Boyko 6cf9944b77 For now mesh point aggregates installed protocols. This is done to allow user directly access protocols via mp->GetObject<...>() (though you must known mesh point and protocol class to do this) 2009-03-30 17:47:20 +04:00
Pavel Boyko a74d65fdda merge with ns3-dev 2009-03-30 14:41:30 +04:00
Kirill Andreev 4333b1e421 Preq propagation ported:) 2009-03-29 13:56:30 +04:00
Kirill Andreev cbe755a7f7 First PREQ delivered 2009-03-27 20:03:13 +03:00
Craig Dowell 4d1839e95f don't use pthread option under cygwin 2009-03-27 09:58:04 -07:00
Kirill Andreev f4ff4a4a6e HwmpProtocol: path error procedure reviewed, RequestRoute reviewed 2009-03-27 16:33:08 +03:00
Gustavo J. A. M. Carneiro 49056cac7d fix mac osx python bindings 2009-03-27 11:18:54 +00:00
Kirill Andreev 91b639b83d Restructured rtable, queue size moved from protocol setter to attribute 2009-03-27 13:46:02 +03:00
Craig Dowell 4d17b00ad4 Make Names API return void not bool, rescan for Python Bindings 2009-03-26 17:39:20 -07:00
Kirill Andreev cdda5efb10 Removed dot11s-parameters and they are made as attributes 2009-03-26 21:11:29 +03:00
Kirill Andreev 8b4949d764 Added HWMP tag to mercurial :) 2009-03-26 20:25:40 +03:00
Kirill Andreev f56dd65eb5 More bufix 2009-03-26 20:17:41 +03:00
Kirill Andreev ec473a988e Fixrd bugs with address extensions, broadcast frames can go through L2Routing 2009-03-26 20:13:54 +03:00
Kirill Andreev 3a1e027566 Attach interfaces replaced with Install. Helper is simplifyed 2009-03-26 16:53:49 +03:00
Kirill Andreev 3023b41449 HWMP is attached to mesh point device and MAC layer with zero functionality 2009-03-26 14:00:46 +03:00
Kirill Andreev 74747fc24e HWMP rolled to "initial position" 2009-03-25 23:19:27 +03:00
Kirill Andreev 1037c32158 HWMP rtable and tag added back to wscripts without any changes 2009-03-25 22:24:20 +03:00
Tom Henderson b7ab01edef Fix a previous regexp substitution that went too far 2009-03-25 10:40:01 -07:00
Tom Henderson d565da8710 wifi-wired-bridging does not need to call GlobalRouteManager 2009-03-25 10:34:11 -07:00
Craig Dowell 0bc0bc5d15 fix some tutorial nits 2009-03-25 09:34:39 -07:00
Kirill Andreev ec53387736 HWMP files renamed 2009-03-25 18:11:01 +03:00
Kirill Andreev 56b6b0557a Restored mesh-wifi-mac-header 2009-03-25 18:09:47 +03:00
Kirill Andreev 7296bbf39a Moved hwmp to dot11s, removed unneded files, removed unneded headers from
wscript
2009-03-25 17:37:51 +03:00
Pavel Boyko 14ad8fa222 Minor cosmetics. Peer management protocol is assumed to be implemented now. 2009-03-25 16:58:24 +03:00
Kirill Andreev 5f1ee55fe0 Fixed BCA 2009-03-25 16:34:16 +03:00
Kirill Andreev 359cc256d7 BCA works again 2009-03-25 16:12:01 +03:00
Kirill Andreev 7b696d55a7 Merge with ns3-dev 2009-03-25 14:32:56 +03:00
Kirill Andreev 74036fd606 Added a method to find peer link, code cleanup 2009-03-25 14:32:18 +03:00
Pavel Boyko bf0716c852 cosmetics 2009-03-25 13:44:16 +03:00
Kirill Andreev 91a655467b Rstructured file names: IeDot11s* no is Ie, because it is in namespace dot11s 2009-03-25 12:23:12 +03:00
Craig Dowell f2c609494d wrap up tutorial updates 2009-03-24 17:53:30 -07:00
Craig Dowell 0ed62f98e1 clean up tutorial up through tweaking section 2009-03-24 12:45:30 -07:00
Kirill Andreev a7aeceb937 Code cleanups. Software delay is removed 2009-03-24 20:08:53 +03:00
Kirill Andreev 764f01dee2 Dot11s prefix removed 2009-03-24 19:46:26 +03:00
Kirill Andreev 799e29a465 Added namespace dot11s 2009-03-24 19:42:09 +03:00
Kirill Andreev c5130a60d7 802.11s/ Moved to dot11s/ 2009-03-24 18:36:49 +03:00
Craig Dowell 0b1712ad1c tutorial changes for allinone 2009-03-24 00:51:10 -07:00
Craig Dowell d1e24be6b4 branch merge 2009-03-23 19:23:11 -07:00
Craig Dowell 076f6cd0de test out the tap-bridge modes and update the example 2009-03-23 18:28:08 -07:00
Mathieu Lacage a565aa5058 python scan 2009-03-23 21:13:26 +01:00
Mathieu Lacage 596550d30e typo 2009-03-23 21:02:57 +01:00
Mathieu Lacage 0f859510c5 update API dox 2009-03-23 20:57:59 +01:00
Mathieu Lacage fd76798519 rename normal tags to byte tags 2009-03-23 20:41:26 +01:00
Mathieu Lacage efec0cd2d0 tag -> packet tag 2009-03-23 20:41:12 +01:00
Mathieu Lacage 84c80b6e2e convert to Packet tags 2009-03-23 20:39:46 +01:00
Craig Dowell 392f9075d8 branch merge 2009-03-23 11:35:47 -07:00
Craig Dowell 04022b35bf Bugs 458, swap 2 LOC for 526 2009-03-23 11:26:39 -07:00
Mathieu Lacage 538db7d163 increase packet tag size for Address objects and decrease the size of Address objects for packet tags :) 2009-03-23 15:20:15 +01:00
Mathieu Lacage 97b726344f rename 2009-03-23 14:37:43 +01:00
Mathieu Lacage 6b0ab8398b merge with HEAD 2009-03-23 14:29:31 +01:00
Mathieu Lacage 00aec86b41 must clear the list of routing protocols 2009-03-23 14:22:54 +01:00
Mathieu Lacage 57e34c0323 good god, there should be no reason to call Dispose directly here. 2009-03-23 13:21:51 +01:00
Mathieu Lacage 3bb6da984f merge with olsr crap 2009-03-23 13:16:09 +01:00
Mathieu Lacage 6c31e941d3 actually reset callbacks in the socket's DoDispose method 2009-03-23 13:12:19 +01:00
Mathieu Lacage 519e7e1c86 kill dead variables 2009-03-23 13:03:22 +01:00
Mathieu Lacage 75e4cf62a1 remove dead files 2009-03-23 09:56:27 +01:00
Kirill Andreev 16f208d47b Uncommented destructor and cleaner 2009-03-22 21:55:29 +03:00
Kirill Andreev 15547b9cd4 Debug messages fixed 2009-03-22 21:28:44 +03:00
Kirill Andreev e32c8d2317 Bugfixes 2009-03-22 20:54:04 +03:00
Kirill Andreev 04e40679bb Finished processing peer link frames on new architeture 2009-03-22 19:52:42 +03:00
Kirill Andreev 149a32afe2 First management frame goes through new archotecture 2009-03-22 17:05:45 +03:00
Kirill Andreev 58bd437f81 Added header for peer link frame (first fields without information element) 2009-03-22 12:34:24 +03:00
Unknown a0f8fdbfcc initial modifications to tap-bridge 2009-03-21 15:40:49 -07:00
Andrey Mazo 5091428843 Merge with ns-3-dev.
Fix noeol error.
2009-03-20 20:46:00 +03:00
Raj Bhattacharjea ad5c3c56ba Fix src/contrib/wscript 2009-03-20 12:28:21 -04:00
Mathieu Lacage c1b57a315e rework olsr 2009-03-20 16:49:49 +01:00
Mathieu Lacage b5dfd9a838 stop using byte tags 2009-03-20 14:30:36 +01:00
Mathieu Lacage 956052fd1f doxygen 2009-03-20 14:24:52 +01:00
Mathieu Lacage c439c4be63 add packet tag iterator 2009-03-20 14:22:23 +01:00
Mathieu Lacage 2cb895a0a6 PacketTagList 2009-03-20 13:38:51 +01:00
Pavel Boyko 31692c664f merge with main tree 2009-03-20 14:50:23 +03:00
Pavel Boyko d65bd66445 PeerLink refactored (use peer-link.h) 2009-03-20 14:50:05 +03:00
Kirill Andreev bd6dc43f03 Neighbours are attached 2009-03-20 13:46:50 +03:00
Pavel Boyko 8d29fe0b56 New peer management protocol moved to 802.11s/ 2009-03-20 11:58:54 +03:00
Kirill Andreev dc43ed1c4a Fix with serialized size in prep 2009-03-20 00:21:44 +03:00
Raj Bhattacharjea d92febd97f Update the python bindings 2009-03-19 11:33:19 -07:00
Raj Bhattacharjea e68139e2c2 Merge XML config-store 2009-03-19 13:39:15 -04:00
Kirill Andreev ab4bb7cc72 Peer manager restructure - unfinished 2009-03-19 20:09:50 +03:00
Kirill Andreev 2a7c645144 Added new peer manager class, an old one we keep without change 2009-03-19 17:28:37 +03:00
Kirill Andreev 957f6d7367 Added PM-mac - not implemented 2009-03-19 14:31:47 +03:00
Kirill Andreev 40be5998a4 Restructured helper: switch to new mac, now only beacon functionality works 2009-03-19 12:46:56 +03:00
Kirill Andreev 8f92a5bb59 Code refactoring bugfix 2009-03-19 11:49:23 +03:00
Andrey Mazo 0e3996676d Coding style changes: remove unneeded line breaks. 2009-03-19 11:42:27 +03:00
Craig Dowell 389da6fb21 Add MacPromiscRx, make MacRx non-promisc 2009-03-18 23:36:37 -07:00
Andrey Mazo c07c1e6d20 Coding style changes: indentation (some fixes), spaces in operators, function
calls, etc.
2009-03-18 22:36:12 +03:00
Pavel Boyko 00ba275d51 11s information elements commented as "\ingroup dot11s" for doxygen 2009-03-18 20:37:54 +03:00
Kirill Andreev cb209fa801 Code refactoring: fixed names, added references to draft 2009-03-18 19:49:53 +03:00
Kirill Andreev 30b7a82ce7 Merge fix - mac interface did not compile 2009-03-18 19:01:22 +03:00
Kirill Andreev 90583a42a6 Merge to ns3-dev 2009-03-18 18:38:41 +03:00
Kirill Andreev 61903246a3 Fixes with comments 2009-03-18 18:38:19 +03:00
Unknown e7b57ecce4 Minor fix to stats example. 2009-03-18 11:19:18 -04:00
Pavel Boyko 39072b6d5d mesh/dot11s doxygen module added 2009-03-18 17:56:53 +03:00
Pavel Boyko 23486e1813 merge with main tree 2009-03-18 17:41:01 +03:00
Pavel Boyko d53de9bedd Basic MAC plugins functionality implemented 2009-03-18 17:40:38 +03:00
Kirill Andreev f46fe50b84 Fixed bugs with includes 2009-03-18 16:59:09 +03:00
Pavel Boyko 726ca47d37 MeshWifiInterfaceMac just added and beacon generation refactored 2009-03-18 16:08:49 +03:00
Kirill Andreev 1ec46f0906 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40 2009-03-18 15:27:42 +03:00
Kirill Andreev 7f78a7e423 Deserialize bugfix 2009-03-18 15:22:58 +03:00
Kirill Andreev 99f082e652 Finished restructuring information elements 2009-03-18 15:08:17 +03:00
Pavel Boyko 3aebd147bd Use reference counting for WifiInformationElement 2009-03-18 14:37:29 +03:00
Kirill Andreev 9b09daa874 Fixed ticket #27 2009-03-18 14:36:00 +03:00
Kirill Andreev b875e279b0 Wifi-information element moved back to mesh 2009-03-18 14:19:18 +03:00
Kirill Andreev 9caf55c5e4 Class names restructured 2009-03-18 14:16:33 +03:00
Kirill Andreev 0aa1b81464 Deserialization bugfix 2009-03-18 14:02:58 +03:00
Kirill Andreev a9e382bd45 Restructured filenames in information elements 2009-03-18 13:35:49 +03:00
Kirill Andreev b264e8743c Returned size in bytes back 2009-03-18 13:20:24 +03:00
Kirill Andreev 6a482b21c4 Restructured beacon timing element 2009-03-18 12:44:36 +03:00
Kirill Andreev 394a7c4335 Refactored PERR, RANN 2009-03-18 11:51:31 +03:00
Craig Dowell 3eff196614 a little more dox 2009-03-17 16:00:46 -07:00
Kirill Andreev e2603abd52 Restructured PREQ and PREP 2009-03-17 19:40:09 +03:00
Kirill Andreev 0605f845bd Fixed difference between length in bytes and length field 2009-03-17 19:08:35 +03:00
Kirill Andreev fbffc39a9c Merge to ns3dev: fix 2009-03-17 18:52:43 +03:00
Kirill Andreev e71207a0ac Merge to ns3dev 2009-03-17 18:48:31 +03:00
Kirill Andreev e3e2bcf885 Restructured mesh configuration element 2009-03-17 18:36:29 +03:00
Pavel Boyko 31bddd79ac Bugfix, sort by element ID not by pointer addresses 2009-03-17 17:44:51 +03:00
Pavel Boyko ae9a61cb3a MeshWifiBeacon class created 2009-03-17 17:33:49 +03:00
Kirill Andreev 406bc6aacd information elements are moved to 802.11s 2009-03-17 17:18:19 +03:00
Pavel Boyko 213cad78c8 merge with main tree 2009-03-17 16:17:44 +03:00
Pavel Boyko 7c23e38595 WifiInformationElement class added as the base for all IEs 2009-03-17 16:15:43 +03:00
Aleksey Kovalenko af1d653e66 Move inline code, codestyle fix 2009-03-17 13:21:37 +03:00
Pavel Boyko df8da40efd Merge with main tree 2009-03-17 10:57:10 +03:00
Pavel Boyko 5cab5761ea L2RoutingProtocol refactored to MeshL2RoutingProtocol 2009-03-17 10:56:45 +03:00
pavlo ae3fcdf9ec L2RoutingProcotol refactoring in progress 2009-03-16 20:00:55 +03:00
Andrey Mazo ac07e1e920 Merge with ns-3-dev trunk. 2009-03-16 19:48:22 +03:00
pavlo 508891973f L2RoutingNetDevice refactored to MeshPointDevice 2009-03-16 17:59:33 +03:00
Pavel Boyko 7eefa438ed All mesh related filed moved to devices/mesh. Let the refactoring begins! 2009-03-16 15:45:37 +03:00
Mathieu Lacage 40e2fc6e5e add ACKs to naked FINs 2009-03-14 14:51:03 -04:00
Craig Dowell ac181370f3 Clean up some tap bridge dox 2009-03-14 00:54:18 -07:00
Craig Dowell 17fc363e94 in BRIDGED_DEVICE mode, tap-bridge acts like a bridge between the tap and the bridged device 2009-03-14 00:07:03 -07:00
Craig Dowell b548058394 first cut at enabling OpenVZ scenario 2009-03-13 17:37:35 -07:00
Andrey Mazo aac765a2b1 Coding style changes: indentation, spaces. 2009-03-13 21:09:40 +03:00
Andrey Mazo fb0f1aba89 Added license information to some files.
Fixed authors list in some files.
2009-03-13 17:51:04 +03:00
Kirill Andreev ba08548196 ns3dev merge 2009-03-13 15:34:12 +03:00
Kirill Andreev 3bcfe4a501 Removed unneeded (void) (closed ticket #22), renamed enums 2009-03-13 15:29:19 +03:00
Pavel Boyko 43be674ee5 merge with ns3dev 2009-03-13 14:54:22 +03:00
Kirill Andreev e0ec58e445 Merge to ns3dev 2009-03-13 14:53:59 +03:00
Kirill Andreev 50eebdd0bb Removed ELEMENT_ID, added proper methods, which returns element id 2009-03-13 14:52:48 +03:00
Pavel Boyko db2ac325b6 1. HIDE_UNDOC_CLASSES is temporary set to NO in doxygen.conf
2. Add \ingroup mesh to all (?) mesh-related classes to see list of them in doxygen
2009-03-13 14:52:05 +03:00
Pavel Boyko 9fd6929b55 src/devices/mesh directory tree and doxygen module created. 2009-03-13 14:08:43 +03:00
Kirill Andreev 5479b66351 Merge to ns3dev 2009-03-13 13:41:37 +03:00
Kirill Andreev 777ae00d6b Address comparator moved to separate file, remade constructors (closed ticket
#21), removed unneded "struct" word
2009-03-13 13:40:43 +03:00
Raj Bhattacharjea d5d672bc20 Set TCP ACK whenver connection is established (closes bugs 499 and 198) 2009-03-12 18:25:08 -04:00
Craig Dowell d9168088f3 add TraceAll False parameter for API change 2009-03-16 18:44:38 -07:00
Craig Dowell fe828b2901 branch merge 2009-03-16 18:23:33 -07:00
Craig Dowell 7a5c725652 Update CHANGES.html 2009-03-16 10:02:08 -07:00
Craig Dowell a66b8cab4e remove unneeded packet copies, includes. Rescan 2009-03-16 09:44:01 -07:00
Tom Henderson 321b20d1b9 set OnOffApplication::m_lastStartTime correctly (bug #490) 2009-03-12 15:55:40 -04:00
Yana Podkosova c50d86a4bb Added test for Hwmp-rtable 2009-03-12 17:12:11 +03:00
Kirill Andreev 68c54afa42 Merge file restructure, random variables, static mobility model to ns3dev. 2009-03-12 13:39:22 +03:00
Kirill Andreev 53f0b1a007 Restructured files 2009-03-12 13:24:22 +03:00
Andrey Mazo db729599d5 Sanitize MeshWifiMac::DoDispose().
Remove unneeded code from "mesh-wifi-helper.cc".
2009-03-12 13:07:56 +03:00
Kirill Andreev f6e3a5b6f5 Restructured files - unfinished 2009-03-12 13:02:29 +03:00
Kirill Andreev 16d7f9ca9d Removed unneeded word "struct", fixed mobility model, fixed random variable 2009-03-12 12:34:49 +03:00
Gustavo J. A. M. Carneiro ec3df333b5 rescan python bindings 2009-03-11 11:16:25 +00:00
Craig Dowell fc3163d704 Piles of changes for tracing rework 2009-03-10 23:47:55 -07:00
Andrey Mazo 48d98b6d05 Merge with ns-3-dev. 2009-03-10 17:54:58 +03:00
Mathieu Lacage 9af37ad97c update CHANGES.html 2009-03-10 14:31:40 +01:00
Gustavo J. A. M. Carneiro 1dfdd4d034 bug 482: Add constant acceleration mobility model 2009-03-10 14:27:58 +01:00
Mathieu Lacage 5068a17769 StaticSpeedHelper -> ConstantVelocityHelper 2009-03-10 14:24:56 +01:00
Mathieu Lacage cddb3bfe23 StaticMobilityModel -> ConstantPositionMobilityModel, StaticSpeedMobilityModel -> ConstantVelocityMobilityModel 2009-03-10 14:18:32 +01:00
Mathieu Lacage 12ffae54a8 don't exit on save 2009-03-09 19:54:47 +01:00
Mathieu Lacage 8d27126dcf change API based on comments from tom. 2009-03-09 19:45:47 +01:00
Mathieu Lacage 423f0f1f0b decrease version requirements. 2009-03-09 19:40:44 +01:00
Mathieu Lacage ebaaeb1403 make sure we build, even if libxml2 could not be found. 2009-03-09 19:40:29 +01:00
Timo Bingmann 7f8370b67e Adding UniformVariable::GetInteger and using it to fix bug in RealRandomStream::GetNext. 2009-03-04 18:55:32 +01:00
Mathieu Lacage 8b0f4e7212 xml support for ConfigStore 2009-03-04 16:55:25 +01:00
Gustavo J. A. M. Carneiro a4c4aec51c Check if the compiler *really* supports -fvisibility=hidden. 2009-03-04 11:34:51 +00:00
Gustavo J. A. M. Carneiro 50f61a8bf7 merge 2009-03-03 18:52:00 +00:00
Gustavo J. A. M. Carneiro 70e5e8cb52 Compile python bindings with -fvisibility=hidden, when possible. Closes #515. 2009-03-03 18:51:16 +00:00
Mathieu Lacage 27c630de9c handle zero-size attribute list. 2009-03-03 16:07:16 +01:00
Mathieu Lacage 9a8bbc1985 move private method to public 2009-03-03 16:06:20 +01:00
Gustavo J. A. M. Carneiro 34c7ac0277 Bug 485: implement deserialization of normal/gaussian random variables 2009-03-03 10:57:42 +00:00
Craig Dowell a10c362368 trace consistency changes 2009-02-28 16:25:24 -08:00
Andrey Mazo 7a94e1c4e8 Remove some temporary defines. 2009-03-01 02:39:10 +03:00
Gustavo J. A. M. Carneiro 50e0ba8801 Make ipv4-interface.h, ipv4-l3-protocol.h, and ipv4-static-routing.h private. Closes #370. 2009-02-28 15:02:15 +00:00
Tom Henderson 6caf2a0b2e clarify the working between SeedManager set/get seed and the underlying package seed, in comments 2009-03-01 11:17:30 -08:00
Tom Henderson ba3641f90f align manual with new RNG code 2009-03-01 11:16:39 -08:00
Gustavo J. A. M. Carneiro 814623e39f win32 build fixes. 2009-03-01 12:11:00 +00:00
Andrey Mazo 82d09ba538 Merge 802.11s code. 2009-02-28 14:21:05 +03:00
Mathieu Lacage fa47453c53 let GlobalValue do RNG environment variable processing 2009-02-25 12:27:00 -05:00
Mathieu Lacage 1d6fe7685a add regression tests back 2009-02-25 13:40:06 +01:00
Mathieu Lacage 196177a74d improve coherency between UniformVariable and RandomVariable, explain why the extra overload is necessary. 2009-02-25 13:10:22 +01:00
Mathieu Lacage c4389f8288 rescan python 2009-02-25 11:00:50 +01:00
Mathieu Lacage 952c1818e4 kill dead API 2009-02-25 11:00:42 +01:00
Mathieu Lacage ce505dda1d fix build 2009-02-25 10:50:59 +01:00
Raj Bhattacharjea 1a86859237 Merge in rng-changes branch 2009-02-24 19:24:09 -05:00
Timo Bingmann 257fd2079e bug 509: backoff CW growth is invalid 2009-02-24 14:33:17 +01:00
Mathieu Lacage d698a38195 add support for NS_ATTRIBUTE_DEFAULT 2009-02-24 10:27:08 +01:00
Mathieu Lacage a31ecc8772 remove uneeded blank line 2009-02-24 10:26:57 +01:00
Mathieu Lacage 04ba81354e implement NS_GLOBAL_VALUE 2009-02-24 09:59:21 +01:00
Mathieu Lacage 79297c4afa typo 2009-02-24 09:40:54 +01:00
Francesco Malandrino 1d1997b302 bug 487: add association/disassociation hooks in Nqsta. 2009-02-24 09:18:11 +01:00
Mathieu Lacage 6e9c68ab24 bug 465: mixed-wireless.py does not work anymore. 2009-02-24 09:07:04 +01:00
Timo Bingmann eb8ca704b4 bug 486: patches for icc compilation. 2009-02-24 08:29:36 +01:00
Mathieu Lacage fd8ba38a0e bug 500: make DcaTxop accessible through an attribute. 2009-02-24 08:20:51 +01:00
Raj Bhattacharjea 7e06c78762 Rescan the bindings 2009-02-24 00:12:22 -05:00
Raj Bhattacharjea fc998323d4 Sync with ns-3-dev 2009-02-23 23:56:27 -05:00
Raj Bhattacharjea d509a8ef15 Fix previous changeset 2009-02-23 23:49:17 -05:00
Raj Bhattacharjea c8423550f5 Almost have env variable support for RNG right 2009-02-23 22:55:16 -05:00
Gustavo J. A. M. Carneiro 9cf0988230 Fix build of Python bindings on systems with no support for TabBridge 2009-02-23 16:07:46 +00:00
Tom Henderson cf22518549 tutorial fixes from Ruben Merz 2009-02-23 06:56:52 -08:00
Timo Bingmann 7e8d2be1da Missing include of stdlib.h for free() in callback.cc 2009-02-23 11:33:14 +01:00
Timo Bingmann 127064f21a Print demangled callback signatures if they mismatch. bug #507 2009-02-22 17:28:45 +01:00
Gustavo J. A. M. Carneiro f00e2d7b11 Rescan python bindings. 2009-02-21 23:19:18 +00:00
Gustavo J. A. M. Carneiro 607fa5aa0e merge 2009-02-21 22:50:53 +00:00
Gustavo J. A. M. Carneiro a559b31710 For regression testing, use python modules filecmp and difflib instead of an external diff command, to improve portability (e.g. mingw). Closes #330. 2009-02-21 22:50:04 +00:00
Craig Dowell ffdb250c3e bug 506 -- remove name version of SetPositionAllocator 2009-02-21 14:46:11 -08:00
Aleksey Kovalenko 6945d47068 Optimize Send/SendFrom on BridgeNetDevice by using the learned MAC associations when possible, instead of flooding to all bridge ports. 2009-02-21 22:09:08 +00:00
Craig Dowell 9c653b5afa quiet second.cc and third.cc when running as regression tests 2009-02-18 22:32:09 -08:00
Craig Dowell be94ad4fed add byte mode 2009-02-18 22:19:20 -08:00
Tom Henderson d2d4e0bfc8 fix for bug 468 2009-02-18 20:57:33 -08:00
Craig Dowell 561ede7d42 clean up transmit abort nonsense 2009-02-18 18:31:57 -08:00
Gustavo J. A. M. Carneiro d1b501f370 Python: wrap std::ostream/ofstream, for ascii tracing. 2009-02-18 12:23:08 +00:00
Unknown b16cf00eb7 Sync with dev 2009-02-17 14:49:22 -05:00
Gustavo J. A. M. Carneiro 07146ac480 WAF: fix Task.maxjobs=1 (for sudo); icc flags. 2009-02-14 14:02:40 +00:00
Craig Dowell 5ab4247484 add names support to tap bridge helper 2009-02-13 12:44:22 -08:00
Raj Bhattacharjea ed1c9a7cd7 Merge tap branch 2009-02-13 00:10:21 -05:00
Craig Dowell 9a7dad3928 no creator option in tap-bridge should be off by default 2009-02-12 17:37:36 -08:00
Craig Dowell d3858d6b6e add code to work around tap-creator 2009-02-12 17:26:05 -08:00
Raj Bhattacharjea 7083feedeb Merge names branch 2009-02-12 16:49:58 -05:00
Unknown 3d6ecbd579 endless loops are not a good thing 2009-02-11 22:37:00 -08:00
Craig Dowell ee291dcfbe work around to allow FreeBSD to run tap-bridge 2009-02-11 18:07:52 -08:00
Craig Dowell 95ac9448c8 branch merge 2009-02-10 16:41:54 -08:00
Craig Dowell 676781dc03 remove unnecessary includes in tap-bridge 2009-02-10 16:41:38 -08:00
Craig Dowell 69d60201c3 more dox for names 2009-02-10 11:28:40 -08:00
Craig Dowell 95951b0a4d a few tests, a little reorganization for clarity 2009-02-10 11:05:10 -08:00
Craig Dowell 998a5ba69a some naming changes suggested by Gustavo 2009-02-10 10:36:26 -08:00
Gustavo J. A. M. Carneiro f780e96965 examples/first.cc ported to Python 2009-02-10 17:15:06 +00:00
Gustavo J. A. M. Carneiro 99165b12c4 Fix waf --pyrun bug 2009-02-10 17:14:41 +00:00
Gustavo J. A. M. Carneiro 4ea68659ff Fix TagBuffer::ReadU64 bug. 2009-02-09 19:09:07 +00:00
Craig Dowell b4cd636033 QueryObject comment changed to GetObject 2009-02-09 10:15:40 -08:00
Craig Dowell e5a8365024 emu depends on netpacket/packet.h 2009-02-06 14:53:55 -08:00
Craig Dowell 893e1c1e71 tighten up configuration reqs for tap and emu 2009-02-06 14:49:11 -08:00
Craig Dowell d19854afef don't build tap-bridge-helper or tap-wifi-dumbbell if tap-bride not enabled 2009-02-06 14:28:49 -08:00
Craig Dowell ad3221728e remove misguided __attribute__ ((unused))s 2009-02-06 11:10:51 -08:00
Craig Dowell f5e2fd0e18 update log component name 2009-02-05 11:27:30 -08:00
Craig Dowell 32da40280a rename names.cc to object-names.cc 2009-02-05 11:25:55 -08:00
Craig Dowell 5279f54906 use __attribute__ ((unused)) 2009-02-05 09:43:27 -08:00
Craig Dowell 832370ea13 remove old example 2009-02-04 17:47:29 -08:00
Craig Dowell 17d28ba5d1 branch merge 2009-02-03 10:40:16 -08:00
Craig Dowell 72300c151c branch merge 2009-02-03 10:24:30 -08:00
Craig Dowell 770d333d1f clean up wrong and misleading comments 2009-02-03 09:32:24 -08:00
Craig Dowell c7395b55e0 tweak wifi example, fix waf problems (thanks to Gustavo) 2009-02-03 08:31:48 -08:00
Tom Henderson b0893a1681 branch merge 2009-02-03 06:56:47 -08:00
Tom Henderson 2925d15752 start a manual section on new models 2009-02-03 06:56:14 -08:00
Craig Dowell 00316ff330 no need to do SendFrom in tap-bridge 2009-02-02 11:43:10 -08:00
Craig Dowell cfe6df26a9 add a wifi example for the tap bridge 2009-02-02 11:39:18 -08:00
Craig Dowell dd01873dfd cleanup, doxygen, prepare for review 2009-02-02 10:12:29 -08:00
Gustavo J. A. M. Carneiro 29901e79dc Skip the real-time udp echo test if real-time support not compiled in. 2009-02-01 13:44:29 +00:00
Craig Dowell d32d34ff59 correct net numbering 2009-01-31 22:45:42 -08:00
Craig Dowell 8e659dbc41 expand comments in tap-dumbbell.cc to suggest some things to do 2009-01-31 22:41:43 -08:00
Craig Dowell 1e6e554af7 add a more complicated tap example that uses routing. 2009-01-31 21:53:25 -08:00
Craig Dowell bc06ad1027 fixed previous wscript mods not entirely successful 2009-01-31 20:59:13 -08:00
Craig Dowell c79b8da6e9 teach enable-sudo to be a config time thing 2009-01-31 20:48:05 -08:00
Gustavo J. A. M. Carneiro 36bcf84126 Upgrade waf to 1.5.3; closes #474. 2009-01-31 21:22:04 +00:00
Craig Dowell 8d696d8061 add a Rename function to the object name service to facilitate auto naming 2009-01-30 17:34:41 -08:00
Craig Dowell 885b97a6ec turn on checksums in example csma-tap-bridge and tweaks to make ping demo work 2009-01-30 15:47:38 -08:00
Gustavo J. A. M. Carneiro 33c6cd365d Skip the NSC-based regression test on non-linux platforms 2009-01-30 19:28:00 +00:00
Craig Dowell ae6b0022b8 beef up a couple of comments in example names.cc 2009-01-30 10:34:05 -08:00
Craig Dowell b128c223c7 Testmeister Tom found a bug in Names::Add for his shortcut semantics 2009-01-30 10:30:07 -08:00
Craig Dowell e104e03223 checkpoint tap progress 2009-01-29 16:16:10 -08:00
Craig Dowell 936a0e484d last connections on tap-bridge, start flowing packets 2009-01-29 13:03:03 -08:00
Craig Dowell 6c3633eaab wire needed values into tap-bridge Attribute system, but figure out as many as possible in the default case 2009-01-29 11:53:12 -08:00
Raj Bhattacharjea 20ddca38d6 Explicit cast and correction in wifi/RandomStream 2009-01-29 12:25:25 -05:00
Raj Bhattacharjea 8c1b14ba99 Get/Set the package seed in a static variable 2009-01-28 15:04:28 -05:00
Raj Bhattacharjea 8d45909678 Update the bindings for GetSeed change 2009-01-28 13:35:47 -05:00
Gustavo J. A. M. Carneiro f5015da143 Skip the NSC test when valgrind is enabled. 2009-01-28 11:06:50 +00:00
Gustavo J. A. M. Carneiro c2fd874a0e Interpret regression program non-zero exit as a test failure, instead of showing a traceback. 2009-01-28 11:01:02 +00:00
Craig Dowell 4eacc29c1b checkpoint tap 2009-01-27 22:00:29 -08:00
Craig Dowell 519ba25a58 checkpoint tap 2009-01-27 21:22:50 -08:00
Craig Dowell 738d71e954 checkpoint tap bridge 2009-01-27 20:26:34 -08:00
Craig Dowell 6b7eeeff77 branch merge 2009-01-27 12:39:43 -08:00
Craig Dowell bcec13606f checkpoint tap development 2009-01-27 12:36:46 -08:00
Gustavo J. A. M. Carneiro a9edcf4928 Make sure to call ns3.Simulator.Destroy() before python exit to avoid segmentation faults on program exit. 2009-01-27 14:18:55 +00:00
Tom Henderson eaa8e9880e add wifi-architecture figure to manual 2009-01-26 13:41:54 -08:00
Gustavo J. A. M. Carneiro a77eb54bcc Workaround WAF issue 325 for generating module header files 2009-01-25 21:57:24 +00:00
Gustavo J. A. M. Carneiro e300331c6a samples/main-test-sync also depends on the realtime optional feature 2009-01-25 15:44:55 +00:00
Gustavo J. A. M. Carneiro d7cf4f2462 Don't use the flag -pthread on darwin to avoid warning message 2009-01-25 15:39:36 +00:00
Gustavo J. A. M. Carneiro 51e6ac3617 Fix 'no newline at the end of file' compilation error in the pthread test 2009-01-25 14:52:09 +00:00
Gustavo J. A. M. Carneiro 90a0977871 EmuNetDevice also depends on the availibility of threading support 2009-01-25 14:48:47 +00:00
Gustavo J. A. M. Carneiro d4f67a66db Detect pthread support by compiling a test program with the -pthread switch, not just check for the header file. 2009-01-24 19:25:33 +00:00
Gustavo J. A. M. Carneiro a88ba4fd5b librt is need not for threading primitives but for the real time scheduler 2009-01-24 18:47:47 +00:00
Gustavo J. A. M. Carneiro ca8a6c03df Bug #323: waf --valgrind doesn't check for valgrind first 2009-01-24 18:09:29 +00:00
Gustavo J. A. M. Carneiro 3cc5929ab6 (from Tom Henderson) make valgrind return an error exit code when problems are detected. Closes #449. 2009-01-24 15:51:09 +00:00
Gustavo J. A. M. Carneiro 5e8275ba01 Try to guess NSC location (finally closes #478) 2009-01-24 15:38:20 +00:00
Gustavo J. A. M. Carneiro 92b5bc7309 Try to guess pybindgen location (more #478) 2009-01-24 15:28:54 +00:00
Gustavo J. A. M. Carneiro 2e2fd95111 Try to guess the location of the reference traces, when --with-regression-traces is not given (#478) 2009-01-24 12:52:58 +00:00
Gustavo J. A. M. Carneiro b2c212c239 Run regression tests as WAF tasks, plus simplify how unit tests are declared. Closes #480. 2009-01-24 12:25:52 +00:00
Craig Dowell 69fe82e39f Alloc clients to omit /Names/ in Names::Find 2009-01-23 15:18:40 -08:00
Gustavo J. A. M. Carneiro 55930dc4fe Add a dashed box around DcaTxop and MacRxMiddle in the wifi architecture figure; closes #447. 2009-01-23 15:18:03 +00:00
Gustavo J. A. M. Carneiro fcc6829b8e merge 2009-01-23 15:07:18 +00:00
Craig Dowell f1e20b3f98 move a function definition in names.cc for a little more clarity 2009-01-22 23:54:11 -08:00
Craig Dowell 3e652dbc55 rename object-names.{cc,h} to names.{cc,h} per convention 2009-01-22 23:07:34 -08:00
Raj Bhattacharjea 63b331ecd2 Remove the nonsensical GetSeed 2009-01-22 15:59:50 -05:00
Raj Bhattacharjea 1858b93cfa Update the bindings 2009-01-22 15:13:47 -05:00
Raj Bhattacharjea bf33a71945 Michelle's bounds patch 2009-01-22 14:42:18 -05:00
Raj Bhattacharjea eb416a364b Mathieu's patch: update users of GetSingleValue 2009-01-22 14:12:56 -05:00
Raj Bhattacharjea 924600646a Apply Mathieu's change: remove all calls to SetSeed 2009-01-22 14:11:09 -05:00
Raj Bhattacharjea ac192394c3 Commit Mathieu's coding style cleanup of random-variable 2009-01-22 14:10:40 -05:00
Craig Dowell a715fef8e0 a little more doxygen for object-names.h 2009-01-21 00:28:47 -08:00
Craig Dowell e1a8e44e43 add NamesPriv cleanup for code that doesn't use simulator -- for valgrind-clean runs 2009-01-20 22:42:11 -08:00
Craig Dowell c37f4c2169 add examples of Config::Set to example names.cc 2009-01-20 21:55:04 -08:00
Craig Dowell 66f8a1a4d1 fix crasher in config unit tests 2009-01-20 21:16:52 -08:00
Craig Dowell 94f6345721 fix crasher in config 2009-01-20 18:56:33 -08:00
Craig Dowell 19fb59dda7 make simple version of Names:Add even simpler. Use that in examples/names.cc 2009-01-20 18:29:06 -08:00
Craig Dowell 23504b557f Brute force all of the helpers to use object name service 2009-01-20 17:39:18 -08:00
Craig Dowell cb6a14f423 add an object name service 2009-01-20 15:47:14 -08:00
Raj Bhattacharjea 5d667957a7 Fix old code that crept in 2009-01-20 16:36:08 -05:00
Raj Bhattacharjea be2da95507 Undo a change which does not compile 2009-01-20 14:43:52 -05:00
Raj Bhattacharjea cdde863642 Expose RNG seed/run # to attributes; bindings update 2009-01-20 14:00:05 -05:00
Raj Bhattacharjea 2e2fd41d48 Merge 2009-01-20 11:41:57 -05:00
Gustavo J. A. M. Carneiro 8e70ea9b96 Don't abuse os.chdir so much (not thread safe) 2009-01-18 22:47:25 +00:00
Gustavo J. A. M. Carneiro ae5749aea7 Cleanup: remove regression reference traces downloading code (moved to allinone) 2009-01-18 22:18:49 +00:00
Gustavo J. A. M. Carneiro 587ee24f71 waf --run now takes either full path to a program or just the (flat) program name, for all C++ programs 2009-01-18 19:59:46 +00:00
Mathieu Lacage c7222e4a09 bug 472: fix build with gcc 3.4.6 2009-01-18 12:14:32 +01:00
Gustavo J. A. M. Carneiro b4f451047b Update waf; closes #466. 2009-01-17 18:19:24 +00:00
Gustavo J. A. M. Carneiro 8bd42a0693 Make it easy to turn on profiling of pybindgen 2009-01-17 16:59:45 +00:00
Gustavo J. A. M. Carneiro 796dee6f9e On native win32, we cannot use -D_DEBUG when compiling Python extensions 2009-01-17 16:58:42 +00:00
Gustavo J. A. M. Carneiro 8731761fcd Remove no longer needed WAF command execution win32 workaround 2009-01-17 16:57:42 +00:00
Gustavo J. A. M. Carneiro 28a9688bdf Fix WifiMacQueue typeid registration 2009-01-16 18:52:00 +00:00
Gustavo J. A. M. Carneiro 5ef24fc287 Remove the last remnants of local pybindgen handling (allinone takes care of pybindgen now) 2009-01-16 17:18:49 +00:00
Gustavo J. A. M. Carneiro f43e499af6 examples/wifi-ap.cc ported to Python (minus tracing) 2009-01-16 12:33:22 +00:00
Guillaume Vu-Brugier 0642485437 bug 329: pcap files generated in native win32 (mingw) are always corrupt 2009-01-16 09:08:20 +01:00
Mathieu Lacage edc5b803a0 add missing include 2009-01-16 09:06:59 +01:00
Mathieu Lacage d14c6a670d add missing copyright/license statement 2009-01-16 08:58:17 +01:00
Mathieu Lacage 7604c76fd4 ns-2 calendar code 2009-01-15 20:56:06 +01:00
Mathieu Lacage 14fdfbf4b2 test calendar+ns2calendar schedulers 2009-01-15 20:55:34 +01:00
Mathieu Lacage e4e6eb1ab0 add new comparison operators. 2009-01-15 20:54:11 +01:00
Mathieu Lacage f232747976 memleak 2009-01-15 20:53:50 +01:00
Mathieu Lacage 05437e76a9 empty skeleton for ns2 calendar scheduler 2009-01-15 11:23:59 +01:00
Gustavo J. A. M. Carneiro 8d8d19ef45 Fix build for systems without posix threads library 2009-01-14 15:36:19 +00:00
Gustavo J. A. M. Carneiro f116668736 RealtimeEventLock is gone 2009-01-14 15:35:42 +00:00
Gustavo J. A. M. Carneiro edd1e2552a Correct documentation 2009-01-14 12:46:06 +00:00
Gustavo J. A. M. Carneiro 46a0667585 Add dependency annotations for the task that generates Python bindings 2009-01-14 11:17:41 +00:00
Raj Bhattacharjea 53f9afd2cc Merge 2009-01-13 17:17:37 -05:00
Raj Bhattacharjea a0ce50f7ff Proposed RNG API changes 2009-01-13 17:15:44 -05:00
Gustavo J. A. M. Carneiro 76a4e8e15b merge 2009-01-13 19:29:59 +00:00
Gustavo J. A. M. Carneiro c0ea878ba2 Bug 375: Ctrl-C does not always work when running Python simulations 2009-01-13 19:28:26 +00:00
Gustavo J. A. M. Carneiro a374c0f03e Make Simulator::IsFinished () take into account the stop time. Needed to run custom simulation loops (see bug 375) 2009-01-13 19:27:44 +00:00
Gustavo J. A. M. Carneiro dd94e9fa76 Don't set a value for env['INCLUDEDIR']; pointless as it is not used. Should fix bug #466. 2009-01-12 18:46:28 +00:00
Gustavo J. A. M. Carneiro 7568facca0 Bug 467: waf configure enables python after detecting pybindgen is missing 2009-01-12 18:45:03 +00:00
Mathieu Lacage 6986ca18f8 add wifi features to release notes 2009-01-12 13:40:38 +01:00
Mathieu Lacage 7734caa50f merge 2009-01-12 13:36:19 +01:00
Mathieu Lacage 9f91828dcb add wifi multicast support. Based on patch by Mauchle Fabian. 2009-01-12 13:35:41 +01:00
Gustavo J. A. M. Carneiro 9baeb00519 Put back the variable NSC_RELEASE_NAME in the wscript; it is read by the download script in allinone. 2009-01-12 11:25:51 +00:00
Gustavo J. A. M. Carneiro fdaf129f60 Don't build or fetch NSC/pybindgen, those tasks are now moved to ns-3-allinone 2009-01-11 23:26:34 +00:00
Gustavo J. A. M. Carneiro 9ae3c42512 Upgrade WAF; fix Darwin (OSX) build problems. 2009-01-11 17:51:20 +00:00
Gustavo J. A. M. Carneiro baf080b530 Gracefully ignore missing pkg-config 2009-01-10 19:05:32 +00:00
Gustavo J. A. M. Carneiro cc8b7c6f36 Append the NSC kernel dirs to LD_LIBRARY_PATH
This allows the NSC NS-3 module to find the necessary NSC shared libraries.
2009-01-10 00:46:24 +00:00
Mathieu Lacage 530c949c2a rescan python 2009-01-09 13:18:29 +01:00
Providence.Salumu f9c7dccad9 bug 412: support more arguments in callbacks. 2009-01-09 13:18:24 +01:00
Gustavo J. A. M. Carneiro 2007671aa0 merge 2009-01-09 11:44:13 +00:00
Mathieu Lacage dece4c8aa4 add tex package for nakagami doc formula 2009-01-09 11:05:10 +01:00
Mathieu Lacage f0c50a6466 rescan python 2009-01-09 09:54:14 +01:00
Timo Bingmann 9fe6a1f002 extend gnuplot classes 2009-01-09 09:54:09 +01:00
Mathieu Lacage 068869e088 rescan python 2009-01-09 09:39:54 +01:00
Timo Bingmann 011ece16df PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel. 2009-01-09 09:39:42 +01:00
Timo Bingmann c33a528541 update prev even if it is null 2009-01-09 09:13:02 +01:00
Mathieu Lacage 74f2de296c bug 459: Simulator::Run does nothing after Simulator::Stop is called 2009-01-09 08:54:32 +01:00
Mauro Tortonesi 4bdb706cf0 bug 461: RandomWaypointMobilityModel broken 2009-01-09 08:34:08 +01:00
Mauro Tortonesi c41be20e40 bug 460: ListPositionAllocator bug 2009-01-09 08:31:17 +01:00
Mathieu Lacage 85af7552dd add SchedulerType global variable 2009-01-09 08:17:46 +01:00
Mathieu Lacage b2624f8ae9 handle calendar scheduler in bench 2009-01-09 07:51:42 +01:00
Mathieu Lacage 557a62b1a1 simplify the implementation 2009-01-09 07:51:17 +01:00
Mathieu Lacage 28a2ce0c66 introduce lastPrio to handle resizing correctly 2009-01-08 16:23:33 +01:00
Mathieu Lacage e5bb6e6b60 optimize resizing 2009-01-08 11:43:15 +01:00
Mathieu Lacage a60dcb5fb4 add back asserts 2009-01-08 11:21:25 +01:00
Mathieu Lacage 03f68f9350 resize calendar queue. Slow :/ 2009-01-08 11:15:27 +01:00
Mathieu Lacage 6d79dc1e82 a Calendar queue without resizing. 2009-01-08 09:31:38 +01:00
Mathieu Lacage a3ebce551f bug 455: Scalar(0.1) / Scalar(1.25) has no effect 2009-01-07 14:49:30 +01:00
Mathieu Lacage 04d95b5962 fix coding style 2009-01-07 13:33:59 +01:00
Mathieu Lacage 180f0d7f46 rescan python 2009-01-07 13:27:03 +01:00
Mathieu Lacage 8e2a692556 remove uneeded PeekPointer calls 2009-01-06 15:28:03 +01:00
Mathieu Lacage 2bcbf6bbad fix coding style 2009-01-06 15:25:31 +01:00
Mathieu Lacage 6966dcc4a3 fix typo 2009-01-06 15:23:49 +01:00
Mathieu Lacage 8eec10538a ensure that all wifi modes are registered 2009-01-06 14:25:55 +01:00
Mathieu Lacage fc340529ee remove public static variables. Use public static methods 2009-01-06 13:46:41 +01:00
Mathieu Lacage 1732ab51e2 virtualize ErrorRateModel 2009-01-06 13:12:28 +01:00
Gustavo J. A. M. Carneiro 88d40d0dda Correct way to enable WAF autoconfigure 2009-01-03 23:14:32 +00:00
Gustavo J. A. M. Carneiro 4a6cf7bff1 New WAF cflags tool, to add back the compilation flags (debug/optimized) 2008-12-31 11:20:18 +00:00
Gustavo J. A. M. Carneiro 95de4dafdb correct dependency problem 2008-12-31 11:15:45 +00:00
Tom Henderson 9f05afa09d Additional cleanup of mixed-wireless; get packets to flow across different device technologies 2008-12-30 21:51:36 -08:00
Tom Henderson 5b1f7da9eb fix course change notification portion of the script 2008-12-30 13:18:56 -08:00
Tom Henderson 8b8e2d9ec0 mixed-wireless was not instantiating a stationManager in helper 2008-12-30 12:14:54 -08:00
Tom Henderson ca5532bb82 fix for bug451-- arp cache 2008-12-30 11:35:31 -08:00
Gustavo J. A. M. Carneiro 46a6c1b7c7 Convert warning to Logs.warn (waf api change) 2008-12-29 16:54:53 +00:00
Gustavo J. A. M. Carneiro 8022254256 Fix --python-scan 2008-12-29 15:48:34 +00:00
Gustavo J. A. M. Carneiro b5e05e774e merge 2008-12-29 14:19:25 +00:00
Gustavo J. A. M. Carneiro f19d54fddd Upgrade to new WAF, work in progress 2008-12-29 13:28:54 +00:00
Gustavo J. A. M. Carneiro aeed1dc66e merge 2008-12-28 12:34:28 +00:00
Tom Henderson e47657b49f Fix misprints in tutorial (bug 453) 2008-12-27 13:58:12 -08:00
Craig Dowell dcc3ac5e0c Added tag ns-3.3 for changeset 2efae18e7379 2008-12-18 22:33:33 -08:00
Craig Dowell 5f495d0805 Added tag ns-3.3-RC6 for changeset 4267fd454004 2008-12-17 12:54:16 -08:00
Unknown e79dc16688 gustavo's retcode patch for regression 2008-12-17 12:42:02 -08:00
Craig Dowell b75c526925 fixed seeds for tutorial examples and updates to tutorial to match 2008-12-17 12:17:17 -08:00
Craig Dowell 2cc80c1a06 Added tag ns-3.3-RC5 for changeset 58ae52c5845f 2008-12-16 17:47:28 -08:00
Craig Dowell 25e04db1a2 bug 448: V4Ping Application Sends uint32_t Data in Host Order 2008-12-16 12:36:50 -08:00
Gustavo J. A. M. Carneiro 23ec642313 Wifi internal architecture diagram 2008-12-16 16:11:48 +00:00
Craig Dowell d803d31330 Added tag ns-3.3-RC4 for changeset dfd0bc16dc99 2008-12-15 09:38:26 -08:00
Tom Henderson d3e7db87dd add device chapters to manual 2008-12-15 07:25:27 -08:00
Raj Bhattacharjea 71efdc0b02 Add a minimum RTO (adapted from Mathieu, bug 418) 2008-12-13 23:44:20 -05:00
Raj Bhattacharjea 7175cad6df Mathieu's patch: Avoid stack explosion (bug 417) 2008-12-13 23:26:01 -05:00
Craig Dowell 1ff082ece7 some dox for internet-stack tracing 2008-12-13 14:13:37 -08:00
Tom Henderson 6586089b60 A few documentation nits 2008-12-12 17:18:29 -08:00
Craig Dowell 8eb725c516 an emu device chapter for the manual 2008-12-12 14:52:16 -08:00
Craig Dowell 5edb4806d0 doc nits and a new point-to-point device section for the manual 2008-12-12 14:15:31 -08:00
Craig Dowell 571b1c381a more documentation to address trace sources bugs 2008-12-12 11:27:05 -08:00
Gustavo J. A. M. Carneiro f1121b3892 hg-ignore .mob files (mobility traces) 2008-12-12 11:40:59 +00:00
Raj Bhattacharjea 49cae6b4c4 Merge 2008-12-11 23:28:46 -05:00
Craig Dowell c97107fbc0 New examples, build and test tutorial examples 2008-12-11 15:29:19 -08:00
Raj Bhattacharjea 20f06108c1 Null forked TCP socket callbacks, and communicate EOF to higher layers (bugs 423 and 365) 2008-12-11 16:48:42 -05:00
Tom Henderson cd5b642dc5 add dynamic global routing example script 2008-12-11 12:43:11 -08:00
Craig Dowell 026fb79dbf some device trace source documentation 2008-12-10 21:11:05 -08:00
Timo Bingmann 1bf5ac4f09 patch for bug433-- data rates 2008-12-10 13:28:51 +01:00
mathieu. 691ce0fdde fix bug 230, rescan bindings 2008-12-10 17:01:06 -08:00
Craig Dowell c915a078d8 cleanup some trace dox 2008-12-10 16:47:44 -08:00
Mathieu Lacage 5cf99e306a bug 441: double precision issue on x86 32bit systems. 2008-12-10 02:36:28 -08:00
Mathieu Lacage 260d4822c5 bug 440: update tutorial 2008-12-10 02:10:07 -08:00
Mathieu Lacage 27fec02cb2 couple of small typos 2008-12-10 02:09:57 -08:00
Mathieu Lacage 0c525af5f7 bug 440: fix build of tutorial example third.cc 2008-12-10 01:54:24 -08:00
Mathieu Lacage aa776c802a bug 405: add more context to wifi logging 2008-12-10 01:47:59 -08:00
Mathieu Lacage 6adcd14d5f rescan python 2008-12-10 01:34:04 -08:00
Mathieu Lacage ad4c58452e bug 435: API doc update 2008-12-10 01:33:58 -08:00
Mathieu Lacage 79fd7b786b bug 435: file names are not consistent 2008-12-10 00:16:30 -08:00
Mathieu Lacage 3c9ed4a4c7 bug 436: missing doxygen 2008-12-10 00:09:07 -08:00
Craig Dowell 67a0590dc7 Added tag ns-3.3-RC3 for changeset a66553c56a8f 2008-12-09 22:09:12 -08:00
Craig Dowell cea36a7ce4 make a pass through doxygen fixing errors 2008-12-09 20:29:04 -08:00
raj. 438b8e25e7 bug 411 -- apply Raj's patch 2008-12-09 12:24:24 -08:00
Craig Dowell 4b0f97c0aa Add reasonable data rate and delay to csma channels; update tutorial 2008-12-09 12:04:36 -08:00
Craig Dowell 5168309a66 Remove stray ^M that snuck into examples 2008-12-09 10:28:44 -08:00
Tom Henderson 7092d2eeb5 some corrections to the new object chapter 2008-12-08 22:06:17 -08:00
Craig Dowell 99c1403d6e add to CSMA dox for trace sources 2008-12-08 21:09:29 -08:00
Gustavo J. A. M. Carneiro aab8ebd04e Add --with-nsc configuration option 2008-12-07 19:02:55 +00:00
Craig Dowell 32de22509c cleanup manual Makefile 2008-12-06 13:56:51 -08:00
Craig Dowell ae712d5cba updated emulation dias 2008-12-06 12:25:10 -08:00
Craig Dowell 62aeeb1d58 Added tag ns-3.3-RC2 for changeset 654eed5f3ad0 2008-12-05 22:28:02 -08:00
Craig Dowell 636d6ad671 branch merge 2008-12-05 16:49:29 -08:00
Craig Dowell fce80c20d7 finish up a decent emulation chapter in manual 2008-12-05 16:49:05 -08:00
Tom Henderson 5e09777526 Add new objects chapter to manual 2008-12-05 16:32:11 -08:00
Craig Dowell 452dc5ffe5 branch merge 2008-12-05 13:19:40 -08:00
Craig Dowell e6be8062ec tweak testbed.dia 2008-12-05 13:19:13 -08:00
Craig Dowell 32a2da786f tweak emulated-channel.dia 2008-12-05 13:15:26 -08:00
Tom Henderson 0683941c98 branch merge 2008-12-05 13:12:42 -08:00
Tom Henderson e1443a1660 add some things to release notes and changes.html; revise README 2008-12-05 13:11:26 -08:00
Unknown aeb466f828 scale emulation dia drawings down since HTML won't do it 2008-12-05 12:14:27 -08:00
Craig Dowell 4dc33672ac some words about emulation 2008-12-04 20:19:11 -08:00
Craig Dowell b348271047 start of emulation chapter in manual 2008-12-04 18:55:04 -08:00
Gustavo J. A. M. Carneiro ca92874e34 Fix nsc/python-scan task descriptions 2008-12-04 11:34:01 +00:00
Raj Bhattacharjea 802e26d2f8 Don't ignore TCP acks received in CLOSE_WAIT state (fixes bug 392) 2008-12-03 21:09:52 -05:00
Raj Bhattacharjea d4002102f6 Support TCP delackcount>2 (bug 250) 2008-12-03 21:08:44 -05:00
Craig Dowell 64a7dac84b fix bug 431 -- memory leak in bridge net device 2008-12-03 17:47:03 -08:00
Craig Dowell abcfbcd323 Added tag ns-3.3-RC1 for changeset a84f2ab246e6 2008-12-02 12:15:42 -08:00
Craig Dowell f8cf3d5cf4 rescan bindings 2008-12-02 12:15:18 -08:00
Craig Dowell c18dc1e4f0 Removed tag ns-3.3-RC1 2008-12-02 11:54:27 -08:00
Gustavo J. A. M. Carneiro c806393836 Fix a couple of OLSR bugs (#415)
- Added a lot more logging messages;

- When "link sensing" tries to update a link tuple for a neighbor that has been removed, just re-add the neighbor, rather than silently failing;

- The optimization of not recomputing the routing table if we think no state has changed has been removed: it turned out to be just too buggy and the code base makes it difficult to catch all places where a state mofication is done.  Instead now we just recompute the table for any message processed, like the RFC says.
2008-12-02 18:42:24 +00:00
Tom Henderson 3380796d23 fix optimized build 2008-12-02 07:42:33 -08:00
Craig Dowell 46a52f3a67 Added tag ns-3.3-RC1 for changeset f33cbf6b051c 2008-12-02 00:00:01 -08:00
Craig Dowell 6def0ea405 update RELEASE_NOTES for ns-3.3 2008-12-01 23:43:01 -08:00
Tom Henderson 9d8fe8e81f Fix bug358; return EINVAL for inappropriate listen() call 2008-12-01 21:45:32 -08:00
Tom Henderson ebf89f2294 branch merge 2008-12-01 21:35:24 -08:00
Tom Henderson ea2f7aeed8 add missing files 2008-12-01 21:34:33 -08:00
Tom Henderson 07e526f6de branch merge 2008-12-01 21:33:52 -08:00
Tom Henderson f3dc299e82 Remove redundant m_txTrace in ipv4-l3-protocol 2008-12-01 21:29:59 -08:00
Tom Henderson 6306d3202d branch merge 2008-12-01 21:28:37 -08:00
Tom Henderson df23230e59 merge with tip 2008-12-01 21:23:51 -08:00
Tom Henderson 55051d3a0a Add processing logic for stub links in global routing code 2008-11-30 23:37:12 -08:00
Tom Henderson 655aa68d54 Segregate Ipv4GlobalRouting from Ipv4StaticRouting; add API for deleting and recomputing global routes 2008-11-30 21:21:23 -08:00
Mathieu Lacage 3f2b9429e0 merge with HEAD 2008-11-28 17:42:10 +01:00
Tom Henderson bf571e8260 Drop packets in Ipv4L3Protocol::Receive if interface is down 2008-11-28 07:21:26 -08:00
Gustavo J. A. M. Carneiro 47980e80e6 Const fix (needed for older Python versions) 2008-11-28 15:12:05 +00:00
Gustavo J. A. M. Carneiro 192ae37d11 The 'contrib' module actually depends on 'common' too (affects waf --python-scan) 2008-11-28 14:45:48 +00:00
Tom Henderson 6b0468c20b Bug 400: allow /32 addresses to be used on IPv4 interfaces 2008-11-28 06:05:27 -08:00
Sebastien Vincent 271bac3e92 Remove IcmpSocket class. 2008-11-28 14:24:09 +01:00
Mathieu Lacage 7390026044 merge with HEAD 2008-11-28 08:56:47 +01:00
Mathieu Lacage b56051a9bb bug 396: try harder to send ASSOCIATION_RESPONSE frames. 2008-11-28 08:55:24 +01:00
Craig Dowell 4913060911 CHANGES.html for global routing supporting bridges 2008-11-26 14:00:05 -08:00
Craig Dowell 8f85775a54 branch merge 2008-11-26 13:53:28 -08:00
Craig Dowell d27274e958 disallow routing on bridge devices with IP address, fix wifi-wired-bridging 2008-11-26 13:48:53 -08:00
Gustavo J. A. M. Carneiro c1b49366fe merge 2008-11-26 14:56:21 +00:00
Gustavo J. A. M. Carneiro 80b1ce258d Fix waf problem running programs with arguments. 2008-11-26 14:55:35 +00:00
Mathieu Lacage f69d0dfffd bug 421: memory leak in csma-ping 2008-11-26 04:27:10 -08:00
Mathieu Lacage 1d6cec837e merge with HEAD 2008-11-26 13:13:24 +01:00
Mathieu Lacage c0ec85b486 add missing chainup to parent DoDispose method 2008-11-26 13:12:39 +01:00
Gustavo J. A. M. Carneiro d474f1933a Bug 289: CommandLine::AddValue is not wrapped 2008-11-26 12:11:11 +00:00
Gustavo J. A. M. Carneiro 2d090e7d70 merge 2008-11-26 11:45:53 +00:00
Gustavo J. A. M. Carneiro 378f7e02be Make sure obj.name == obj.target for 'scratch' programs; fixes issue reported in ns-3-users with ./waf --run scratch/simple not working. 2008-11-26 11:44:47 +00:00
Mathieu Lacage 026673fa36 bug 420: avoid valgrind warning 2008-11-26 12:42:51 +01:00
Mathieu Lacage 6d31ca0ffb merge with HEAD 2008-11-26 10:43:24 +01:00
Mathieu Lacage 63ccaf86e4 regression test for ns2 mobility file helper 2008-11-26 10:40:23 +01:00
Mathieu Lacage c45d810a04 bug 408: ensure that we perform duplicate detection and defragmentation for both management and data frames. bug 214: make the sequence smaller check a debug log message rather than an unconditional message. 2008-11-26 10:24:41 +01:00
Craig Dowell 1885a1d55d instrument PcapWriter 2008-11-25 22:19:59 -08:00
Gustavo J. A. M. Carneiro 77fe2e1cbb [Bug 398] NqstaWifiMac does not filter received frames by BSSID 2008-11-25 14:45:46 +00:00
Mathieu Lacage fe8a6a83b9 bug 257: change the default log output of time to seconds, not the simulator's resolution. 2008-11-25 15:37:43 +01:00
Craig Dowell 8e049d9194 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found 2008-11-24 21:39:00 -08:00
Craig Dowell 99233fe787 branch merge 2008-11-24 11:21:15 -08:00
Gustavo J. A. M. Carneiro 35b28c656c Post-fix the last patch, to make sure invalid program names passed into --run trigger an informative error message as before. 2008-11-24 17:49:33 +00:00
Gustavo J. A. M. Carneiro ee16e0ad83 When --run'ing a program, tell WAF to only build that program, nothing more.
This greatly speeds up compilation when all you want to do is run a test program, as it skips the time consuming linking to be done for all example programs.
2008-11-24 15:28:42 +00:00
Gustavo J. A. M. Carneiro 885330d035 Work around #define ECHO in a system header file included by Python.h on Mac OS X (bug #413) 2008-11-24 12:39:50 +00:00
Gustavo J. A. M. Carneiro ef00197fe8 Disable EmuNetDevice Python bindings if the netdevice is not compiled in (bug #413) 2008-11-24 12:09:47 +00:00
Mathieu Lacage c6d1ff065d add WifiHelper::Install (Ptr<Node>) method per craig's comment. 2008-11-24 06:45:13 +01:00
Mathieu Lacage 8393b27aa2 merge with HEAD 2008-11-24 06:36:05 +01:00
Craig Dowell 46b8c8c9fc remove some hey-look-here debugging flags 2008-11-20 20:50:17 -08:00
Craig Dowell b0694a6a76 branch merge 2008-11-20 19:44:19 -08:00
Craig Dowell b66f046916 fix bug 114 and bug 66 2008-11-20 16:48:21 -08:00
Craig Dowell d26abb0c10 teach global routing about bridges 2008-11-19 23:38:01 -08:00
Craig Dowell c178314bbf deal with bridged stub/transit networks on routers 2008-11-19 22:16:43 -08:00
Craig Dowell 7d71822e3b factor DiscoverLSAs into understandable modules 2008-11-19 21:21:14 -08:00
Craig Dowell 0f468c97e7 Admit possibility that not all nodes are routers. 2008-11-19 18:44:20 -08:00
Tom Henderson d7fa009d70 Drop trace notification when outgoing interface is down 2008-11-19 16:41:17 -08:00
Craig Dowell 23b216a600 convince global routing not to crash in the presence of bridges 2008-11-19 15:54:12 -08:00
Sam Jansen ee5cf0946f Depend on nsc 0.5.0. This is required so the interface is the same for an NSC 2008-11-19 22:41:12 +01:00
Gustavo J. A. M. Carneiro dfa88263cc fix --with-pybindgen path handling bug 2008-11-19 18:23:22 +00:00
Gustavo J. A. M. Carneiro f85ef3914a merge 2008-11-19 17:33:17 +00:00
Gustavo J. A. M. Carneiro 9af50e6d5b Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network 2008-11-19 17:32:37 +00:00
Gustavo J. A. M. Carneiro 7bd84c12ac Add a --with-regression-traces configure option, to allow using externally supplied regression traces instead of fetching them from the network. 2008-11-19 17:17:07 +00:00
Mathieu Lacage 8fd3438914 5% cpu optimization 2008-11-19 14:39:52 +01:00
Mathieu Lacage 37d6b2a697 5% cpu optimization 2008-11-19 14:19:10 +01:00
Craig Dowell 179ef21209 implement IsBridged for net devices 2008-11-18 16:23:31 -08:00
Craig Dowell 1e42d9bae7 add bridged routing example 2008-11-18 15:46:46 -08:00
Florian Westphal b6939441cd nsc-tcp-socket-impl: use new nsc getsockname/getpeername interface.
closes bugzilla #320.
2008-11-18 23:14:02 +01:00
Gustavo J. A. M. Carneiro afe55f740e Fix build of Python bindings with Python 2.6 2008-11-18 15:12:12 +00:00
Andrey Hippo fec6ea6ae2 Bug 387: Build fails with junk subdirectories in "scratch" directory 2008-11-18 14:05:47 +00:00
Gustavo J. A. M. Carneiro e8e8e887d7 Refactor wscript code to move regression testing code to a separate python module (bug 325) 2008-11-18 13:48:26 +00:00
Craig Dowell 9edb6bda8b overdue changes to CHANGES.html 2008-11-17 22:25:32 -08:00
Craig Dowell 9a750001db rescan for new method in InternetStackHelper 2008-11-17 20:14:53 -08:00
Tom Henderson b45e7ce23e Add an InternetStackHelper method to do ascii tracing on drop events 2008-11-07 06:54:21 -08:00
Tom Henderson c1e02d5d3b Allow /32 addresses to be configured via Ipv4AddressHelper 2008-11-07 07:35:35 -08:00
Craig Dowell 81c8a200d9 change attribute ReceiveErrorModel in CSMA and rescan 2008-11-17 19:56:04 -08:00
Craig Dowell 0029c0056e make ppp header public 2008-11-17 19:50:23 -08:00
Unknown 523389e77e added abusive regression test csma-star 2008-11-17 19:34:03 -08:00
Unknown 222d38c1ef fix buggy example 2008-11-17 19:25:34 -08:00
Gustavo J. A. M. Carneiro 8acf39d56e Ipv6Header::GetName() is declared but not implemented; remove it. 2008-11-09 12:34:48 +00:00
Gustavo J. A. M. Carneiro 48d9cf9b40 merge 2008-11-08 15:00:56 +00:00
Gustavo J. A. M. Carneiro f804bb190a Python: require new pybindgen and re-scan API to make the list of free functions and namespaces sorted.
This commit will change a lot the scanned API definitions, once, but should allow much more stable scanning in the future, as right now only types were being sorted, but free functions can jump up or down when different people on different machines scan the API.  Well, no more will that happen in the future, I hope.
2008-11-08 15:00:28 +00:00
Craig Dowell 586aa57b97 osx doesn't emu 2008-11-07 20:41:38 -08:00
Gustavo J. A. M. Carneiro 103389505b Make olsr::RoutingTable public, add a method GetEntries to it, and add a method GetRoutingTable to OlsrAgent. This way it is possible to read the actual routing table that OLSR has discovered, for debugging/visualization purposes. 2008-11-07 19:51:00 +00:00
Unknown a9914ca540 Initial IPv6 capability 2008-11-07 11:36:15 -08:00
Craig Dowell d1b135a2d2 g++ 4.3.2-1ubuntu7 too picky 2008-11-06 15:04:25 -08:00
Craig Dowell 8c565917e2 keep gcc 3.4 from complaining 2008-11-06 14:23:47 -08:00
Craig Dowell 2f96c1ddf5 branch merge 2008-11-06 13:10:04 -08:00
Craig Dowell 2af905d9cf address bug 393 (need to overload Install methods for python) 2008-11-06 13:08:20 -08:00
Craig Dowell 5dc26994c4 asserts cut and paste into places where fatal error was appropriate 2008-11-06 11:52:59 -08:00
raj. 478bd474e0 apply patch for bug 390 (SocketImpl::Bind returns something other than -1) 2008-11-05 19:53:52 -08:00
mathieu. 83ac2144c0 apply patch for bug 390 (regression tests can't open input files) 2008-11-05 19:45:40 -08:00
Craig Dowell eaf0526911 need bindings for v4ping 2008-11-05 17:35:15 -08:00
Craig Dowell afc09e988a remove unimplemented methods from emu class + rescan 2008-11-05 15:00:59 -08:00
Unknown dc2d67e7b8 apply patch for bug 294 (GetMulticastAddr) + emu device update + rescan 2008-11-05 14:49:21 -08:00
Craig Dowell 3aa50e6af9 Apply Patch to address bug 294 -- due to vincent 2008-11-05 14:33:20 -08:00
Craig Dowell ee5df1fda8 branch merge 2008-11-05 14:09:43 -08:00
Craig Dowell 8950779748 remove tap device and helper 2008-11-05 14:08:54 -08:00
Mathieu Lacage 4874bc3ce9 typo 2008-11-04 14:56:32 +01:00
Mathieu Lacage 6ebfe7faba new wifi API 2008-11-04 14:06:34 +01:00
Mathieu Lacage 53b1d1c6df implement missing method 2008-11-04 14:06:26 +01:00
Mathieu Lacage 87745fdacc assert on invalid uid 2008-11-04 14:05:57 +01:00
Unknown 4bf9d4efe7 Trivial change to fix time insertions after recent output format change. 2008-11-03 11:38:23 -05:00
Gustavo J. A. M. Carneiro ccd6e796cd Work around a WAF bug in failing to recognize GCC while detecting CXXFLAGS for compiling Python extensions. 2008-10-31 22:47:29 +00:00
Tom Henderson a97b740785 Fix bug 362; cancel WaitReplyTimer when ArpCache is flushed 2008-10-30 22:04:12 -07:00
Craig Dowell c48b363841 sentence made no sense in emu.h 2008-10-30 16:39:37 -07:00
Craig Dowell 46729f42fd clarify comment in emu-helper 2008-10-30 15:36:36 -07:00
Craig Dowell cb9080da39 enable multicast in emu-net-device 2008-10-30 15:34:02 -07:00
Craig Dowell 580ad68137 turn off LOG in emu-sock-creator 2008-10-30 15:27:15 -07:00
Craig Dowell c6a12a1308 reverse sense of waf sudo flag to --enable-sudo 2008-10-30 13:00:16 -07:00
Craig Dowell 2a979e7455 some dox 2008-10-30 10:30:33 -07:00
Craig Dowell 68951bddeb branch merge 2008-10-30 10:01:27 -07:00
Craig Dowell 9df77a6cdd add emu-udp-echo example 2008-10-30 10:00:41 -07:00
Craig Dowell 339b98132d double and int confusion in main-test-sync 2008-10-29 22:52:22 -07:00
Craig Dowell d8b151d4fe rework to address suid root issues 2008-10-29 22:39:36 -07:00
Craig Dowell bc35a1b17b branch merge 2008-10-29 11:49:21 -07:00
Craig Dowell 6eeec4502a Apply icmp-application patch frm lacage 2008-10-29 11:19:01 -07:00
Craig Dowell 0df5a7183a apply icmp patch 2008-10-29 11:18:39 -07:00
Mathieu Lacage b09d1008de get rid of reference model for log distance model 2008-10-28 13:40:33 +01:00
Mathieu Lacage 28f7324733 fix build. 2008-10-28 13:24:04 +01:00
Mathieu Lacage 8246114a8d add composite capability to PropagationLossModel base class. 2008-10-28 13:17:17 +01:00
Mathieu Lacage 40dc133bc7 merge with HEAD 2008-10-28 11:26:58 +01:00
Craig Dowell 8cf8f18019 add in the helpers 2008-10-27 23:05:57 -07:00
Craig Dowell eeea109010 give up on merging tap and emulated, break apart 2008-10-27 22:01:24 -07:00
Craig Dowell 622ced4462 merge in tap device 2008-10-27 13:01:28 -07:00
Raj Bhattacharjea 6b358143c0 Bug 340 2008-10-27 15:12:00 -04:00
Raj Bhattacharjea 258bd81cab Bug 311 2008-10-27 15:00:58 -04:00
Mathieu Lacage 767b622b76 bug 394: AdhocWifiMac claims to support SendFrom 2008-10-27 16:40:03 +01:00
Mathieu Lacage e2c52c7b90 remove realtime public API. 2008-10-27 12:47:33 +01:00
Mathieu Lacage f264e2efa2 merge with HEAD 2008-10-27 12:17:38 +01:00
Craig Dowell af16634027 csma version of install star and example 2008-10-24 17:29:26 -07:00
Craig Dowell 017ecaeb3d branch merge 2008-10-24 15:51:20 -07:00
Craig Dowell f18f28985f make star topologies easier to create 2008-10-24 15:50:52 -07:00
Craig Dowell a3556ebe05 branch merge 2008-10-24 07:13:35 -07:00
Mathieu Lacage 3ec1d2f640 bug 280: trace helpers too inclusive 2008-10-24 13:22:16 +02:00
Mathieu Lacage c164d111bd forgot to build ns2 mobility sample 2008-10-24 12:39:53 +02:00
Mathieu Lacage 9002d0d27c bug 284: cannot use config paths to get a handle on an object. 2008-10-24 12:35:28 +02:00
Mathieu Lacage 24d3e0317a replace \t with 8 spaces. 2008-10-24 12:31:57 +02:00
Mathieu Lacage d8dad149da add ns2 mobility sample. 2008-10-24 12:29:39 +02:00
Mathieu Lacage 7a923ef2bd rescan python 2008-10-24 12:29:15 +02:00
Mathieu Lacage b839e400a9 Read correctly fractional seconds. Reported by Ramon Bauza 2008-10-24 12:29:02 +02:00
Mathieu Lacage 4d380ed257 rework StaticSpeedHelper API 2008-10-24 12:27:47 +02:00
Mathieu Lacage 3af636f969 bug 339: unconditional assert API. 2008-10-24 10:29:06 +02:00
Mathieu Lacage 26aa64c033 bug 386: make sure errno is not set incorrectly and don't access stale packets. 2008-10-24 09:22:50 +02:00
Craig Dowell 6041ad024c rescan for bug 283 2008-10-23 16:08:13 -07:00
Craig Dowell b4947df5d0 Liu's GetSockName patch 2008-10-23 15:59:48 -07:00
Craig Dowell 49e12dc17d structured thread exit methods 2008-10-23 15:50:24 -07:00
Craig Dowell c810ef64a1 Apply thread interrupt patch 2008-10-23 15:22:38 -07:00
Kirill V. Andreev 922d5a4de9 bug 389: Beacon is sent after DIFS+Backoff instead of PIFS 2008-10-23 21:27:28 +02:00
Craig Dowell c7d0ce769c Apply patch to fix bug 364 2008-10-23 11:51:15 -07:00
Craig Dowell b8dd9ddf99 rescan after 363 fix 2008-10-23 11:50:45 -07:00
Craig Dowell 383c4d9df5 Apply patch to fix bug 363 2008-10-23 11:24:52 -07:00
Craig Dowell 012433cf91 rescan after bug 357 patch 2008-10-23 10:57:26 -07:00
Craig Dowell 0d30646695 Remove queue limit from listen 2008-10-23 10:48:42 -07:00
Tom Henderson 0458f450cb tutorial typos fixed (bug 379) 2008-10-22 22:13:22 -07:00
Gustavo J. A. M. Carneiro dd6476d804 Python: fix bug with missing wrapper registration for objects created directly via the python constructor 2008-10-20 16:56:40 +01:00
Mathieu Lacage 2aecf7055b bug 278: print protocol number from Ipv4Header::Print 2008-10-20 13:31:25 +02:00
Mathieu Lacage 8ae791d954 remove broken test 2008-10-20 12:37:43 +02:00
Mathieu Lacage 0f8139fc10 bug 382: templated DynamicCast 2008-10-20 08:40:32 +02:00
Mathieu Lacage e443a39436 merge with HEAD 2008-10-17 20:07:44 +02:00
Mathieu Lacage b4745c7708 add debugging 2008-10-17 20:05:17 +02:00
Raj Bhattacharjea e698770970 Undo change 2008-10-17 10:47:47 -04:00
Unknown 8927ae967a Touch the readme as a test 2008-10-17 10:45:44 -04:00
Mathieu Lacage 79250d10c2 add API to get bytes out of a packet without calling PeekData 2008-10-17 14:16:53 +02:00
Mathieu Lacage 36c0976a53 give attribute power to Callback. 2008-10-17 14:15:52 +02:00
Mathieu Lacage 6f484b6ead bug 349: workaround compiler bug 2008-10-17 13:11:39 +02:00
Mathieu Lacage b44dc748e0 fix optimized build 2008-10-17 10:35:14 +02:00
Gustavo J. A. M. Carneiro 2e79a78db0 merge 2008-10-16 11:54:24 +01:00
Gustavo J. A. M. Carneiro 2073f02054 merge 2008-10-16 11:53:47 +01:00
Mathieu Lacage 98b197de5a bug 202: header file conflict 2008-10-16 12:53:05 +02:00
Mathieu Lacage ff776177bf bug 352: STA receives back the broadcasts it sends. 2008-10-16 12:47:17 +02:00
Mathieu Lacage e4fb44dd96 bug 343: bench-packets does not work. 2008-10-16 12:44:25 +02:00
Gustavo J. A. M. Carneiro 6cae60a58d merge 2008-10-16 11:42:23 +01:00
Mathieu Lacage 7b55da3a04 kill dead code 2008-10-16 12:22:59 +02:00
Mathieu Lacage eb566b82d3 bug 350: operator > missing. 2008-10-16 12:17:00 +02:00
Mathieu Lacage 91d94d6076 bug 371: wifi-ap broken 2008-10-16 10:26:13 +02:00
Mathieu Lacage 47f1f1fefc improve debugging 2008-10-16 10:25:55 +02:00
Mathieu Lacage d3e9be922d bug 372: fragmentation is broken 2008-10-16 09:48:47 +02:00
Gustavo J. A. M. Carneiro e83d4da973 Python: enable wrapping of the packet metadata APIs. 2008-10-15 18:32:07 +01:00
Gustavo J. A. M. Carneiro ff4ec5cf64 Packet::Metadata::PrintStats doesn't really exist. 2008-10-15 18:19:12 +01:00
Gustavo J. A. M. Carneiro fe8cbc9a0f A more pythonic wrapper for ns3.TypeId.LookupByNameFailSafe 2008-10-15 15:55:09 +01:00
Mathieu Lacage 1a6629d9cf make sure we implement all Schedule methods within the right class 2008-10-15 15:53:06 +02:00
Mathieu Lacage 996a095d36 rescan python bindings 2008-10-15 15:12:05 +02:00
Mathieu Lacage cfea3297ac remove event locking 2008-10-15 15:01:12 +02:00
Mathieu Lacage 82bbe71419 rename RealtimeSimulator to WallclockSimulator 2008-10-15 14:51:16 +02:00
Mathieu Lacage 6557016724 remove uneeded includes. 2008-10-15 14:42:27 +02:00
Mathieu Lacage 5dc0415289 move MakeEvent out of Simulator 2008-10-15 14:35:28 +02:00
Mathieu Lacage e33fc49877 avoid using Ptr<EventImpl> 2008-10-15 13:35:49 +02:00
Mathieu Lacage b4e442df4d don't use EventId in Schedulers: use Scheduler::Event instead. 2008-10-15 13:05:33 +02:00
Mathieu Lacage 253fecb82e define Scheduler::Event and use it in Scheduler::Insert 2008-10-15 10:33:43 +02:00
Mathieu Lacage 64c11d222a reuse operator < (EventKey) 2008-10-15 10:11:32 +02:00
Mathieu Lacage 0d77861853 remove uneeded include. 2008-10-15 10:10:53 +02:00
Mathieu Lacage 50f23a7579 merge with HEAD 2008-10-15 09:50:28 +02:00
Mathieu Lacage 414c2ff3ad constify 2008-10-15 09:49:39 +02:00
Craig Dowell 2ca2b4e6bf implement a non-realtime version of RunOneEvent for realtime simulator and allow Run, Stop, Run 2008-10-14 23:13:12 -07:00
Craig Dowell 8b6dc98d14 slight reorganization and naming change for added realtime methods 2008-10-14 22:52:41 -07:00
Gustavo J. A. M. Carneiro 213f6526a8 Rescan API for Python. 2008-10-12 18:04:10 +01:00
Gustavo J. A. M. Carneiro f75fbc1512 Upgrade to pybindgen rev. 598, to fix bug #291. 2008-10-12 14:40:26 +01:00
Craig Dowell 415f3adbc5 added test for m_running in ScheduleRealNow 2008-10-10 21:01:50 -07:00
Craig Dowell 55cca9abef it helps to remember to add function implementations 2008-10-10 16:43:43 -07:00
Craig Dowell b6a9b08f75 add dangerous realtime scheduling methods in an intentionally harder to find and use way 2008-10-10 16:22:13 -07:00
Craig Dowell 8675d64f46 branch merge 2008-10-10 15:26:32 -07:00
Craig Dowell c101158f24 make simulator schedule calls explicitly relative throughout. fixes multithread problem in realtime simulator 2008-10-10 15:24:56 -07:00
Tom Henderson b03afa5f00 remove tgif figures; replace with dia 2008-10-10 15:01:20 -07:00
Tom Henderson 43f3993d36 branch merge 2008-10-10 14:22:53 -07:00
Tom Henderson 1581ac4450 remove tgif figures; replace with dia 2008-10-10 14:21:58 -07:00
Mathieu Lacage aea71064a4 bug 331: constify Packet::PeekHeader 2008-10-10 11:20:53 +02:00
Mathieu Lacage 32ce5ce0be bug 367: generate beacons by default at time 0.0 2008-10-10 11:18:46 +02:00
Mathieu Lacage e20b335199 bug 361: make GetBssid public. 2008-10-10 09:24:35 +02:00
Gustavo J. A. M. Carneiro 9239dcf55a merge 2008-10-07 12:39:27 +01:00
Gustavo J. A. M. Carneiro 81bcdc9bf8 Fix compat. with Python < 2.5 (fixes ns-old regression failure) 2008-10-07 12:23:57 +01:00
Tom Henderson 14dbd0649f typo fix (bug 373) 2008-10-06 22:39:53 -07:00
Gustavo J. A. M. Carneiro 24a1fdfc69 Improve debug logging in Node::ReceiveFromDevice 2008-10-06 18:21:04 +01:00
Gustavo J. A. M. Carneiro 8a664200e5 New pybindgen and new API scanning, brings support for comparison operators and + - * / numeric operators. 2008-10-06 17:39:35 +01:00
Tom Henderson 1c3dcd37b3 bug in script-- Stop not being called 2008-10-02 16:48:01 -07:00
Craig Dowell 4215553314 bug 337 2008-10-02 15:22:17 -07:00
Gustavo J. A. M. Carneiro c2985053a3 Pull pybindgen revno 582 for increased stability of the generated python files with multiple developers doing the scanning. 2008-10-02 17:30:38 +01:00
Gustavo J. A. M. Carneiro 3997faf477 merge 2008-10-02 17:16:04 +01:00
Gustavo J. A. M. Carneiro 03e1a6bae5 Exit WAF after processing --python-scan to avoid incorrect builds, since WAF does not handle well files being generated into the source dir instead of the build dir 2008-10-02 17:15:09 +01:00
Mathieu Lacage 2160b31237 add private operator = to disable it 2008-10-02 17:05:16 +02:00
Mathieu Lacage 35c25f995e hide window when starting simulation. 2008-10-02 15:04:28 +02:00
Mathieu Lacage 5cd9a601e1 change button label to be more explicit 2008-10-02 14:57:39 +02:00
Gustavo J. A. M. Carneiro d607ae00f3 Need to acquire the Python GIL also in ~PythonEventImpl, as it may be called at any time from the C++ code, from any thread. 2008-09-27 15:32:04 +01:00
Gustavo J. A. M. Carneiro 8e454b058b Get newer pybindgen, for stl containers support 2008-09-27 15:26:27 +01:00
Gustavo J. A. M. Carneiro 9866cc1ce3 merge 2008-09-27 15:17:37 +01:00
Gustavo J. A. M. Carneiro 79e685df92 Allow interrupting PyBindGen fetching, via Ctrl-C, for the impatient developers. 2008-09-27 15:06:38 +01:00
Mathieu Lacage e864af7983 fix build with gcc 4.3.0 2008-09-25 15:50:07 -07:00
Florian Westphal 3a6bf88a49 nsc: delay creating nsc interface using ScheduleNow ().
because we cannot rely on the node to have any assigned interface
when the nsc stack is initialised, we need to delay creating the nsc
interface. Up until now this was done by initialising the interface
when the first socket is opened, which resulted in a segfault or
an assertion failure when a packet arrived but no socket was ever created...
2008-09-25 01:43:27 +02:00
Mathieu Lacage f8bbbbc899 make sure sinks are started 2008-09-23 16:38:51 -07:00
Mathieu Lacage fbf3dd3cf7 make sure that the sinks are started 2008-09-23 16:31:54 -07:00
Mathieu Lacage a7b4e36b84 use better variable names. 2008-09-23 16:14:00 -07:00
Mathieu Lacage 97b7179161 the sink must be enabled on node 2 2008-09-23 16:02:30 -07:00
Craig Dowell 102623e2b1 mispeeling in introduction.texi 2008-09-23 09:53:52 -07:00
Florian Westphal 266bc671a5 nsc: avoid unecessary use of posix headers
this removes usage of struct iphdr and inet_ntoa.
Replaced by uint32_t[] (we only need to fetch source/destination
ip addresses) and Ipv4Header::Print(), respectively.

netinet/in.h and arpa/inet.h are retained for the time being
due to ntohs/ntohl.
2008-09-23 01:09:43 +02:00
Florian Westphal 41fffa73b9 nsc: make sure nsc has a configured interface
the receive method hands packets to the nsc core via
nsc's if_receive_packet() method.

NSC (rightfully) assumes that if it gets a packet, there must
be a network interface. However, at this time the interface
initialization in ns-3-nsc is done when the first socket is created.

The result is a segmentation fault inside nsc when ns-3 receives
a packet on an nsc-enabled node before a socked has been created
on that node.

For the time being, use NS_ASSERT to make sure the nsc interface exits.
This also gets rid of the NS_LOG use inside the Softinterrupt timer
method and replaces
NS_LOG_FUNCTION_NOARGS with NS_LOG_FUNCTION (this), as suggested by
Mathieu Lacage.
2008-09-22 22:18:53 +02:00
Craig Dowell 05d0f37dda Added tag ns-3.2 for changeset 2ecac911b3ec 2008-09-22 10:36:24 -07:00
Tom Henderson 06f2b16d78 Add chapter on realtime scheduler to manual 2008-09-21 13:10:08 -07:00
Tom Henderson 5d82b2e31f new manual chapter on TCP 2008-09-20 15:45:31 -07:00
Craig Dowell 4a3ee19a31 mispeeling in RELEASE_NOTES 2008-09-18 15:29:00 -07:00
Craig Dowell 8785a190ee Added tag ns-3.2-RC4 for changeset 68218c266a84 2008-09-18 15:28:35 -07:00
Tom Henderson 9e1a3adf6f document ConfigStore 2008-09-18 07:28:03 -07:00
Craig Dowell 4105b6e392 Apply Sam's nsc regression patch 2008-09-17 20:04:26 -07:00
Gustavo J. A. M. Carneiro a2f945ddda Add missing Python GIL locking in PythonEventImpl::Notify 2008-09-17 15:47:07 +01:00
Craig Dowell 4c13936623 Added tag ns-3.2-RC3 for changeset fa1c7b813873 2008-09-16 11:55:52 -07:00
Tom Henderson c060f84ef9 freshen tutorial 2008-09-15 21:37:40 -07:00
Tom Henderson fea009e803 merge with tip 2008-09-15 06:11:38 -07:00
Tom Henderson b005d33fb9 fix some Doxygen warnings 2008-09-15 06:10:53 -07:00
Gustavo J. A. M. Carneiro 6c7aa38c60 Add python based csma-bridge regression test. Closes #344. 2008-09-15 11:45:32 +01:00
Gustavo J. A. M. Carneiro aa6308bc1a Make the example less verbose (for use in regression) 2008-09-15 11:39:15 +01:00
Mathieu Lacage 8e3cdc2e0c don't change VERSION 2008-09-14 17:55:30 -07:00
Mathieu Lacage 77e3a780bb merge with HEAD 2008-09-14 11:40:10 -07:00
Mathieu Lacage 0c7ed36240 don't try to download traces if they are already there. 2008-09-14 11:39:58 -07:00
Tom Henderson 1994268a9b merge with tip 2008-09-12 16:13:20 -07:00
Tom Henderson 5d9c714c1e Doxygen for internet-stack 2008-09-12 16:12:58 -07:00
Tom Henderson 6f3dc648ed doxygen for src/contrib 2008-09-12 11:34:25 -07:00
Craig Dowell f51afd386b Added tag ns-3.2-RC2-bis for changeset d783a951f8f5 2008-09-12 10:36:57 -07:00
Craig Dowell 370c7f7215 update RELEASE_NOTES known issues 2008-09-12 10:19:40 -07:00
Craig Dowell d0696fd776 release_steps.txt nits 2008-09-12 10:12:50 -07:00
Craig Dowell a7f445f460 fix bug 338, MTU overflows frameSize 2008-09-11 15:32:39 -07:00
Mathieu Lacage f5bb4c3302 bug 333:The Position attribute is not constructable anymore. 2008-09-11 11:08:22 -07:00
Mathieu Lacage d82bf3abd6 make sample run. 2008-09-11 10:08:18 -07:00
Mathieu Lacage 75cba72257 Do not assert. Use NS_FATAL_ERROR. 2008-09-11 09:54:19 -07:00
Tom Henderson a70b07289e updates to the tutorial introduction 2008-09-11 08:46:29 -07:00
Tom Henderson c46f02e9c8 add reference to wiki page 2008-09-11 08:45:00 -07:00
Tom Henderson e054045b37 some release notes edits 2008-09-11 08:18:04 -07:00
Tom Henderson 1e1a5caeb2 fix formatting 2008-09-11 08:17:37 -07:00
Gustavo J. A. M. Carneiro 7c2c80af1b Check the return value of read(); Fixes #336. 2008-09-11 15:21:19 +01:00
Gustavo J. A. M. Carneiro a4aeb6e815 Check for mercurial in configuration stage; also fixes OSError exception when mercurial was not available. 2008-09-11 11:44:39 +01:00
Gustavo J. A. M. Carneiro f13ffe2ed2 Make the WAF env available to regression tests 2008-09-11 11:35:42 +01:00
Florian Westphal 7fb1cd3b38 nsc: rework tcp-nsc-zoo example
- fix segfault when nodes argument <=3
- reduce data rate and run time to get smaller pcap files
- add rng seed to make output stable
2008-09-11 01:34:46 +02:00
Craig Dowell 0d8bed8b04 Added tag ns-3.2-RC2 for changeset 319eb29611b1 2008-09-10 12:38:48 -07:00
Florian Westphal 9f901c8ef1 nsc: fix liblinux2.6.18.so sym link creation
changeset 3628:a9c05c7e54f2 ('Move all NSC related build code into
src/internet-stack') erronoulsy moved the sym link creation outside
of the loop.

closes bug #328.
2008-09-10 13:11:35 +02:00
Florian Westphal 9f2e63f535 nsc: remove nsc builddir symlink
changeset 3635:cddd59578812 ('compile nsc code unconditionally')
added the nsc header files to ns-3 and fixed up the include paths,
so we no longer need to create a builddir/nsc symlink to find them.
2008-09-10 12:46:59 +02:00
Gustavo J. A. M. Carneiro ffe65494c4 merge 2008-09-10 11:34:33 +01:00
Gustavo J. A. M. Carneiro b0f7bbf060 Stop the /dev/null redirection abuse 2008-09-10 11:33:30 +01:00
Craig Dowell cb9b816af0 enable nsc when nsc enabled 2008-09-09 17:09:37 -07:00
Mathieu Lacage c8929f34e6 fix typo to allow cloning traces when they are not there yet 2008-09-09 12:35:11 -07:00
Craig Dowell 311955363b prep for ns-3.2-RC2 2008-09-09 11:34:44 -07:00
Gustavo J. A. M. Carneiro 72d3e7353a merge 2008-09-09 18:43:21 +01:00
Gustavo J. A. M. Carneiro 6f10c6c828 Use subprocess.Popen instead of os.system to improve portability of the regression testing framework 2008-09-09 18:43:03 +01:00
Mathieu Lacage e5870d73cb bug 322: download nsc from released location if in 'release' mode. 2008-09-09 10:15:40 -07:00
Gustavo J. A. M. Carneiro 808a874b45 Problem of Python bindings in MinGW has been fixed 2008-09-09 12:13:23 +01:00
Mathieu Lacage cd64cbad48 initialize sta listen interval 2008-09-08 14:45:11 -07:00
Mathieu Lacage 69aa96cfe8 initialize m_ctrlPwrMgt 2008-09-08 14:40:48 -07:00
Mathieu Lacage 18f4a0f940 don't use bitfields: they are evil. 2008-09-08 14:40:27 -07:00
Mathieu Lacage 9b48ec2c9c should set retry bit in rts and acks. 2008-09-08 14:39:59 -07:00
Mathieu Lacage d654a7c67a should set retry bit in acks. 2008-09-08 14:37:54 -07:00
Mathieu Lacage 6f2fba35ab make mobility helper ascii output more robust to formatting portability problems. 2008-09-08 13:13:09 -07:00
Mathieu Lacage 356b8a4d5c make sure to destroy all left-over memory before exit 2008-09-08 12:26:00 -07:00
Mathieu Lacage f75a46a16c do not reserve space for unwritten data to avoid memory initialization problems 2008-09-08 12:22:29 -07:00
Mathieu Lacage b62d2131d5 add msvc to set of platforms known to not work 2008-09-08 11:32:22 -07:00
Mathieu Lacage b024a19fe1 update build matrix 2008-09-08 11:29:12 -07:00
Mathieu Lacage 17adb4fab8 update release notes 2008-09-08 10:43:03 -07:00
Mathieu Lacage 320dcbbfee bug 316: make nsc compilation conditional again 2008-09-08 09:22:45 -07:00
Gustavo J. A. M. Carneiro 8bb361bcba Missing include 2008-09-08 12:54:47 +01:00
Gustavo J. A. M. Carneiro 986a63bbb4 merge 2008-09-08 12:35:08 +01:00
Gustavo J. A. M. Carneiro e1f187d38a Detect the pthread.h header file and automatically disable components that cannot build without it. 2008-09-08 12:19:46 +01:00
Gustavo J. A. M. Carneiro 8b080ef574 Python bindings generation does not need to depend on the 'everything.h' file, only API scanning and compilation of the generated sources. 2008-09-08 11:20:17 +01:00
Unknown ae217b0eaa Don't build realtime simulator if required core components aren't built 2008-09-07 20:13:51 -07:00
Raj Bhattacharjea 61947e25a7 Update CHANGES.html to reflect the last two changesets 2008-09-07 21:58:50 -04:00
Raj Bhattacharjea 1b605147ce Implement TCP finite rx buffer (bug 239) 2008-09-07 20:23:24 -04:00
Raj Bhattacharjea 48ac0501a0 Fix TCP closedown FINs, and remove broken tcp-erros example (bug 242) 2008-09-07 19:38:26 -04:00
Unknown d8dc981267 just remove hires clocks from wall-clock-synchronizer until they are needed 2008-09-06 21:15:59 -07:00
Unknown e84289cff4 fix MinGW build 2008-09-06 21:04:39 -07:00
Gustavo J. A. M. Carneiro 2284d3d545 merge 2008-09-06 19:25:26 +01:00
Gustavo J. A. M. Carneiro dcce81147d Use the information provided by conf.report_optional_feature() to enable/disable python bindings for optional APIs 2008-09-06 19:24:32 +01:00
Unknown fd149a38f3 no references to timespec if CLOCK_REALTIME undef 2008-09-06 10:41:13 -07:00
Gustavo J. A. M. Carneiro 80ba473c52 For better consistency, option --nsc becomes --enable-nsc, --python-disable becomes --disable-python. 2008-09-06 14:46:01 +01:00
Mathieu Lacage 9e629d895f make sure aid is initialized 2008-09-05 21:36:20 -07:00
Mathieu Lacage fb24a25673 compile nsc code unconditionally. 2008-09-05 21:12:00 -07:00
Mathieu Lacage 618313f44c add AddIpv4Stack, splt functions in independent chunks 2008-09-05 20:00:40 -07:00
Unknown d8ec3bb638 flip LLC to DIX framing switch in csma 2008-09-05 15:57:46 -07:00
Unknown f4ea04de0b apply MTU/FrameSize treatment to point-to-point 2008-09-05 15:18:20 -07:00
Unknown a618b8efaa branch merge 2008-09-05 11:57:56 -07:00
Unknown 55279b18b4 MTU, encap mode cleanup for csma 2008-09-05 11:56:17 -07:00
Gustavo J. A. M. Carneiro b9a4eaca8e Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript 2008-09-05 19:55:21 +01:00
Gustavo J. A. M. Carneiro f77da8c755 Exclude any possible 'nsc' folder from the dist tarball (nsc is ~= 100MB). 2008-09-05 18:42:59 +01:00
Gustavo J. A. M. Carneiro e4bd4773e8 We don't want mercurial -q option when fetching nsc, user feedback is important. 2008-09-05 18:37:00 +01:00
Gustavo J. A. M. Carneiro 453dd8a294 Add a summary of optional features at the end of the configuration stage. 2008-09-05 18:16:29 +01:00
Gustavo J. A. M. Carneiro 6e375eee8e New pybindgen, should fix bug #308. 2008-09-05 16:47:15 +01:00
Unknown d2dd9c358f further cleanup of MTU in CSMA 2008-09-04 22:38:52 -07:00
Mathieu Lacage f759d0c1d2 bug 312: ./waf check fails. 2008-09-04 13:29:13 -07:00
Mathieu Lacage b641c0d9b2 merge with HEAD 2008-09-04 12:20:02 -07:00
Mathieu Lacage ca8ec27fdc forgot to add test file 2008-09-04 12:19:44 -07:00
Gustavo J. A. M. Carneiro 4b5aa5ccca merge 2008-09-04 18:46:56 +01:00
Gustavo J. A. M. Carneiro 2c7865d6f2 Disable Python support on the CygWin platform, at least until/if the problems are fixed. 2008-09-04 18:45:21 +01:00
Mathieu Lacage a8dca1e3d3 merge with HEAD 2008-09-04 10:35:04 -07:00
Mathieu Lacage 18b6ad7263 add wifi+wired bridge example 2008-09-04 10:34:42 -07:00
Gustavo J. A. M. Carneiro fd7fc3f80e Adjust LD_LIBRARY_PATH for FreeBSD also; fallback to adjusting LD_LIBRARY_PATH when we don't know any better. 2008-09-04 18:30:38 +01:00
Mathieu Lacage c0dcf4a2cd testcase for wifi bridging 2008-09-04 10:08:02 -07:00
Mathieu Lacage bf1e64236f add NetDeviceContainer constructors 2008-09-04 10:04:14 -07:00
Mathieu Lacage 9d1d6b890e bug 309: GtkConfigStore does not build on freebsd. 2008-09-04 08:59:50 -07:00
Gustavo J. A. M. Carneiro d801092405 Update PyBindGen, fixes compilation with python 2.4. 2008-09-04 14:15:32 +01:00
Mathieu Lacage aafd298bde merge with HEAD 2008-09-03 14:28:26 -07:00
Florian Westphal 720a407b59 nsc: Fix build problem if gtk config store is disabled
gtk config store pulled in libdl.so for us, so things fail
to link of the config store isn't enabled. This makes nsc
pull in libdl itself when its enabled.
2008-09-03 23:24:59 +02:00
Craig Dowell b3525f35af Added tag ns-3.2-RC1 for changeset dfd634417b8d 2008-09-03 11:54:46 -07:00
Craig Dowell ea0a5cf285 update AUTHORS, CHANGES, RELEASE_NOTES for ns-3.2 2008-09-03 11:38:18 -07:00
Mathieu Lacage 51d62156f5 merge with HEAD 2008-09-03 10:42:18 -07:00
Mathieu Lacage d24895bdd1 forward a frame back to the wireless network only if the destination is associated, is a broadcast or multicast packet. 2008-09-03 10:37:22 -07:00
Gustavo J. A. M. Carneiro 0dc8bc3e86 merge 2008-09-03 18:01:40 +01:00
Mathieu Lacage f423b864b0 add missing aggregate removed by previous commit 2008-09-03 09:59:04 -07:00
Gustavo J. A. M. Carneiro 9c48b2460c Fix build when ns3_module_*__local.py files are used. 2008-09-03 17:42:28 +01:00
Mathieu Lacage 21dcddef88 make nsc build again. 2008-09-02 21:19:27 -07:00
Mathieu Lacage cd39d96f2b bug 282: remove Ipv4L4Demux 2008-09-02 17:20:32 -07:00
Mathieu Lacage c063465ce6 from and to addresses were inverted 2008-09-02 16:31:41 -07:00
Mathieu Lacage 1a78f415ce make sure we convey the right 'to' address to the NetDevice layer. 2008-09-02 16:08:54 -07:00
Mathieu Lacage 76147944c3 make sure to propagation the address down to the MacLow 2008-09-02 15:47:49 -07:00
Mathieu Lacage 7d81d3a381 use std::string instead of raw string 2008-09-02 15:17:54 -07:00
Mathieu Lacage d7fb97eac0 improve debugging output 2008-09-02 15:17:43 -07:00
Mathieu Lacage 4cfeba2bf7 We cannot default-construct the position of a mobility model. 2008-09-02 14:44:25 -07:00
Mathieu Lacage 39daae1374 implement promisc mode 2008-09-02 13:37:59 -07:00
Mathieu Lacage 79f85cdf94 implement SupportsSendFrom 2008-09-02 13:19:21 -07:00
Mathieu Lacage 65206529fb implement SendFrom correctly 2008-09-02 13:16:34 -07:00
Mathieu Lacage 2ef4eeb41a remove unecessary include 2008-09-02 13:16:14 -07:00
Mathieu Lacage 5788fe5e8f move GetBssid down to MacLow 2008-09-02 13:08:47 -07:00
Mathieu Lacage 77b1692293 move slot and pifs down to MacLow 2008-09-02 12:36:37 -07:00
Mathieu Lacage c5710262c4 move sifs down to MacLow 2008-09-02 12:13:24 -07:00
Mathieu Lacage c7406f3722 move cts timeout down to MacLow 2008-09-02 12:06:46 -07:00
Mathieu Lacage 3f1514a867 move Address and ack timeout down to MacLow 2008-09-02 12:00:11 -07:00
Mathieu Lacage 9b5145b5a0 use Mac48Address::GetMulticast to avoid code duplication 2008-09-02 11:39:26 -07:00
Mathieu Lacage 8f7b450103 bug 274: bridge must detect compatibility of devices with bridging mode 2008-09-02 11:28:03 -07:00
Mathieu Lacage 5fd19292ea merge with HEAD 2008-09-02 10:45:06 -07:00
Mathieu Lacage 87dc4f304d catch KeyError exception to avoid failing when sqlite or gtk are not installed 2008-09-02 10:44:28 -07:00
Craig Dowell 67313dc308 merge nsc phase one 2008-09-02 10:39:45 -07:00
Mathieu Lacage 732bc9d257 bug 303: return value should not be const 2008-09-02 10:12:14 -07:00
Gustavo J. A. M. Carneiro 1ace78069a Fix compilation of Python bindings when libsqlite3 is not available (and so the class SqliteDataOutput is omitted). 2008-09-02 17:32:19 +01:00
Gustavo J. A. M. Carneiro 0adbfb8047 New pybindgen and API rescan. Extensive API description files changes because pybindgen now handles consts differently. 2008-09-02 11:12:42 +01:00
Gustavo J. A. M. Carneiro 7570be25c5 Python: fix constructor wrapper name for templated ns3::Objects. 2008-08-31 22:33:23 +01:00
Craig Dowell e8cc479c4f branch merge 2008-08-29 20:50:17 -07:00
Mathieu Lacage 3878eac508 merge with HEAD 2008-08-29 20:41:37 -07:00
Mathieu Lacage 05b8fed716 bug 299: packet socket broken by promiscuous update 2008-08-29 20:40:54 -07:00
Florian Westphal d6dd23547b nsc: example files.
This adds two example files that will use the Linux
2.6.18 and 2.6.26 stacks provided by NSC.
2008-08-29 23:11:41 +02:00
Florian Westphal 235ac2801f nsc: enable network simulation cradle
This adds the hooks to allow the nsc code to be compiled into ns-3 if
the --nsc flag is specified during 'waf configure'.
2008-08-29 23:10:00 +02:00
Florian Westphal 4591673b99 nsc: core files.
This adds the core network simulation cradle support
code.
2008-08-29 23:08:18 +02:00
Florian Westphal 11c4bec9e8 ipv4-end-point-demux: add method to fetch list of all endpoints
GetAllEndPoints() will be used by the network simulation cradle.
After a wakeup event, all sockets (Endpoints) have to be checked
for state changes.
2008-08-29 23:07:21 +02:00
Unknown 64e7d5cd17 Some cleanup. 2008-08-29 13:36:12 -04:00
Unknown 168361462f Stats module and example merged in. 2008-08-29 13:22:09 -04:00
Gustavo J. A. M. Carneiro 90c70d1a39 Require new PyBindGen (now ignores the badly scanned anonymous containers that cause problems on cygwin) and rescan API. 2008-08-29 14:56:24 +01:00
Gustavo J. A. M. Carneiro b88b399635 RealTimeSimulatorImpl::EnableLogTo() is not implemented, remove it from the header file. 2008-08-29 14:53:38 +01:00
Unknown caa878e725 expunge any mention of the possibility that the real-time simlator could operate in real-time mode 2008-08-28 15:11:55 -07:00
Unknown 15766219de don't assume posix compatibility means posix clocks 2008-08-28 15:06:49 -07:00
Mathieu Lacage a54f875690 forgot to remove uneeded copy 2008-08-27 11:39:31 -07:00
Craig Dowell 08833cb918 branch merge 2008-08-26 23:16:31 -07:00
Craig Dowell c466a1d098 ifdef out ability to feed real-time through simulator 2008-08-26 23:11:11 -07:00
Craig Dowell 3ba8dce954 add realtime simulator and associated tests 2008-08-26 15:34:57 -07:00
Gustavo J. A. M. Carneiro c0ee4eb2a0 Pull in Mathieu's PyBindGen fix. 2008-08-26 22:20:30 +01:00
Mathieu Lacage 8027faacca doxygen OnOffHelper. 2008-08-26 11:17:31 -07:00
Mathieu Lacage dab7ef6871 merge with HEAD 2008-08-26 08:42:28 -07:00
Mathieu Lacage bf3ad68c92 remove dead code. 2008-08-26 08:41:21 -07:00
Gustavo J. A. M. Carneiro 8cdde7b8f2 merge 2008-08-26 12:25:59 +01:00
Gustavo J. A. M. Carneiro cb5d18a929 Bridge documentation (#286) 2008-08-26 12:25:08 +01:00
Mathieu Lacage 0500b5353e bug 279: Packets need metadata support for printing without header checking 2008-08-25 15:21:01 -07:00
Mathieu Lacage 3ba086cef6 bug 273: fix python bindings. 2008-08-25 15:16:35 -07:00
Mathieu Lacage bd37d93222 document API change 2008-08-25 15:00:56 -07:00
Mathieu Lacage f5f3b3f057 repeat enum keyword. 2008-08-25 10:03:38 -07:00
Mathieu Lacage 5f63fe35ba shared Mac48 multicast code 2008-08-25 10:02:52 -07:00
Mathieu Lacage cfdb301bee bug 273: constify packet pointers. 2008-08-25 09:13:05 -07:00
Mathieu Lacage 21b5431c24 bug 285: NetDevice base class should define an attribute Mtu. 2008-08-25 09:05:41 -07:00
Gustavo J. A. M. Carneiro abd6647112 New PyBindGen, fixes python wrapper identity issue. 2008-08-23 22:35:10 +01:00
Raj Bhattacharjea cd95f66344 Fix a unit test typo (thanks Providence Salumu Munga 2008-08-19 14:13:01 -04:00
Gustavo J. A. M. Carneiro fd774c3fb6 New PyBindGen version and API rescan: adds missing copy constructors, and generates __copy__ methods so that python's copy.copy() works on our objects. 2008-08-19 17:48:09 +01:00
Gustavo J. A. M. Carneiro 097f338632 Make copy constructors of some wifi classes private so that pybindgen won't use them (they are not usable) 2008-08-19 17:45:41 +01:00
Gustavo J. A. M. Carneiro 433c4e2eea New pybindgen version, fixes a couple of bugs caught by regression testing. 2008-08-19 12:53:44 +01:00
Gustavo J. A. M. Carneiro 7c7b4e12fb Don't scan python bindings until the everything.h file to be scanned is generated. Closes #288. 2008-08-18 23:04:49 +01:00
Gustavo J. A. M. Carneiro f051f8fb19 New PyBindGen version needed. 2008-08-18 16:03:31 +01:00
Gustavo J. A. M. Carneiro 0717db6ed0 Rescan Python bindings 2008-08-18 16:02:54 +01:00
Gustavo J. A. M. Carneiro a128c2f70a Python: fix bad parameter passed into pybindgen. 2008-08-18 16:00:47 +01:00
Gustavo J. A. M. Carneiro 0335beed14 Python: ignore TracedCallback classes for the time being: they were never usable and were triggering pybindgen generate code compilation problems. 2008-08-18 16:00:10 +01:00
Mathieu Lacage c71981e5a2 remove uneeded EnableMetadata calls 2008-08-15 10:15:54 -07:00
Raj Bhattacharjea 35c5966c45 Refactor OnOff so Start doesn't immediate close the socket (bug 259) 2008-08-15 12:58:53 -04:00
Raj Bhattacharjea 471112db7e Use scheduler to call up the stack in SimpleNetDevice (bug 287) 2008-08-15 11:25:18 -04:00
Raj Bhattacharjea a55316e4f7 Add another test to TcpSocketImplTest 2008-08-14 18:25:33 -04:00
Raj Bhattacharjea 4ad7f52f7c Add a test to TcpSocketImpl unit tests 2008-08-14 17:39:43 -04:00
Raj Bhattacharjea 2231b56ebe Make TypeId(const char * name) explicit (bug 281) 2008-08-14 13:04:18 -04:00
Mathieu Lacage d0ff359d01 fully qualify class name to use macro outside of ns3 namespace. 2008-08-13 10:11:41 -07:00
Mathieu Lacage 66c9294134 make it build with gcc 4.1.3 2008-08-13 10:08:03 -07:00
Raj Bhattacharjea f9cb0f5a7e Stub TcpSocketImpl unit test 2008-08-11 16:47:46 -04:00
Mathieu Lacage 524435da19 allow attribute setters to fail. 2008-08-12 12:55:11 -07:00
Mathieu Lacage 728f6ad65d make sure we don't attempt to read outside of ourselves when deserializing a header for printing. 2008-08-11 15:18:40 -07:00
Mathieu Lacage b591ee4053 bug 275: Queue::Peek should return Ptr<const Packet> 2008-08-11 10:40:31 -07:00
Mathieu Lacage 222c989f79 bug 276: bridge netdevice has no helper class. 2008-08-11 10:30:46 -07:00
Raj Bhattacharjea 68f0b97baa rm examples/tcp-2way.cc 2008-08-10 15:45:27 -04:00
Mathieu Lacage 404cdb6f49 use the right log component name for PacketSink. use NS_LOG_FUNCTION. 2008-08-09 10:52:36 -07:00
Mathieu Lacage f6044dc0b4 remove uneeded virtual keyword 2008-08-08 16:29:15 -07:00
Gustavo J. A. M. Carneiro 39f080feba Rescan API (due to wifi changes to support bridging) 2008-08-08 10:49:18 +01:00
Mathieu Lacage 3ca49e8f39 ensure type is registered 2008-08-07 12:22:38 -07:00
Mathieu Lacage 1327e45a41 merge with HEAD 2008-08-07 11:14:32 -07:00
Mathieu Lacage bfd084bde7 implement WifiNetDevice::SendFrom 2008-08-07 11:14:15 -07:00
Mathieu Lacage 29151f4ec2 remove Node::GetFirstApplication checked in changeset 38b8549b1ad3 by mistake. 2008-08-07 10:13:54 -07:00
Gustavo J. A. M. Carneiro 161adc2a4e Bug #270: Simulator::RunOneEvent 2008-08-06 11:37:52 +01:00
Gustavo J. A. M. Carneiro bf060fddf8 Oops, typo (evil copy-paste) 2008-08-06 16:11:44 +01:00
Gustavo J. A. M. Carneiro 3883a5e095 Add bounds checking asserts to Node::GetApplication, NodeList::GetNode, and Node::GetDevice. 2008-08-06 16:06:44 +01:00
Gustavo J. A. M. Carneiro 1eecaa6abd merge 2008-08-05 19:46:05 +01:00
Gustavo J. A. M. Carneiro 2d872a846d Python: re-scan API; unblock python threads during Simulator::Run; new pybindgen brings improved thread safety for virtual methods. 2008-08-05 19:42:53 +01:00
Craig Dowell 2966ca33b9 Comment to clarify MTU policy was insufficiently clear 2008-08-05 10:34:26 -07:00
Mathieu Lacage 162194c37f repeat the virtual keyword in the subclass 2008-08-05 10:06:40 -07:00
Craig Dowell 13bdfdf131 actually use CHANGES.html 2008-08-04 17:44:53 -07:00
Craig Dowell 6116a532db branch merge 2008-08-04 17:32:49 -07:00
Craig Dowell 6c7bdf5845 sort out various MTU options 2008-08-04 17:32:32 -07:00
Tom Henderson b6a0e35db1 Add CHANGES.html 2008-08-04 14:43:53 -07:00
Craig Dowell 3a519a71da 128 column pages 2008-08-03 21:55:49 -07:00
Mathieu Lacage 7a711ae53e bug 269: revert parts of 9e763021e045 and add comments to avoid getting these again. 2008-08-03 09:14:07 -07:00
Gustavo J. A. M. Carneiro 1e654fa962 merge 2008-08-01 23:15:00 +01:00
Gustavo J. A. M. Carneiro 27df0a5c92 Python: use hash() as temporary workaround to check if two objects with different wrappers are underneath the same. 2008-08-01 23:11:42 +01:00
Tom Henderson af0efdeab3 branch merge 2008-08-01 07:40:22 -07:00
Mathieu Lacage 4ba6e58745 bug 266: src/wscript unconditionally sets conf.env['NS3_MODULE_PATH'] 2008-07-31 15:04:01 -07:00
Raj Bhattacharjea 172db792a8 Misspelling in AUTHORS file 2008-07-30 16:36:57 -04:00
Mathieu Lacage 51d31554c4 merge with HEAD 2008-07-30 12:44:56 -07:00
Mathieu Lacage 660c536a49 use fully-qualified c++ typename to allow using macros outside of the ns3 namespace. 2008-07-30 12:44:34 -07:00
Mathieu Lacage 317878411a kill dead code 2008-07-30 12:43:43 -07:00
Tom Henderson 3af1dc7235 revised patch to fix bug 253 2008-07-30 06:30:42 -07:00
Raj Bhattacharjea caaae1c1dd Fix TcpSocketImpl rx buffer logic (closes 248) 2008-07-29 15:36:41 -04:00
Mathieu Lacage 1f86e826e5 bug 264: NS_BREAKPOINT never stops the debugger at the right location. 2008-07-29 11:19:16 -07:00
Mathieu Lacage 5857618635 bug 251: mobility helper has no ascii output 2008-07-28 09:03:10 -07:00
Mathieu Lacage 89cb48c524 bug 252: make python bindings compile 2008-07-28 08:59:05 -07:00
Mathieu Lacage 36f196a9a0 bug 252: get rid of dead code. 2008-07-28 08:54:20 -07:00
Sebastien Vincent 8d844b7502 bug 262: fix g++ 4.3 build 2008-07-28 08:30:32 -07:00
Gustavo J. A. M. Carneiro b157853a0c OLSR: HELLO messages hold time should be 3 times hello interval, not hello interval. 2008-07-28 16:06:46 +01:00
Gustavo J. A. M. Carneiro 91f0ef0320 Only generate everything.h if python bindings are enabled. Based on patch by Mathieu Lacage. Closes #260. 2008-07-26 15:23:41 +01:00
Gustavo J. A. M. Carneiro c95c773d17 When generating the everything.h header file for Python, handle ns3 headers inside subdirectories properly. 2008-07-26 15:10:34 +01:00
Gustavo J. A. M. Carneiro 5e24aed9dd When python scanning API, remove again the NS3_LOG_ENABLE define; it is no longer needed. 2008-07-25 16:54:29 +01:00
Gustavo J. A. M. Carneiro fbf681955e Make the LogComponent* utility functions available for optimized builds as well, albeit as noops. Closes #258. 2008-07-25 16:51:40 +01:00
Gustavo J. A. M. Carneiro 565483bc09 hg ignore the pybindgen checkout dir 2008-07-24 17:24:01 +01:00
Gustavo J. A. M. Carneiro 2aceead32f merge 2008-07-24 11:41:56 +01:00
Gustavo J. A. M. Carneiro ca2fef3bd8 Make the new NetDevice APIs pure virtual methods, by Mathieu's insistence. 2008-07-24 11:41:15 +01:00
Gustavo J. A. M. Carneiro 732b7994de Add empty implementation of Simulator::SetImplementation, to make Python bindings work. 2008-07-24 11:37:56 +01:00
Gustavo J. A. M. Carneiro f573eaa47a Add helper waf proxy script 2008-07-24 11:27:57 +01:00
Craig Dowell c51f635cfb fix supidity in mtu stuff 2008-07-23 18:29:13 -07:00
Craig Dowell dbb7f0f738 begin sorting out mtu woes 2008-07-23 17:09:12 -07:00
Raj Bhattacharjea 0ad768c938 Make PacketSink multitasking for TCP (closes bug 244) 2008-07-23 16:09:17 -04:00
Gustavo J. A. M. Carneiro 5a71f60c7a Define NS3_ASSERT_ENABLE and NS3_LOG_ENABLE, to make sure we pick up all definitions (such as the logging APIs) 2008-07-23 11:48:17 +01:00
Gustavo J. A. M. Carneiro b9722796d7 Require new PyBindGen; make it work for Python 2.3. 2008-07-22 16:54:24 +01:00
Craig Dowell c415957dfc branch merge 2008-07-21 15:53:03 -07:00
Gustavo J. A. M. Carneiro f890b8e138 Python: new pybindgen, rescan API definitions, new API definition files are more multi-line and hopefully easier to read 2008-07-21 15:30:15 +01:00
Gustavo J. A. M. Carneiro fd2cf07d30 python scanning: remove redundant incref/decref_method annotations 2008-07-21 11:43:05 +01:00
Tom Henderson d711e853d0 more details for 3.2 release notes 2008-07-20 07:59:21 -07:00
Craig Dowell 44c48d41e3 update on-demand RELEASE_NOTES 2008-07-18 21:59:43 -07:00
Craig Dowell 9c8ee223b3 make simulator implementation replaceable via global default value 2008-07-18 21:51:31 -07:00
Gustavo J. A. M. Carneiro a303c4bfad Add release notes. 2008-07-18 12:12:43 +01:00
Gustavo J. A. M. Carneiro ae074d9e03 No need to make NetDevice::SendFrom pure virtual; instead just give a fatal error if used in runtime (it's only used by the learning bridge, anyway, so...). 2008-07-18 11:41:22 +01:00
Gustavo J. A. M. Carneiro 0632b05ed9 merge 2008-07-18 11:23:29 +01:00
Gustavo J. A. M. Carneiro 06a4d72721 merge 2008-07-18 11:12:31 +01:00
Craig Dowell b1af5815b0 factor simulator into interface and (multiple) implementation pieces 2008-07-17 23:52:59 -07:00
Unknown d369fc0c61 fix darwin build break 2008-07-17 18:57:08 -07:00
Craig Dowell e567e5fec5 fix darwin build break 2008-07-17 18:45:58 -07:00
Gustavo J. A. M. Carneiro 4144eccd4f merge 2008-07-17 17:58:14 +01:00
Gustavo J. A. M. Carneiro f7fc598240 A couple of attribute python unit tests 2008-07-17 17:57:18 +01:00
Tom Henderson 4914c4afcb Add NS_LOG_FUNCTION calls in arp implementation 2008-07-16 22:33:51 -07:00
Gustavo J. A. M. Carneiro 8cc54510ba Don't run python unit tests if python bindings not enabled. Closes #254. 2008-07-16 17:44:42 +01:00
Gustavo J. A. M. Carneiro a8d461f29e Remove some useless code 2008-07-16 16:17:21 +01:00
Gustavo J. A. M. Carneiro c33568c079 New API considering comments from Craig: NetDevice->Node uses two callbacks; Node->ProtocolHandlers uses a single API with a promiscuous flag. 2008-07-16 16:06:50 +01:00
Gustavo J. A. M. Carneiro ccb5ec4d4d merge 2008-07-16 14:33:44 +01:00
Gustavo J. A. M. Carneiro 6b9023ebf4 merge 2008-07-16 10:46:51 +01:00
Gustavo J. A. M. Carneiro ef5b621566 Patch WAF to make output redirection work again (Utils.get_term_cols() bug) 2008-07-16 10:45:13 +01:00
Craig Dowell 36a4bc8c40 update RELEASE_NOTES 2008-07-15 16:14:57 -07:00
Craig Dowell db748a0000 add system threads and synchronization primitives 2008-07-15 15:59:57 -07:00
Gustavo J. A. M. Carneiro 2ca65219de Add csma-bridge example ported to Python. 2008-07-14 15:41:51 +01:00
Gustavo J. A. M. Carneiro 65d4f0972c Rescan API 2008-07-14 11:42:49 +01:00
Gustavo J. A. M. Carneiro 41fab0b441 merge 2008-07-14 11:39:41 +01:00
Gustavo J. A. M. Carneiro cfa12b46c4 Again, make Python depend only on scanned modules (last fix was incomplete). 2008-07-14 11:35:58 +01:00
Gustavo J. A. M. Carneiro ff82231ef4 merge 2008-07-14 11:29:31 +01:00
Gustavo J. A. M. Carneiro 6afc4f8d7f Again, make Python depend only on scanned modules (last fix was incomplete). 2008-07-14 11:29:13 +01:00
Gustavo J. A. M. Carneiro f1e627aec7 merge 2008-07-14 11:25:59 +01:00
Gustavo J. A. M. Carneiro 69dc042ec7 Make Python bindings depend only on NS-3 modules that have been API-scanned, not all modules. 2008-07-14 11:25:10 +01:00
Gustavo J. A. M. Carneiro d1a7261479 merge 2008-07-14 11:12:30 +01:00
Gustavo J. A. M. Carneiro 2aff99d749 Add mixed-wireless example ported to Python. 2008-07-13 18:08:48 +01:00
Gustavo J. A. M. Carneiro 10ee9b9e01 Python: make helper class methods using attribute optional parameters work. 2008-07-13 17:55:48 +01:00
Gustavo J. A. M. Carneiro 1132bcbd99 If GtkConfigStore support is disabled, disable the python bindings for it, or else compilation fails. 2008-07-12 22:06:15 +01:00
Gustavo J. A. M. Carneiro 90e5f8cf0e Add WAF option --pyrun, to make it easier to run Python programs. 2008-07-12 19:33:29 +01:00
Gustavo J. A. M. Carneiro 7fb6a81b59 merge 2008-07-11 19:32:45 +01:00
Gustavo J. A. M. Carneiro 8356645d0a Make sure we don't trigger deprecation warnings while compiling the python bindings. 2008-07-11 19:32:22 +01:00
Gustavo J. A. M. Carneiro 9b8db57a00 Check that the compiler accepts -Wno-error=deprecated-declarations before using it 2008-07-11 19:24:33 +01:00
Gustavo J. A. M. Carneiro 9d5d168444 Rescan APIs 2008-07-11 18:39:19 +01:00
Gustavo J. A. M. Carneiro 7dce1174ba merge 2008-07-11 18:15:52 +01:00
Gustavo J. A. M. Carneiro 6911a69356 Add compilation flag -Wno-error=deprecated-declarations, or else the NS_DEPRECATED macro becomes useless. 2008-07-11 11:36:59 +01:00
Raj Bhattacharjea 14beae6e8d Remove tcp-2way as a regression test 2008-07-10 21:32:33 -04:00
Mathieu Lacage 731a76246f bug 247: tcp checksum crashes when enabled. 2008-07-10 15:58:24 -07:00
Mathieu Lacage 7f07acc254 use NS_DEPRECATED for bug 232. 2008-07-09 20:12:05 -07:00
Mathieu Lacage 7b34f76ef7 define NS_DEPRECATED 2008-07-09 20:11:16 -07:00
Mathieu Lacage fb17731cab more cleanups based on bug 249. 2008-07-09 19:52:15 -07:00
Raj Bhattacharjea c3a8ec5555 Add David Evensky's tcp-2way regression test 2008-07-09 17:04:29 -04:00
Raj Bhattacharjea be9e5ced39 Add some additional TCP dox about RFC compliance 2008-07-09 14:10:18 -04:00
Gustavo J. A. M. Carneiro ee19e57741 Rescan API; fix and enable the socket unit test, as it now works. 2008-07-09 18:50:28 +01:00
Gustavo J. A. M. Carneiro 1f1ffe7372 merge 2008-07-09 18:36:10 +01:00
Gustavo J. A. M. Carneiro 5f9b651ba8 Don't re-declare pure virtual methods from the parent Socket class. Fixes bug #249. 2008-07-09 18:34:42 +01:00
Gustavo J. A. M. Carneiro a6ccafbed7 Fix a problem with callback proxies with zero or one parameters. 2008-07-09 18:33:16 +01:00
Gustavo J. A. M. Carneiro fd2cdaf7ac Redirect the stderr of pybindgen to a log file (ns3modulegen.log). 2008-07-09 17:31:37 +01:00
Gustavo J. A. M. Carneiro 3ff7e83dd0 Upgrade to a patched WAF 1.4.2; needed for redirecting stderr of command-output objects. 2008-07-09 17:31:01 +01:00
Gustavo J. A. M. Carneiro 0f045371a3 The 'everything.h' header file is only used for Python bindings and should be generated into bindings/python/, not ns3/. 2008-07-09 14:58:02 +01:00
Mathieu Lacage 3d6e4532ae avoid direct access to Object::m_tid. Use ObjectBase::GetInstanceTypeId instead. 2008-07-08 14:27:45 -07:00
Gustavo J. A. M. Carneiro 5f994081d5 python bindings 2008-07-08 10:43:58 -07:00
Mathieu Lacage 178567b32b add PythonCompleteConstruct friend for python bindings 2008-07-08 10:19:34 -07:00
Mathieu Lacage 11ddb61d96 avoid uneeded inline 2008-07-08 10:17:18 -07:00
Mathieu Lacage 24693d3bbd add Object::GetReferenceCount 2008-07-08 10:16:53 -07:00
Mathieu Lacage 5a35637ab9 add RefCountBase::GetReferenceCount. 2008-07-08 10:12:38 -07:00
Mathieu Lacage b07781eead coding style 2008-07-08 10:11:55 -07:00
Mathieu Lacage 7f8fcbc547 add CalbackImplBase::GetReferenceCount 2008-07-08 10:10:26 -07:00
Mathieu Lacage c1f8cff710 kill dead unimplemented API 2008-07-08 10:02:57 -07:00
Mathieu Lacage 864923164b add missing implementations 2008-07-08 10:02:46 -07:00
Mathieu Lacage 8e0738b5ba add missing implementations 2008-07-08 10:02:28 -07:00
Mathieu Lacage 8b1b7b25a2 kill dead code 2008-07-08 10:02:11 -07:00
Mathieu Lacage dfc7509dd6 kill dead code 2008-07-08 10:01:53 -07:00
Mathieu Lacage 3c16c7d6d0 kill dead code 2008-07-08 10:01:42 -07:00
Raj Bhattacharjea d236aad5e5 Check in a tcp example which has rate error models 2008-07-08 11:09:22 -04:00
Gustavo J. A. M. Carneiro eb3d502a49 Adapt to evil API breakage 2008-07-08 14:40:01 +01:00
Gustavo J. A. M. Carneiro fe73953148 sync with ns-3-dev 2008-07-08 14:18:50 +01:00
Gustavo J. A. M. Carneiro c5ec154ea1 Add BridgeChannel 2008-07-07 12:52:48 +01:00
Gustavo J. A. M. Carneiro cb491541ac Simplify promiscuous mode API: NetDevices always operate in promiscuous mode, normal receive callbacks receive extra destination address and packet type. 2008-07-07 12:18:05 +01:00
Gustavo J. A. M. Carneiro bcae4f9ea1 Move the csma packet-from-self receive filtering away from the CsmaChannel into the CsmaNetDevice, with the help of an extra Ptr<CsmaNetDevice> parameter in Receive(). As discussed in the mailing list. 2008-07-07 10:37:09 +01:00
Gustavo J. A. M. Carneiro 95be482f24 Backed out changeset ae9f7d5e2d56 2008-07-07 10:26:00 +01:00
Gustavo J. A. M. Carneiro ab714db3a9 Try to preserve API compatibility, after SendFrom / promiscuous mode changes. 2008-07-04 19:15:00 +01:00
Gustavo J. A. M. Carneiro 1c8622e4f8 Add the 'learning' part of the Learning Bridge, with option to disable it and revert to dummy mode (hub-like). 2008-07-04 18:48:10 +01:00
Gustavo J. A. M. Carneiro a97acf9ac0 Use NetDevice::SendFrom where appropriate, in order to preserve source address of bridged mac frames. 2008-07-04 18:04:13 +01:00
Gustavo J. A. M. Carneiro df677111d4 Add a NetDevice::SendFrom API, for sending packets with a custom source MAC address (a.k.a. MAC spoofing). Only implemented for CsmaNetDevice for now. 2008-07-04 18:03:26 +01:00
Gustavo J. A. M. Carneiro f3d8a5eb6d Don't allow csma devices to receive packets sent by themselves. 2008-07-04 17:58:31 +01:00
Gustavo J. A. M. Carneiro d00d6e123c Start of a BridgeNetDevice example, using csma (basically an Ethernet Switch). 2008-07-04 15:40:29 +01:00
Gustavo J. A. M. Carneiro f8a561c16a Start of a BridgeNetDevice; for now does not yet do the 'learning' part, and does not preserve the source address of mac frames. 2008-07-04 15:39:24 +01:00
Gustavo J. A. M. Carneiro 8a0bcd18ba Implement the promiscuous receive callback for CsmaNetDevice. 2008-07-04 15:37:54 +01:00
Gustavo J. A. M. Carneiro 629a5b02da Changes in the promiscuous mode API: now the callback receives everything, both 'for me' and 'not for me', with an additional 'forMe' parameter. 2008-07-04 15:37:03 +01:00
Gustavo J. A. M. Carneiro 45334ff8de For csma, set a sensible netdevice name, if none has been set. 2008-07-04 12:35:13 +01:00
Craig Dowell d8a6c6f336 some slips of the keyboard in tutorial 2008-07-03 20:03:03 -07:00
Craig Dowell 26b91a3c6c fix bug 234 which changes required methods on helpers to constructor parameters. Update tutorial content to reflect. Change RemoteIpv4 attribute to RemoteAddress. 2008-07-03 17:37:32 -07:00
Craig Dowell b2b5de9d22 bug 232, references to Parameter obsolete 2008-07-03 15:44:54 -07:00
Unknown 12c6c43d57 Minor doc notes added to ipv4.h 2008-07-03 09:44:23 -04:00
Tom Henderson 0f27dc1b81 close socket upon PacketSink::StopApplication() 2008-07-02 21:07:36 -07:00
Mathieu Lacage 74e8ce7845 no need for protected members 2008-07-02 13:23:54 -07:00
Mathieu Lacage cf37954b04 no need to export this header 2008-07-02 13:23:44 -07:00
Mathieu Lacage 7c7cfcc865 avoid pygccxml warning. 2008-07-02 13:23:23 -07:00
Mathieu Lacage ab3a728ba5 no need for protected variables 2008-07-02 13:22:46 -07:00
Mathieu Lacage f7c6438560 no need for protected variables 2008-07-02 13:22:32 -07:00
Mathieu Lacage 94ee9fd47e no need for protected variables 2008-07-02 13:22:14 -07:00
Mathieu Lacage 925136697a avoid pygccxml warning 2008-07-02 13:21:56 -07:00
Mathieu Lacage 2d76aafcfb do not make m_enable protected 2008-07-02 13:21:43 -07:00
Mathieu Lacage 056c8a7855 merge with HEAD 2008-07-02 13:21:01 -07:00
Raj Bhattacharjea ff8c38b5ac Fix trace names to match documents in tcp-star-server 2008-07-02 15:57:33 -04:00
Raj Bhattacharjea 7e12d28439 Add a tcp server example 2008-07-02 15:45:35 -04:00
Mathieu Lacage 572ee9e3c9 export new methods for language bindings 2008-07-02 08:37:57 -07:00
Mathieu Lacage 7f91bd111e avoid pygccxml warning. 2008-07-02 08:33:47 -07:00
Mathieu Lacage b93a9aeef4 bug 245: build failure with gcc 4.3.x 2008-07-02 03:16:36 -07:00
Mathieu Lacage 67c5dfa611 implement Packet::PeekHeader and Packet::PeekTrailer to avoid evil workarounds when receiving tcp packets. 2008-07-01 11:00:29 -07:00
Sebastien Vincent 75fab6d1b0 bug 236: add optional support for tcp and udp checksum. 2008-07-01 10:52:11 -07:00
Tom Henderson fbc3554c2c chapter on Node and internet stack, for manual 2008-06-30 22:41:22 -07:00
Craig Dowell 5b9d211ab9 update RELEASE_NOTES 2008-06-30 14:17:19 -07:00
Craig Dowell a52bde7d46 Added tag ns-3.1 for changeset 5768685f9fdb 2008-06-30 13:47:05 -07:00
Craig Dowell 46dced7f48 Added tag ns-3.1 for changeset 42504fb1f7be 2008-06-30 13:46:33 -07:00
Craig Dowell 4196578e98 new convention for release tags 2008-06-30 13:44:27 -07:00
Craig Dowell 89f5373c27 Prepare for 3.1 2008-06-30 13:35:33 -07:00
Craig Dowell b271ea5c87 Tutorial TOC tweaks 2008-06-30 13:16:31 -07:00
Craig Dowell 31417e808d some final tweaks to the tutorial 2008-06-30 13:06:34 -07:00
Craig Dowell d714797804 tweak, tweak the tutorial 2008-06-30 11:42:38 -07:00
Gustavo J. A. M. Carneiro bf513e45d2 Sketching a new promiscuous mode protocol handlers API; Netdevices implementation missing, though. 2008-06-30 19:25:58 +01:00
Craig Dowell 8a6ed9603e remote browsing from tutorial menus 2008-06-30 10:25:46 -07:00
Craig Dowell 03975f8102 remove section in tutorial, move browsing part to where it makes more sense. 2008-06-30 10:23:04 -07:00
Craig Dowell 26972f3917 address helpful tutorial comments by reviewers 2008-06-29 23:25:32 -07:00
Craig Dowell 1d5803e8f3 minor tweaks for menus on tutorial 2008-06-29 23:14:16 -07:00
Craig Dowell 24e907d036 more editing passes through tutorial 2008-06-29 23:11:25 -07:00
Craig Dowell 2f840a4f54 cleaning up tutorial 2008-06-29 22:14:22 -07:00
Craig Dowell df2984b28c mispeeling in tutorial command sequence 2008-06-29 21:26:04 -07:00
Craig Dowell ee9129e71e merge 2008-06-29 21:22:33 -07:00
Craig Dowell bdb123bbc4 editing pass through the tutorial 2008-06-29 21:16:35 -07:00
Tom Henderson c094200ef6 a few section 8 nits 2008-06-29 20:48:18 -07:00
Tom Henderson 28117fd049 branch merge 2008-06-29 20:39:33 -07:00
Craig Dowell 73e368454d finish up with a wifi example 2008-06-29 15:05:22 -07:00
Tom Henderson 45f203f09f formatting nits on the Tweaking chapter 2008-06-29 14:38:49 -07:00
Tom Henderson 133bf0b651 nits on Sections 1-4 2008-06-29 14:28:11 -07:00
Tom Henderson d5423b88a2 Table of content fixes 2008-06-29 14:20:40 -07:00
Craig Dowell 898ce6b375 cleanup tutorial third.cc a bit 2008-06-29 11:13:27 -07:00
Craig Dowell 20865bfde0 finish off csma tutorial example words 2008-06-29 10:44:24 -07:00
Craig Dowell 9bb182aa54 work through second tutorial example 2008-06-28 22:39:06 -07:00
Craig Dowell 9f205e0fba external dependency on figures 2008-06-28 20:02:25 -07:00
Craig Dowell f201618a5f ignore moved figures dir 2008-06-28 19:55:58 -07:00
Craig Dowell eb848bb719 swapping in all of tutorial would be better 2008-06-28 19:48:14 -07:00
Craig Dowell 5cf2aa1ebf swap in new tutorial 2008-06-28 19:46:55 -07:00
Craig Dowell f58dda2fcb add updated tutorial examples 2008-06-28 19:39:46 -07:00
Craig Dowell 246b544cb3 remove tutorial directory 2008-06-28 19:29:54 -07:00
Mathieu Lacage 500b5c1fd4 cleanup tag names 2008-06-27 15:29:11 -07:00
Craig Dowell 31fc532913 Added tag release ns-3.1-RC3 for changeset ea16c44eb90d 2008-06-27 15:07:04 -07:00
Craig Dowell 8869dc9630 Apply Patch for Bug 237 2008-06-27 14:56:18 -07:00
Craig Dowell 62c2e46c37 reposition trace hook in csma to address bug 241. 2008-06-27 14:38:08 -07:00
Craig Dowell 89e20b56c9 Patch for bug 240 2008-06-27 09:32:34 -07:00
Craig Dowell 2b1bc24321 Apply patch for bug 231 2008-06-24 19:09:49 -07:00
Craig Dowell cb19bb1404 Added tag release ns-3.1-RC2 for changeset 951296e9a277 2008-06-24 15:47:04 -07:00
Craig Dowell 92c9208ea6 Apply Patch for Bug 235 2008-06-24 15:40:24 -07:00
Craig Dowell 8c7759dc6b bug 233 2008-06-24 09:21:02 -07:00
Mathieu Lacage b9aeaf3650 more typos. 2008-06-23 16:03:08 -07:00
Mathieu Lacage 87c68d5a58 fix lots of typos 2008-06-23 15:46:04 -07:00
Mathieu Lacage 77d2f50c2f update ignore list 2008-06-23 15:45:52 -07:00
Mathieu Lacage ddef596d2f merge with HEAD 2008-06-23 15:24:27 -07:00
Mathieu Lacage fcf9b4cf5b application howto 2008-06-23 15:24:12 -07:00
Mathieu Lacage bdf0896c2a add helper code 2008-06-23 14:15:41 -07:00
Tom Henderson 3aa9ce9efd Add chapter on random numbers to manual 2008-06-23 13:58:30 -07:00
Mathieu Lacage 73f7efb2f2 a very simple howto for implementing NetDevice/Channel subclasses 2008-06-23 12:49:51 -07:00
Mathieu Lacage e10db3d576 add missing copyright statement 2008-06-23 12:45:01 -07:00
Mathieu Lacage daaed2d5e6 add small comment, fix typo, add missing copyright statement 2008-06-23 12:44:45 -07:00
Mathieu Lacage f1019e4026 dox missing SetNode method 2008-06-23 12:44:21 -07:00
Mathieu Lacage 398ffd3d58 avoid dox warning 2008-06-23 12:44:05 -07:00
Mathieu Lacage ae661f53e0 update doxygen to match the reality of the code 2008-06-23 12:43:54 -07:00
Mathieu Lacage 4b3b79be2f add packet header howto 2008-06-23 10:21:59 -07:00
Mathieu Lacage 2fb03d7aa3 testcase and fix, symmetric to changeset c861a47407a8 2008-06-21 21:20:38 -07:00
Mathieu Lacage 14c3cac1d1 fix testcase from changeset e367e86d7886 2008-06-21 21:14:28 -07:00
Mathieu Lacage c4ea047cb9 add documentation comment. 2008-06-21 21:08:16 -07:00
Mathieu Lacage 6746cc48eb bug 217: another testcase. 2008-06-21 21:07:45 -07:00
Mathieu Lacage 1fe76d94f1 remove tcp-2way from examples. mistake from changeset c8011a2a0c60 2008-06-21 13:22:39 -07:00
Mathieu Lacage 6d739bf2b5 bug 217: yet another testcase: make sure we handle degenerate testcases with tags which refer to non-existant data. 2008-06-21 10:30:47 -07:00
Mathieu Lacage c3fb9059ac another testcase for bug 217. Make sure we do not report tags outside of the current range 2008-06-21 08:55:04 -07:00
Mathieu Lacage 0c35c2b60f bug 217: avoid unsigned/signed confusion. Used signed all the time. 2008-06-21 08:11:10 -07:00
Mathieu Lacage 9008e089ae bug 217: add failing testcase 2008-06-21 08:05:21 -07:00
Mathieu Lacage ad46f21982 merge testcase 2008-06-20 19:21:11 -07:00
Mathieu Lacage 8a78bf66ae testcase for changeset 133490cf0210 2008-06-20 19:20:58 -07:00
Mathieu Lacage da514b5edb bug 217: Handle gracefully the case where a packet aggregated contains nothing. 2008-06-20 15:06:23 -07:00
Unknown 4743c2ff7c Patch addresses bug 227. 2008-06-19 14:58:46 -07:00
Unknown 7c05c10381 same messages for all versions of getting traces 2008-06-19 14:53:53 -07:00
Unknown 544f9d1a81 Bug 181 2008-06-19 14:46:27 -07:00
Unknown c7e37d1a18 move m_wouldBlock assignment to fix bug 226 2008-06-18 21:29:21 -07:00
Unknown b357866655 GetNNodes() in NodeList fixes bug 225 2008-06-18 21:17:56 -07:00
Craig Dowell aefd3e3371 tweaks after actually doing it 2008-06-18 11:57:43 -07:00
Craig Dowell 4587183489 tweak release steps 2008-06-18 11:04:07 -07:00
Craig Dowell 6f2e42050f print out which repo is used for regression 2008-06-18 10:39:30 -07:00
Craig Dowell a86ec45ec9 branch merge 2008-06-18 10:36:06 -07:00
Craig Dowell d99df782e9 regression 2008-06-18 10:34:05 -07:00
Craig Dowell e1d52991b6 fixes for regression numbering 2008-06-18 10:29:19 -07:00
Gustavo J. A. M. Carneiro 2d2675e6f8 Bug 223: Regression using other than mercurial traces no longer works 2008-06-18 18:07:48 +01:00
Gustavo J. A. M. Carneiro d4a0ae2a74 Add a WAF workaround for the 'Input line is too long.' error in win32/mingw. 2008-06-18 15:21:08 +01:00
Craig Dowell b5cfed2178 use dev traces 2008-06-17 13:37:04 -07:00
Craig Dowell a6aed94fe8 plug more holes in release steps 2008-06-17 12:52:46 -07:00
Craig Dowell 9da2bfa832 bump 2008-06-17 11:57:27 -07:00
Craig Dowell 098186e7e6 fill in some blanks 2008-06-17 11:53:20 -07:00
Craig Dowell 452bb57c9f Added tag release candidate ns-3.1-RC1 for changeset 8869a79a391f 2008-06-17 10:36:56 -07:00
Craig Dowell 1b8812d558 Changes for bug 205, unlisted FIN bug 2008-06-16 16:25:52 -07:00
Gustavo J. A. M. Carneiro 4a73b2abd0 [Bug 221] need a scratch directory 2008-06-16 14:17:27 +01:00
Tom Henderson c11554b553 Split out non-tutorial sections from tutorial; place into a doc/manual directory 2008-06-15 21:38:13 -07:00
Tom Henderson da05aa1327 split out manual sections from tutorial 2008-06-15 21:27:13 -07:00
Mathieu Lacage cc9838870a split interference calculation from YansWifiPhy. Move them to InterferenceHelper 2008-06-14 10:52:10 -07:00
Mathieu Lacage 2edda56a6f merge bug 213 repo 2008-06-13 17:20:55 -07:00
Mathieu Lacage 9ed0f04944 merge with HEAD 2008-06-13 17:20:06 -07:00
Raj Bhattacharjea 1aef4543cc bug 181: Normal Variable Infinite Value & Bounds 2008-06-13 17:19:53 -07:00
Raj Bhattacharjea 9ccd6dadcb Update the internet-stack documentation 2008-06-13 16:47:07 -04:00
Gustavo J. A. M. Carneiro 8ae203ce50 Correct the OLSR documentation; remove dead API declarations and source file. 2008-06-13 15:35:07 +01:00
Tom Henderson 1e4c17bc9f doxygen for applications 2008-06-13 06:32:54 -07:00
Tom Henderson cbc938e2bf OLSR doxygen 2008-06-12 22:21:19 -07:00
Mathieu Lacage 85c984a28c kill dead method declaration 2008-06-12 12:31:02 -07:00
Mathieu Lacage a4c0722a70 add missing license headers 2008-06-12 12:29:58 -07:00
Mathieu Lacage 194a171ed3 split the error rate model from the yans phy 2008-06-12 12:28:36 -07:00
Mathieu Lacage 034dd36649 remove header from list of public headers 2008-06-12 12:07:50 -07:00
Mathieu Lacage 70c8c5e3ba re-enable tracing of wifi phy state. 2008-06-12 11:55:22 -07:00
Mathieu Lacage 5dc4dd0ab9 constify 2008-06-12 11:14:54 -07:00
Mathieu Lacage ffe5305326 add missing license headers 2008-06-12 11:06:56 -07:00
Mathieu Lacage 2af4b83614 split state management in a helper class 2008-06-12 11:05:46 -07:00
Mathieu Lacage 50b637e66b doc cleanup 2008-06-12 09:51:29 -07:00
Tom Henderson cdb5cc083f Doxygen for global routing 2008-06-12 06:11:18 -07:00
Mathieu Lacage 859396a8f6 remove unneeded headers 2008-06-11 16:31:22 -07:00
Mathieu Lacage 30cb33c5fe merge with HEAD 2008-06-11 16:20:04 -07:00
Mathieu Lacage 7aa4b274c0 split WifiChannel in WifiChannel + YansWifiChannel 2008-06-11 16:19:28 -07:00
Mathieu Lacage e8a52a06cc add UnsafeAttributeList 2008-06-11 16:19:01 -07:00
Mathieu Lacage 4f4bec026b add missing Setter 2008-06-11 16:18:38 -07:00
Mathieu Lacage 52169a27b8 typo 2008-06-11 13:46:04 -07:00
Mathieu Lacage 870e44c31d no need to reference WifiNetDevice 2008-06-11 12:35:02 -07:00
Mathieu Lacage 619600b607 rename WifiPhy to YansWifiPhy and add WifiPhy abstract base class. 2008-06-11 11:52:40 -07:00
Mathieu Lacage 8aca3e058b remove dead method 2008-06-11 11:15:43 -07:00
Mathieu Lacage cec8e33447 add missing files. 2008-06-11 11:12:15 -07:00
Mathieu Lacage 0c61007aeb test PHY collisions 2008-06-11 10:57:42 -07:00
Mathieu Lacage 6db1f04b9c change name of parameter 2008-06-11 10:02:09 -07:00
Mathieu Lacage 7c73164d77 do a binary search for the range boundary. 2008-06-10 16:22:21 -07:00
Mathieu Lacage 245dfdadd8 print the tx power, not a random character 2008-06-10 16:22:12 -07:00
Mathieu Lacage 786ae233a1 PHY-layer test scripts 2008-06-10 15:43:52 -07:00
Mathieu Lacage e865a760c3 do not crash if the callback is null. 2008-06-10 13:08:34 -07:00
Mathieu Lacage 184178c225 add a string-based constructor 2008-06-10 13:08:22 -07:00
Mathieu Lacage 81844a2628 Allow a zero NetDevice in WifiChannel. 2008-06-10 12:17:34 -07:00
Tom Henderson de189d447c tutorial: s/internet-node/internet-stack 2008-06-10 06:08:16 -07:00
Tom Henderson aebdb9fbfd Move other applications to RecvFrom () 2008-06-09 20:42:31 -07:00
Mathieu Lacage 82e92545aa bug 186: internet-node directory must be renamed to internet-stack 2008-06-09 15:40:22 -07:00
Mathieu Lacage 8559d575f5 bug 61: warning must be fatal. 2008-06-09 11:39:29 -07:00
Craig Dowell 5a3fbf3637 documentation to resolve bug 75 2008-06-09 08:53:47 -07:00
Tom Henderson 9ca1253956 Change OLSR to use RecvFrom 2008-06-09 07:01:12 -07:00
Tom Henderson de69fcb842 RecvFrom() expansion, add flags parameter to some Send calls 2008-06-09 06:40:21 -07:00
Craig Dowell 88d12f80eb CSMA Cleanup, XXX in echo apps, clarification of point-to-point data rates in dox 2008-06-07 10:38:39 -07:00
Raj Bhattacharjea a37b419abd Merge 2008-06-06 16:30:28 -04:00
Raj Bhattacharjea 6c4692ea55 Restore tcp example to full size, also a bugfix 2008-06-06 16:10:54 -04:00
Raj Bhattacharjea 97d98fa1ce bug 195: naming inconsistency. 2008-06-06 11:42:19 -07:00
Raj Bhattacharjea 6bcd10f205 Merge last two changesets 2008-06-06 14:19:05 -04:00
Raj Bhattacharjea 36ac76b49c Merge last 6 changesets 2008-06-06 13:58:28 -04:00
Raj Bhattacharjea d003d6a34f Fix compile warning 2008-06-06 13:57:59 -04:00
Mathieu Lacage 3b217b603e a few new testcases, bug fixes. 2008-06-06 10:44:43 -07:00
Mathieu Lacage 43263bc0e7 add some logging 2008-06-06 10:22:05 -07:00
Raj Bhattacharjea 525969ca64 Part of bug 198 2008-06-06 12:22:50 -04:00
Mathieu Lacage fb9ca8f381 add support for attribtues to bug 34 2008-06-05 15:56:23 -07:00
Raj Bhattacharjea 1f9b7723b8 Update tcpsocket to use Ptr<Packet> in Send 2008-06-05 17:59:36 -04:00
Raj Bhattacharjea 60c2ddafa8 Tcp tx buffer (pendingdata) uses Ptr<Packet> internally; tagging should work 2008-06-05 16:49:59 -04:00
Florian Westphal 64e2c2bb8f Add ipv4 header checksum support. 2008-06-05 01:08:33 +02:00
Gustavo J. A. M. Carneiro b469955b1e Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211 2008-06-05 11:46:15 +01:00
Gustavo J. A. M. Carneiro c3557faf08 Add waf proxy script 2008-06-05 11:21:50 +01:00
Mathieu Lacage 4d144c5ec8 merge with HEAD 2008-06-04 16:59:58 -07:00
Mathieu Lacage 2b7b6628f3 bug 212: Packet::PrintTags fails 2008-06-04 16:59:41 -07:00
Raj Bhattacharjea de2475ddc3 Merge with ns-3-dev 2008-06-04 17:19:32 -04:00
Raj Bhattacharjea 4d2bbed418 Fix for bug 174 2008-06-04 16:14:49 -04:00
Mathieu Lacage 7ef64dd6ce mark internal class 2008-06-04 12:31:23 -07:00
Mathieu Lacage 90bbabf52f fix typo 2008-06-04 12:31:14 -07:00
Mathieu Lacage c43918d4c2 doxygen a couple of missing functions. Add acouple of more comments to existing mobility models 2008-06-04 12:29:07 -07:00
Mathieu Lacage 14562c914d this code is not wrong. 2008-06-04 11:59:31 -07:00
Mathieu Lacage 017b3b191d RemoveTag does not exist 2008-06-04 11:59:11 -07:00
Mathieu Lacage 49a48f01e8 remove un-implemented code 2008-06-04 11:58:51 -07:00
Mathieu Lacage 12ae07ddab bug 202: classes disappeared from doxygen output 2008-06-04 11:48:52 -07:00
Mathieu Lacage d86a521ff1 fix bug 208 for true. 2008-06-04 11:35:14 -07:00
Mathieu Lacage 3e3f102d62 remove misleading doxygen comment 2008-06-04 11:01:01 -07:00
Mathieu Lacage 45f9ff0ddc bug 210: must take device mtu into account. 2008-06-04 10:59:30 -07:00
Mathieu Lacage 44478e378d bug 209: remove buggy test for open state in PacketSocket::SendTo 2008-06-04 10:47:34 -07:00
Mathieu Lacage 1eb07aeaef bug 208: must clear flags bits in fragment offset deserialization. 2008-06-04 10:39:36 -07:00
Mathieu Lacage 10a7924d63 bug 207: ipv4-header.h needed in src/node module. 2008-06-04 10:18:57 -07:00
Mathieu Lacage d3b35a295c bug 206: allow comparing addresses of different types. 2008-06-04 10:09:29 -07:00
Mathieu Lacage 1a5577bc3d bug 204: implement Queue::DequeueAll. 2008-06-04 09:22:37 -07:00
Mathieu Lacage 92f2ed110a bug 203: Listen must be implemented for Udp and Packet sockets. 2008-06-04 09:19:16 -07:00
Mathieu Lacage 8b7d6955e6 improve attribute documentation 2008-06-04 09:18:44 -07:00
Gustavo J. A. M. Carneiro 1ae7ba74b9 merge 2008-06-04 14:02:06 +01:00
Gustavo J. A. M. Carneiro 94b7fd9434 Re-format the NQSTA state machine diagram so that it displays correctly with a fixed width font. 2008-06-04 14:00:41 +01:00
Mathieu Lacage 1ca824b340 merge with HEAD 2008-06-03 16:20:32 -07:00
Mathieu Lacage 94587dd4f3 bug 200: Packet::PrintTags is not implemented. 2008-06-03 16:20:17 -07:00
Gustavo J. A. M. Carneiro 6495130641 merge 2008-06-03 21:19:36 +01:00
Gustavo J. A. M. Carneiro d1cc848f30 Change default WiFi ProbeRequestTimeout to 50 ms; closes bug #199. 2008-06-03 21:16:21 +01:00
Mathieu Lacage 39b7522f4c merge with HEAD 2008-06-03 12:46:37 -07:00
Gustavo J. A. M. Carneiro 1840dfe6b1 Change the default beacon interval to a more realistic value (100 ms); closes bug #177. 2008-06-03 18:15:08 +01:00
Tom Henderson 5307dcfd48 Gustavo's API warnings 2008-06-03 07:09:40 -07:00
Tom Henderson 9dfc592a26 Added tag release ns-3.0.13 for changeset 79dba133b5f8 2008-06-02 21:21:26 -07:00
Tom Henderson be9d919a58 update RELEASE_NOTES and a few other files 2008-06-02 21:21:16 -07:00
Mathieu Lacage 937f78e7bc doxygen updates 2008-06-02 10:51:55 -07:00
Mathieu Lacage d9a606c58d update doxygen 2008-06-02 10:38:19 -07:00
Mathieu Lacage d3942cd4d0 remove dead code. 2008-06-02 10:38:10 -07:00
Mathieu Lacage 6badc137d9 add some doxygen, remove a couple of XXX 2008-06-02 10:30:24 -07:00
Mathieu Lacage 2eafd4b9b1 merge with HEAD 2008-06-02 09:42:29 -07:00
Mathieu Lacage add091ea23 bug197: fix infinite loop 2008-05-31 14:12:40 -07:00
Mathieu Lacage 92ebbd036d a testcase for bug 197 2008-05-31 14:12:24 -07:00
Mathieu Lacage f08ea71825 add small comment 2008-05-31 11:00:01 -07:00
Mathieu Lacage a5c312cb1c some more cleanup 2008-05-31 10:57:49 -07:00
Mathieu Lacage e20525cad9 add small comment 2008-05-31 10:47:24 -07:00
Mathieu Lacage 00d36e836c add logging, cleanup AddAtEnd. 2008-05-31 10:46:23 -07:00
Gustavo J. A. M. Carneiro 312b8da3a3 Check for the 'diff' command, don't allow running regression tests without it. 2008-05-31 16:14:49 +01:00
Raj Bhattacharjea 05a27250c1 Get rid of dead code from GTNetS 2008-05-30 15:31:50 -04:00
Raj Bhattacharjea a7a0a3de70 Change log output to be more consistent 2008-05-30 15:14:38 -04:00
Mathieu Lacage 26d46a960d fix a couple of XXX 2008-05-30 11:11:00 -07:00
Mathieu Lacage 2a323473e4 doxygen 2008-05-30 11:03:18 -07:00
Mathieu Lacage 4904c44f15 merge with HEAD 2008-05-30 10:39:43 -07:00
Mathieu Lacage e4ec46dd52 fix dox warnings 2008-05-30 10:38:59 -07:00
Tom Henderson a947ff3967 more doxygen 2008-05-30 10:36:02 -07:00
Mathieu Lacage bbf1d7cce3 fix dox warning 2008-05-30 10:35:25 -07:00
Tom Henderson dfb9b7360a Doxygen organization 2008-05-29 23:24:10 -07:00
Craig Dowell 554fcfda0d point-to-point cleanup 2008-05-29 19:09:56 -07:00
Mathieu Lacage 16d1d635a0 new Packet testcases, bug fix. 2008-05-29 12:13:42 -07:00
Mathieu Lacage 62d8743f1c bug 146: s/HostOrder// 2008-05-29 09:37:07 -07:00
Mathieu Lacage 5872949e0a make sure we output the right diff command 2008-05-29 09:06:42 -07:00
Mathieu Lacage f173b434dd DequeuePending returns 0 upon error, not the other way round. 2008-05-29 09:01:31 -07:00
Mathieu Lacage 48fa3d344c fix valgrind-reported leak 2008-05-29 08:16:53 -07:00
Gustavo J. A. M. Carneiro b9d448c83b Fix TCP valgrind problem (bug #194): TcpSocketImpl::m_wouldBlock was not always being initialized. 2008-05-29 15:10:40 +01:00
Gustavo J. A. M. Carneiro 6152ba1a89 Make Application::Start/Stop times relative, Simulator::StopAt(time) renamed to Simulator::Stop(time) and time also made relative, to improve consistency of the API which uses relative times everywhere else. Closes bug #191. 2008-05-29 11:45:57 +01:00
Gustavo J. A. M. Carneiro 08f2b87daa merge 2008-05-29 09:34:47 +01:00
Gustavo J. A. M. Carneiro 39c1412e3e Don't register IPv4 protocol handler for all interfaces, only for IPv4-enabled interfaces. 2008-05-29 09:34:31 +01:00
Tom Henderson 41b7eadd33 undo changeset 3161 (to pass unit tests) 2008-05-28 22:45:59 -07:00
Tom Henderson b851cc5b0b Undo changeset 3163 (breaks multicast) 2008-05-28 22:06:14 -07:00
Mathieu Lacage 08961f4883 make sure that the mac low listener is destroyed _after_ the mac low itself. 2008-05-28 13:59:53 -07:00
Mathieu Lacage c9ccce91ed remove dead code 2008-05-28 13:22:50 -07:00
Mathieu Lacage 76dd4d1db4 Fix off-by-2 errors 2008-05-28 13:03:29 -07:00
Mathieu Lacage 27e5640201 the TypeId for Packet sockets is PacketSocketFactory, not PacketSocket. fix bug introduced by changeset c33b6d2775b7. 2008-05-28 11:28:06 -07:00
Mathieu Lacage fdc3e27c11 merge with HEAD 2008-05-28 10:49:01 -07:00
Mathieu Lacage 709f6a6d5b document 2008-05-28 10:47:21 -07:00
Mathieu Lacage 45793c3a02 fix new packet bug 2008-05-28 10:47:14 -07:00
Mathieu Lacage 137ff47a46 fix the testcase 2008-05-28 10:31:09 -07:00
Mathieu Lacage ab01dd65a4 a failing testcase. 2008-05-28 10:11:25 -07:00
Mathieu Lacage 31870b3bc0 more logging code 2008-05-28 10:11:08 -07:00
Mathieu Lacage 0c34dea05b kill dead code 2008-05-28 10:10:47 -07:00
Gustavo J. A. M. Carneiro b135ced7aa Bug #154: Attach sockets to nodes. Patch by Rajib Bhattacharjea. 2008-05-28 17:52:42 +01:00
Mathieu Lacage 16018e8d7e add logging 2008-05-28 08:51:27 -07:00
Craig Dowell 0ef25b59c4 CSMA Model Description 2008-05-27 22:30:11 -07:00
Mathieu Lacage 20b1d65d07 avoid segfault 2008-05-27 15:57:51 -07:00
Mathieu Lacage eaf4fb4a6d doxygen. 2008-05-27 15:32:08 -07:00
Mathieu Lacage f86b2de0af merge with HEAD 2008-05-27 15:01:11 -07:00
Tom Henderson 4182edbc93 fix optimized build 2008-05-27 06:03:48 -07:00
Tom Henderson 6af434b9f9 branch merge 2008-05-26 21:41:23 -07:00
Mathieu Lacage f79ac9e373 fix optimized build 2008-05-26 21:03:59 -07:00
Mathieu Lacage c352b35d3f add NS_LOG_APPEND_CONTEXT 2008-05-26 21:00:25 -07:00
Mathieu Lacage b91e3b0e4c ATTRIBUTE_HELPER_HEADER_2 -> ATTRIBUTE_HELPER_HEADER 2008-05-26 20:48:54 -07:00
Mathieu Lacage 0d86d03be0 kill ATTRIBUTE_HELPER_HEADER_1 2008-05-26 20:44:19 -07:00
Tom Henderson 9a94ef7a2d some doxygen cleanup 2008-05-26 11:48:18 -07:00
Tom Henderson 791e9ae464 Receive raw buffer variant 2008-05-26 11:22:42 -07:00
Tom Henderson c2a543f568 Tutorial material for sockets 2008-05-26 11:07:41 -07:00
Mathieu Lacage b3390aaa3e report packet drops in ARP. 2008-05-25 14:58:22 -07:00
Mathieu Lacage 3d0264e3a3 fix bug 185 2008-05-25 14:44:36 -07:00
Mathieu Lacage 42fbffdbdb more logging. Make sure we do dispose attached Ipv4Interface 2008-05-25 14:44:14 -07:00
Mathieu Lacage f83b6c7ab1 more logging. Make sure we invoke parent's Dispose method 2008-05-25 14:43:41 -07:00
Mathieu Lacage 2f1e4574c0 more logging output 2008-05-25 14:42:55 -07:00
Mathieu Lacage de351e9388 re-organize the ARP code to expose arp cache attributes. 2008-05-25 11:07:08 -07:00
Mathieu Lacage 20f5f62292 add attributes to ArpCache 2008-05-25 10:27:34 -07:00
Tom Henderson 0008eeebce branch merge 2008-05-25 08:05:26 -07:00
Tom Henderson ca7b76ef27 Add tag serialize methods; add serialize routines to Address 2008-05-25 08:04:57 -07:00
Tom Henderson a41edb2fa1 remove std::endl from PPP header print 2008-05-25 05:35:22 -07:00
Craig Dowell ffd1766adc fix bug 183 2008-05-23 17:03:51 -07:00
Tom Henderson f9e025ad81 add dia to the supported figure generation tools for the tutorial; clean up 2008-05-23 15:50:00 -07:00
Tom Henderson b62c394703 dia command line options 2008-05-23 14:51:05 -07:00
Tom Henderson 4ba092f3aa branch merge 2008-05-23 12:26:21 -07:00
Tom Henderson 93126f3a55 tutorial work (add back packet chapter) 2008-05-23 12:25:55 -07:00
Raj Bhattacharjea 62ff82d0ca Fix up recv buffer stuff some more 2008-05-22 17:08:19 -04:00
Raj Bhattacharjea e62a059f05 Fix tcp rx buffer semantics; fromaddress tagging is broken at the moment 2008-05-22 11:55:42 -04:00
Tom Henderson 5f94a4cf59 merge with ns-3-dev 2008-05-21 22:40:18 -07:00
Craig Dowell 888a3bdad6 ppp model description 2008-05-21 21:20:30 -07:00
Tom Henderson 72dba0d456 branch merge 2008-05-21 19:00:38 -07:00
Raj Bhattacharjea 3bd417f4e5 Merge with tomh/ns-3-dev-socket 2008-05-21 12:01:24 -04:00
Tom Henderson 72d054a867 Move Tcp attributes from factory to TcpSocket 2008-05-21 00:38:49 -07:00
Gustavo J. A. M. Carneiro e9e87c3232 Require gtk+ >= 2.12; closes #182 2008-05-20 22:04:38 +01:00
Tom Henderson ef99300eff Add missing files 2008-05-20 12:55:23 -07:00
Tom Henderson 49d5404bfc Add abstract base class TcpSocket 2008-05-20 12:36:05 -07:00
Tom Henderson c21d79a87b change TcpImpl to TcpSocketFactoryImpl 2008-05-20 12:27:30 -07:00
Tom Henderson 8dc2460416 move Tcp to TcpSocketFactory 2008-05-20 12:16:55 -07:00
Tom Henderson e6bd2a7a6a change TcpSocket to TcpSocketImpl 2008-05-20 11:52:25 -07:00
Raj Bhattacharjea 3a34c3fff1 Merge with tomh/ns-3-dev-socket 2008-05-20 14:40:36 -04:00
Tom Henderson ad374c8d87 rename UdpSocket to UdpSocketImpl 2008-05-20 10:30:40 -07:00
Tom Henderson 935532822b Move UdpSocket to UdpSocketImpl 2008-05-20 10:16:03 -07:00
Mathieu Lacage 45d6dcd5f4 avoid warning with g++ 4.1.2 2008-05-20 08:01:11 -07:00
Mathieu Lacage e4c1b22090 fix build for g++ 3.4.6 2008-05-20 07:56:59 -07:00
Tom Henderson 2a14b1c408 remove spurious test line 2008-05-20 07:27:16 -07:00
Tom Henderson 5b119aa40d Add attributes to new abstract base class for UdpSocket 2008-05-20 07:25:17 -07:00
Tom Henderson 25de2ff3c4 s/UdpImpl/UdpSocketFactoryImpl 2008-05-17 22:02:09 -07:00
Tom Henderson 4c4ef85a93 s/ns3::Udp/ns3::UdpSocketFactory 2008-05-17 12:08:20 -07:00
Tom Henderson 67d54a7f8a Implement IPTTL socket option for UDP 2008-05-17 11:15:02 -07:00
Tom Henderson 0a476b4f04 undo SocketDefaults class; plumb in new UdpSocket option attributes 2008-05-16 21:28:07 -07:00
Mathieu Lacage 2c57f536e3 merge with HEAD 2008-05-16 15:52:04 -07:00
Mathieu Lacage a1882f8e10 merge from HEAD 2008-05-16 15:48:09 -07:00
Mathieu Lacage 7c509777e5 forgot to remove dead includes 2008-05-16 10:40:37 -07:00
Mathieu Lacage d5a75f0cec merge with HEAD 2008-05-16 10:29:34 -07:00
Mathieu Lacage 91c4ef481f remove dead code. 2008-05-16 10:25:24 -07:00
Craig Dowell d034ec3e08 fix bug 180 2008-05-16 10:11:49 -07:00
Mathieu Lacage dd4979ef89 merge with HEAD 2008-05-16 08:52:40 -07:00
Mathieu Lacage 84c9dd96db merge with HEAD 2008-05-16 08:41:19 -07:00
Tom Henderson 18011ba4eb improve send semantics, documentation 2008-05-15 23:06:58 -07:00
Tom Henderson aa7b91f890 branch merge 2008-05-15 21:35:55 -07:00
Mathieu Lacage 0e05b107fd avoid un-initialized bits 2008-05-15 11:37:36 -07:00
Mathieu Lacage 05c3383610 remove XXX 2008-05-15 11:25:17 -07:00
Mathieu Lacage 43c64f656b ensure that the list of positions is long enough 2008-05-15 10:39:44 -07:00
Mathieu Lacage 2b4b265b60 re-enable editing 2008-05-15 10:29:58 -07:00
Mathieu Lacage 0efe19fe76 cleanup the model memory. 2008-05-15 10:22:53 -07:00
Mathieu Lacage 1a990a1877 bug 179: Packet fragmentation bug 2008-05-15 09:49:04 -07:00
Gustavo J. A. M. Carneiro 6547b9222c GlobalRoutingManager: don't segfault for NetDevices that have no associated Channel (e.g. virtual NetDevices); just skip them. 2008-05-15 12:56:10 +01:00
Gustavo J. A. M. Carneiro a4a8086580 GlobalRoutingManager: don't abort with non-IP NetDevices, just skip them. 2008-05-15 12:54:28 +01:00
Unknown 8d3dfb1df9 Merged nonotifier with main branch. 2008-05-15 07:47:17 -04:00
Unknown 3226ce7f09 Changed MobilityModel::m_trace to be more descriptive. 2008-05-15 07:46:03 -04:00
Unknown 1b12b95ee9 Removed TraceContext and TraceResolver references, removed MobilityModelNotifier class, and minor changes on samples/main-random-walk.cc. 2008-05-14 19:24:17 -04:00
Mathieu Lacage ffdff79112 improve doxygen doc. 2008-05-14 15:47:44 -07:00
Mathieu Lacage 4b7bfc9b77 tweak log output 2008-05-14 15:47:35 -07:00
Mathieu Lacage ccb704ffc7 close the writer before deleting it 2008-05-14 15:00:58 -07:00
Mathieu Lacage ce87f97994 reset the output stream to get a proper trace path 2008-05-14 14:59:16 -07:00
Mathieu Lacage 8a7187fba3 also handle parent attributes. 2008-05-14 13:54:39 -07:00
Mathieu Lacage 3a8df9f3d6 make sure we iterate over the parent's attributes. 2008-05-14 13:54:27 -07:00
Mathieu Lacage 31a31ffc07 add missing TypeId::HasParent method 2008-05-14 13:54:23 -07:00
Mathieu Lacage 63dccc1973 make the iteration code more flexible. add tooltips to gtk config store 2008-05-14 13:33:55 -07:00
Gustavo J. A. M. Carneiro 36e6b69aaf PacketSocket bind-to-interface bug 2008-05-14 19:15:00 +01:00
Gustavo J. A. M. Carneiro dc624d46b3 merge 2008-05-14 18:16:02 +01:00
Gustavo J. A. M. Carneiro 1cecfe5548 Missing Packet::Copy in Node::ReceiveFromDevice for the multiple protocol handlers scenario. 2008-05-14 18:15:26 +01:00
Mathieu Lacage a54122b4e8 set a default window size. 2008-05-14 10:06:04 -07:00
Mathieu Lacage 693099a950 add scroll area and alternating row colors. 2008-05-14 09:51:25 -07:00
Mathieu Lacage ae1fed72b1 add missing getters 2008-05-14 09:44:39 -07:00
Mathieu Lacage b5e22fdc37 merge with HEAD 2008-05-14 09:37:53 -07:00
Mathieu Lacage 47e58be578 update pcap trace setup filename 2008-05-14 09:37:00 -07:00
Mathieu Lacage 833506428b merge with HEAD 2008-05-13 17:07:20 -07:00
Mathieu Lacage ca3c48f8e8 a basic but useful Gtk+-based config-store 2008-05-13 17:02:52 -07:00
Tom Henderson b00892cae7 swap SendTo parameters 2008-05-13 07:22:03 -07:00
Tom Henderson 2e116e5f74 Fix semantics of NotifySend() for Tcp 2008-05-13 06:57:57 -07:00
Tom Henderson 9eb007fd26 Add SocketDefaults to store socket option attributes (missing files) 2008-05-12 23:02:44 -07:00
Tom Henderson 6be343530f Add SocketDefaults to store socket option attributes 2008-05-12 23:02:23 -07:00
Gustavo J. A. M. Carneiro 9ee8930726 WAF: add uselib_local to the ns3 library to pull in library dependencies from the ns-3 modules into the main library. 2008-05-13 01:04:42 +01:00
Raj Bhattacharjea 0add09088e Use the correct semantics for sendcallback 2008-05-12 15:12:26 -04:00
Raj Bhattacharjea 006ac07f97 Tcp large transfer modified to keep sending for 10 seconds 2008-05-12 13:27:45 -04:00
Raj Bhattacharjea 5d5fd895f1 Add a socket callback that can unblock a blocked close 2008-05-12 13:13:50 -04:00
Tom Henderson a042d0bbef Move API for socket factory to a Socket::CreateSocket () factory method 2008-05-12 06:39:00 -07:00
Tom Henderson 3ebec1046c Some tcp socket cleanup for buffer limits 2008-05-11 22:12:16 -07:00
Tom Henderson 4340da4ca6 branch merge 2008-05-11 21:55:17 -07:00
Tom Henderson 6ec88588f1 tweak UdpSocket buffer limit behavior 2008-05-11 21:55:00 -07:00
Tom Henderson 32bc3d3664 Fix point-to-point unit tests 2008-05-11 21:43:55 -07:00
Tom Henderson ee62b6d04e Enable receive buffer limit for packet socket 2008-05-11 20:59:08 -07:00
Tom Henderson fc73accacd branch merge from ns-3-dev 2008-05-11 15:17:18 -07:00
Tom Henderson 9da8e1bb03 branch merge from Raj 2008-05-11 15:16:58 -07:00
Craig Dowell 515183caae fix bug 161 2008-05-11 11:18:21 -07:00
Tom Henderson 0f55fefaba API for SocketOptions class 2008-05-10 21:27:32 -07:00
Tom Henderson ddda864b77 branch merge 2008-05-10 20:22:27 -07:00
Craig Dowell 5a16ff1df4 bug 153 applied to CSMA 2008-05-08 13:26:49 -07:00
Raj Bhattacharjea 53841f6170 NotifySend ONLY when data is acked 2008-05-08 16:17:16 -04:00
Craig Dowell 3c8bfe6ae6 bug 153 2008-05-08 12:43:36 -07:00
Mathieu Lacage 2e699a4704 attempt to document some of the internal details 2008-05-08 12:40:44 -07:00
Raj Bhattacharjea 7089f682d6 Finite send buffer first cut 2008-05-08 15:31:44 -04:00
Mathieu Lacage 371ed54dc9 bench tags 2008-05-08 11:23:22 -07:00
Mathieu Lacage 0b6e955a24 help return-value-optimization 2008-05-08 11:22:40 -07:00
Mathieu Lacage f5bb823415 avoid doing the work twice. 2008-05-08 11:22:25 -07:00
Mathieu Lacage 83cd996471 inline a couple of tag methods. 2008-05-08 11:16:32 -07:00
Craig Dowell 418a3fae42 bug 170 2008-05-08 11:16:12 -07:00
Mathieu Lacage 66229167d2 enable metadata only on second run 2008-05-07 15:23:46 -07:00
Mathieu Lacage 164e8c83bc simplify code logic 2008-05-07 15:18:33 -07:00
Mathieu Lacage 2865203612 simplify code logic 2008-05-07 15:02:07 -07:00
Mathieu Lacage f2a37c6ca4 avoid stupid string allocation all the time. 2008-05-07 15:01:45 -07:00
Mathieu Lacage 6236cbf9a3 avoid useless ifdefs 2008-05-07 14:40:03 -07:00
Craig Dowell 58ab30c53c fix optimized build, bug 169 2008-05-07 14:24:45 -07:00
Mathieu Lacage beaf8569c0 add missing license headers 2008-05-07 13:47:19 -07:00
Mathieu Lacage 9679a25783 typos 2008-05-07 13:45:57 -07:00
Mathieu Lacage aaccadb46a a couple more tests. 2008-05-07 13:45:04 -07:00
Mathieu Lacage 4c424da911 add comments about previous bug fix 2008-05-07 11:33:40 -07:00
Mathieu Lacage 623d9898b7 avoid signed/unsigned comparison warning. 2008-05-07 11:28:17 -07:00
Mathieu Lacage 1c05220bba test self-assignment of packets 2008-05-06 15:04:36 -07:00
Mathieu Lacage ccd72825dd add dox doc 2008-05-06 14:54:52 -07:00
Mathieu Lacage 29169d42b6 add missing include for optimized builds 2008-05-06 14:54:44 -07:00
Mathieu Lacage 43ecf40b5a use a free list for tag buffers 2008-05-06 14:44:09 -07:00
Mathieu Lacage 119cf2035b use a shared buffer 2008-05-06 14:18:05 -07:00
Mathieu Lacage 73aec9c9b1 avoid segfault when setting NS_LOG=* 2008-05-06 12:20:10 -07:00
Gustavo J. A. M. Carneiro 04c8831510 merge 2008-05-04 22:46:31 +01:00
Gustavo J. A. M. Carneiro fbabf8129a Upgrade to WAF 1.4.1 2008-05-04 22:43:18 +01:00
Tom Henderson 08511f30c5 Add GetTxBuffer; add some socket options; make limited UDP receive buffer functional 2008-05-03 11:11:24 -07:00
Tom Henderson daddd90d07 Implement GetRxAvailable () 2008-05-02 10:55:07 -07:00
Tom Henderson bfe0533aa3 overloaded Recv() method suggested by Gustavo 2008-05-02 09:38:18 -07:00
Tom Henderson f8a2add627 more cleanup 2008-05-02 09:21:01 -07:00
Tom Henderson af58cc3026 remove more dead code 2008-04-28 21:54:48 -07:00
Tom Henderson c6f7bb2d3e remove previous socket receive methods 2008-04-28 21:45:55 -07:00
Tom Henderson 075851985f Move tcp socket to receive pull model 2008-04-28 21:33:15 -07:00
Gustavo J. A. M. Carneiro e4eeeb18f5 WAF: use os.path.join in the message 'Entering directory ...' 2008-04-26 22:02:12 +01:00
Gustavo J. A. M. Carneiro b61d0ff5f2 WAF: convert code to WAF 1.4 API; the 'waf' script bundle will be updated later, for now has been disabled. 2008-04-26 21:54:36 +01:00
Tom Henderson 288d193daa Cut over UDP applications to use the new receive API 2008-04-25 14:29:28 -07:00
Mathieu Lacage 0996a38b84 mtag -> tag 2008-04-24 16:06:33 -07:00
Mathieu Lacage 18ee064a79 Mtag -> Tag 2008-04-24 16:03:13 -07:00
Mathieu Lacage 96c43a7e26 remove now-unused Tags class 2008-04-24 16:01:53 -07:00
Mathieu Lacage 5c7b34db46 convert to new tag API. 2008-04-24 15:44:35 -07:00
Mathieu Lacage d3623e2142 add a couple of serialization/deserialization methods 2008-04-24 15:44:15 -07:00
Mathieu Lacage 062a2dcc42 add a couple of dox comments 2008-04-24 14:58:17 -07:00
Mathieu Lacage 2d581766fd a new tag implementation: Mtag 2008-04-24 14:52:59 -07:00
Tom Henderson d7a038431f Plumb in socket receive pull model, in parallel to existing Receive framework 2008-04-24 08:18:01 -07:00
Mathieu Lacage e17282f995 move test code to anon namespace 2008-04-23 15:01:27 -07:00
Mathieu Lacage 78829ba702 add a couple of helper test macros 2008-04-23 14:56:58 -07:00
Mathieu Lacage 4a78ce68d1 add adjustment report to overloaded Buffer::AddAtEnd method 2008-04-23 09:11:55 -07:00
Mathieu Lacage ad54b2ce62 make the code more consistent across AddAtStart and AddAtEnd 2008-04-23 09:05:18 -07:00
Mathieu Lacage f79e7581b6 report the adjustment delta in Buffer::AddAtEnd and Buffer::AddAtStart. 2008-04-23 08:54:29 -07:00
Mathieu Lacage aeffbb31d7 kill dead code 2008-04-23 08:35:59 -07:00
Tom Henderson b998a05cce A few minor cleanups to socket.h/cc 2008-04-22 22:39:17 -07:00
Tom Henderson 3752943c22 bug 131 partial fix: split out Send and DataSent callbacks 2008-04-22 22:29:16 -07:00
Tom Henderson 9fd7fbb86c Fix two nits that escaped checkin 2008-04-22 22:08:53 -07:00
Tom Henderson 829a6dd8bb branch merge 2008-04-22 21:19:39 -07:00
Tom Henderson 1f0dd55d8d EnablePcap()->EnablePcapAll(); EnableAscii()->EnableAsciiAll() 2008-04-22 21:18:04 -07:00
Mathieu Lacage 28bf2500e9 merge with HEAD 2008-04-22 14:36:24 -07:00
Mathieu Lacage 63d6b14d45 optimize case where fake payload is fragmented and re-assembled. 2008-04-22 14:35:42 -07:00
Mathieu Lacage 815f3721b7 move Packet::AddAtEnd implementation to the Buffer code. 2008-04-22 14:18:33 -07:00
Mathieu Lacage 0dab5235c9 kill unused code 2008-04-22 13:54:05 -07:00
Gustavo J. A. M. Carneiro eb9fa68703 Missing hg update when 'Synchronizing reference traces using Mercurial' 2008-04-21 17:31:01 +01:00
Mathieu Lacage 7be1b92968 merge with HEAD 2008-04-21 09:04:08 -07:00
Mathieu Lacage d1ddd3c89b merge 2008-04-21 08:58:23 -07:00
Mathieu Lacage 9b153c313b avoid crash due to mis-spelled data rate unit 2008-04-21 08:32:50 -07:00
Mathieu Lacage ea6e067812 merge with HEAD 2008-04-21 08:05:34 -07:00
Mathieu Lacage 6a93edb24e use CopyObject and not Create to copy RttMeanDeviation. Implement the copy constructor correctly. 2008-04-18 14:35:38 -07:00
Mathieu Lacage a6321aac60 add const version of CopyObject 2008-04-18 14:35:10 -07:00
Mathieu Lacage 450b10b597 merge with HEAD 2008-04-17 16:24:43 -07:00
Mathieu Lacage f91e2ff5a4 fix regression introduced by changeset 6244ea5e7831 to fix bug #173 2008-04-17 16:24:13 -07:00
Mathieu Lacage 35170aed54 merge with HEAD 2008-04-17 15:54:35 -07:00
Mathieu Lacage 2c1b7db441 merge with HEAD 2008-04-17 15:50:49 -07:00
Mathieu Lacage a557f1c064 output the initial value of the attributes 2008-04-17 15:40:25 -07:00
Mathieu Lacage f2b7b1795b small tweak to generated dox 2008-04-17 15:33:39 -07:00
Mathieu Lacage 3b711f9852 improve the auto-generated doxygen output. 2008-04-17 15:30:18 -07:00
Mathieu Lacage a890500150 add doxygen class definitions for native type Value classes. 2008-04-17 14:33:45 -07:00
Mathieu Lacage 7468230ede improve the doxygen output. 2008-04-17 14:15:33 -07:00
Mathieu Lacage 6a3326e529 fix dox warning 2008-04-17 14:13:27 -07:00
Mathieu Lacage 4ff40c4a07 get rid of Attribute class. Use AttributeValue subclasses directly. 2008-04-17 13:42:25 -07:00
Gustavo J. A. M. Carneiro 254057bd80 Add assertion to detect TimeUnit<N> divide by zero (if not detected, it creates an infinite loop) 2008-04-17 17:19:24 +01:00
Mathieu Lacage f5f32e0ea3 merge 2008-04-16 10:52:38 -07:00
Mathieu Lacage 39ef17d6a4 bug 107 2008-04-16 10:52:26 -07:00
Gustavo J. A. M. Carneiro 505de0c685 Address instances of different m_type's should compare differently; closes #173. 2008-04-16 18:37:20 +01:00
Raj Bhattacharjea bb10734d66 Fix for bug 166 2008-04-16 12:40:46 -04:00
Gustavo J. A. M. Carneiro edb480ad29 Fix bad usage of std container iteration and erase () all over OLSR code; closes #171; thanks to Liu Jian for spotting and submitting an initial patch. 2008-04-16 11:32:55 +01:00
Mathieu Lacage f4cff0e194 fix optimized build 2008-04-15 15:56:42 -07:00
Mathieu Lacage 78a2df8963 use function logging macros 2008-04-15 15:53:54 -07:00
Mathieu Lacage f8ec434cdb code was dead. 2008-04-15 15:29:43 -07:00
Mathieu Lacage 1649c1dc65 NS_LOG_FUNCTION -> NS_LOG_FUNCTION_NOARGS and NS_LOG_PARAMS -> NS_LOG_FUNCTION 2008-04-15 15:10:53 -07:00
Mathieu Lacage 5c5ab1f1f0 bug 150: CommandLine::Parse argc parameter should not be a reference 2008-04-15 11:01:13 -07:00
Mathieu Lacage 53be11fe6f update testcase to deal with the return value of Socket::Send. Make sure udp packets are copied before going down the ip stack. 2008-04-15 10:49:09 -07:00
Mathieu Lacage 6fd8b6c572 bug 143: rename scheduler files 2008-04-15 10:09:42 -07:00
Liu Jian 61375f8ef5 Fix bug 168: Socket::SendTo does not return the number of bytes sent for udp sockets. 2008-04-15 09:41:58 -07:00
Mathieu Lacage 8a32b1e369 fix bug reported by Gustavo Carneiro: AP does not reply to ARP request. 2008-04-14 17:12:52 -07:00
Mathieu Lacage 22d1a6046d change NS_LOG= syntax and default behavior to be more useful by default. 2008-04-14 16:39:26 -07:00
Mathieu Lacage db81db32a8 generate list of trace sources and attributes in separate dox groups. 2008-04-14 16:19:17 -07:00
Mathieu Lacage c9d422bbb6 fix some dox warnings 2008-04-14 16:18:50 -07:00
Mathieu Lacage bd1ef984cc improve doxygen 2008-04-14 16:18:30 -07:00
Mathieu Lacage 6d53b47cae improve documentation 2008-04-14 16:06:44 -07:00
Mathieu Lacage 09f00c5b34 remove old non-relevant documentation. 2008-04-14 16:06:08 -07:00
Mathieu Lacage fbe5e3949f add missing license statement. 2008-04-14 15:44:43 -07:00
Mathieu Lacage 43dbc0b4d1 fix optimized build 2008-04-14 12:21:24 -07:00
Mathieu Lacage 5e9344d2d4 add doxygen. 2008-04-14 12:15:05 -07:00
Mathieu Lacage 2b0056553c add time logging support 2008-04-14 11:30:15 -07:00
Mathieu Lacage 6cf0d2e645 cleanup to avoid too many #ifdefs 2008-04-14 10:40:46 -07:00
Mathieu Lacage 822e13a7df align with the semantics of _PARAMS 2008-04-14 10:28:42 -07:00
Mathieu Lacage a62f9d7771 do not use __PRETTY_PRINT__ 2008-04-14 10:26:26 -07:00
Mathieu Lacage 112b278854 kill NS_LOG_PARAMS_BEGIN/END. 2008-04-14 10:10:17 -07:00
Gustavo Carneiro 14c60f7ad3 Remove the restriction of waf option --command-template requiring option --run; it no longer makes sense. 2008-04-14 14:19:12 +01:00
Tom Henderson e855838ed1 Align helper API use of Install() 2008-04-13 15:46:17 -07:00
Mathieu Lacage 8a4b416428 ConfigStore allows you to dump and read from a file a simulation configuration 2008-04-11 16:58:50 -07:00
Mathieu Lacage ca687b56f6 avoid trailing | 2008-04-11 16:58:00 -07:00
Mathieu Lacage 556d973168 implement operator >> 2008-04-11 16:52:22 -07:00
Mathieu Lacage 42282f5512 implement operator >> 2008-04-11 16:52:12 -07:00
Mathieu Lacage 0e65d73baa implement operator >> 2008-04-11 16:51:58 -07:00
Mathieu Lacage f7691237f5 -1 cuts the trailing s if the time postfix is longer than 1 char. 2008-04-11 12:23:19 -07:00
Mathieu Lacage ed0dcc982b merge 2008-04-11 11:30:05 -07:00
Mathieu Lacage a390b13f86 Backed out changeset 9fa2f44cdafa 2008-04-11 11:29:49 -07:00
Mathieu Lacage 5d91e8c2d2 implement operator << for ObjectFactory. 2008-04-11 11:27:09 -07:00
Mathieu Lacage 0789c9b435 use HasSetter/HasGetter to improve doxygen output. 2008-04-11 11:25:44 -07:00
Mathieu Lacage 03b4114b20 add AttributeAccessor::HasGetter/HasSetter and implement it. 2008-04-11 11:25:21 -07:00
Mathieu Lacage fda39900e3 allow an std::string to be an attribute 2008-04-11 11:24:42 -07:00
Mathieu Lacage 9167a8b308 merge with HEAD 2008-04-11 11:20:05 -07:00
Mathieu Lacage 60c81de8b5 ensure that out PcapTraces are generated in a consistant format to allow simple comparison of traces against a single set of reference traces. 2008-04-11 11:19:54 -07:00
Mathieu Lacage 3211fbb0bf allocate/deallocate buffer by hand. 2008-04-10 14:08:14 -07:00
Raj Bhattacharjea 3327b9da92 Shorten Tcp attribute names (bug 163) 2008-04-10 16:33:44 -04:00
Mathieu Lacage 72b496b9ef use RefCountBase 2008-04-10 13:01:53 -07:00
Mathieu Lacage 8bfd88b80b get rid of scary implementation details of Attribute. 2008-04-10 12:59:31 -07:00
Mathieu Lacage c456128c6d add copy constructor and assignment operator to ensure proper initialization of refcount. 2008-04-10 12:59:15 -07:00
Mathieu Lacage dd283f6ead print list of trace sources 2008-04-10 12:24:36 -07:00
Raj Bhattacharjea 271ea4bc75 Add support for TCP cwnd tracing 2008-04-10 15:04:47 -04:00
Craig Dowell e7c2292d7b make duplicate aggregations fail; avoid duplicate aggregations 2008-04-10 13:16:43 -07:00
Mathieu Lacage c883517a1d generate path information for each type. 2008-04-10 11:50:47 -07:00
Mathieu Lacage 696859e936 add a few missing ns3:: prefixes in TypeId names. 2008-04-10 11:50:08 -07:00
Mathieu Lacage 267a3ca69d add missing registration macro call 2008-04-10 11:11:55 -07:00
Mathieu Lacage 27c1fab7fc add functions to access list of root namespace objects 2008-04-10 11:11:34 -07:00
Mathieu Lacage be27a1c03d add missing TypeId in base class 2008-04-10 10:24:18 -07:00
Mathieu Lacage ba319c457d make IsChildOf not return true for test against self. Add operator < for TypeId. 2008-04-10 10:23:56 -07:00
Mathieu Lacage 4a556dbf91 iterate over the _aggregated_ objects: this does not include the initial pointer. 2008-04-10 09:23:24 -07:00
Mathieu Lacage 923b1180f9 iterate over aggregated objects dynamically. 2008-04-09 17:35:18 -07:00
Mathieu Lacage f6ba778fc9 define a TypeId for ns3::Ipv4Interface 2008-04-09 17:28:19 -07:00
Mathieu Lacage cff773b8d2 use a specific type if you can 2008-04-09 17:27:56 -07:00
Mathieu Lacage 776a594c3c typos in WifiChannel 2008-04-09 17:27:12 -07:00
Mathieu Lacage a75e91cc03 add ObjectVector::GetItemTypeId 2008-04-09 14:58:52 -07:00
Mathieu Lacage dc271270a8 allow access to the pointee's TypeId. 2008-04-09 14:28:16 -07:00
Mathieu Lacage cc927f907f improve type linking behavior. 2008-04-09 13:05:20 -07:00
Mathieu Lacage 53fb65aea7 add doxygen documentation to avoid doxygen warnings. 2008-04-09 13:04:37 -07:00
Mathieu Lacage 560a34ba97 add space to ensure doxygen reference generation. 2008-04-09 13:04:18 -07:00
Mathieu Lacage e0570ec0b0 add doxygen anchors to avoid warnings. 2008-04-09 13:03:58 -07:00
Mathieu Lacage e110fea8ff get rid of implicit conversion of Attribute to/from Ptr<>. Replace this with an explicit Pointer class. 2008-04-09 12:15:24 -07:00
Mathieu Lacage d4cd3c92fd Pointer class for primitive type pointer. 2008-04-09 11:46:04 -07:00
Mathieu Lacage b807dfa090 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind. 2008-04-09 10:04:16 -07:00
Mathieu Lacage 5a16b2cad8 add destructor. Easier to plant a breakpoint in there. 2008-04-09 10:03:28 -07:00
Mathieu Lacage 9ea56ac66a add pcap files to ignore list. 2008-04-09 10:02:54 -07:00
Mathieu Lacage 478e810ad5 add some debugging 2008-04-09 10:01:16 -07:00
Mathieu Lacage bf90dded3c avoid compilation warning about undefined MobilityModel class. 2008-04-09 09:08:54 -07:00
Tom Henderson c22d5c5733 revive mixed-wireless example from Simutools tutorial 2008-04-08 23:12:19 -07:00
Tom Henderson bb5f9f1a50 Prevent internet stack helper from overwriting internet stack 2008-04-08 23:10:39 -07:00
Tom Henderson 3f1c2d2653 some additional debugging for addressing conflicts 2008-04-08 23:10:11 -07:00
Tom Henderson f6dcb76287 Added tag release ns-3.0.12 for changeset b17f2928291e 2008-04-07 21:39:40 -07:00
Tom Henderson 6740fc4627 note that waf generates reference trace tarball now 2008-04-07 21:35:54 -07:00
Tom Henderson edc7af8a02 nits for 3.0.12 release 2008-04-07 21:07:38 -07:00
Craig Dowell 80c8937a01 rework app constructors 2008-04-07 18:29:38 -07:00
Mathieu Lacage 4400054ebe SetupUdp -> SetUdpLocal, SetupTcp -> SetTcpLocal 2008-04-07 10:44:06 -07:00
Mathieu Lacage 3a43bd4987 Ipv4AddressHelper::Allocate -> Ipv4AddressHelper::Assign 2008-04-07 10:41:21 -07:00
Mathieu Lacage c140066890 Build -> Install 2008-04-07 10:38:37 -07:00
Gustavo J. A. M. Carneiro c3f0505ddc Create regression traces tarball automatically on waf dist. 2008-04-06 21:57:11 +01:00
Gustavo J. A. M. Carneiro 8501ca807c Ignore .py[co] files (python bytecodes) 2008-04-06 21:41:31 +01:00
Gustavo J. A. M. Carneiro 75643a53ef Fix a diff|head race condition; Fix regression error messages to indicate the new waf commands to run regression tests. 2008-04-06 19:58:29 +01:00
Gustavo J. A. M. Carneiro b6471a7749 merge 2008-04-06 19:54:39 +01:00
Gustavo J. A. M. Carneiro 0c393e38c4 Fix case of 'diff xxx | head' appearing to succeed even if the diff command returned non-zero exit statux. 2008-04-06 19:22:39 +01:00
Raj Bhattacharjea 05019b6214 Add TCP delayed acks 2008-04-04 17:20:36 -04:00
Gustavo J. A. M. Carneiro 737bc7cd00 Integrate regression testing into the main waf script. 2008-04-04 19:33:39 +01:00
Raj Bhattacharjea 31d26c1e84 Small fix to tcp example 2008-04-04 14:00:41 -04:00
Mathieu Lacage ec7c5d2dd6 merge with HEAD 2008-04-04 19:02:34 +02:00
Mathieu Lacage b34fbc477b fix bug 159 2008-04-04 19:02:03 +02:00
Tom Henderson a8acd5c5f0 try to improve obj->png conversion 2008-04-04 08:47:41 -07:00
Tom Henderson 621f07f0d2 revert figure directory change 2008-04-03 23:15:16 -07:00
Tom Henderson 11468a4235 Remove filename 2008-04-03 23:04:25 -07:00
Tom Henderson 441b674f96 workaround texinfo problem with non-local images 2008-04-03 23:03:25 -07:00
Tom Henderson 2c273b86cd fixes for Makefile due to tgif command-line limitations 2008-04-03 22:42:10 -07:00
Mathieu Lacage d4347bc1b5 testcase from bug 159 2008-04-04 07:28:27 +02:00
Tom Henderson 5a8c75187d Makefile tweaks 2008-04-03 21:08:28 -07:00
Tom Henderson 36049254af a few tutorial updates; tutorial Makefile; tutorial figures directory 2008-04-03 20:58:40 -07:00
Tom Henderson 18dd6edda3 branch merge 2008-04-03 09:07:28 -07:00
Tom Henderson c802635595 Some doxygen work 2008-04-03 09:07:15 -07:00
Gustavo J. A. M. Carneiro 56b59c5905 Add a --no-task-lines WAF option; together with -v it makes WAF just print executed commands, like 'make' does. 2008-04-03 14:15:17 +01:00
Craig Dowell 6490c81cf8 Point regression tests to final locations, update release steps, bug 158 2008-04-02 21:33:31 -07:00
Raj Bhattacharjea ec3d666f3b Add IP layer tracing helpers to InternetStackHelper 2008-04-02 14:09:36 -04:00
Craig Dowell 8dc44fbfaf helpful hint 2008-04-01 17:05:54 -07:00
Craig Dowell 5a8d264371 address some list comments 2008-04-01 16:30:08 -07:00
Craig Dowell 3faceb9149 minor cleanup 2008-03-31 18:20:33 -07:00
Craig Dowell aad4e224e5 test test 2008-03-31 18:14:47 -07:00
Craig Dowell 5bd019aba0 use global seed in examples, new regression tests 2008-03-31 17:48:21 -07:00
Craig Dowell 9fe0c49344 some examples disappeared 2008-03-31 16:31:34 -07:00
Craig Dowell bcc362cd11 branch merge 2008-03-31 16:22:24 -07:00
Craig Dowell 34c057c351 quiet clone and pull 2008-03-31 16:22:06 -07:00
Craig Dowell 9c1922aebe fix diffs 2008-03-31 16:16:43 -07:00
Craig Dowell 058f508927 move reference traces out of main repo 2008-03-31 16:03:44 -07:00
Mathieu Lacage 24863d5368 add guillaume vu-brugier to author list 2008-03-31 15:39:50 -07:00
Mathieu Lacage e103bc0ded add Federico to author list. 2008-03-31 15:38:44 -07:00
Mathieu Lacage 766efc6d0e initial draft of release notes. 2008-03-31 15:33:19 -07:00
Mathieu Lacage e4fa093d5f update platform build matrix and example program. 2008-03-31 15:33:05 -07:00
Mathieu Lacage cb1e1d0023 bump up version number. 2008-03-31 15:32:46 -07:00
Mathieu Lacage dc96b531b1 generate .pcap postfix for pcap filenames 2008-03-31 15:19:31 -07:00
Mathieu Lacage a4a18943f7 change pcap filename template to be slightly more coherent. 2008-03-31 15:19:11 -07:00
Mathieu Lacage a87eed74c2 change pcap filename template to be slightly more coherent. 2008-03-31 15:19:08 -07:00
Mathieu Lacage 5a614715ea quiet dox warning 2008-03-31 15:00:39 -07:00
Mathieu Lacage 27d2380327 remove unused code. 2008-03-31 14:57:30 -07:00
Mathieu Lacage d1d683ee21 remove 'All rigts reserved' keyword per tom's suggestion 2008-03-31 14:56:41 -07:00
Mathieu Lacage 812fc3be75 add missing license headers 2008-03-31 14:50:25 -07:00
Mathieu Lacage ae4529b819 fix typo 2008-03-31 14:44:13 -07:00
Mathieu Lacage 2c1c5afe91 get rid of channel during dispose 2008-03-31 14:43:38 -07:00
Mathieu Lacage b41554c18f kill dead code. 2008-03-31 14:36:21 -07:00
Mathieu Lacage 40349f92d8 do not include internet-node.h 2008-03-31 14:36:15 -07:00
Mathieu Lacage 6935a997e6 do not use InternetNode 2008-03-31 14:34:38 -07:00
Mathieu Lacage 41f6573c8d do not include internet-node.h 2008-03-31 14:34:27 -07:00
Mathieu Lacage 2b44913a70 convert to helper API 2008-03-31 14:34:06 -07:00
Mathieu Lacage 64f72686aa merge with HEAD 2008-03-31 14:23:44 -07:00
Mathieu Lacage d06c2b4fae add back max simulation time on olsr example 2008-03-31 14:23:07 -07:00
Mathieu Lacage 889e333a35 add ns2's stupid prefix on each ascii line output. 2008-03-31 14:09:46 -07:00
Mathieu Lacage 379c3d5390 port to helper API 2008-03-31 14:00:40 -07:00
Craig Dowell 02273c7da7 branch merge 2008-03-31 13:54:57 -07:00
Craig Dowell 2bb663d011 branch merge 2008-03-31 13:54:41 -07:00
Mathieu Lacage 0dfe8fa5df use static method syntax to setup tracing 2008-03-31 13:49:45 -07:00
Mathieu Lacage e173bb868d remove example of p2p static routing: this requires using the low-level API and we don't want to show how to do this. 2008-03-31 13:44:08 -07:00
Mathieu Lacage c5ffe4c9dc remove dead comment 2008-03-31 13:41:09 -07:00
Mathieu Lacage a053ff6896 port to helper API 2008-03-31 13:25:01 -07:00
Mathieu Lacage 537e375fe1 port to helper API 2008-03-31 13:21:22 -07:00
Mathieu Lacage 879b2cb91d port to helper API 2008-03-31 13:20:26 -07:00
Mathieu Lacage c0d60678d9 port to helper API 2008-03-31 13:18:31 -07:00
Raj Bhattacharjea 521c43eb23 Fix the fin retransmission; 2008-03-31 16:18:03 -04:00
Mathieu Lacage 627813fe6c port to helper API. 2008-03-31 13:10:59 -07:00
Mathieu Lacage 16f7931992 port to helper API 2008-03-31 13:10:17 -07:00
Mathieu Lacage 76847a02ca port to helper API. 2008-03-31 11:40:48 -07:00
Mathieu Lacage 935a7896e1 use src/node/ipv4-address-generator.h 2008-03-31 11:40:40 -07:00
Mathieu Lacage 7f6f6ba6a7 improve warning output 2008-03-31 11:40:17 -07:00
Mathieu Lacage 8977a827b2 kill now-useless code. 2008-03-31 11:39:55 -07:00
Mathieu Lacage 11608c6b16 convert to helper API 2008-03-31 11:07:19 -07:00
Mathieu Lacage 6ac2042e55 tweak doxygen 2008-03-31 09:51:30 -07:00
Mathieu Lacage 4ff7264001 add missing tracing helpers and doxygen 2008-03-31 09:49:22 -07:00
Mathieu Lacage 9bcf1cdac5 add wifi helper tracing. 2008-03-31 09:34:51 -07:00
Raj Bhattacharjea f2769ba5a5 Remove the TCP examples that aren't in line with the helper API 2008-03-31 12:22:05 -04:00
Tom Henderson db02706e4c Prepend ascii trace lines with action and time 2008-03-30 22:39:27 -07:00
Tom Henderson 78bfd610d9 Move csma-one-subnet to helper api 2008-03-30 21:41:25 -07:00
Tom Henderson 20726f8201 move csma-multicast to new tracing helpers 2008-03-30 21:12:02 -07:00
Tom Henderson 4fc3138b1e Prepend ascii trace lines with action and time 2008-03-30 21:05:50 -07:00
Tom Henderson b6932288ae csma-multicast helper-ized (w/o tracing cutover yet) 2008-03-30 14:04:57 -07:00
Tom Henderson 6397957980 documentation for class RngStream 2008-03-29 13:28:54 -07:00
Tom Henderson 8810ebfe02 Fix multicast forwarding problem 2008-03-29 08:47:25 -07:00
Tom Henderson 7771ab6562 enable csma multicast 2008-03-29 06:33:19 -07:00
Mathieu Lacage 27615d70d1 use lsb order rather than network order 2008-03-28 18:45:52 -07:00
Mathieu Lacage 1a443df051 initialize no more fragment flag 2008-03-28 18:45:26 -07:00
Mathieu Lacage ff4dfc3009 add Htolsb and Lsbtoh write/read methods 2008-03-28 18:45:10 -07:00
Mathieu Lacage a349c602db basic pcap output 2008-03-28 17:35:50 -07:00
Mathieu Lacage 62308cf1ce delete a packet chunk after deserializing it from a packet. 2008-03-28 17:03:03 -07:00
Mathieu Lacage 511e11e9be configure tracing post-topology construction, not before. 2008-03-28 16:58:44 -07:00
Mathieu Lacage 6de12cc9d2 port to new pcap/ascii trace helpers 2008-03-28 13:40:08 -07:00
Mathieu Lacage 9ad6948605 use new pcap/ascii api 2008-03-28 13:19:14 -07:00
Mathieu Lacage 7e17f8d7e1 add ascii/pcap trace helpers 2008-03-28 13:05:44 -07:00
Mathieu Lacage 67c8f12b67 add doxygen 2008-03-28 12:49:39 -07:00
Federico Maguolo e0346ac124 GetMaxSsrc -> NeedRtsTransmission and GetMaxSlrc -> NeedDataRetransmission 2008-03-28 12:14:02 -07:00
Providence SALUMU MUNGA 46cc3fab6d make sure dev is initialized correctly when binding to more than one interface. 2008-03-28 11:26:59 -07:00
Providence SALUMU MUNGA 02dc54f597 tx power shoudl reflect the user-selected power level, not be always the power level zero. 2008-03-28 11:25:07 -07:00
Mathieu Lacage a7677d77de use new csma pcap and ascii tracing 2008-03-28 11:20:02 -07:00
Mathieu Lacage e963c05aeb add ascii and pcap tracing support to csma helper. 2008-03-28 11:19:38 -07:00
Mathieu Lacage cb475c1750 improve doxygen documentation. 2008-03-28 10:38:03 -07:00
Mathieu Lacage 4202275d10 give refcounting powers to PcapWriter. 2008-03-28 10:23:31 -07:00
Mathieu Lacage e9c67a3ada Rx traces report the full packet and make sure we set the length field correctly in case of LLC encapsulation 2008-03-28 10:21:57 -07:00
Mathieu Lacage ba70c90271 export header. 2008-03-27 15:32:15 -07:00
George F. Riley 8d084573dc bug: 147. Add RefCountBase 2008-03-27 15:28:54 -07:00
Mathieu Lacage 9644e5ee88 remove include 2008-03-27 15:22:04 -07:00
Mathieu Lacage 74541b0d23 remove useless trailing ; 2008-03-27 15:21:08 -07:00
Mathieu Lacage fa2983e8a4 remove useless trailing ; 2008-03-27 15:21:05 -07:00
Mathieu Lacage a280c30a20 remove dead member 2008-03-27 15:20:47 -07:00
Mathieu Lacage a85420cd34 merge with HEAD 2008-03-27 12:21:58 -07:00
Mathieu Lacage 982fe8454b port to helper API 2008-03-27 12:20:26 -07:00
Mathieu Lacage b5cfd48e9a helper for UdpEcho client and server 2008-03-27 12:20:14 -07:00
Mathieu Lacage b7f945f750 add UdpEchoClient::SetRemote 2008-03-27 12:19:22 -07:00
Mathieu Lacage 942f3404a3 improve attribute help string 2008-03-27 12:19:00 -07:00
Mathieu Lacage fd49891782 fix missing includes 2008-03-27 11:47:58 -07:00
Raj Bhattacharjea 6191bda098 Implement TcpHeader::Print (bug 151) 2008-03-27 12:27:41 -04:00
Mathieu Lacage ac7ef5158d merge with HEAD 2008-03-27 09:13:41 -07:00
Mathieu Lacage c61932afc5 port to helper API 2008-03-27 09:13:29 -07:00
Raj Bhattacharjea 473ea28f10 Cleanup of RandomVariable doxygen (bug 110) 2008-03-27 11:36:23 -04:00
Craig Dowell 2158f87125 branch merge 2008-03-26 21:28:27 -07:00
Craig Dowell b4aaac11c6 olsr test 2008-03-26 21:28:13 -07:00
Mathieu Lacage 1d78ea62e8 port to helper API 2008-03-26 16:12:46 -07:00
Mathieu Lacage 37f1478f00 use an attribute name which matches the member variable and method 2008-03-26 16:12:36 -07:00
Mathieu Lacage 2fe2751c9e do not aggregate error model to device 2008-03-26 14:53:00 -07:00
Mathieu Lacage 80e0d082b4 convert to helper API 2008-03-26 14:51:03 -07:00
Mathieu Lacage 011e2bbb70 add extra convenience constructors 2008-03-26 14:50:56 -07:00
Mathieu Lacage 26fba17dc2 port to helper API 2008-03-26 14:18:22 -07:00
Mathieu Lacage 4e2a41ae85 add SetMetric 2008-03-26 14:18:12 -07:00
Mathieu Lacage cb3bcff3a6 fallout from gustavo's header inclusion policy change. 2008-03-26 14:17:58 -07:00
Mathieu Lacage 72f7ffdb6d merge with head 2008-03-26 13:51:46 -07:00
Mathieu Lacage 050af31b95 use Ipv4InterfaceContainer to avoid hardcoding ip addresses. 2008-03-26 13:51:24 -07:00
Mathieu Lacage 89d089c506 introduce Ipv4InterfaceContainer and make Ipv4AddressHelper::Allocate return it. 2008-03-26 13:51:07 -07:00
Craig Dowell 3d0e59cd05 branch merge 2008-03-26 11:42:12 -07:00
Gustavo J. A. M. Carneiro 83dea96517 merge 2008-03-26 18:20:56 +00:00
Gustavo J. A. M. Carneiro e1d6ca18e1 Don't generate module dependencies includes in module headers. 2008-03-26 18:20:30 +00:00
Raj Bhattacharjea 7020d1611e A CSMA channel typo (Bug 152 reported by Guillaume Vu-Brugier) 2008-03-26 11:15:42 -04:00
Craig Dowell 0a3da46adc some tests and known traces 2008-03-26 01:33:41 -07:00
Craig Dowell ed271f5954 quiet diffs 2008-03-26 00:36:58 -07:00
Craig Dowell a3628b44c1 trace generation and comparison 2008-03-26 00:30:11 -07:00
Craig Dowell 23edc105e2 start of regression tests 2008-03-25 23:17:24 -07:00
Mathieu Lacage 44afb107ba convert to helper API. 2008-03-25 17:14:33 -07:00
Mathieu Lacage 5fe039c6a6 use the factories. 2008-03-25 17:13:32 -07:00
Mathieu Lacage cabb264eef initialize factories correctly. 2008-03-25 17:02:14 -07:00
Mathieu Lacage ab8a395c49 ensure type is registered 2008-03-25 17:01:56 -07:00
Mathieu Lacage da1d232338 make MaxBytes an attribute 2008-03-25 16:05:59 -07:00
Mathieu Lacage 08eb0aef35 use auto-generated headers 2008-03-25 14:48:37 -07:00
Mathieu Lacage d869416a92 merge with HEAD 2008-03-25 14:17:35 -07:00
Mathieu Lacage 77bf878ea8 convert PacketSocket scripts to PacketSocketHelper. 2008-03-25 14:16:40 -07:00
Mathieu Lacage 4966231237 add new files to build. 2008-03-25 14:16:26 -07:00
Mathieu Lacage 1724e3ceec aggregate PacketSocketFactory unconditionally. 2008-03-25 14:16:10 -07:00
Mathieu Lacage 58dd143df7 aggregate PacketSocketFactory when requested to. 2008-03-25 14:15:56 -07:00
Mathieu Lacage a6979a7bb9 remove PacketSocketFactory aggregation from Node base class 2008-03-25 14:15:34 -07:00
Raj Bhattacharjea 7b8b8e8de3 Fix a typo that caused stack overflow 2008-03-25 11:51:22 -04:00
Mathieu Lacage 7f56378951 merge with head 2008-03-24 16:32:16 -07:00
Mathieu Lacage b21f71e568 port to helper API 2008-03-24 16:31:19 -07:00
Mathieu Lacage 8872354a55 a bunch of new helpers. 2008-03-24 16:31:14 -07:00
Mathieu Lacage 69dfbe8707 port to helper API. 2008-03-24 16:30:37 -07:00
Mathieu Lacage 5117b61f63 create an ipv4 interface if there is none. 2008-03-24 16:30:25 -07:00
Mathieu Lacage bb59c6a9fb register constructor 2008-03-24 16:30:05 -07:00
Mathieu Lacage c6868e0961 ensure registration. 2008-03-24 16:29:43 -07:00
Craig Dowell ff02feb0b7 quiet unused variable warning 2008-03-24 15:48:09 -07:00
Craig Dowell 991e83fe2c address generator, address collision checker 2008-03-24 15:31:54 -07:00
Mathieu Lacage 0a9ad0c47c use auto-generated per-module headers 2008-03-24 13:57:26 -07:00
Mathieu Lacage dafc9f88ae doxygen 2008-03-24 13:57:14 -07:00
Mathieu Lacage 9b4661c799 add missing include 2008-03-24 13:57:07 -07:00
Mathieu Lacage 69ddf50d98 merge 2008-03-24 13:33:56 -07:00
Mathieu Lacage 386b5fe6eb make ns3::Channel wholy pure. 2008-03-24 13:33:41 -07:00
Mathieu Lacage 25374b7325 improve doxygen. 2008-03-24 13:25:08 -07:00
Mathieu Lacage da3541e88d cleanup. 2008-03-24 13:15:53 -07:00
Mathieu Lacage 3bf71817cf remove undeeded include. 2008-03-24 13:11:48 -07:00
Mathieu Lacage 8acd8baa33 use FailSafe postfix in a more rigorous way. 2008-03-24 13:04:55 -07:00
Mathieu Lacage 7c1cda0ccb doxygen 2008-03-24 13:04:27 -07:00
Craig Dowell a12b08bd3a branch merge 2008-03-24 12:57:32 -07:00
Craig Dowell 341ef1908c fix unit tests 2008-03-24 12:56:39 -07:00
Craig Dowell 18bfce3a97 typos in doxygen, default to 0.0.0.1, avoid broadcast address 2008-03-24 12:45:02 -07:00
Mathieu Lacage 35729f1717 merge 2008-03-24 12:21:20 -07:00
Mathieu Lacage f44690e9af doxygen 2008-03-24 12:12:22 -07:00
Mathieu Lacage 14690d8553 InternetStackHelper. 2008-03-24 12:11:30 -07:00
Gustavo J. A. M. Carneiro 44d0c56680 Fix swapped comments in wifi-ap.cc. 2008-03-24 19:00:18 +00:00
Mathieu Lacage 3a19364b1b introduce AddInternetStack 2008-03-24 11:56:50 -07:00
Mathieu Lacage 9ad409452b fix dox warnings. 2008-03-24 11:50:58 -07:00
Mathieu Lacage 47775d87da doxygen. 2008-03-24 11:49:58 -07:00
Mathieu Lacage 41bbee50af doxygen 2008-03-24 11:43:49 -07:00
Mathieu Lacage 80fec1898e do not use templates. 2008-03-24 11:28:42 -07:00
Mathieu Lacage 0ccf783437 doxygen 2008-03-24 11:14:05 -07:00
Mathieu Lacage 35d9ec1c8e change signature of MobilityHelper::Layout and MobilityHelper::LayoutAll. 2008-03-24 10:42:18 -07:00
Mathieu Lacage 4e5eab77e2 add NodeContainer::GetGlobal 2008-03-24 10:41:44 -07:00
Mathieu Lacage 29f19e164e doxygen. 2008-03-24 10:14:35 -07:00
Craig Dowell e1c0003987 ip helper and find ip interface for device method on ipv4 2008-03-21 17:26:01 -07:00
Mathieu Lacage 4404c371af doxygen 2008-03-21 15:58:20 -07:00
Mathieu Lacage 83ac55585c doxygen. 2008-03-21 15:52:49 -07:00
Mathieu Lacage e9a8648ae9 add \ref to get links. 2008-03-21 15:52:42 -07:00
Mathieu Lacage f17df2c2dc some more doxygen 2008-03-21 15:33:01 -07:00
Mathieu Lacage 18c92e855d TypeId::GetAttributeListN -> TypeId::GetAttributeN 2008-03-21 13:41:16 -07:00
Mathieu Lacage 048ffbe7d3 move another helper to the helper dir 2008-03-21 13:24:15 -07:00
Mathieu Lacage e5818f9865 remove references to non-existant code. 2008-03-21 13:24:01 -07:00
Mathieu Lacage 09b0afe3d5 fix the build, again. 2008-03-21 13:19:37 -07:00
Mathieu Lacage 4f3921d1bf remove reference to trace resolver. 2008-03-21 13:14:00 -07:00
Mathieu Lacage 48a799a6ac fix dox warnings 2008-03-21 13:06:34 -07:00
Mathieu Lacage 08ce187c6b doxygen. 2008-03-21 12:56:40 -07:00
Mathieu Lacage d3fb648979 fix build 2008-03-21 12:56:33 -07:00
Mathieu Lacage 2759411565 merge 2008-03-21 12:34:11 -07:00
Mathieu Lacage fa8f4bf528 improve doxygen 2008-03-21 12:33:35 -07:00
Tom Henderson eeaea6f03b tutorial updates for attributes 2008-03-21 12:14:07 -07:00
Mathieu Lacage 8125fab8c3 add missing header 2008-03-21 11:04:29 -07:00
Mathieu Lacage 7fe3f102ff remove dead header 2008-03-21 09:57:27 -07:00
Mathieu Lacage 53b38a05ea remove dead header 2008-03-21 09:56:48 -07:00
Mathieu Lacage 8aada40095 merge 2008-03-21 09:09:32 -07:00
Mathieu Lacage 621b84064a AllocateUid/Search seem to not calculate correctly mode uids. 2008-03-21 09:09:10 -07:00
Gustavo J. A. M. Carneiro 91cf6bfccd Fix the udp socket unit test problem discovered by Mathieu. 2008-03-21 14:17:58 +00:00
src/devices/wifi/Federico Maguolo c9785a0ef0 Composite and Jakes propagation loss models. 2008-03-21 04:51:36 +01:00
Federico Maguolo 73ea5d6192 PropagationLossModel::GetRxPower -> PropagationLossModel::GetLoss 2008-03-21 04:49:23 +01:00
Federico Maguolo 752658119f add missing prefix. 2008-03-21 04:38:09 +01:00
Mathieu Lacage 53b3d2bb1f SimpleChannel/SimpleNetDevice. Use them where needed. 2008-03-20 15:27:48 -07:00
Mathieu Lacage e22584cd79 merge with head 2008-03-20 13:37:27 -07:00
Raj Bhattacharjea 05b6cf11a8 Fix TCP handshake sequence numbers 2008-03-20 16:25:35 -04:00
Mathieu Lacage 960bc0d1ba add missing license headers. 2008-03-20 13:25:08 -07:00
Mathieu Lacage 745520c03d some doxygen work. 2008-03-20 13:23:03 -07:00
Raj Bhattacharjea de80ab4910 Pass TcpSockets as smart pointers into demux callbacks
fixes TcpSocket memory leaks
2008-03-20 14:04:24 -04:00
Mathieu Lacage c995c98e85 Add an explicit copy constructor. Bug reported by Raj. 2008-03-20 10:25:59 -07:00
Mathieu Lacage fc3824059b point to point smoke tests 2008-03-20 10:14:02 -07:00
Mathieu Lacage ef44869539 merge TypeId in headers and trailers branch 2008-03-20 09:56:03 -07:00
Gustavo J. A. M. Carneiro 4ef540a4e6 Fix parsing of GlobalValues as command line options. 2008-03-20 15:16:17 +00:00
Gustavo J. A. M. Carneiro 56299308b6 Fix deserialization for Constant and Uniform random variables. 2008-03-20 15:10:56 +00:00
Mathieu Lacage f7aa0eb745 static-ify 2008-03-19 15:43:08 -07:00
Mathieu Lacage 881590b6d7 A bunch of wifi smoke tests. 2008-03-19 15:30:41 -07:00
Mathieu Lacage c78d5b071a fix typename 2008-03-19 15:30:18 -07:00
Mathieu Lacage 6974ce4f24 get the typename right. make sure the object is registered with our type system. 2008-03-19 15:14:17 -07:00
Mathieu Lacage 627a2048f1 remove trailing ; 2008-03-19 13:11:25 -07:00
Mathieu Lacage 5cd592fe06 remove template methods. 2008-03-19 13:10:01 -07:00
Mathieu Lacage 295c1cd3d5 move wifi examples to example directory 2008-03-19 12:42:54 -07:00
Mathieu Lacage 931e5140e2 add a bunch of trace sinks for demonstration 2008-03-19 12:41:06 -07:00
Mathieu Lacage 574ed67011 convert Packet::Print to use Chunk::Print 2008-03-19 12:36:27 -07:00
Mathieu Lacage 5b42ef5b02 make sure the trace hooks get a full packet as input. 2008-03-19 12:36:09 -07:00
Mathieu Lacage c6aa4c8fb4 fix failing tests 2008-03-19 12:30:19 -07:00
Mathieu Lacage 6534020b54 add failing tests 2008-03-19 12:30:00 -07:00
Mathieu Lacage a3ed490b7f call SetAddress during construction to assign MAC-level addresses. 2008-03-19 11:19:29 -07:00
Mathieu Lacage 10bbdc4176 add SetAddress methods. 2008-03-19 11:19:05 -07:00
Mathieu Lacage 26f046edd5 fragmentEnd is not zero when this is a fragment. 2008-03-19 11:11:34 -07:00
Mathieu Lacage cabfd83031 improve pretty-printing output. 2008-03-19 11:10:37 -07:00
Mathieu Lacage 1518a1dbd1 add extra trace sources 2008-03-19 11:10:02 -07:00
Mathieu Lacage e5b7c28375 add Print to the Chunk base class. 2008-03-19 10:32:06 -07:00
Mathieu Lacage 2f666d9622 make sure all headers and trailers gets a constructor registered in their TypeId. 2008-03-19 10:31:50 -07:00
Mathieu Lacage 30525bef9a make sure the Rx trace event also gets the llc header to be symetric with the tx event. 2008-03-19 10:30:59 -07:00
Tom Henderson e14aaceabe Add sample file for attribute values 2008-03-19 07:10:01 -07:00
Mathieu Lacage c8f4d234ea improve doxygen. 2008-03-17 17:47:45 -07:00
Mathieu Lacage 8dc5510518 implement Packet::Print 2008-03-17 17:37:25 -07:00
Mathieu Lacage 6b9fc231e1 remove dead code. 2008-03-17 14:49:52 -07:00
Mathieu Lacage a0a7c6d88c stop using ChunkRegistry to get header and trailer uids 2008-03-17 14:01:55 -07:00
Mathieu Lacage f6438556ef add TypeId::SetUid/GetUid 2008-03-17 13:31:08 -07:00
Mathieu Lacage 5d4ecfc62c define a TypeId for each Header/Trailer. 2008-03-17 13:12:17 -07:00
Mathieu Lacage de502593ef make the base Header and Trailer classes virtual. 2008-03-17 12:12:17 -07:00
Mathieu Lacage b5bfc150e3 add TypeId::IsChildOf 2008-03-17 11:55:46 -07:00
Mathieu Lacage bcf92901ac really kill dead code. 2008-03-17 11:47:50 -07:00
Mathieu Lacage c7be59d0c1 replace PacketPrinter with an iterator 2008-03-17 11:45:36 -07:00
Mathieu Lacage 218c66592a move more code around 2008-03-17 05:42:20 +01:00
Mathieu Lacage 96e4874bdb move attribute code to ObjectBase. 2008-03-17 05:22:29 +01:00
Mathieu Lacage 0ef1e6b866 return the _current_ tid, not the Object tid. 2008-03-16 21:52:15 +01:00
Mathieu Lacage 0bfc594407 remove Object::m_collecting 2008-03-16 21:00:31 +01:00
Mathieu Lacage fd014845f7 introduce ObjectBase::GetInstanceTypeId 2008-03-16 20:59:04 +01:00
Mathieu Lacage 660e414f36 split code from object.h/object.cc 2008-03-16 20:55:18 +01:00
Mathieu Lacage 1806cbede9 get rid of unneeded object-base include 2008-03-16 20:47:46 +01:00
Mathieu Lacage 3aa9706150 replace TypeId::CreateObject with TypeId::GetConstructor 2008-03-16 19:24:50 +01:00
Mathieu Lacage 939cee7ac3 do not use ObjectBase as a base class. 2008-03-16 18:42:23 +01:00
Gustavo J. A. M. Carneiro 0f79c7d754 Make waf dist much more efficient. 2008-03-16 14:35:32 +00:00
Mathieu Lacage 6a96f3f3ea improve doxygen and add explicit getters/setters 2008-03-15 23:25:13 +01:00
Mathieu Lacage ef0a14d093 make sure that all the Setters can be invoked in any order without memory leak 2008-03-15 23:04:01 +01:00
Mathieu Lacage b66b302a6a add missing accessor construction functions. 2008-03-15 23:03:40 +01:00
Mathieu Lacage b685071f5a release the channel. 2008-03-15 22:27:42 +01:00
Mathieu Lacage 2ea43c9729 avoid double-frees. 2008-03-15 22:27:35 +01:00
Mathieu Lacage eb89e875f7 don't forget to setup propagation delay and loss models on channel. 2008-03-15 19:51:40 +01:00
Mathieu Lacage 7ecce753a6 use the right position attribute name. 2008-03-15 19:38:00 +01:00
Mathieu Lacage 8ab25173a1 more ns3:: prefix fixes. 2008-03-15 19:31:57 +01:00
Mathieu Lacage ac16151d22 need to use ns3:: prefix for TypeId names now. 2008-03-15 19:29:22 +01:00
Gustavo J. A. M. Carneiro b68fa9919b Fix 'deprecated conversion of string literal to char*' warning with GCC 4.2 2008-03-15 16:26:39 +00:00
Gustavo J. A. M. Carneiro 516eb971a3 Generate foo-module.h module aggreator header files, for use in user scripts. 2008-03-15 16:13:18 +00:00
Gustavo J. A. M. Carneiro 22a66ef917 Missing headers.module attribute in the new 'helper' module... 2008-03-15 15:30:37 +00:00
Gustavo J. A. M. Carneiro 9cf6137916 Add a 'module' attribute to the ns3header object specifying which module each set of headers belongs to. 2007-12-26 13:40:39 +00:00
Mathieu Lacage 36995793fb merge with HEAD 2008-03-14 16:37:02 -07:00
Mathieu Lacage 0ddbe50a61 add CopyObject 2008-03-14 16:36:55 -07:00
Raj Bhattacharjea 0d839a85c0 Merge in forking tcp servers 2008-03-14 16:50:37 -04:00
Mathieu Lacage be10286ae5 merge with HEAD 2008-03-13 14:35:54 -07:00
Mathieu Lacage 4163debdfb merge 2008-03-13 14:28:22 -07:00
Mathieu Lacage c4b1bff412 move helpers to their own dir. 2008-03-13 14:24:45 -07:00
Mathieu Lacage 848cb7cfb5 add back support for introspected doxygen. 2008-03-13 12:56:49 -07:00
Gustavo J. A. M. Carneiro 6df47b4d19 OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm. 2008-03-13 19:00:30 +00:00
Raj Bhattacharjea c09319cab9 This callback is supposed to happen later 2008-03-13 14:32:46 -04:00
Raj Bhattacharjea 175518d248 Undo changes to the packet sink to accept incoming connections; change the default behavior of the socket connection request notifier instead 2008-03-13 14:22:26 -04:00
Mathieu Lacage 14ccd72505 rework the Wifi API to not use a single WifiNetDevice::Setup method 2008-03-13 11:21:12 -07:00
Mathieu Lacage fb452286e6 add Application::SetNode and NetDevice::SetNode, use them from Node::AddApplication and Node::AddDevice. kill useless "Node" attributes. 2008-03-13 11:10:38 -07:00
Mathieu Lacage aa3db11715 Add sufficient information to AttributeChecker to generate nice-looking doxygen documentation. 2008-03-12 11:35:00 -07:00
Mathieu Lacage 250eed3667 Add sufficient information to AttributeChecker to generate nice-looking documentation. 2008-03-12 11:17:16 -07:00
Mathieu Lacage 5a7be54e31 make sure attributes always start with a capital letter. 2008-03-12 10:18:14 -07:00
Mathieu Lacage 4227fc706d fix typo 2008-03-12 10:17:52 -07:00
Mathieu Lacage 3e4aa96665 kill valueref dox macro. 2008-03-12 09:32:02 -07:00
Mathieu Lacage b97dfc9450 fix doxygen errors 2008-03-12 09:31:50 -07:00
Mathieu Lacage 3c32879211 Config::Connect -> Config::ConnectWithoutContext && Config::ConnectWithContext -> Config::Connect 2008-03-11 13:46:22 -07:00
Mathieu Lacage 5d2044ae93 TraceSourceConnect -> TraceConnect && TraceSourceDisconnect -> TraceDisconnect 2008-03-11 13:34:29 -07:00
Mathieu Lacage b5a8d46096 get rid of CreateObjectWith 2008-03-11 13:30:12 -07:00
Mathieu Lacage 7a1c14372c do not set attributes if they have their default value. 2008-03-11 11:35:26 -07:00
Mathieu Lacage 9cac5c71ee check all errors. 2008-03-11 11:35:03 -07:00
Mathieu Lacage ef8ee7e7ef kill multiple constructors per TypeId 2008-03-11 11:29:21 -07:00
Mathieu Lacage ae62a57f4e dox doc 2008-03-10 14:59:49 -07:00
Mathieu Lacage e3fe5ec788 dox doc 2008-03-10 14:57:04 -07:00
Mathieu Lacage bd1c208097 add missing copyright/license headers 2008-03-10 14:52:08 -07:00
Mathieu Lacage 56c82ac742 dox doc 2008-03-10 14:51:15 -07:00
Mathieu Lacage 321b953877 doxygen doc 2008-03-10 14:05:26 -07:00
Mathieu Lacage 603615d2d0 doxygen doc 2008-03-10 13:09:32 -07:00
Mathieu Lacage a4c5f55812 rename old VALUE leftovers 2008-03-10 00:46:44 +01:00
Mathieu Lacage 517c5e5bfd add missing copyright statements. 2008-03-10 00:38:48 +01:00
Mathieu Lacage 514685e9a6 attribute should be Uinteger, not Integer 2008-03-10 00:32:36 +01:00
Mathieu Lacage 9b1a38aa42 kill dead code. 2008-03-10 00:32:24 +01:00
Mathieu Lacage 9af9500a0c forgot to ensure registration of GridPositionAllocator. 2008-03-10 00:29:41 +01:00
Mathieu Lacage eb4fb0cb5d kill DefaultValue 2008-03-10 00:27:53 +01:00
Mathieu Lacage 415eb2496a handle string input in GlobalValue code. Improve tests. 2008-03-10 00:26:54 +01:00
Mathieu Lacage bb5e793580 rewrite CommandLine to not handle DefaultValues anymore. 2008-03-09 23:43:52 +01:00
Mathieu Lacage fcc2066d01 ensure that device is reported in node. 2008-03-09 23:43:29 +01:00
Mathieu Lacage ad625de65a make GetAttributeFlags and GetAttributeChecker public. add GetAttributeHelp 2008-03-09 22:55:25 +01:00
Mathieu Lacage 6f26975964 more FailSafe methods 2008-03-09 21:28:27 +01:00
Mathieu Lacage 9a8cbe189f disable mobility visualizer temporarily. 2008-03-09 21:07:35 +01:00
Mathieu Lacage 782dd6d45b add FailSafe versions of setters which could fail. 2008-03-09 21:07:14 +01:00
Mathieu Lacage 5ed6f37ad9 make Disconnect work with trace contexts. 2008-03-07 12:18:34 -08:00
Guillaume Vu-Brugier fceeaca439 store length type field in ethernet packets in network order. 2008-03-07 11:36:33 -08:00
Gustavo J. A. M. Carneiro f46a1041b8 OLSR optimization: avoid doing routing table computation if no local DB changed after receiving a OLSR packet. 2008-03-06 19:14:52 +00:00
Mathieu Lacage 90a26d4d51 another typo in Attribute names. 2008-03-05 00:16:39 +01:00
Mathieu Lacage 90a367e2e1 use the right attribute names 2008-03-04 23:48:18 +01:00
Mathieu Lacage 5273535527 ensure proper initialization 2008-03-04 23:23:37 +01:00
Mathieu Lacage c777a6802f start the OLSR agent 2008-03-03 22:38:26 +01:00
Mathieu Lacage 267b3e487b avoid typeid initialization ordering pb. 2008-03-03 21:52:51 +01:00
Mathieu Lacage 4ca05b7aad initialize properly the max msdu field. 2008-03-03 21:22:05 +01:00
Mathieu Lacage b1d7592e34 initialize properly mtu field. 2008-03-03 21:21:48 +01:00
Mathieu Lacage b6d8a11148 avoid infinite loop. 2008-03-03 21:00:50 +01:00
Mathieu Lacage 8ca8824655 avoid optimized build warning. 2008-03-03 21:00:27 +01:00
Mathieu Lacage 59df24f63f do not use DefaultValues in simulator 2008-03-03 20:47:12 +01:00
Mathieu Lacage 81b8f0f159 kill DataRateDefaultValue 2008-03-03 20:01:24 +01:00
Mathieu Lacage e4a7b6e868 revert to previous behavior: windowSize is initialized by default to 0xffff 2008-03-03 19:57:56 +01:00
Mathieu Lacage 773b4d80a5 get rid of DefaultValue usage in internet-node 2008-03-03 19:38:05 +01:00
Mathieu Lacage b14aab2fe4 give Attribute power to ObjectFactory class. 2008-03-03 19:33:28 +01:00
Mathieu Lacage a02c29d25b remove from build removed files 2008-03-03 19:01:25 +01:00
Mathieu Lacage ec5c7742d9 kill usage of default-value.h 2008-03-03 18:49:21 +01:00
Mathieu Lacage 6916fd5c3b kill dead code 2008-03-03 18:48:10 +01:00
Mathieu Lacage 06e1a61fab make pac, phy, et al available through Attributes 2008-03-03 18:31:07 +01:00
Mathieu Lacage 93f5de21b1 typo is code unused until then. 2008-03-03 18:30:48 +01:00
Mathieu Lacage 8350d5d0af port propagation models and channel to attributes. 2008-03-03 18:30:29 +01:00
Gustavo J. A. M. Carneiro 0fa7cbe6a3 Small OLSR memory optimisation. 2008-03-03 15:02:33 +00:00
Mathieu Lacage 45d5f42ca3 kill dead files. 2008-03-03 05:11:11 +01:00
Mathieu Lacage f15c11d440 remove unused code 2008-03-03 05:10:49 +01:00
Mathieu Lacage 20d6fdf375 more renamed files 2008-03-03 05:10:12 +01:00
Mathieu Lacage c3d5b77c96 renamed files 2008-03-03 04:42:16 +01:00
Mathieu Lacage 9b37416720 port last rate control algorithms 2008-03-03 04:03:39 +01:00
Mathieu Lacage 163c32fc28 kill old code. 2008-03-03 02:07:40 +01:00
Mathieu Lacage a786828ddf kill TraceResolver et al. 2008-03-03 01:58:57 +01:00
Mathieu Lacage 23bfe3fe09 remove old trace system 2008-03-02 22:53:11 +01:00
Mathieu Lacage 732c7f1d0b use Config-based trace system 2008-03-02 22:52:55 +01:00
Mathieu Lacage ce83863f87 convert to new trace system 2008-03-02 22:52:21 +01:00
Mathieu Lacage 713c893939 get rid of uneeded TraceResolver 2008-03-02 22:34:27 +01:00
Mathieu Lacage 7951713874 be consistant in how lists of objects are named. 2008-03-02 22:34:09 +01:00
Mathieu Lacage 42c7a8c6ab port pcap trace to Config. 2008-03-02 22:33:44 +01:00
Mathieu Lacage 99f4928d7c port AsciiTrace to Config::ConnectWithContext 2008-03-02 22:08:17 +01:00
Mathieu Lacage 356b89e672 re-implement tracing using Attributes. 2008-03-02 21:57:51 +01:00
Mathieu Lacage 7b79b4cdef do not use Queue::CreateDefault 2008-03-02 21:57:28 +01:00
Mathieu Lacage db4e999d61 register and unregister the NodeList as a config root namespace 2008-03-02 21:12:21 +01:00
Mathieu Lacage 346b857c6c implement context-based trace connection 2008-03-02 21:00:37 +01:00
Mathieu Lacage 936b124ff7 avoid memory leaks 2008-03-02 06:43:12 +01:00
Mathieu Lacage ed22af820c ensure that Dispose is invoked at one point. 2008-03-02 06:32:03 +01:00
Mathieu Lacage a5e8bdf451 avoid crashing AP wifi sample 2008-03-02 01:53:26 +01:00
Mathieu Lacage 8b2caa1a2a give Attribute powers to ssid 2008-03-02 01:53:06 +01:00
Mathieu Lacage c43e0ecb14 make sure the default behavior does not crash. 2008-03-02 01:18:07 +01:00
Mathieu Lacage 4c40782b30 add missing include 2008-03-02 01:17:37 +01:00
Mathieu Lacage 5c83be026b port wifi model to Attributes 2008-03-01 21:21:53 +01:00
Mathieu Lacage 0a3b46fdf5 improve debugging output. 2008-03-01 20:41:08 +01:00
Mathieu Lacage af58f11739 report attribute setting errors as early as possible. 2008-03-01 20:20:14 +01:00
Mathieu Lacage 58d05259cb add some debugging output 2008-03-01 19:55:16 +01:00
Mathieu Lacage 662bf63f87 introduce AttributeChecker::Create and use it instead of AttributeValue::Copy. 2008-03-01 19:54:48 +01:00
Mathieu Lacage 947e86f4fa add default constructor 2008-03-01 05:42:14 +01:00
Mathieu Lacage a0f5714f8a add ListPositionAllocator 2008-03-01 05:41:17 +01:00
Mathieu Lacage b7ab54776d setup a working behavior by default 2008-03-01 05:40:57 +01:00
Mathieu Lacage 4a1cb62fce add extra NodeContainer constructors 2008-03-01 05:40:06 +01:00
Mathieu Lacage bf1aad6a7d add ATTRIBUTE_VALUE_IMPLEMENT_NO_SERIALIZE 2008-03-01 05:39:25 +01:00
Mathieu Lacage 93ee85a925 output correct information about non-matching types. 2008-03-01 05:37:56 +01:00
Mathieu Lacage 69a95852ba typos in untested code path. 2008-02-29 17:27:14 +01:00
Mathieu Lacage 8e4605294a avoid macro namespace polution. 2008-02-29 00:45:02 +01:00
Mathieu Lacage 289cf2170e merge with HEAD 2008-02-28 18:15:07 +01:00
Mathieu Lacage 8f6d84e669 Use a temporary to avoid confusing the compiler. 2008-02-28 08:59:35 -08:00
Mathieu Lacage 21466b9afe Copy is not needed anymore. 2008-02-28 08:59:06 -08:00
Mathieu Lacage de39c3b77a convert WifiMacParameters to Attributes. 2008-02-28 07:17:53 +01:00
Mathieu Lacage 374362b25c small typo 2008-02-28 06:18:39 +01:00
Mathieu Lacage 7965ccd65c MacParameters -> WifiMacParameters 2008-02-28 06:18:02 +01:00
Mathieu Lacage 893a2d0859 do not use anonymous namespace in header 2008-02-27 20:39:06 -08:00
Mathieu Lacage fea84ff0f2 add example for trace connect/disconnection with trace paths 2008-02-28 04:28:34 +01:00
Mathieu Lacage e06e3096cb merge with HEAD 2008-02-27 22:19:39 +01:00
Mathieu Lacage 0c586271e5 introduce the ns3::String class, get rid of the string -> Attribute implicit conversion, and get rid of MakeDataRate, port PointToPointNetDevice to Attributes 2008-02-27 21:41:34 +01:00
Mathieu Lacage 1d4187bd0f add missing NS_OBJECT_ENSURE_REGISTERED calls. 2008-02-27 20:48:43 +01:00
Mathieu Lacage fe07d43e5d convert CsmaNetDevice to Attributes. 2008-02-27 20:23:57 +01:00
Mathieu Lacage 9e40bb3bfd fix optimized build 2008-02-27 19:51:34 +01:00
Mathieu Lacage 4704c9d427 convert InternetNode to Attributes. 2008-02-27 19:44:22 +01:00
Mathieu Lacage 49087105ad do not use operator []. Use iterators instead to work with std::list. 2008-02-27 19:36:03 +01:00
Mathieu Lacage dd0ae959fe re-organize the code to avoid link-time errors due to duplicate symbols. 2008-02-27 19:35:37 +01:00
Mathieu Lacage 8f8639aa7a fix compilation bug on osx 2008-02-27 17:39:32 +01:00
Mathieu Lacage e5e35f6545 port Applications to Attributes 2008-02-27 00:05:23 +01:00
Mathieu Lacage 1ae525bf0e use names closer to those used in the previous DefaultValues. 2008-02-26 23:27:19 +01:00
Mathieu Lacage fb2f498e54 make Ipv4Address/Ipv4Mask attributes 2008-02-26 23:26:59 +01:00
Mathieu Lacage cf2466f185 typo. 2008-02-26 22:41:25 +01:00
Mathieu Lacage 5ea4a79c06 forgot to uncomment code. 2008-02-26 22:41:02 +01:00
Mathieu Lacage ed32045dc6 do not use the private constructor to avoid overload resolution confusions. 2008-02-26 22:40:20 +01:00
Mathieu Lacage 1fe93d4e86 add an extra overload of SetTypeId to avoid overload resolution confusions. 2008-02-26 22:39:57 +01:00
Mathieu Lacage e933b3091d add extra checker construction function 2008-02-26 20:23:47 +01:00
Mathieu Lacage 0a8fd09acf add extra checker construction function 2008-02-26 20:23:43 +01:00
Mathieu Lacage 200a9c69ff add extra checker construction function 2008-02-26 20:22:13 +01:00
Mathieu Lacage bfc21a4e47 port Olsr code to attributes/helpers 2008-02-26 19:52:17 +01:00
Mathieu Lacage 276147ac65 add templated version of ObjectFactory::Create 2008-02-26 19:51:58 +01:00
Mathieu Lacage 9094ef8b1b EventTraceSource -> TracedCallback, ValueTraceSource -> TracedValue. 2008-02-26 19:51:33 +01:00
Mathieu Lacage b4ca4f9cf3 use Attributes in ErrorModel. 2008-02-26 18:33:10 +01:00
Mathieu Lacage a5c397f21b convert NodeList to Attributes. 2008-02-26 18:17:29 +01:00
Mathieu Lacage d5221dcfe4 fix tests 2008-02-26 18:17:10 +01:00
Mathieu Lacage 847f7587ff application and netdevice lists are attributes now. 2008-02-26 18:03:59 +01:00
Mathieu Lacage 061f5a8426 export public header 2008-02-26 18:03:44 +01:00
Mathieu Lacage 6a2d2601fc Release all events left upon Simulator::Destroy 2008-02-26 01:39:59 +01:00
Federico Maguolo 0d49574056 Sync event must be properly canceled upon tx during sync. 2008-02-26 01:23:27 +01:00
Federico Maguolo 10d2a5b770 Use the physical rate where needed. 2008-02-26 01:22:44 +01:00
Mathieu Lacage 9b0290012f merge 2008-02-26 01:09:16 +01:00
Mathieu Lacage 9db1cd07e3 merge 2008-02-26 01:08:58 +01:00
Mathieu Lacage 5b36ba86ad A Config class which hooks into the Object Attribute/Tracing system. 2008-02-26 01:07:16 +01:00
Raj Bhattacharjea f38dfb4e28 Fix memory leaks in PendingData class by returning Ptr<Packet> instead of PendingData* where appropriate 2008-02-25 17:06:18 -05:00
Mathieu Lacage 38d882d889 add a base arg to MakeSimpleAttributeChecker 2008-02-25 22:08:56 +01:00
Mathieu Lacage 4e598bde94 do not attempt to access the AttributeList as a fallback from GlobalValue. 2008-02-25 22:07:19 +01:00
Mathieu Lacage 702a31b06e add a few public methods for the Config code 2008-02-25 22:06:14 +01:00
Raj Bhattacharjea b5664b575d Move TcpSocket::m_retxEvent.Cancel to TcpSocket::Destroy; undoes d4217d7ba4ba 2008-02-25 15:28:03 -05:00
Kulin Shah 0ffaf38602 Fix to make the TCP SYN retransmission do a binary exponential backoff 2008-02-25 14:40:25 -05:00
Mathieu Lacage 2eae2f926c make NetDevice fully virtual. 2008-02-25 19:33:46 +01:00
Mathieu Lacage 96b47442ea test the ValueTraceSource with an arbitrary class. 2008-02-24 20:18:02 +01:00
Mathieu Lacage 93ae3cea51 replace IntegerTraceSource with ValueTraceSource 2008-02-24 20:04:31 +01:00
Mathieu Lacage 6895e23eca InitialValue -> GlobalValue 2008-02-23 05:23:59 +01:00
Federico Maguolo b744916fb8 RRAA implementation. 2008-02-22 23:45:25 +01:00
Mathieu Lacage 0febad916b Hook trace sources into the trace system. Add WifiTrace to give a 'simple' API to tracing wifi-specific sources. 2008-02-22 23:34:53 +01:00
Federico Maguolo 7b44a35460 allow rate control algorithms to control more per-packet parameters. 2008-02-22 23:28:01 +01:00
Federico Maguolo 5e08c5cb5b the NAV should be updated only when the packet is _not_ addressed to us. (see section 9.2.5.4) 2008-02-22 23:16:51 +01:00
Mathieu Lacage c4238a2fb7 make EventTraceSource acceptable to the MakeTraceSourceAccessor function 2008-02-22 00:22:16 +01:00
Mathieu Lacage 2aa6ff8d7d invoke getters on tid temp variable to allow proper iteration over tid list. 2008-02-22 00:12:47 +01:00
Mathieu Lacage 6d05a9e061 get rid of useless accessor maker 2008-02-22 00:11:20 +01:00
Mathieu Lacage f8ca997175 actually allow connection and disconnection to trace sources registered in TypeIds 2008-02-22 00:08:00 +01:00
Mathieu Lacage 377f70de36 add an IntegerTraceSource which behaves just like an Integer. 2008-02-21 23:15:00 +01:00
Mathieu Lacage 0dbeed4691 remove accessor BASE arg to MakeAccessorHelper 2008-02-21 21:57:38 +01:00
Mathieu Lacage ca3a3794bf Object::Set/Get -> Object::SetAttribute/GetAttribute 2008-02-21 19:46:39 +01:00
Mathieu Lacage 1bcb523456 Attributes -> AttributeList 2008-02-21 19:31:17 +01:00
Mathieu Lacage 68a81eed0b AddParameter -> AddAttribute 2008-02-21 19:28:41 +01:00
Mathieu Lacage f9538ea708 enum-value -> enum 2008-02-21 19:16:00 +01:00
Mathieu Lacage 03cc15ebdd fp-value -> double 2008-02-21 19:13:39 +01:00
Mathieu Lacage 37b0481304 uint-value -> uinteger 2008-02-21 19:09:05 +01:00
Mathieu Lacage c1d4c1d4c5 int-value -> integer 2008-02-21 19:04:18 +01:00
Mathieu Lacage a7f4957c02 small typo 2008-02-21 18:58:08 +01:00
Mathieu Lacage e039942a02 boolean-value -> boolean 2008-02-21 18:57:34 +01:00
Mathieu Lacage 1706273d74 value-helper.h -> attribute-helper.h 2008-02-21 18:54:02 +01:00
Mathieu Lacage 23d972d9dd value-test.cc -> attribute-test.cc 2008-02-21 18:46:48 +01:00
Mathieu Lacage 3b50a66d0b param-spec-helper.h -> attribute-accessor-helper.h 2008-02-21 18:44:27 +01:00
Mathieu Lacage 969a41048d remove old helpers 2008-02-21 18:35:55 +01:00
Mathieu Lacage 5fc7981de6 convert to new helpers 2008-02-21 18:35:44 +01:00
Mathieu Lacage d041abd435 fix includes 2008-02-21 18:35:34 +01:00
Mathieu Lacage 9a0f0f438f convert RandomVariable to new helpers. 2008-02-21 18:28:05 +01:00
Mathieu Lacage baca67f7a3 fpValue -> Double 2008-02-21 00:54:05 +01:00
Mathieu Lacage cb069a418f indent align 2008-02-21 00:28:22 +01:00
Mathieu Lacage ae4e6226cf small typo: use the Value type for simple checking. 2008-02-21 00:19:43 +01:00
Mathieu Lacage fda20b8236 BooleanValue -> Boolean 2008-02-21 00:19:31 +01:00
Mathieu Lacage c5dc486e2c EnumValue -> Value 2008-02-21 00:00:18 +01:00
Mathieu Lacage 144e84154b UintValue -> Uinteger, IntValue -> Integer 2008-02-21 00:09:16 +01:00
Mathieu Lacage 5de083e234 value.h -> attribute.h 2008-02-20 21:45:42 +01:00
Mathieu Lacage e4529f9217 Value -> AttributeValue 2008-02-20 21:17:34 +01:00
Mathieu Lacage b511f31d39 Accessor -> AttributeAccessor 2008-02-20 20:57:59 +01:00
Raj Bhattacharjea 4d6e41a185 fix rtt::copy's signature 2008-02-20 14:26:42 -05:00
Raj Bhattacharjea 73740bdbc6 undoes 2326:eec07777d1a2 because localInterface is no longer needed (see bug 136) 2008-03-12 16:05:31 -04:00
Raj Bhattacharjea b30c9ee4b3 Cleanup of ipv4endpointdemux and tcpl4protocol 2008-03-12 15:33:11 -04:00
Raj Bhattacharjea 386b63ceb9 Fixes to tcp and to the ipv4endpointdemux to allow forking to work correctly 2008-03-12 14:52:29 -04:00
Raj Bhattacharjea ebbea8ae40 First cut at making the socket clone 2008-03-12 11:55:08 -04:00
Mathieu Lacage ad7d70ae34 ParamSpec -> Accessor 2008-02-20 20:24:52 +01:00
Mathieu Lacage c182f4d479 use helpr macro where needed. 2008-02-20 19:58:46 +01:00
Mathieu Lacage 6353d911c0 PValue -> Attribute 2008-02-20 19:57:31 +01:00
Mathieu Lacage 8c4ce99b89 add extra StopAt call to ensure that the simulation ends at some point. 2008-02-20 19:40:36 +01:00
Mathieu Lacage 6c34a2f48e PARAM -> ATTR 2008-02-20 19:33:59 +01:00
Mathieu Lacage f95a872d12 add missing include. 2008-02-20 19:30:12 +01:00
Tom Henderson 95c59da336 Update NS_LOG documentation 2008-02-19 21:33:08 -08:00
Gustavo J. A. M. Carneiro 78a151d337 Fix the WAF --run option for running a program with command line options 2008-02-19 21:43:28 +00:00
Mathieu Lacage cccdb1f6d6 small tweaking 2008-02-18 05:53:51 +01:00
Mathieu Lacage 4dce1b28b8 InitialValue support 2008-02-18 03:01:52 +01:00
Mathieu Lacage 8bac0c2ba3 move checker creation function to .cc file. 2008-02-18 03:01:42 +01:00
Mathieu Lacage c194579f5e split checker from ParamSpec. 2008-02-18 00:18:45 +01:00
Gustavo J. A. M. Carneiro 2a3e635cd1 Fix a typo in the WAF scripts; don't access m_linktask directly, use the get_target_name() method instead (to make it work with waf trunk). 2008-02-17 14:02:45 +00:00
Mathieu Lacage 82c3fa3aaa merge 2008-02-17 04:38:52 +01:00
Mathieu Lacage 2830225b2c Backed out changeset 7b145012b2eb 2008-02-17 04:38:41 +01:00
Mathieu Lacage cf9ed2855f split initial value from ParamSpec. 2008-02-17 04:38:34 +01:00
Mathieu Lacage b4edd36ec5 get rid of ParamSpec::CreateValue. 2008-02-17 00:46:24 +01:00
Tom Henderson 49d1a39d16 a few tweaks to the release steps document 2008-02-16 13:24:08 -08:00
Tom Henderson 23a8d8bf1b Added tag release-3.0.11 for changeset ee5e1da76ecc 2008-02-16 12:01:48 -08:00
Tom Henderson 1e70c7ac38 add Joe Kopena to AUTHORS list 2008-02-16 11:51:58 -08:00
Tom Henderson bf0d4e7154 avoid infinite recursion in Tcp callback (bug 131) 2008-02-15 19:54:34 -08:00
Mathieu Lacage e8fc6ec946 fix doxygen. 2008-02-15 20:53:07 +01:00
Mathieu Lacage be2b52ac8f update version number 2008-02-15 20:37:34 +01:00
Mathieu Lacage 7bb06e0661 initial release notes 2008-02-15 20:37:19 +01:00
Mathieu Lacage b56cad3cbc bug 133: automate RandomVariable memory management. 2008-02-15 20:03:48 +01:00
Mathieu Lacage 5bec43f720 fix bug 137: Make Ipv4Address (uint32_t) constructor explicit. patch by Gustavo. 2008-02-15 19:14:35 +01:00
Mathieu Lacage 25bb76ce20 macro-ify 2008-02-15 05:38:29 +01:00
Mathieu Lacage e94efb4a11 get rid of Value::ConvertFrom method. 2008-02-15 03:52:56 +01:00
Mathieu Lacage de438d035b helper getters and setters for c++ native types. 2008-02-15 02:08:55 +01:00
Mathieu Lacage 88c9b123ee add node/device containers to build 2008-02-14 23:57:18 +01:00
Mathieu Lacage 2c234e63e7 an initial draft of helper classes. don't work yet. 2008-02-14 23:56:54 +01:00
Mathieu Lacage bd94258500 add device/node containers for helper API. 2008-02-14 23:56:21 +01:00
Gustavo J. A. M. Carneiro ee5f2a5475 Make the OLSR routing protocol priority higher, not lower, than static routing.
The reason for this change is related to the fact that sockets now send
broadcast (255.255.255.255) packets as subnetwork directed broadcasts.  With
wireless OLSR nodes with only a single interface, in order for OLSR to hear
each other's broadcasts they all need to be in the same network.  On the other
hand, if the nodes are all in the same network then the static routing module
will mistakenly believe it has direct conectivity to all other nodes, thereby
bypassing OLSR completely.
2008-02-14 19:01:01 +00:00
Gustavo J. A. M. Carneiro 2806d0edbe Add support for tracing the OLSR routing table size. 2008-02-14 18:55:11 +00:00
Mathieu Lacage c51821715f convert DropTailQueue to parameters 2008-02-14 19:47:19 +01:00
Gustavo J. A. M. Carneiro 85cbeccd3e Check for malformed trace paths that do not start with '/'. 2008-02-14 18:15:26 +00:00
Gustavo J. A. M. Carneiro 147510bb00 Make Packet::RemoveTag behave as documented (bug #139) 2008-02-14 17:48:15 +00:00
Mathieu Lacage 450ca7325d replace ambiguous constructor with separate construction function. 2008-02-14 01:08:45 +01:00
Mathieu Lacage 3f5fa2d889 fix an old typo. 2008-02-14 00:43:46 +01:00
Mathieu Lacage 2e4860e39e add Value support to Address 2008-02-14 00:36:39 +01:00
Mathieu Lacage 392c7581eb add Value support to DataRate 2008-02-14 00:36:25 +01:00
Mathieu Lacage 81f0d2464c add Value support to Mac48Address 2008-02-14 00:36:14 +01:00
Mathieu Lacage 58a93485de introduce top-level ParamSpec for bindings. 2008-02-13 23:37:46 +01:00
Mathieu Lacage 23c4395731 convert RandomVariable, Rectangle, Vector, and Time to the new Class Helper 2008-02-13 22:39:17 +01:00
Mathieu Lacage 0a20822e64 rework param-spec-helper code to avoid having to deal with pointers to member functions et al. 2008-02-13 21:00:33 +01:00
Raj Bhattacharjea cdc9002e41 Fix TCP server socket connection notification (part of bug 132) 2008-02-13 09:55:15 -05:00
Gustavo J. A. M. Carneiro f8ae534480 A couple more OLSR bug fixes 2008-02-13 18:23:20 +00:00
Gustavo J. A. M. Carneiro c6f3793178 OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now. 2008-02-13 17:44:05 +00:00
Gustavo J. A. M. Carneiro 96451fdb37 Make the OLSR example a bit more complete, adding a 5th node, to exercise 3-hop routing. 2008-02-13 17:42:08 +00:00
Gustavo J. A. M. Carneiro feb47b3bb1 Fix broadcast packet reception for locally bound sockets (bug #136) 2008-02-13 17:37:43 +00:00
Gustavo J. A. M. Carneiro 4f02439cb1 Add the IPv4 header before deciding whether to drop packets. Closes bug #135. 2008-02-11 14:46:44 +00:00
Mathieu Lacage b0e8f9ff56 add XXX markers. 2008-02-11 05:11:55 +01:00
Mathieu Lacage 74a7f5d065 add big warning 2008-02-11 05:11:45 +01:00
Mathieu Lacage 8cc988f172 add ObjectVector value support. 2008-02-11 04:26:09 +01:00
Gustavo J. A. M. Carneiro a14e1de6cc The message "Unable to determine outbound interface. No default route set"
should not be fatal; just return false instead.
2008-02-10 22:34:04 +00:00
Gustavo J. A. M. Carneiro a30e3a7e94 Upgrade WAF to version 1.3.2 2008-02-10 13:19:07 +00:00
Gustavo J. A. M. Carneiro 450f9db5c6 RandomWalk2dMobilityModel changed name to RandomWalkMobilityModel (typo or intentional?) 2008-02-10 11:51:53 +00:00
Gustavo J. A. M. Carneiro eca7dc5b27 Make sequence-number.h a public header file (because it is included by another public header, tcp-header.h) 2008-02-09 18:37:58 +00:00
Mathieu Lacage e51df22a48 kill non-existant method 2008-02-09 02:35:38 +01:00
Mathieu Lacage fa3b613148 report more get/set errors 2008-02-09 02:28:21 +01:00
Mathieu Lacage d4a6b3ab85 merge with HEAD 2008-02-08 18:24:35 +01:00
Mathieu Lacage c295b15d7e add hierarchical support to MobilityHelper 2008-02-08 17:52:20 +01:00
Mathieu Lacage cf48df0f49 rework slightly ns2 mobility support 2008-02-08 17:27:38 +01:00
Mathieu Lacage 16a94230d2 convert Mobility subsystem to Value framework 2008-02-08 04:11:48 +01:00
Mathieu Lacage d226ebb036 fix typo: non-matching delaration/implementation 2008-02-08 04:11:29 +01:00
Mathieu Lacage 2c658704eb add automatic conversion from string to PValue. 2008-02-08 04:11:08 +01:00
Mathieu Lacage ea1eacc952 implement missing methods 2008-02-08 02:22:36 +01:00
Mathieu Lacage 161ff1c6b0 a pretty simple wrapper around TypeId+Parameters: ObjectFactory 2008-02-08 02:22:04 +01:00
Mathieu Lacage eec4df655d add a default constructor for the TypeId class 2008-02-08 02:21:23 +01:00
Mathieu Lacage bd0ca7917a untested templates rarely work. 2008-02-08 00:53:40 +01:00
Mathieu Lacage 5af34cc0da add missing Make functions 2008-02-08 00:53:16 +01:00
Mathieu Lacage 69f491c008 fix Value support 2008-02-08 00:52:57 +01:00
Mathieu Lacage 1f848288d8 add Value support to Time 2008-02-08 00:52:32 +01:00
Mathieu Lacage 9cd8e34252 make headers public. 2008-02-07 23:57:07 +01:00
Mathieu Lacage 5137b37f86 add Value support to Rectangle 2008-02-07 23:56:03 +01:00
Mathieu Lacage 16086b3349 add Value support to Vector 2008-02-07 23:55:43 +01:00
Mathieu Lacage 153e0f6d48 make param-spec-helper.h public 2008-02-07 23:55:23 +01:00
Mathieu Lacage f44a019aed add back FpValue support 2008-02-07 23:23:33 +01:00
Mathieu Lacage f826fbc2d9 add Value support to RandomVariable. 2008-02-07 22:40:46 +01:00
Mathieu Lacage f03f1c237b bug 133: automate RandomVariable memory management. 2008-02-07 19:57:21 +01:00
Craig Dowell b4c23f8ebf branch merge 2008-02-06 10:03:46 -08:00
Craig Dowell dd8985b92d further ns-3-obj changes 2008-02-06 10:03:09 -08:00
Mathieu Lacage bf9d59fe21 enforce TypeId::PARAM_* flags 2008-02-06 18:31:15 +01:00
Gustavo J. A. M. Carneiro 9fcd20505c Move TcpSocket's m_retxEvent.Cancel() to ~TcpSocket(), so that it is executed by all possible code paths leading up to a TcpSocket deallocation. 2008-02-06 17:11:56 +00:00
Raj Bhattacharjea a142d30a9d Merge 2008-02-05 15:30:16 -05:00
Raj Bhattacharjea c3658bd810 Slight refactor of TCP code so two way connections don't bug out 2008-02-05 15:29:17 -05:00
Raj Bhattacharjea 6e7d9062cb Patch for bug 130 from Gustavo 2008-02-05 09:54:32 -05:00
Tom Henderson a6438d91b4 some more edits to the front part of the tutorial 2008-02-04 23:09:07 -08:00
Craig Dowell d2d16360c1 fix instances of stale names 2008-02-04 19:17:45 -08:00
Craig Dowell 3b277785c0 object model section of tutorial needed to be rewritten due to ns-3-object changes. 2008-02-04 19:04:01 -08:00
Mathieu Lacage c94bc0c5c8 add back EnumValue 2008-02-04 23:13:54 +01:00
Mathieu Lacage b1495e485e split ParamSpec::CreateInitialValue -> ParamSpec::GetInitialValue + ParamSpec::CreateValue 2008-02-04 22:48:26 +01:00
Mathieu Lacage 6d6ba0c668 forgot to add new files 2008-02-04 22:47:26 +01:00
Mathieu Lacage 0bc09d7d86 add back UintValue 2008-02-04 22:32:21 +01:00
Mathieu Lacage 563f2e3594 remove un-needed object.h include. 2008-02-04 22:32:13 +01:00
Mathieu Lacage 6ba83d0891 weird leftover from the ClassId changes. 2008-02-04 22:19:20 +01:00
Mathieu Lacage f21962defc add back IntValue support 2008-02-04 22:18:07 +01:00
Craig Dowell c3719a2eca tutorial now agrees with ns3-object changes 2008-02-04 12:56:08 -08:00
Craig Dowell 3b58cf8c0e half of example describing how to plumb in new model without plumbing 2008-02-04 12:27:18 -08:00
Tom Henderson b390f1ef73 Further alignment of simple-point-to-point.cc with ns-2/simple.tcl (add TCP) 2008-02-03 14:34:10 -08:00
Gustavo J. A. M. Carneiro 02fd903228 OLSR: remove the 'Link tuple has no corresponding neighbor tuple' assertion; it happens now because MID messages may occasionally not arrive in time, but it's normal. 2008-02-03 19:09:35 +00:00
Gustavo J. A. M. Carneiro 52ca0dd3f6 merge 2008-02-03 19:05:37 +00:00
Gustavo J. A. M. Carneiro 6a874b283c OLSR: get main address of the peer from the UDP source address and the 'interface association' table; this way the UDP source address need not be the same as the main address. 2008-02-03 18:50:55 +00:00
Gustavo J. A. M. Carneiro fd238f3e40 Backed out changeset 055ff23aa034 (Tom does not like it turns out OLSR does not need it) 2008-02-03 18:29:25 +00:00
Tom Henderson 438036550f Fix tutorial TOC 2008-02-02 20:46:04 -08:00
Tom Henderson a0e14bd523 formatting cleanup 2008-02-02 15:52:54 -08:00
Tom Henderson c8a76b7dd5 typos and formatting of Introduction section 2008-02-01 21:31:15 -08:00
Gustavo J. A. M. Carneiro c86c3ce16d UDP sockets are fixed, remove the hack and note. 2008-02-01 19:37:27 +00:00
Gustavo J. A. M. Carneiro dd48772c9e Fix UDP source address, make it honor Bind(). 2008-02-01 19:29:56 +00:00
Gustavo J. A. M. Carneiro 53833582b7 Some more udp socket debug messages 2008-02-01 18:40:14 +00:00
Gustavo J. A. M. Carneiro f262b76a41 Put back the simulation time in 30 seconds, else we generate huge trace files. 2008-02-01 18:39:37 +00:00
Gustavo J. A. M. Carneiro 441e17174d Add more debug info to olsr routing table 2008-02-01 18:24:39 +00:00
Gustavo J. A. M. Carneiro defd58bc77 In OLSR agent, work around newly introduced bug in UDP sockets prenting Bind from working as e.g. Linux. Add note explaining what's wrong. 2008-02-01 18:07:45 +00:00
Gustavo J. A. M. Carneiro 38f2897c29 Fix OLSR example: don't add static routes, increase simulation time to 300 seconds. 2008-02-01 17:17:24 +00:00
Gustavo J. A. M. Carneiro d9d019c5d4 Unbreak ParameterLogger 2008-02-01 15:16:44 +00:00
Gustavo J. A. M. Carneiro f23152d7a7 Start the Olsr agent (accidentally removed during last code refactoring) 2008-02-01 14:05:59 +00:00
Mathieu Lacage d625837eb9 merge with HEAD 2008-02-01 08:50:03 +01:00
Mathieu Lacage cecd35e20b AddInterface -> AggregateObject 2008-01-31 22:23:46 +01:00
Mathieu Lacage 5ade799440 QueryInterface -> GetObject 2008-01-31 22:11:03 +01:00
Mathieu Lacage 2786b195ee merge with HEAD again 2008-01-31 21:58:13 +01:00
Mathieu Lacage ad6f51646d make Ptr<T> convertible to a Value. 2008-01-31 15:10:21 +01:00
Mathieu Lacage 328190ca63 get rid of very long constructor 2008-01-30 19:13:21 +01:00
Mathieu Lacage 5b5649de74 attempt to perform correctly automatic conversions. 2008-01-30 19:13:06 +01:00
Mathieu Lacage 78003d863a initial work on Value code 2008-01-30 17:28:18 +01:00
Mathieu Lacage 71c635dedc introduce ObjectBase 2008-01-30 17:25:06 +01:00
Mathieu Lacage 5f5518e05b merge with HEAD 2008-01-30 17:20:55 +01:00
Mathieu Lacage bd33305e5b remove dependency on Callbacks from Ptr test code 2008-01-30 15:33:48 +01:00
Tom Henderson aa8bd8a8ba some more tutorial updates 2008-01-27 10:58:22 -08:00
Tom Henderson 84cdad7f7d fix optimized build 2008-01-26 06:01:45 -08:00
Tom Henderson 3c38ca5a1b Fix uninitialized member 2008-01-25 15:41:47 -08:00
Tom Henderson ffaf3e7d91 Merge TCP implementation (raj/ns-3-tcp) 2008-01-25 15:21:40 -08:00
Tom Henderson a81a6fc0ec Add chapter on callbacks to the tutorial 2008-01-25 11:58:17 -08:00
Raj Bhattacharjea 6c3559792c Added in ns-3-tcp (second try) 2008-01-25 13:57:38 -05:00
Tom Henderson 6292ead1f7 add hyperlinks to wiki, Doxygen 2008-01-19 21:03:18 -08:00
Tom Henderson 9a15ceadf6 Split tutorial.texi into multiple files; some work on the tracing section 2008-01-19 20:58:01 -08:00
Mathieu Lacage f61e9a9941 interface-id -> type-id 2008-01-16 10:27:07 +01:00
Craig Dowell 21a113f38f Added tag release ns-3.0.10 for changeset b5bf2588cde2 2008-01-15 16:01:26 -08:00
Craig Dowell 4f3bd6f9dd bump version and add release notes 2008-01-15 15:43:00 -08:00
Gustavo J. A. M. Carneiro d2c80f4d1a Print the correct type in the callback assign error message (instead of Ptr<const CallbackImplBase>) 2008-01-15 15:14:24 +00:00
Mathieu Lacage 2949d86908 add an extra link to the PHY model paper 2008-01-15 13:29:41 +01:00
Mathieu Lacage 0fcbdbf0fe fix doxygen warnings 2008-01-15 13:27:45 +01:00
Mathieu Lacage 1dc22a9e8f merge with head 2008-01-15 12:58:27 +01:00
Mathieu Lacage 5c769d2d24 iid -> tid 2008-01-15 12:44:09 +01:00
Mathieu Lacage a2e63b7f0b iid (void) -> GetTypeId (void) 2008-01-15 12:43:07 +01:00
Mathieu Lacage 44c33f1618 InterfaceId -> TypeId 2008-01-15 12:36:22 +01:00
Mathieu Lacage 4730d7087f merge with HEAD 2008-01-15 12:07:31 +01:00
Tom Henderson 3b31a0234e Doxygen organization 2008-01-10 07:31:40 -08:00
Tom Henderson cac5b2ca97 Missing subsection text 2008-01-11 08:31:38 -08:00
Tom Henderson 3b08f13bf3 remove executable bit from file mode 2008-01-09 22:17:02 -08:00
Tom Henderson e51bb180d4 Fix bug 125 (make helper function non-virtual) 2008-01-09 22:09:21 -08:00
Gustavo J. A. M. Carneiro 4e97b6b47c Document the iid parameter of OnOffApplication. 2008-01-08 17:45:57 +00:00
Gustavo J. A. M. Carneiro ed6ee71ded Don't print 'Entering directory xxx' when running waf --shell; it is misleading. 2008-01-08 14:06:49 +00:00
Craig Dowell 6c69295696 fix node and up 2008-01-07 16:48:53 -08:00
Craig Dowell fb72939392 figures 2008-01-07 16:29:54 -08:00
Craig Dowell b61692f121 interfaces 2008-01-07 16:03:32 -08:00
Mathieu Lacage 9ff2549315 copy the packet before sending it down or up 2008-01-07 18:20:18 +01:00
Gustavo J. A. M. Carneiro 3a4eb97315 Add a --valgrind WAF option (bug #124) 2008-01-03 14:14:17 +00:00
Mathieu Lacage 4f58be6548 replace ComponentManager::Create and ClassId with InterfaceId::CreateObjest and InterfaceId 2008-01-03 11:39:45 +01:00
Mathieu Lacage 33bd62d32f typo 2008-01-03 11:37:23 +01:00
Mathieu Lacage c547c88e89 use NS_OBJECT_ENSURE_REGISTERED and fix off-by-one in IidManager::GetRegistered 2008-01-03 11:37:09 +01:00
Mathieu Lacage 2a4dcce444 add NS_OBJECT_ENSURE_REGISTERED 2008-01-03 11:30:02 +01:00
Mathieu Lacage b41d008223 go to the next element in search loop 2008-01-03 11:29:35 +01:00
Mathieu Lacage a144ad9a1e work around weird compiler warning/error. 2008-01-03 10:37:50 +01:00
Mathieu Lacage 93be0562cc check constructor with reference arguments 2008-01-03 10:15:41 +01:00
Mathieu Lacage 64bb988613 a replacement for ClassIdDefaultValue 2008-01-03 09:10:40 +01:00
Mathieu Lacage 3fcff1b1b3 add InterfaceId::HasConstructor 2008-01-03 09:10:23 +01:00
Mathieu Lacage 6150ba4860 make the internal InterfaceId constructor explicit 2008-01-03 08:42:04 +01:00
Mathieu Lacage 676307027c add support to browse the list of existing InterfaceId 2008-01-03 08:41:15 +01:00
Mathieu Lacage 976f16c4d9 get rid of MakeInterfaceId 2008-01-03 08:34:31 +01:00
Mathieu Lacage b88e90fec3 add 'factory' support to InterfaceId 2008-01-02 15:54:53 +01:00
Mathieu Lacage 2103459845 merge with callback improvements. 2008-01-02 13:40:37 +01:00
Mathieu Lacage 348eb1e187 Make the CallbackBase class more useful than it was. 2008-01-02 13:39:56 +01:00
Mathieu Lacage 1fb6ad5488 rewrite interface id metadata 2008-01-02 12:24:25 +01:00
Mathieu Lacage 328aa2cc45 remove some remnants from the iid-a-variable era. 2008-01-02 11:08:11 +01:00
Mathieu Lacage 2deb2ea0f0 add some separation markers 2008-01-02 10:57:25 +01:00
Mathieu Lacage bc1ab2d79b replace static const Interface iid; with static InterfaceId iid (void); 2008-01-02 10:33:39 +01:00
Mathieu Lacage f3e77eea3d fix bug 122: get rid of duplicate argument to QueryInterface 2008-01-02 09:25:31 +01:00
Mathieu Lacage 6b0e717a19 add CreateObject<> to instanciate subclasses of the Object base class. Replaces Create<>. 2008-01-02 09:09:24 +01:00
Tom Henderson 906a9748b5 fix bug in PacketSink 2007-12-30 19:36:44 -08:00
Tom Henderson 414c33ffc9 remove const qualifier from uint16_t 2007-12-28 06:50:47 -08:00
Tom Henderson 77f8c5cbf2 Fix small typo 2007-12-26 20:08:48 -08:00
Tom Henderson 3f5d7030cb update doc/tracing.h to Ptr<Packet> 2007-12-26 13:02:09 -08:00
Tom Henderson c53c3afd46 back out doc/tutorial.h (not yet) 2007-12-26 11:41:47 -08:00
Tom Henderson 33fd7f0c67 Doxygen for internet-node.h 2007-12-26 11:39:52 -08:00
Mathieu Lacage 853f0a13e9 add missing copyright/license header 2007-12-26 15:41:48 +01:00
Mathieu Lacage 9569ad645b fix bug 98 2007-12-25 11:09:15 +01:00
Gustavo J. A. M. Carneiro 3a98117aa5 Remove ghost declaration of function AllocateClassId. 2007-12-22 18:46:43 +00:00
Gustavo J. A. M. Carneiro 42092bc91e Don't include the 'global-route-manager-impl.h' private header from the public header 'candidate-queue.h'. 2007-12-20 15:19:57 +00:00
Mathieu Lacage 2d6f46dfa8 forward only packets for ourselves. 2007-12-19 13:24:52 +01:00
Mathieu Lacage f1f400bcee it is possible to receive packets which are not tagged. ignore them rather than crash. 2007-12-19 13:24:30 +01:00
Mathieu Lacage a6e289c8ef ensure m_listener is initialized properly 2007-12-19 13:22:55 +01:00
Gustavo J. A. M. Carneiro a83ec513a1 const fixes (new GCC 4.2 warning) 2007-12-17 14:53:14 +00:00
Mathieu Lacage f043a8789c doxygen 2007-12-17 13:41:51 +01:00
Mathieu Lacage 30bbef4b14 add a few comments here and there 2007-12-17 13:27:22 +01:00
Mathieu Lacage 26fb62c748 more doxygen 2007-12-17 13:20:02 +01:00
Mathieu Lacage 77c0e85775 add some doxygen 2007-12-17 13:07:41 +01:00
Tom Henderson ac45276835 update release_steps.txt 2007-12-15 15:08:30 -08:00
Tom Henderson cfa242a6a5 Added tag release ns-3.0.9 for changeset 4db981a0d9eb 2007-12-15 14:58:58 -08:00
Mathieu Lacage e42ccef4a7 fix optimized build 2007-12-15 11:58:14 +01:00
Mathieu Lacage 8449139061 fix optimized build 2007-12-15 11:57:43 +01:00
Mathieu Lacage c53988d01e success heuristic was inverted. 2007-12-14 17:42:16 +01:00
Mathieu Lacage 7d6cd9ae7c some debugging. Max rate test was inverted. 2007-12-14 15:43:52 +01:00
Mathieu Lacage bd70c33606 avoid uninitialized variables. 2007-12-14 15:18:14 +01:00
Mathieu Lacage 15748575d8 implement the MRR portion of AMRR 2007-12-13 15:07:08 +01:00
Mathieu Lacage cc9655af45 return the computed rate 2007-12-13 15:04:11 +01:00
Mathieu Lacage 465bf1c10a implement AMRR for true. 2007-12-13 14:43:56 +01:00
Mathieu Lacage eb1200a2cd AMRR rate control algorithm 2007-12-13 13:00:02 +01:00
Mathieu Lacage c1a71e53f9 the meat of the onoe rate control algorithm. 2007-12-13 09:26:20 +01:00
Mathieu Lacage f5fe661c13 Onoe rate control 2007-12-13 08:39:08 +01:00
Mathieu Lacage f42e5c4814 use the new MacStation::Report*Failed methods. 2007-12-12 13:36:16 +01:00
Mathieu Lacage 135a4ab58c add MacStation::ReportFinal* methods for onoe rate control model 2007-12-12 13:17:04 +01:00
Mathieu Lacage b192207132 introduce a low latency parameter for rate control algorithms 2007-12-12 12:03:38 +01:00
Mathieu Lacage a0ee98cb4b add legend support to gnuplot output 2007-12-12 09:33:22 +01:00
Mathieu Lacage cbafcb5aa6 updated doxygen 2007-12-11 17:53:54 +01:00
Mathieu Lacage b604bf2d7a estimation delay and jitter 2007-12-11 17:48:09 +01:00
Mathieu Lacage 05efca8430 merge with HEAD 2007-12-11 15:54:58 +01:00
Mathieu Lacage 83dd618e5b add tracing support to PacketSink 2007-12-11 14:03:20 +01:00
Mathieu Lacage ffc992893f fix small typo 2007-12-11 14:03:02 +01:00
Mathieu Lacage b04e3d6cd6 add tx packet trace support 2007-12-11 13:51:18 +01:00
Mathieu Lacage 5e19f9707b add application tracing support 2007-12-11 13:51:03 +01:00
Mathieu Lacage 49deb08b81 make Packet::AddTag a const method 2007-12-11 13:42:09 +01:00
2511 changed files with 796507 additions and 92136 deletions
+22 -1
View File
@@ -4,8 +4,29 @@
~$
^build-dir
^build
^testpy-output
^doc/html
^doc/latex
^\.lock-wscript
^doc/ns3-object.txt
^\.lock-wafbuild
^\.waf
^doc/introspected-doxygen\.h$
.*\.py[co]$
\.pcap$
\.mob$
\.routes$
^doc/manual/build
^doc/tutorial/build
^doc/testing/build
^doc/models/build
^doc/models/source-temp
^doc/manual/figures/.*eps
^doc/manual/figures/.*pdf
^doc/manual/figures/.*png
^bindings/python/pybindgen/
ms_print.*
massif.*
\.patch$
\.diff$
\.tr$
\#[^\#/]+\#$
+62 -10
View File
@@ -1,10 +1,62 @@
56928998e05c9c11f5f3aefe79be8d2843e0db88 release ns-3.0.1
7ac5a4b0969b255c4824c926c2b37ef450136ce9 release ns-3.0.2
0dc81e76166c56aaae64da48b673b62155943aad packet-history-working
38099dd26e9467b8f49f8632f22789858149a6e7 release ns-3.0.3
5701e60bf01a8ac1308945e69001e0cc07948faf release ns-3.0.4
08046b6aef37932507696a2f2f427b42d693781e release ns-3.0.5
267e2ebc28e4e4ae2f579e1cfc29902acade0c34 buffer-working-before-breaking
606df29888e7573b825fc891a002f0757166b616 release ns-3.0.6
36472385a1cc7c44d34fb7a5951b930010f4e8d2 release ns-3.0.7
560a5091e0e6ded47d269e2f2dee780f13950a63 release ns-3.0.8
56928998e05c9c11f5f3aefe79be8d2843e0db88 ns-3.0.1
7ac5a4b0969b255c4824c926c2b37ef450136ce9 ns-3.0.2
38099dd26e9467b8f49f8632f22789858149a6e7 ns-3.0.3
5701e60bf01a8ac1308945e69001e0cc07948faf ns-3.0.4
08046b6aef37932507696a2f2f427b42d693781e ns-3.0.5
606df29888e7573b825fc891a002f0757166b616 ns-3.0.6
36472385a1cc7c44d34fb7a5951b930010f4e8d2 ns-3.0.7
560a5091e0e6ded47d269e2f2dee780f13950a63 ns-3.0.8
4db981a0d9eb135e3e1c07765cff8d66f7a55cca ns-3.0.9
b5bf2588cde2f1273b1095cc5c83a0c272e55370 ns-3.0.10
ee5e1da76ecc52337f097cd90ebb50a3d49ec541 ns-3.0.11
b17f2928291eec5bf5b1c59a4a5fd583f704ac40 ns-3.0.12
79dba133b5f8a2d6f6f678a22e8519bc155e6a4e ns-3.0.13
8869a79a391f49d0c787f0558cc9329b4e7ee40e ns-3.1-RC1
951296e9a277e14113a0d3ba86a9688b222569ae ns-3.1-RC2
ea16c44eb90db579c83d3434fc8a960be506a7f5 ns-3.1-RC3
42504fb1f7be7817b8be513cdcd3d9bc8f3660e8 ns-3.1
5768685f9fdba9fbf2e9561a840f085142c73575 ns-3.1
dfd634417b8d1896d981b6f44d8f71030611596a ns-3.2-RC1
319eb29611b18998abbad01548825643a8017bcb ns-3.2-RC2
d783a951f8f5e64b33bc518f0415f76cae1ca6f3 ns-3.2-RC2-bis
fa1c7b813873cfa251be7d1b7cea38373fe82fa1 ns-3.2-RC3
68218c266a844f9fbda34a0ffddb1ae2adebd4b0 ns-3.2-RC4
2ecac911b3ec40d73ab8301471bea6d9ba5b9885 ns-3.2
f33cbf6b051c51d92db41b6fa825437958fbf801 ns-3.3-RC1
0000000000000000000000000000000000000000 ns-3.3-RC1
a84f2ab246e691a88b527a84ce21896b95080070 ns-3.3-RC1
654eed5f3ad03c04c2bcfb6852b5b4ae94260bc6 ns-3.3-RC2
a66553c56a8f14644af6c229c83bb0a653cb3f32 ns-3.3-RC3
dfd0bc16dc991313896f351530a3dc5a25f62e15 ns-3.3-RC4
58ae52c5845ff03ba08dc921e13e6cf3604c810a ns-3.3-RC5
4267fd454004f5a60e517496f43a01000ccebc72 ns-3.3-RC6
2efae18e73794c0acd8061a9bd5c74b69f1b0d93 ns-3.3
5396ecd09060bcb1e7b1f750bb170cbfde7a77c2 ns-3.4
13a5b15fbe3429a6c3d00c1bccffa2c156a0603b ns-3.5-rc1
8562a42accf6f715d312c037326ec7da48095e13 ns-3.5-rc2
a600c11ff8d40a40e88c2d692acad6512dde70c8 ns-3.5-rc3
c975274c9707b1f07d94cc51f205c351122131a5 ns-3.5
549243b47311211975b388cd64fcb9111caa2fc2 ns-3.6-RC1
8996042990466b1eda718a848e1c02923c0add74 ns-3.6-RC2
79ff6ad1adbb7b4677759ddf52028b68b0515168 ns-3.6-RC3
39a82d7a0d661febe42e75f26ada79424258e330 ns-3.6-RC4
d55c479666ac6be0575fac695ddf355c0530e0dd ns-3.6
892efc87a1518fb69b04628c779195aee139d33e ns-3.7-RC3
17bf6ee332baaa6b6f9b8a26d29c98f4e715648f ns-3.7-RC4
be3fb855c65a46d22a7693cd156f154f63602e8e ns-3.7
e61ce382fcdd5363a9d0052601c5eeae6f5e8d81 ns-3.8-RC1
3b7ec0d36079b22fbc8c0d86b8edb876bf0ae9d8 ns-3.8-RC2
d588e7fe6cb064919e2738e71e6169dc9be94e0b ns-3.8-RC3
533be42b3c7ff738d76517a9a6e48f1795f54844 ns-3.8-RC4
0ef062c0897e189f016951c307eaceedccad81e0 ns-3.8
fb5ad9c7755aa6ea871e76d322fd4c43a5b1047d ns-3.9-RC1
14019c625ab84486f0c263074048b0519db15f73 ns-3.9-RC2
def4153e27cd744f117acf8c509979617850da83 ns-3.9-RC3
8ddf25211f8995cde73baa8b8a419711ed451b85 ns-3.9
63a8a4ed4054f1e1cd1756045abba657f6fd884c ns-3.10
440bbee145f096193abcdd67fe6c16de62935d89 ns-3.11-RC1
0a7a16b599e86ca7884e5b5772bf7c5cfe146603 ns-3.11-RC2
e48ed3aabca6ad71c8c49e4604c0f83345eda6a8 ns-3.11-RC3
9843c12351cb5ceb9613c9db390d94073b713284 ns-3.11
19c9e2b33b4a53f200be80cd49810bdfecf76770 ns-3.12-RC1
167fc2274f53d4d89fdd769e4a7683ad7b6b7157 ns-3.12
+88 -2
View File
@@ -1,7 +1,93 @@
Raj Bhattarcharjea (raj.b@gatech.edu)
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
Kirill Andreev (andreev@iitp.ru)
Dean Armstrong (deanarm@gmail.com)
Nicola Baldo (nbaldo@cttc.es)
Mirko Banchi (mk.banchi@gmail.com)
Ramon Bauza (monbauza@gmail.com)
Mehdi Benamor (mehdi.benamor@telecom-bretagne.eu)
Raj Bhattacharjea (raj.b@gatech.edu)
Timo Bingmann (timo.bingmann@student.kit.edu)
Julien Boite <juboite@gmail.com>
Elena Borovkova (borokovaes@iitp.ru)
Pavel Boyko (boyko@iitp.ru)
Dan Broyles (muxman@sbcglobal.net)
Jonathan Brugge (j.d.brugge@student.utwente.nl)
Elena Buchatskaia (borovkovaes@iitp.ru)
Gustavo Carneiro (gjc@inescporto.pt, gjcarneiro@gmail.com)
Egemen K. Cetinkaya (ekc@iitc.ku.edu)
Angelos Chatzipapas (chatzipa@ceid.upatras.gr)
Andrey Churin (aachurin@gmail.com)
Salva Climent (jocliba@gmail.com)
Luis Cortes (cortes@gatech.edu)
Craig Dowell (craigdo@ee.washington.edu)
Denis Fakhriev (fakhriev@iitp.ru)
Jahanzeb Farooq (Jahanzeb.Farooq@inria.fr, Jahanzeb.Farooq@gmail.com)
Juliana Freitag Borin (juliana.freitag@gmail.com)
Martin Giachino (martin.giachino@gmail.com,giachino@fing.edu.uy)
Charline Taibi Guguen (charline.guguen@gmail.com)
Tom Goff (tgoff@tgoff.net)
David Gross (gdavid.devel@gmail.com)
Daniel Halperin <daniel@halper.in>
Tom Henderson (tomhend@u.washington.edu)
Mathieu Lacage (mathieu.lacage@sophia.inria.fr)
Blake Hurd (naimorai@gmail.com)
ishan <ishan.chhabra@gmail.com>
Mohamed Amine Ismail (amine.ismail@inria.fr, iamine@udcast.com)
Atishay Jain <atishayjain25@gmail.com>
Sascha Alexander Jopen <jopen@informatik.uni-bonn.de>
Sam Jansen (sam.jansen@gmail.com)
Liu Jian (liujatp@gmail.com)
Joe Kopena (tjkopena@cs.drexel.edu)
Flavio Kobuta (flaviokubota@gmail.com)
Aleksey Kovalenko (kovalenko@iitp.ru)
Mathieu Lacage (mathieu.lacage@inria.fr)
Emmanuelle Laprise (emmmanuelle.laprise@bluekazoo.ca)
Björn Lichtblau (lichtbla@informatik.hu-berlin.de)
Keith Ma (keith.nwsuaf@gmail.com)
Federico Maguolo (maguolof@dei.unipd.it)
Antti Makela (zarhan@cc.hut.fi)
Francesco Malandrino (francesco.malandrino@gmail.com)
Fabian Mauchle (f1mauchl@hsr.ch)
Andrey Mazo (mazo@iitp.ru)
Vedran Miletić <rivanvx@gmail.com>
Faker Moatamri (faker.moatamri@inria.fr)
Sidharth Nabar (snabar@uw.edu)
Hemanth Narra (hemanth@ittc.ku.edu)
Michael Nowatkowski (nowatkom@gmail.com)
Duy Nguyen (duy@soe.ucsc.edu)
Tommaso Pecorella (tommaso.pecorella@unifi.it)
Josh Pelkey (jpelkey@gatech.edu)
Colin Perkins <csp@csperkins.org>
Giuseppe Piro (g.piro@poliba.it)
Yana Podkosova (yanapdk@rambler.ru)
Guangyu Pei (guangyu.pei@boeing.com)
Andrea Ranieri <andreran@uno.it>
Bruno Ranieri (Yrrsinn@googlemail.com)
Ken Renard (kenneth.renard@arl.army.mil)
George F. Riley (riley@ece.gatech.edu)
Bill Roome (wdr@bell-labs.com)
Andrea Sacco (andrea.sacco85@gmail.com)
Providence Salumu Munga (Providence.Salumu@gmail.com, Providence.Salumu_Munga@it-sudparis.eu)
Florian Schmidt (Florian.Schmidt@cs.rwth-aachen.de)
Guillaume Seguin (guillaume.seguin@inria.fr)
Kulin Shah (m.kulin@gmail.com)
Phillip Sitbon (phillip.sitbon@gmail.com)
Anirudh Sivaraman <sk.anirudh@gmail.com>
Ewgenij Starostin (estar@cs.tu-berlin.de)
YunQiang Su <wzssyqa@gmail.com>
Lalith Suresh (suresh.lalith@gmail.com)
Marcos Talau <talau@users.sourceforge.net>
Adrian S. W. Tam (adrian.sw.tam@gmail.com)
Hajime Tazaki (tazaki@sfc.wide.ad.jp)
Wilson Thong (wilsonwk@ee.cityu.edu.hk)
Mauro Tortonesi (mauro.tortonesi@unife.it)
Quincy Tse (quincy.tse@gmail.com)
Frederic Urbani (frederic.urbani@inria.fr)
Andras Varga (andras@omnetpp.org)
Sebastien Vincent (vincent@clarinet.u-strasbg.fr)
Guillaume Vu-Brugier (gvubrugier@gmail.com)
Tom Wambold (tom5760@gmail.com)
Danqi Wang (beyondwdq@gmail.com)
Mitch Watrous (watrous@u.washington.edu)
Florian Westphal (fw@strlen.de)
He Wu (mdzz@u.washington.edu)
Yoshihiko Yazawa (yoshiyaz@gmail.com)
+1671
View File
File diff suppressed because it is too large Load Diff
+48 -93
View File
@@ -5,63 +5,36 @@
Table of Contents:
------------------
1) An Open Source project
2) An overview of the ns-3 project
3) Building ns-3
4) Running ns-3
5) Getting access to the ns-3 documentation
6) Working with the development version of ns-3
1) An overview
2) Building ns-3
3) Running ns-3
4) Getting access to the ns-3 documentation
5) Working with the development version of ns-3
Note: Much more substantial information about ns-3 can be found at
http://www.nsnam.org
1) An Open Source project
-------------------------
ns-3 is an Open Source project. We intend to make this
project a successful collaborative project: we hope that
ns-3 is a free open source project aiming to build a discrete-event
network simulator targeted for simulation research and education.
This is a collaborative project; we hope that
the missing pieces of the models we have not yet implemented
will be contributed by the community in an open collaboration
process.
Contributing to the ns-3 project is still a very informal
process because that process depends heavily on the background
of the people involved, the amount of time they can invest
and the type of model they want to work on.
The process of contributing to the ns-3 project varies with
the people involved, the amount of time they can invest
and the type of model they want to work on, but the current
process that the project tries to follow is described here:
http://www.nsnam.org/developers/contributing-code/
Despite this lack of a formal process, there are a number of
steps which naturally stem from the open-source roots of the
project. These steps are described in doc/contributing.txt
This README excerpts some details from a more extensive
tutorial that is maintained at:
http://www.nsnam.org/documentation/latest/
2) An overview of the ns-3 project
----------------------------------
This package contains the latest version of ns-3 which aims
at being a replacement for ns-2. Currently, ns-3 provides a
number of very simple network simulation models:
- an ipv4 and udp stack
- arp support at the bottom of the stack
- point-to-point physical-layer links
- OnOff traffic generator
Our focus to date has been on getting an overall software
framework in place. The framework is there to make adding
new models as simple as possible:
- an extensive tracing system can be used to connect
any number of arbitrary trace sources to any number
of trace sinks. This tracing system is decoupled
from the act of serializing the trace events to a
file: users can and should provide their own
trace handling routines.
- simple file trace serialization support is included
to both text and pcap files.
- adding new MAC-level models simply requires subclassing
the pair of classes NetDevice and Channel.
- adding new traffic generation algorithms is also very
simple through the Application and the Socket classes.
3) Building ns-3
2) Building ns-3
----------------
The code for the framework and the default models provided
@@ -71,44 +44,39 @@ use of these ns-3 libraries.
To build the set of default libraries and the example
programs included in this package, you need to use the
tool 'waf'. Detailed information on how to install
and use waf is included in the file doc/build.txt
tool 'waf'. Detailed information on how use waf is
included in the file doc/build.txt
However, the real quick and dirty way to get started is to
type the command "./waf" the the directory which contains
type the command
./waf configure --enable-examples
followed by
./waf
in the the directory which contains
this README file. The files built will be copied in the
build/debug or build/optimized.
build/ directory.
The current codebase is expected to build and run on the
following set of platforms:
- linux x86 gcc 4.2, 4.1, and, 3.4.
- linux x86_64 gcc 4.0
- MacOS X ppc and x86
- cygwin
set of platforms listed in the RELEASE_NOTES file.
The current codebase is expected to fail to build on
the following platforms:
- gcc 3.3 and earlier
- optimized builds on linux x86 gcc 4.0
Other platforms may or may not work: we welcome patches to
improve the portability of the code to these other platforms.
Other platforms may or may not work: we welcome
patches to improve the portability of the code to these
other platforms.
4) Running ns-3
3) Running ns-3
---------------
On recent Linux systems, once you have built ns-3, it
should be easy to run the sample programs with the
following command:
On recent Linux systems, once you have built ns-3 (with examples
enabled), it should be easy to run the sample programs with the
following command, such as:
./waf --run simple-point-to-point
./waf --run simple-global-routing
That program should generate a simple-point-to-point.tr text
trace file and a set of simple-point-to-point-xx-xx.pcap binary
pcap trace files, which can be read by tcpdump.
That program should generate a simple-global-routing.tr text
trace file and a set of simple-global-routing-xx-xx.pcap binary
pcap trace files, which can be read by tcpdump -tt -r filename.pcap
The program source can be found in the examples/routing directory.
5) Getting access to the ns-3 documentation
4) Getting access to the ns-3 documentation
-------------------------------------------
Once you have verified that your build of ns-3 works by running
@@ -117,37 +85,24 @@ quite likely that you will want to get started on reading
some ns-3 documentation.
All of that documentation should always be available from
the ns-3 website: http:://www.nsnam.org/ but we
include some of it in this release for ease of use.
the ns-3 website: http:://www.nsnam.org/documentation/.
This documentation includes:
- an architecture document which describes a very
high-level view of ns-3: it tries to explain the
use-cases the ns-3 developers really focused on when
doing the initial design and then goes on to explain
the structure of the resulting framework.
See the file doc/architecture.pdf
- a tutorial
- a reference manual
- models in the ns-3 model library
- a wiki for user-contributed tips: http://www.nsnam.org/wiki/
- an API documentation generated using doxygen: this is
- API documentation generated using doxygen: this is
a reference manual, most likely not very well suited
as introductory text:
http://www.nsnam.org/doxygen/index.html
If you want to re-generate this documentation, you can
easily do so:
- doc/architecture.pdf is generated from the architecture.tex
file in http://code.nsnam.org/docs
- the doxygen documentation is generated from the doc/doxygen.conf
configuration file. The command "./waf --doxygen" will generate it
as doc/html/index.html if you have installed the doxygen tools
(see http://www.doxygen.org)
6) Working with the development version of ns-3
5) Working with the development version of ns-3
-----------------------------------------------
If you want to download and use the development version
+1366 -10
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1 +1 @@
3.0.9
3-dev
@@ -0,0 +1,13 @@
from pybindgen import Module, FileCodeSink, write_preamble, param, retval
def register_types(module):
module.add_class('MyClass')
def register_methods(root_module):
MyClass = root_module['MyClass']
MyClass.add_constructor([], visibility='public')
MyClass.add_constructor([param('double', 's'), param('double', 'l'), param('double', 'mean')], visibility='public')
def register_functions(module):
module.add_function('SomeFunction', 'int', [param('int', 'xpto')])
View File
View File
+7
View File
@@ -0,0 +1,7 @@
from _ns3 import *
import atexit
atexit.register(Simulator.Destroy)
del atexit
+336
View File
@@ -0,0 +1,336 @@
#include "ns3module.h"
#include "ns3/ref-count-base.h"
namespace ns3{
void PythonCompleteConstruct (Ptr<Object> object, TypeId typeId, const AttributeList &attributes)
{
object->SetTypeId (typeId);
object->Object::Construct (attributes);
}
}
class PythonEventImpl : public ns3::EventImpl
{
private:
PyObject *m_callback;
PyObject *m_args;
public:
PythonEventImpl (PyObject *callback, PyObject *args)
{
m_callback = callback;
Py_INCREF(m_callback);
m_args = args;
Py_INCREF(m_args);
}
virtual ~PythonEventImpl ()
{
PyGILState_STATE __py_gil_state;
__py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
Py_DECREF(m_callback);
Py_DECREF(m_args);
if (PyEval_ThreadsInitialized())
PyGILState_Release(__py_gil_state);
}
virtual void Notify ()
{
PyGILState_STATE __py_gil_state;
__py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
PyObject *retval = PyObject_CallObject(m_callback, m_args);
if (retval) {
if (retval != Py_None) {
PyErr_SetString(PyExc_TypeError, "event callback should return None");
PyErr_Print();
}
Py_DECREF(retval);
} else {
PyErr_Print();
}
if (PyEval_ThreadsInitialized())
PyGILState_Release(__py_gil_state);
}
};
PyObject *
_wrap_Simulator_Schedule(PyNs3Simulator *PYBINDGEN_UNUSED(dummy), PyObject *args, PyObject *kwargs,
PyObject **return_exception)
{
PyObject *exc_type, *traceback;
PyObject *py_time;
PyObject *py_callback;
PyObject *user_args;
ns3::Ptr<PythonEventImpl> py_event_impl;
PyNs3EventId *py_EventId;
if (kwargs && PyObject_Length(kwargs) > 0) {
PyErr_SetString(PyExc_TypeError, "keyword arguments not supported");
goto error;
}
if (PyTuple_GET_SIZE(args) < 2) {
PyErr_SetString(PyExc_TypeError, "ns3.Simulator.Schedule needs at least 2 arguments");
goto error;
}
py_time = PyTuple_GET_ITEM(args, 0);
py_callback = PyTuple_GET_ITEM(args, 1);
if (!PyObject_IsInstance(py_time, (PyObject*) &PyNs3Time_Type)) {
PyErr_SetString(PyExc_TypeError, "Parameter 1 should be a ns3.Time instance");
goto error;
}
if (!PyCallable_Check(py_callback)) {
PyErr_SetString(PyExc_TypeError, "Parameter 2 should be callable");
goto error;
}
user_args = PyTuple_GetSlice(args, 2, PyTuple_GET_SIZE(args));
py_event_impl = ns3::Create<PythonEventImpl>(py_callback, user_args);
Py_DECREF(user_args);
py_EventId = PyObject_New(PyNs3EventId, &PyNs3EventId_Type);
py_EventId->obj = new ns3::EventId(
ns3::Simulator::Schedule(*((PyNs3Time *) py_time)->obj, py_event_impl));
return (PyObject *) py_EventId;
error:
PyErr_Fetch(&exc_type, return_exception, &traceback);
Py_XDECREF(exc_type);
Py_XDECREF(traceback);
return NULL;
}
PyObject *
_wrap_Simulator_ScheduleNow(PyNs3Simulator *PYBINDGEN_UNUSED(dummy), PyObject *args, PyObject *kwargs,
PyObject **return_exception)
{
PyObject *exc_type, *traceback;
PyObject *py_callback;
PyObject *user_args;
ns3::Ptr<PythonEventImpl> py_event_impl;
PyNs3EventId *py_EventId;
if (kwargs && PyObject_Length(kwargs) > 0) {
PyErr_SetString(PyExc_TypeError, "keyword arguments not supported");
goto error;
}
if (PyTuple_GET_SIZE(args) < 1) {
PyErr_SetString(PyExc_TypeError, "ns3.Simulator.Schedule needs at least 1 argument");
goto error;
}
py_callback = PyTuple_GET_ITEM(args, 0);
if (!PyCallable_Check(py_callback)) {
PyErr_SetString(PyExc_TypeError, "Parameter 2 should be callable");
goto error;
}
user_args = PyTuple_GetSlice(args, 1, PyTuple_GET_SIZE(args));
py_event_impl = ns3::Create<PythonEventImpl>(py_callback, user_args);
Py_DECREF(user_args);
py_EventId = PyObject_New(PyNs3EventId, &PyNs3EventId_Type);
py_EventId->obj = new ns3::EventId(ns3::Simulator::ScheduleNow(py_event_impl));
return (PyObject *) py_EventId;
error:
PyErr_Fetch(&exc_type, return_exception, &traceback);
Py_XDECREF(exc_type);
Py_XDECREF(traceback);
return NULL;
}
PyObject *
_wrap_Simulator_ScheduleDestroy(PyNs3Simulator *PYBINDGEN_UNUSED(dummy), PyObject *args, PyObject *kwargs,
PyObject **return_exception)
{
PyObject *exc_type, *traceback;
PyObject *py_callback;
PyObject *user_args;
ns3::Ptr<PythonEventImpl> py_event_impl;
PyNs3EventId *py_EventId;
if (kwargs && PyObject_Length(kwargs) > 0) {
PyErr_SetString(PyExc_TypeError, "keyword arguments not supported");
goto error;
}
if (PyTuple_GET_SIZE(args) < 1) {
PyErr_SetString(PyExc_TypeError, "ns3.Simulator.Schedule needs at least 1 argument");
goto error;
}
py_callback = PyTuple_GET_ITEM(args, 0);
if (!PyCallable_Check(py_callback)) {
PyErr_SetString(PyExc_TypeError, "Parameter 2 should be callable");
goto error;
}
user_args = PyTuple_GetSlice(args, 1, PyTuple_GET_SIZE(args));
py_event_impl = ns3::Create<PythonEventImpl>(py_callback, user_args);
Py_DECREF(user_args);
py_EventId = PyObject_New(PyNs3EventId, &PyNs3EventId_Type);
py_EventId->obj = new ns3::EventId(ns3::Simulator::ScheduleDestroy(py_event_impl));
return (PyObject *) py_EventId;
error:
PyErr_Fetch(&exc_type, return_exception, &traceback);
Py_XDECREF(exc_type);
Py_XDECREF(traceback);
return NULL;
}
PyObject *
_wrap_TypeId_LookupByNameFailSafe(PyNs3TypeId *PYBINDGEN_UNUSED(dummy), PyObject *args, PyObject *kwargs,
PyObject **return_exception)
{
bool ok;
const char *name;
Py_ssize_t name_len;
ns3::TypeId tid;
PyNs3TypeId *py_tid;
const char *keywords[] = {"name", NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "s#", (char **) keywords, &name, &name_len)) {
PyObject *exc_type, *traceback;
PyErr_Fetch(&exc_type, return_exception, &traceback);
Py_XDECREF(exc_type);
Py_XDECREF(traceback);
return NULL;
}
ok = ns3::TypeId::LookupByNameFailSafe(std::string(name, name_len), &tid);
if (!ok)
{
PyErr_Format(PyExc_KeyError, "The ns3 type with name `%s' is not registered", name);
return NULL;
}
py_tid = PyObject_New(PyNs3TypeId, &PyNs3TypeId_Type);
py_tid->obj = new ns3::TypeId (tid);
PyNs3TypeId_wrapper_registry[(void *) py_tid->obj] = (PyObject *) py_tid;
return (PyObject *) py_tid;
}
class CommandLinePythonValueSetter : public ns3::RefCountBase
{
PyObject *m_namespace;
std::string m_variable;
public:
CommandLinePythonValueSetter (PyObject *ns, std::string const &variable) {
Py_INCREF(ns);
m_namespace = ns;
m_variable = variable;
}
bool Parse (std::string value) {
PyObject *pyvalue = PyString_FromStringAndSize (value.data(), value.size());
PyObject_SetAttrString (m_namespace, (char *) m_variable.c_str(), pyvalue);
if (PyErr_Occurred()) {
PyErr_Print();
return false;
}
return true;
}
virtual ~CommandLinePythonValueSetter () {
Py_DECREF (m_namespace);
m_namespace = NULL;
}
};
PyObject *
_wrap_CommandLine_AddValue(PyNs3CommandLine *self, PyObject *args, PyObject *kwargs,
PyObject **return_exception)
{
const char *name, *help, *variable = NULL;
PyObject *py_namespace = NULL;
const char *keywords[] = {"name", "help", "variable", "namespace", NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "ss|sO", (char **) keywords, &name, &help, &variable, &py_namespace)) {
PyObject *exc_type, *traceback;
PyErr_Fetch(&exc_type, return_exception, &traceback);
Py_XDECREF(exc_type);
Py_XDECREF(traceback);
return NULL;
}
if (variable == NULL) {
variable = name;
}
if (py_namespace == NULL) {
py_namespace = (PyObject *) self;
}
ns3::Ptr<CommandLinePythonValueSetter> setter = ns3::Create<CommandLinePythonValueSetter> (py_namespace, variable);
self->obj->AddValue (name, help, ns3::MakeCallback (&CommandLinePythonValueSetter::Parse, setter));
Py_INCREF(Py_None);
return Py_None;
}
PyObject *
_wrap_Simulator_Run(PyNs3Simulator *PYBINDGEN_UNUSED(dummy), PyObject *args, PyObject *kwargs,
PyObject **return_exception)
{
const char *keywords[] = {"signal_check_frequency", NULL};
int signal_check_frequency;
ns3::Ptr<ns3::DefaultSimulatorImpl> defaultSim =
ns3::DynamicCast<ns3::DefaultSimulatorImpl> (ns3::Simulator::GetImplementation ());
if (defaultSim) {
signal_check_frequency = 100;
} else {
signal_check_frequency = -1;
}
if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|i", (char **) keywords, &signal_check_frequency)) {
PyObject *exc_type, *traceback;
PyErr_Fetch(&exc_type, return_exception, &traceback);
Py_XDECREF(exc_type);
Py_XDECREF(traceback);
return NULL;
}
PyThreadState *py_thread_state = NULL;
if (signal_check_frequency == -1)
{
if (PyEval_ThreadsInitialized ())
py_thread_state = PyEval_SaveThread();
ns3::Simulator::Run();
if (py_thread_state)
PyEval_RestoreThread(py_thread_state);
} else {
while (!ns3::Simulator::IsFinished())
{
if (PyEval_ThreadsInitialized())
py_thread_state = PyEval_SaveThread();
for (int n = signal_check_frequency; n > 0 && !ns3::Simulator::IsFinished(); --n)
{
ns3::Simulator::RunOneEvent();
}
if (py_thread_state)
PyEval_RestoreThread(py_thread_state);
PyErr_CheckSignals();
if (PyErr_Occurred())
return NULL;
}
}
Py_INCREF(Py_None);
return Py_None;
}
+113
View File
@@ -0,0 +1,113 @@
import warnings
import sys
import os
import pybindgen.settings
from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
from pybindgen.module import MultiSectionFactory
import ns3modulegen_core_customizations
pybindgen.settings.wrapper_registry = pybindgen.settings.StdMapWrapperRegistry
class ErrorHandler(pybindgen.settings.ErrorHandler):
def handle_error(self, wrapper, exception, traceback_):
warnings.warn("exception %r in wrapper %s" % (exception, wrapper))
return True
pybindgen.settings.error_handler = ErrorHandler()
#print >> sys.stderr, ">>>>>>>>>>>>>>>>>>>>>>>>>>>> ", bool(eval(os.environ["GCC_RTTI_ABI_COMPLETE"]))
pybindgen.settings.gcc_rtti_abi_complete = bool(eval(os.environ["GCC_RTTI_ABI_COMPLETE"]))
class MyMultiSectionFactory(MultiSectionFactory):
def __init__(self, main_file_name):
super(MyMultiSectionFactory, self).__init__()
self.main_file_name = main_file_name
self.main_sink = FileCodeSink(open(main_file_name, "wt"))
self.header_name = "ns3module.h"
header_file_name = os.path.join(os.path.dirname(self.main_file_name), self.header_name)
#print >> sys.stderr, ">>>>>>>>>>>>>>>>>", header_file_name, main_file_name
self.header_sink = FileCodeSink(open(header_file_name, "wt"))
def get_section_code_sink(self, section_name):
return self.main_sink
def get_main_code_sink(self):
return self.main_sink
def get_common_header_code_sink(self):
return self.header_sink
def get_common_header_include(self):
return '"%s"' % self.header_name
def close(self):
self.header_sink.file.close()
self.main_sink.file.close()
def main(argv):
module_abs_src_path, target, extension_name, output_cc_file_name = argv[1:]
module_name = os.path.basename(module_abs_src_path)
out = MyMultiSectionFactory(output_cc_file_name)
sys.path.insert(0, os.path.join(module_abs_src_path, "bindings"))
try:
module_apidefs = __import__("modulegen__%s" % target)
del sys.modules["modulegen__%s" % target]
try:
module_customization = __import__("modulegen_customizations")
del sys.modules["modulegen_customizations"]
except ImportError:
module_customization = object()
try:
from callbacks_list import callback_classes
except ImportError, ex:
print >> sys.stderr, "***************", repr(ex)
callback_classes = []
else:
print >> sys.stderr, ">>>>>>>>>>>>>>>>", repr(callback_classes)
finally:
sys.path.pop(0)
root_module = module_apidefs.module_init()
root_module.set_name(extension_name)
root_module.add_include('"ns3/%s-module.h"' % module_name)
ns3modulegen_core_customizations.add_std_ios_openmode(root_module)
# -----------
module_apidefs.register_types(root_module)
if hasattr(module_customization, 'post_register_types'):
module_customization.post_register_types(root_module)
# register Callback<...> type handlers
ns3modulegen_core_customizations.generate_callback_classes(root_module.after_forward_declarations,
callback_classes)
# -----------
module_apidefs.register_methods(root_module)
if hasattr(module_customization, 'post_register_methods'):
module_customization.post_register_methods(root_module)
ns3modulegen_core_customizations.Object_customizations(root_module)
ns3modulegen_core_customizations.Attribute_customizations(root_module)
# -----------
module_apidefs.register_functions(root_module)
if hasattr(module_customization, 'post_register_functions'):
module_customization.post_register_functions(root_module)
# -----------
root_module.generate(out)
if __name__ == '__main__':
import sys
main(sys.argv)
+177
View File
@@ -0,0 +1,177 @@
LOCAL_MODULES = [
#'my_extra_api_definitions',
]
import sys
import os
sys.path.insert(0, sys.argv[2])
from pybindgen import FileCodeSink, write_preamble
from pybindgen.module import MultiSectionFactory
import pybindgen.settings
pybindgen.settings.deprecated_virtuals = False
from ns3modulegen_generated import module_init, register_types, register_methods, register_functions
import ns3modulegen_core_customizations
import callbacks_list
import traceback
this_script_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
class ErrorHandler(pybindgen.settings.ErrorHandler):
def handle_error(self, wrapper, exception, traceback_):
print >> sys.stderr
print >> sys.stderr, "---- location:"
traceback.print_stack()
print >> sys.stderr, "---- error:"
traceback.print_tb(traceback_)
try:
stack = wrapper.stack_where_defined
except AttributeError:
print >> sys.stderr, "??:??: %s / %r" % (wrapper, exception)
else:
stack = list(stack)
stack.reverse()
for (filename, line_number, function_name, text) in stack:
file_dir = os.path.dirname(os.path.abspath(filename))
if file_dir.startswith(this_script_dir):
print >> sys.stderr, "%s:%i: %r" % (os.path.join("..", "bindings", "python", os.path.basename(filename)),
line_number, exception)
break
return True
pybindgen.settings.error_handler = ErrorHandler()
pybindgen.settings.wrapper_registry = pybindgen.settings.StdMapWrapperRegistry
class MyMultiSectionFactory(MultiSectionFactory):
def __init__(self, main_file_name, modules):
super(MyMultiSectionFactory, self).__init__()
self.main_file_name = main_file_name
self.main_sink = FileCodeSink(open(main_file_name, "wt"))
self.header_name = "ns3module.h"
header_file_name = os.path.join(os.path.dirname(self.main_file_name), 'pch', self.header_name)
self.header_sink = FileCodeSink(open(header_file_name, "wt"))
self.section_sinks = {'__main__': self.main_sink}
for module in modules:
section_name = 'ns3_module_%s' % module.replace('-', '_')
file_name = os.path.join(os.path.dirname(self.main_file_name), "%s.cc" % section_name)
sink = FileCodeSink(open(file_name, "wt"))
self.section_sinks[section_name] = sink
def get_section_code_sink(self, section_name):
return self.section_sinks[section_name]
def get_main_code_sink(self):
return self.main_sink
def get_common_header_code_sink(self):
return self.header_sink
def get_common_header_include(self):
return '"%s"' % self.header_name
def close(self):
self.header_sink.file.close()
self.main_sink.file.close()
for sink in self.section_sinks.itervalues():
sink.file.close()
def main():
out = MyMultiSectionFactory(sys.argv[1], sys.argv[3:])
root_module = module_init()
root_module.add_include('"everything.h"')
register_types(root_module)
ns3modulegen_core_customizations.Simulator_customizations(root_module)
ns3modulegen_core_customizations.CommandLine_customizations(root_module)
ns3modulegen_core_customizations.TypeId_customizations(root_module)
ns3modulegen_core_customizations.add_std_ofstream(root_module)
ns3modulegen_core_customizations.add_ipv4_address_tp_hash(root_module)
for local_module in LOCAL_MODULES:
mod = __import__(local_module)
mod.register_types(root_module)
ns3modulegen_core_customizations.generate_callback_classes(root_module.after_forward_declarations,
callbacks_list.callback_classes)
register_methods(root_module)
for local_module in LOCAL_MODULES:
mod = __import__(local_module)
mod.register_methods(root_module)
ns3modulegen_core_customizations.Object_customizations(root_module)
ns3modulegen_core_customizations.Attribute_customizations(root_module)
register_functions(root_module)
for local_module in LOCAL_MODULES:
mod = __import__(local_module)
mod.register_functions(root_module)
enabled_features = os.environ['NS3_ENABLED_FEATURES'].split(',')
# if GtkConfigStore support is disabled, disable the class wrapper
if 'GtkConfigStore' not in enabled_features:
try:
root_module.classes.remove(root_module['ns3::GtkConfigStore'])
except KeyError:
pass
# if no sqlite, the class SqliteDataOutput is disabled
if 'SqliteDataOutput' not in enabled_features:
try:
root_module.classes.remove(root_module['ns3::SqliteDataOutput'])
except KeyError:
pass
if 'Threading' not in enabled_features:
for clsname in ['SystemThread', 'SystemMutex', 'SystemCondition', 'CriticalSection',
'SimpleRefCount< ns3::SystemThread, ns3::empty, ns3::DefaultDeleter<ns3::SystemThread> >']:
root_module.classes.remove(root_module['ns3::%s' % clsname])
if 'EmuNetDevice' not in enabled_features:
for clsname in ['EmuNetDevice', 'EmuHelper']:
root_module.classes.remove(root_module['ns3::%s' % clsname])
root_module.enums.remove(root_module['ns3::EmuNetDevice::EncapsulationMode'])
if 'RealTime' not in enabled_features:
for clsname in ['WallClockSynchronizer', 'RealtimeSimulatorImpl']:
root_module.classes.remove(root_module['ns3::%s' % clsname])
root_module.enums.remove(root_module['ns3::RealtimeSimulatorImpl::SynchronizationMode'])
if 'TapBridge' not in enabled_features:
for clsname in ['TapBridge', 'TapBridgeHelper', 'TapBridgeFdReader']:
root_module.classes.remove(root_module['ns3::%s' % clsname])
root_module.enums.remove(root_module['ns3::TapBridge::Mode'])
root_module.generate(out, '_ns3')
out.close()
if __name__ == '__main__':
if 0:
try:
import cProfile as profile
except ImportError:
main()
else:
print >> sys.stderr, "** running under profiler"
profile.run('main()', 'ns3modulegen.pstat')
else:
main()
@@ -0,0 +1,446 @@
import re
from pybindgen.typehandlers import base as typehandlers
from pybindgen import ReturnValue, Parameter
from pybindgen.cppmethod import CustomCppMethodWrapper, CustomCppConstructorWrapper
from pybindgen.typehandlers.codesink import MemoryCodeSink
from pybindgen.typehandlers import ctypeparser
from pybindgen import cppclass
import warnings
from pybindgen.typehandlers.base import CodeGenerationError
import sys
class SmartPointerTransformation(typehandlers.TypeTransformation):
"""
This class provides a "type transformation" that tends to support
NS-3 smart pointers. Parameters such as "Ptr<Foo> foo" are
transformed into something like Parameter.new("Foo*", "foo",
transfer_ownership=False). Return values such as Ptr<Foo> are
transformed into ReturnValue.new("Foo*",
caller_owns_return=False). Since the underlying objects have
reference counting, PyBindGen does the right thing.
"""
def __init__(self):
super(SmartPointerTransformation, self).__init__()
self.rx = re.compile(r'(ns3::|::ns3::|)Ptr<([^>]+)>\s*$')
def _get_untransformed_type_traits(self, name):
m = self.rx.match(name)
is_const = False
if m is None:
return None, False
else:
name1 = m.group(2).strip()
if name1.startswith('const '):
name1 = name1[len('const '):]
is_const = True
if name1.endswith(' const'):
name1 = name1[:-len(' const')]
is_const = True
new_name = name1+' *'
if new_name.startswith('::'):
new_name = new_name[2:]
return new_name, is_const
def get_untransformed_name(self, name):
new_name, dummy_is_const = self._get_untransformed_type_traits(name)
return new_name
def create_type_handler(self, type_handler, *args, **kwargs):
if issubclass(type_handler, Parameter):
kwargs['transfer_ownership'] = False
elif issubclass(type_handler, ReturnValue):
kwargs['caller_owns_return'] = False
else:
raise AssertionError
## fix the ctype, add ns3:: namespace
orig_ctype, is_const = self._get_untransformed_type_traits(args[0])
if is_const:
correct_ctype = 'ns3::Ptr< %s const >' % orig_ctype[:-2]
else:
correct_ctype = 'ns3::Ptr< %s >' % orig_ctype[:-2]
args = tuple([correct_ctype] + list(args[1:]))
handler = type_handler(*args, **kwargs)
handler.set_tranformation(self, orig_ctype)
return handler
def untransform(self, type_handler, declarations, code_block, expression):
return 'const_cast<%s> (ns3::PeekPointer (%s))' % (type_handler.untransformed_ctype, expression)
def transform(self, type_handler, declarations, code_block, expression):
assert type_handler.untransformed_ctype[-1] == '*'
return 'ns3::Ptr< %s > (%s)' % (type_handler.untransformed_ctype[:-1], expression)
## register the type transformation
transf = SmartPointerTransformation()
typehandlers.return_type_matcher.register_transformation(transf)
typehandlers.param_type_matcher.register_transformation(transf)
del transf
class ArgvParam(Parameter):
"""
Converts a python list-of-strings argument to a pair of 'int argc,
char *argv[]' arguments to pass into C.
One Python argument becomes two C function arguments -> it's a miracle!
Note: this parameter type handler is not registered by any name;
must be used explicitly.
"""
DIRECTIONS = [Parameter.DIRECTION_IN]
CTYPES = []
def convert_c_to_python(self, wrapper):
raise NotImplementedError
def convert_python_to_c(self, wrapper):
py_name = wrapper.declarations.declare_variable('PyObject*', 'py_' + self.name)
argc_var = wrapper.declarations.declare_variable('int', 'argc')
name = wrapper.declarations.declare_variable('char**', self.name)
idx = wrapper.declarations.declare_variable('Py_ssize_t', 'idx')
wrapper.parse_params.add_parameter('O!', ['&PyList_Type', '&'+py_name], self.name)
#wrapper.before_call.write_error_check('!PyList_Check(%s)' % py_name) # XXX
wrapper.before_call.write_code("%s = (char **) malloc(sizeof(char*)*PyList_Size(%s));"
% (name, py_name))
wrapper.before_call.add_cleanup_code('free(%s);' % name)
wrapper.before_call.write_code('''
for (%(idx)s = 0; %(idx)s < PyList_Size(%(py_name)s); %(idx)s++)
{
''' % vars())
wrapper.before_call.sink.indent()
wrapper.before_call.write_code('''
PyObject *item = PyList_GET_ITEM(%(py_name)s, %(idx)s);
''' % vars())
#wrapper.before_call.write_error_check('item == NULL')
wrapper.before_call.write_error_check(
'!PyString_Check(item)',
failure_cleanup=('PyErr_SetString(PyExc_TypeError, '
'"argument %s must be a list of strings");') % self.name)
wrapper.before_call.write_code(
'%s[%s] = PyString_AsString(item);' % (name, idx))
wrapper.before_call.sink.unindent()
wrapper.before_call.write_code('}')
wrapper.before_call.write_code('%s = PyList_Size(%s);' % (argc_var, py_name))
wrapper.call_params.append(argc_var)
wrapper.call_params.append(name)
class CallbackImplProxyMethod(typehandlers.ReverseWrapperBase):
"""
Class that generates a proxy virtual method that calls a similarly named python method.
"""
def __init__(self, return_value, parameters):
super(CallbackImplProxyMethod, self).__init__(return_value, parameters)
def generate_python_call(self):
"""code to call the python method"""
build_params = self.build_params.get_parameters(force_tuple_creation=True)
if build_params[0][0] == '"':
build_params[0] = '(char *) ' + build_params[0]
args = self.before_call.declare_variable('PyObject*', 'args')
self.before_call.write_code('%s = Py_BuildValue(%s);'
% (args, ', '.join(build_params)))
self.before_call.add_cleanup_code('Py_DECREF(%s);' % args)
self.before_call.write_code('py_retval = PyObject_CallObject(m_callback, %s);' % args)
self.before_call.write_error_check('py_retval == NULL')
self.before_call.add_cleanup_code('Py_DECREF(py_retval);')
def generate_callback_classes(out, callbacks):
for callback_impl_num, template_parameters in enumerate(callbacks):
sink = MemoryCodeSink()
cls_name = "ns3::Callback< %s >" % ', '.join(template_parameters)
#print >> sys.stderr, "***** trying to register callback: %r" % cls_name
class_name = "PythonCallbackImpl%i" % callback_impl_num
sink.writeln('''
class %s : public ns3::CallbackImpl<%s>
{
public:
PyObject *m_callback;
%s(PyObject *callback)
{
Py_INCREF(callback);
m_callback = callback;
}
virtual ~%s()
{
Py_DECREF(m_callback);
m_callback = NULL;
}
virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
{
const %s *other = dynamic_cast<const %s*> (ns3::PeekPointer (other_base));
if (other != NULL)
return (other->m_callback == m_callback);
else
return false;
}
''' % (class_name, ', '.join(template_parameters), class_name, class_name, class_name, class_name))
sink.indent()
callback_return = template_parameters[0]
return_ctype = ctypeparser.parse_type(callback_return)
if ('const' in return_ctype.remove_modifiers()):
kwargs = {'is_const': True}
else:
kwargs = {}
try:
return_type = ReturnValue.new(str(return_ctype), **kwargs)
except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError), ex:
warnings.warn("***** Unable to register callback; Return value '%s' error (used in %s): %r"
% (callback_return, cls_name, ex),
Warning)
continue
arguments = []
ok = True
callback_parameters = [arg for arg in template_parameters[1:] if arg != 'ns3::empty']
for arg_num, arg_type in enumerate(callback_parameters):
arg_name = 'arg%i' % (arg_num+1)
param_ctype = ctypeparser.parse_type(arg_type)
if ('const' in param_ctype.remove_modifiers()):
kwargs = {'is_const': True}
else:
kwargs = {}
try:
arguments.append(Parameter.new(str(param_ctype), arg_name, **kwargs))
except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError), ex:
warnings.warn("***** Unable to register callback; parameter '%s %s' error (used in %s): %r"
% (arg_type, arg_name, cls_name, ex),
Warning)
ok = False
if not ok:
continue
wrapper = CallbackImplProxyMethod(return_type, arguments)
wrapper.generate(sink, 'operator()', decl_modifiers=[])
sink.unindent()
sink.writeln('};\n')
sink.flush_to(out)
class PythonCallbackParameter(Parameter):
"Class handlers"
CTYPES = [cls_name]
print >> sys.stderr, "***** registering callback handler: %r" % ctypeparser.normalize_type_string(cls_name)
DIRECTIONS = [Parameter.DIRECTION_IN]
PYTHON_CALLBACK_IMPL_NAME = class_name
TEMPLATE_ARGS = template_parameters
def convert_python_to_c(self, wrapper):
"parses python args to get C++ value"
assert isinstance(wrapper, typehandlers.ForwardWrapperBase)
if self.default_value is None:
py_callback = wrapper.declarations.declare_variable('PyObject*', self.name)
wrapper.parse_params.add_parameter('O', ['&'+py_callback], self.name)
wrapper.before_call.write_error_check(
'!PyCallable_Check(%s)' % py_callback,
'PyErr_SetString(PyExc_TypeError, "parameter \'%s\' must be callbale");' % self.name)
callback_impl = wrapper.declarations.declare_variable(
'ns3::Ptr<%s>' % self.PYTHON_CALLBACK_IMPL_NAME,
'%s_cb_impl' % self.name)
wrapper.before_call.write_code("%s = ns3::Create<%s> (%s);"
% (callback_impl, self.PYTHON_CALLBACK_IMPL_NAME, py_callback))
wrapper.call_params.append(
'ns3::Callback<%s> (%s)' % (', '.join(self.TEMPLATE_ARGS), callback_impl))
else:
py_callback = wrapper.declarations.declare_variable('PyObject*', self.name, 'NULL')
wrapper.parse_params.add_parameter('O', ['&'+py_callback], self.name, optional=True)
value = wrapper.declarations.declare_variable(
'ns3::Callback<%s>' % ', '.join(self.TEMPLATE_ARGS),
self.name+'_value',
self.default_value)
wrapper.before_call.write_code("if (%s) {" % (py_callback,))
wrapper.before_call.indent()
wrapper.before_call.write_error_check(
'!PyCallable_Check(%s)' % py_callback,
'PyErr_SetString(PyExc_TypeError, "parameter \'%s\' must be callbale");' % self.name)
wrapper.before_call.write_code("%s = ns3::Callback<%s> (ns3::Create<%s> (%s));"
% (value, ', '.join(self.TEMPLATE_ARGS),
self.PYTHON_CALLBACK_IMPL_NAME, py_callback))
wrapper.before_call.unindent()
wrapper.before_call.write_code("}") # closes: if (py_callback) {
wrapper.call_params.append(value)
def convert_c_to_python(self, wrapper):
raise typehandlers.NotSupportedError("Reverse wrappers for ns3::Callback<...> types "
"(python using callbacks defined in C++) not implemented.")
# def write_preamble(out):
# pybindgen.write_preamble(out)
# out.writeln("#include \"ns3/everything.h\"")
def Simulator_customizations(module):
Simulator = module['ns3::Simulator']
## Simulator::Schedule(delay, callback, ...user..args...)
Simulator.add_custom_method_wrapper("Schedule", "_wrap_Simulator_Schedule",
flags=["METH_VARARGS", "METH_KEYWORDS", "METH_STATIC"])
## Simulator::ScheduleNow(callback, ...user..args...)
Simulator.add_custom_method_wrapper("ScheduleNow", "_wrap_Simulator_ScheduleNow",
flags=["METH_VARARGS", "METH_KEYWORDS", "METH_STATIC"])
## Simulator::ScheduleDestroy(callback, ...user..args...)
Simulator.add_custom_method_wrapper("ScheduleDestroy", "_wrap_Simulator_ScheduleDestroy",
flags=["METH_VARARGS", "METH_KEYWORDS", "METH_STATIC"])
Simulator.add_custom_method_wrapper("Run", "_wrap_Simulator_Run",
flags=["METH_VARARGS", "METH_KEYWORDS", "METH_STATIC"])
def CommandLine_customizations(module):
CommandLine = module['ns3::CommandLine']
CommandLine.add_method('Parse', None, [ArgvParam(None, 'argv')],
is_static=False)
CommandLine.add_custom_method_wrapper("AddValue", "_wrap_CommandLine_AddValue",
flags=["METH_VARARGS", "METH_KEYWORDS"])
def Object_customizations(module):
## ---------------------------------------------------------------------
## Here we generate custom constructor code for all classes that
## derive from ns3::Object. The custom constructors are needed in
## order to support kwargs only and to translate kwargs into ns3
## attributes, etc.
## ---------------------------------------------------------------------
try:
Object = module['ns3::Object']
except KeyError:
return
## add a GetTypeId method to all generatd helper classes
def helper_class_hook(helper_class):
decl = """
static ns3::TypeId GetTypeId (void)
{
static ns3::TypeId tid = ns3::TypeId ("%s")
.SetParent< %s > ()
;
return tid;
}""" % (helper_class.name, helper_class.class_.full_name)
helper_class.add_custom_method(decl)
helper_class.add_post_generation_code(
"NS_OBJECT_ENSURE_REGISTERED (%s);" % helper_class.name)
Object.add_helper_class_hook(helper_class_hook)
def ns3_object_instance_creation_function(cpp_class, code_block, lvalue,
parameters, construct_type_name):
assert lvalue
assert not lvalue.startswith('None')
if cpp_class.cannot_be_constructed:
raise CodeGenerationError("%s cannot be constructed (%s)"
% cpp_class.full_name)
if cpp_class.incomplete_type:
raise CodeGenerationError("%s cannot be constructed (incomplete type)"
% cpp_class.full_name)
code_block.write_code("%s = new %s(%s);" % (lvalue, construct_type_name, parameters))
code_block.write_code("%s->Ref ();" % (lvalue))
def ns3_object_post_instance_creation_function(cpp_class, code_block, lvalue,
parameters, construct_type_name):
code_block.write_code("ns3::CompleteConstruct(%s);" % (lvalue, ))
Object.set_instance_creation_function(ns3_object_instance_creation_function)
Object.set_post_instance_creation_function(ns3_object_post_instance_creation_function)
def Attribute_customizations(module):
# Fix up for the "const AttributeValue &v = EmptyAttribute()"
# case, as used extensively by helper classes.
# Here's why we need to do this: pybindgen.gccxmlscanner, when
# scanning parameter default values, is only provided with the
# value as a simple C expression string. (py)gccxml does not
# report the type of the default value.
# As a workaround, here we iterate over all parameters of all
# methods of all classes and tell pybindgen what is the type of
# the default value for attributes.
for cls in module.classes:
for meth in cls.get_all_methods():
for param in meth.parameters:
if isinstance(param, cppclass.CppClassRefParameter):
if param.cpp_class.name == 'AttributeValue' \
and param.default_value is not None \
and param.default_value_type is None:
param.default_value_type = 'ns3::EmptyAttributeValue'
def TypeId_customizations(module):
TypeId = module['ns3::TypeId']
TypeId.add_custom_method_wrapper("LookupByNameFailSafe", "_wrap_TypeId_LookupByNameFailSafe",
flags=["METH_VARARGS", "METH_KEYWORDS", "METH_STATIC"])
def add_std_ofstream(module):
module.add_include('<fstream>')
ostream = module.add_class('ostream', foreign_cpp_namespace='::std')
ostream.set_cannot_be_constructed("abstract base class")
ofstream = module.add_class('ofstream', foreign_cpp_namespace='::std', parent=ostream)
ofstream.add_enum('openmode', [
('app', 'std::ios_base::app'),
('ate', 'std::ios_base::ate'),
('binary', 'std::ios_base::binary'),
('in', 'std::ios_base::in'),
('out', 'std::ios_base::out'),
('trunc', 'std::ios_base::trunc'),
])
ofstream.add_constructor([Parameter.new("const char *", 'filename'),
Parameter.new("::std::ofstream::openmode", 'mode', default_value="std::ios_base::out")])
ofstream.add_method('close', None, [])
add_std_ios_openmode(module)
def add_std_ios_openmode(module):
import pybindgen.typehandlers.base
for alias in "std::_Ios_Openmode", "std::ios::openmode":
pybindgen.typehandlers.base.param_type_matcher.add_type_alias(alias, "int")
for flag in 'in', 'out', 'ate', 'app', 'trunc', 'binary':
module.after_init.write_code('PyModule_AddIntConstant(m, (char *) "STD_IOS_%s", std::ios::%s);'
% (flag.upper(), flag))
def add_ipv4_address_tp_hash(module):
module.body.writeln('''
long
_ns3_Ipv4Address_tp_hash (PyObject *obj)
{
PyNs3Ipv4Address *addr = reinterpret_cast<PyNs3Ipv4Address *> (obj);
return static_cast<long> (ns3::Ipv4AddressHash () (*addr->obj));
}
''')
module.header.writeln('long _ns3_Ipv4Address_tp_hash (PyObject *obj);')
module['Ipv4Address'].pytype.slots['tp_hash'] = "_ns3_Ipv4Address_tp_hash"
+281
View File
@@ -0,0 +1,281 @@
#! /usr/bin/env python
import sys
import os.path
import pybindgen.settings
from pybindgen.gccxmlparser import ModuleParser, PygenClassifier, PygenSection, WrapperWarning, find_declaration_from_name
from pybindgen.typehandlers.codesink import FileCodeSink
from pygccxml.declarations import templates
from pygccxml.declarations.enumeration import enumeration_t
from pygccxml.declarations.class_declaration import class_t
from pygccxml.declarations.calldef import free_function_t, member_function_t, constructor_t, calldef_t
## we need the smart pointer type transformation to be active even
## during gccxml scanning.
import ns3modulegen_core_customizations
## silence gccxmlparser errors; we only want error handling in the
## generated python script, not while scanning.
class ErrorHandler(pybindgen.settings.ErrorHandler):
def handle_error(self, dummy_wrapper, dummy_exception, dummy_traceback_):
return True
pybindgen.settings.error_handler = ErrorHandler()
import warnings
warnings.filterwarnings(category=WrapperWarning, action='ignore')
import ns3modulescan
type_annotations = ns3modulescan.type_annotations
def get_ns3_relative_path(path):
l = []
head = path
while head:
new_head, tail = os.path.split(head)
if new_head == head:
raise ValueError
head = new_head
if tail == 'ns3':
return os.path.join(*l)
l.insert(0, tail)
raise AssertionError("is the path %r inside ns3?!" % path)
class PreScanHook:
def __init__(self, headers_map, module):
self.headers_map = headers_map
self.module = module
def __call__(self, module_parser,
pygccxml_definition,
global_annotations,
parameter_annotations):
try:
ns3_header = get_ns3_relative_path(pygccxml_definition.location.file_name)
except ValueError: # the header is not from ns3
return # ignore the definition, it's not ns-3 def.
definition_module = self.headers_map[ns3_header]
## Note: we don't include line numbers in the comments because
## those numbers are very likely to change frequently, which would
## cause needless changes, since the generated python files are
## kept under version control.
#global_annotations['pygen_comment'] = "%s:%i: %s" % \
# (ns3_header, pygccxml_definition.location.line, pygccxml_definition)
global_annotations['pygen_comment'] = "%s (module %r): %s" % \
(ns3_header, definition_module, pygccxml_definition)
## handle ns3::Object::GetObject (left to its own devices,
## pybindgen will generate a mangled name containing the template
## argument type name).
if isinstance(pygccxml_definition, member_function_t) \
and pygccxml_definition.parent.name == 'Object' \
and pygccxml_definition.name == 'GetObject':
template_args = templates.args(pygccxml_definition.demangled_name)
if template_args == ['ns3::Object']:
global_annotations['template_instance_names'] = 'ns3::Object=>GetObject'
## Don't wrap Simulator::Schedule* (manually wrapped)
if isinstance(pygccxml_definition, member_function_t) \
and pygccxml_definition.parent.name == 'Simulator' \
and pygccxml_definition.name.startswith('Schedule'):
global_annotations['ignore'] = None
# manually wrapped
if isinstance(pygccxml_definition, member_function_t) \
and pygccxml_definition.parent.name == 'Simulator' \
and pygccxml_definition.name == 'Run':
global_annotations['ignore'] = True
## http://www.gccxml.org/Bug/view.php?id=9915
if isinstance(pygccxml_definition, calldef_t):
for arg in pygccxml_definition.arguments:
if arg.default_value is None:
continue
elif arg.default_value == "ns3::MilliSeconds( )":
arg.default_value = "ns3::MilliSeconds(0)"
elif arg.default_value == "ns3::Seconds( )":
arg.default_value = "ns3::Seconds(0)"
## classes
if isinstance(pygccxml_definition, class_t):
print >> sys.stderr, pygccxml_definition
# no need for helper classes to allow subclassing in Python, I think...
#if pygccxml_definition.name.endswith('Helper'):
# global_annotations['allow_subclassing'] = 'false'
#
# If a class is template instantiation, even if the
# template was defined in some other module, if a template
# argument belongs to this module then the template
# instantiation will belong to this module.
#
if templates.is_instantiation(pygccxml_definition.decl_string):
cls_name, template_parameters = templates.split(pygccxml_definition.name)
template_parameters_decls = [find_declaration_from_name(module_parser.global_ns, templ_param)
for templ_param in template_parameters]
#print >> sys.stderr, "********************", cls_name, repr(template_parameters_decls)
template_parameters_modules = []
for templ in template_parameters_decls:
if not hasattr(templ, 'location'):
continue
try:
h = get_ns3_relative_path(templ.location.file_name)
except ValueError:
continue
template_parameters_modules.append(self.headers_map[h])
for templ_mod in template_parameters_modules:
if templ_mod == self.module:
definition_module = templ_mod
break
#print >> sys.stderr, "********************", cls_name, repr(template_parameters_modules)
if definition_module != self.module:
global_annotations['import_from_module'] = 'ns.%s' % (definition_module.replace('-', '_'),)
if pygccxml_definition.decl_string.startswith('::ns3::SimpleRefCount<'):
global_annotations['incref_method'] = 'Ref'
global_annotations['decref_method'] = 'Unref'
global_annotations['peekref_method'] = 'GetReferenceCount'
global_annotations['automatic_type_narrowing'] = 'true'
return
if pygccxml_definition.decl_string.startswith('::ns3::Callback<'):
# manually handled in ns3modulegen_core_customizations.py
global_annotations['ignore'] = None
return
if pygccxml_definition.decl_string.startswith('::ns3::TracedCallback<'):
global_annotations['ignore'] = None
return
if pygccxml_definition.decl_string.startswith('::ns3::Ptr<'):
# handled by pybindgen "type transformation"
global_annotations['ignore'] = None
return
# table driven class customization
try:
annotations = type_annotations[pygccxml_definition.decl_string]
except KeyError:
pass
else:
global_annotations.update(annotations)
## enums
if isinstance(pygccxml_definition, enumeration_t):
if definition_module != self.module:
global_annotations['import_from_module'] = 'ns.%s' % definition_module
## free functions
if isinstance(pygccxml_definition, free_function_t):
if definition_module != self.module:
global_annotations['ignore'] = None
return
if pygccxml_definition.name == 'PeekPointer':
global_annotations['ignore'] = None
return
## table driven methods/constructors/functions customization
if isinstance(pygccxml_definition, (free_function_t, member_function_t, constructor_t)):
try:
annotations = type_annotations[str(pygccxml_definition)]
except KeyError:
pass
else:
for key,value in annotations.items():
if key == 'params':
parameter_annotations.update (value)
del annotations['params']
global_annotations.update(annotations)
# def post_scan_hook(dummy_module_parser, dummy_pygccxml_definition, pybindgen_wrapper):
# ## classes
# if isinstance(pybindgen_wrapper, CppClass):
# if pybindgen_wrapper.name.endswith('Checker'):
# print >> sys.stderr, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", pybindgen_wrapper
# #pybindgen_wrapper.set_instance_creation_function(AttributeChecker_instance_creation_function)
def scan_callback_classes(module_parser, callback_classes_file):
callback_classes_file.write("callback_classes = [\n")
for cls in module_parser.module_namespace.classes(function=module_parser.location_filter,
recursive=False):
if not cls.name.startswith("Callback<"):
continue
assert templates.is_instantiation(cls.decl_string), "%s is not a template instantiation" % cls
dummy_cls_name, template_parameters = templates.split(cls.decl_string)
callback_classes_file.write(" %r,\n" % template_parameters)
callback_classes_file.write("]\n")
def ns3_module_scan(top_builddir, module_name, headers_map, output_file_name, cflags):
module_parser = ModuleParser('ns.%s' % module_name.replace('-', '_'), 'ns3')
module_parser.add_pre_scan_hook(PreScanHook(headers_map, module_name))
#module_parser.add_post_scan_hook(post_scan_hook)
gccxml_options = dict(
include_paths=[top_builddir],
define_symbols={
#'NS3_ASSERT_ENABLE': None,
#'NS3_LOG_ENABLE': None,
},
cflags=('--gccxml-cxxflags "%s -DPYTHON_SCAN"' % cflags)
)
try:
os.unlink(output_file_name)
except OSError:
pass
try:
os.makedirs(os.path.dirname(output_file_name))
except OSError:
pass
output_file = open(output_file_name, "wt")
output_sink = FileCodeSink(output_file)
# if there exists a scan-header.h file in src/<module>/bindings,
# scan it, otherwise scan ns3/xxxx-module.h.
scan_header = os.path.join(os.path.dirname(output_file_name), "scan-header.h")
if not os.path.exists(scan_header):
scan_header = os.path.join(top_builddir, "ns3", "%s-module.h" % module_name)
module_parser.parse_init([scan_header],
None, whitelist_paths=[top_builddir],
#includes=['"ns3/everything.h"'],
pygen_sink=output_sink,
gccxml_options=gccxml_options)
module_parser.scan_types()
callback_classes_file = open(os.path.join(os.path.dirname(output_file_name), "callbacks_list.py"), "wt")
scan_callback_classes(module_parser, callback_classes_file)
callback_classes_file.close()
module_parser.scan_methods()
module_parser.scan_functions()
module_parser.parse_finalize()
output_file.close()
os.chmod(output_file_name, 0400)
if __name__ == '__main__':
if len(sys.argv) != 6:
print "ns3modulescan-modular.py top_builddir module_path module_headers output_file_name cflags"
sys.exit(1)
ns3_module_scan(sys.argv[1], sys.argv[2], eval(sys.argv[3]), sys.argv[4], sys.argv[5])
sys.exit(0)
+333
View File
@@ -0,0 +1,333 @@
#! /usr/bin/env python
import sys
import os.path
import pybindgen.settings
from pybindgen.gccxmlparser import ModuleParser, PygenClassifier, PygenSection, WrapperWarning
from pybindgen.typehandlers.codesink import FileCodeSink
from pygccxml.declarations import templates
from pygccxml.declarations.class_declaration import class_t
from pygccxml.declarations.calldef import free_function_t, member_function_t, constructor_t, calldef_t
## we need the smart pointer type transformation to be active even
## during gccxml scanning.
import ns3modulegen_core_customizations
## silence gccxmlparser errors; we only want error handling in the
## generated python script, not while scanning.
class ErrorHandler(pybindgen.settings.ErrorHandler):
def handle_error(self, dummy_wrapper, dummy_exception, dummy_traceback_):
return True
pybindgen.settings.error_handler = ErrorHandler()
import warnings
warnings.filterwarnings(category=WrapperWarning, action='ignore')
type_annotations = {
'::ns3::AttributeChecker': {
'automatic_type_narrowing': 'true',
'allow_subclassing': 'false',
},
'::ns3::AttributeValue': {
'automatic_type_narrowing': 'true',
'allow_subclassing': 'false',
},
'::ns3::CommandLine': {
'allow_subclassing': 'true', # needed so that AddValue is able to set attributes on the object
},
'::ns3::NscTcpL4Protocol': {
'ignore': 'true', # this class is implementation detail
},
'ns3::RandomVariable::RandomVariable(ns3::RandomVariableBase const & variable) [constructor]': {
'ignore': None,
},
'ns3::RandomVariableBase * ns3::RandomVariable::Peek() const [member function]': {
'ignore': None,
},
'void ns3::RandomVariable::GetSeed(uint32_t * seed) const [member function]': {
'params': {'seed':{'direction':'out',
'array_length':'6'}}
},
'bool ns3::TypeId::LookupAttributeByName(std::string name, ns3::TypeId::AttributeInfo * info) const [member function]': {
'params': {'info':{'transfer_ownership': 'false'}}
},
'static bool ns3::TypeId::LookupByNameFailSafe(std::string name, ns3::TypeId * tid) [member function]': {
'ignore': None, # manually wrapped in
},
'bool ns3::TraceSourceAccessor::ConnectWithoutContext(ns3::ObjectBase * obj, ns3::CallbackBase const & cb) const [member function]': {
'params': {'obj': {'transfer_ownership':'false'}}
},
'bool ns3::TraceSourceAccessor::Connect(ns3::ObjectBase * obj, std::string context, ns3::CallbackBase const & cb) const [member function]': {
'params': {'obj': {'transfer_ownership':'false'}}
},
'bool ns3::TraceSourceAccessor::DisconnectWithoutContext(ns3::ObjectBase * obj, ns3::CallbackBase const & cb) const [member function]': {
'params': {'obj': {'transfer_ownership':'false'}}
},
'bool ns3::TraceSourceAccessor::Disconnect(ns3::ObjectBase * obj, std::string context, ns3::CallbackBase const & cb) const [member function]': {
'params': {'obj': {'transfer_ownership':'false'}}
},
'bool ns3::AttributeAccessor::Set(ns3::ObjectBase * object, ns3::AttributeValue const & value) const [member function]': {
'params': {'object': {'transfer_ownership':'false'}}
},
'ns3::EmpiricalVariable::EmpiricalVariable(ns3::RandomVariableBase const & variable) [constructor]': {
'ignore': None
},
'static ns3::AttributeList * ns3::AttributeList::GetGlobal() [member function]': {
'caller_owns_return': 'false'
},
'void ns3::CommandLine::Parse(int argc, char * * argv) const [member function]': {
'ignore': None # manually wrapped
},
'extern void ns3::PythonCompleteConstruct(ns3::Ptr<ns3::Object> object, ns3::TypeId typeId, ns3::AttributeList const & attributes) [free function]': {
'ignore': None # used transparently by, should not be wrapped
},
'ns3::Ptr<ns3::Ipv4RoutingProtocol> ns3::Ipv4ListRouting::GetRoutingProtocol(uint32_t index, int16_t & priority) const [member function]': {
'params': {'priority':{'direction':'out'}}
},
'ns3::Ipv4RoutingTableEntry * ns3::GlobalRouter::GetInjectedRoute(uint32_t i) [member function]': {
'params': {'return': { 'caller_owns_return': 'false',}},
},
'ns3::Ipv4RoutingTableEntry * ns3::Ipv4GlobalRouting::GetRoute(uint32_t i) const [member function]': {
'params': {'return': { 'caller_owns_return': 'false',}},
},
'::ns3::TestCase': {
'ignore': 'true', # we don't need to write test cases in Python
},
'::ns3::TestRunner': {
'ignore': 'true', # we don't need to write test cases in Python
},
'::ns3::TestSuite': {
'ignore': 'true', # we don't need to write test cases in Python
},
}
def get_ns3_relative_path(path):
l = []
head = path
while head:
head, tail = os.path.split(head)
if tail == 'ns3':
return os.path.join(*l)
l.insert(0, tail)
raise AssertionError("is the path %r inside ns3?!" % path)
def pre_scan_hook(dummy_module_parser,
pygccxml_definition,
global_annotations,
parameter_annotations):
ns3_header = get_ns3_relative_path(pygccxml_definition.location.file_name)
## Note: we don't include line numbers in the comments because
## those numbers are very likely to change frequently, which would
## cause needless changes, since the generated python files are
## kept under version control.
#global_annotations['pygen_comment'] = "%s:%i: %s" % \
# (ns3_header, pygccxml_definition.location.line, pygccxml_definition)
global_annotations['pygen_comment'] = "%s: %s" % \
(ns3_header, pygccxml_definition)
## handle ns3::Object::GetObject (left to its own devices,
## pybindgen will generate a mangled name containing the template
## argument type name).
if isinstance(pygccxml_definition, member_function_t) \
and pygccxml_definition.parent.name == 'Object' \
and pygccxml_definition.name == 'GetObject':
template_args = templates.args(pygccxml_definition.demangled_name)
if template_args == ['ns3::Object']:
global_annotations['template_instance_names'] = 'ns3::Object=>GetObject'
## Don't wrap Simulator::Schedule* (manually wrapped)
if isinstance(pygccxml_definition, member_function_t) \
and pygccxml_definition.parent.name == 'Simulator' \
and pygccxml_definition.name.startswith('Schedule'):
global_annotations['ignore'] = None
# manually wrapped
if isinstance(pygccxml_definition, member_function_t) \
and pygccxml_definition.parent.name == 'Simulator' \
and pygccxml_definition.name == 'Run':
global_annotations['ignore'] = True
## http://www.gccxml.org/Bug/view.php?id=9915
if isinstance(pygccxml_definition, calldef_t):
for arg in pygccxml_definition.arguments:
if arg.default_value is None:
continue
if "ns3::MilliSeconds( )" == arg.default_value:
arg.default_value = "ns3::MilliSeconds(0)"
if "ns3::Seconds( )" == arg.default_value:
arg.default_value = "ns3::Seconds(0)"
## classes
if isinstance(pygccxml_definition, class_t):
# no need for helper classes to allow subclassing in Python, I think...
#if pygccxml_definition.name.endswith('Helper'):
# global_annotations['allow_subclassing'] = 'false'
if pygccxml_definition.decl_string.startswith('::ns3::SimpleRefCount<'):
global_annotations['incref_method'] = 'Ref'
global_annotations['decref_method'] = 'Unref'
global_annotations['peekref_method'] = 'GetReferenceCount'
global_annotations['automatic_type_narrowing'] = 'true'
return
if pygccxml_definition.decl_string.startswith('::ns3::Callback<'):
# manually handled in ns3modulegen_core_customizations.py
global_annotations['ignore'] = None
return
if pygccxml_definition.decl_string.startswith('::ns3::TracedCallback<'):
global_annotations['ignore'] = None
return
if pygccxml_definition.decl_string.startswith('::ns3::Ptr<'):
# handled by pybindgen "type transformation"
global_annotations['ignore'] = None
return
# table driven class customization
try:
annotations = type_annotations[pygccxml_definition.decl_string]
except KeyError:
pass
else:
global_annotations.update(annotations)
## free functions
if isinstance(pygccxml_definition, free_function_t):
if pygccxml_definition.name == 'PeekPointer':
global_annotations['ignore'] = None
return
## table driven methods/constructors/functions customization
if isinstance(pygccxml_definition, (free_function_t, member_function_t, constructor_t)):
try:
annotations = type_annotations[str(pygccxml_definition)]
except KeyError:
pass
else:
for key,value in annotations.items():
if key == 'params':
parameter_annotations.update (value)
del annotations['params']
global_annotations.update(annotations)
# def post_scan_hook(dummy_module_parser, dummy_pygccxml_definition, pybindgen_wrapper):
# ## classes
# if isinstance(pybindgen_wrapper, CppClass):
# if pybindgen_wrapper.name.endswith('Checker'):
# print >> sys.stderr, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", pybindgen_wrapper
# #pybindgen_wrapper.set_instance_creation_function(AttributeChecker_instance_creation_function)
def scan_callback_classes(module_parser, callback_classes_file):
callback_classes_file.write("callback_classes = [\n")
for cls in module_parser.module_namespace.classes(function=module_parser.location_filter,
recursive=False):
if not cls.name.startswith("Callback<"):
continue
assert templates.is_instantiation(cls.decl_string), "%s is not a template instantiation" % cls
dummy_cls_name, template_parameters = templates.split(cls.decl_string)
callback_classes_file.write(" %r,\n" % template_parameters)
callback_classes_file.write("]\n")
class MyPygenClassifier(PygenClassifier):
def __init__(self, headers_map, section_precendences):
self.headers_map = headers_map
self.section_precendences = section_precendences
def classify(self, pygccxml_definition):
name = os.path.basename(pygccxml_definition.location.file_name)
try:
return self.headers_map[name]
except KeyError:
return '__main__'
def get_section_precedence(self, section_name):
if section_name == '__main__':
return -1
return self.section_precendences[section_name]
def ns3_module_scan(top_builddir, pygen_file_name, everything_h, cflags):
ns3_modules = eval(sys.stdin.readline())
## do a topological sort on the modules graph
from topsort import topsort
graph = []
module_names = ns3_modules.keys()
module_names.sort()
for ns3_module_name in module_names:
ns3_module_deps = list(ns3_modules[ns3_module_name][0])
ns3_module_deps.sort()
for dep in ns3_module_deps:
graph.append((dep, ns3_module_name))
sorted_ns3_modules = topsort(graph)
#print >> sys.stderr, "******* topological sort: ", sorted_ns3_modules
sections = [PygenSection('__main__', FileCodeSink(open(pygen_file_name, "wt")))]
headers_map = {} # header_name -> section_name
section_precendences = {} # section_name -> precedence
for prec, ns3_module in enumerate(sorted_ns3_modules):
section_name = "ns3_module_%s" % ns3_module.replace('-', '_')
file_name = os.path.join(os.path.dirname(pygen_file_name), "%s.py" % section_name)
sections.append(PygenSection(section_name, FileCodeSink(open(file_name, "wt")),
section_name + "__local"))
for header in ns3_modules[ns3_module][1]:
headers_map[header] = section_name
section_precendences[section_name] = prec
module_parser = ModuleParser('ns3', 'ns3')
module_parser.add_pre_scan_hook(pre_scan_hook)
#module_parser.add_post_scan_hook(post_scan_hook)
gccxml_options = dict(
include_paths=[top_builddir],
define_symbols={
#'NS3_ASSERT_ENABLE': None,
#'NS3_LOG_ENABLE': None,
},
cflags=('--gccxml-cxxflags "%s -DPYTHON_SCAN"' % cflags)
)
module_parser.parse_init([everything_h],
None, whitelist_paths=[top_builddir, os.path.dirname(everything_h)],
#includes=['"ns3/everything.h"'],
pygen_sink=sections,
pygen_classifier=MyPygenClassifier(headers_map, section_precendences),
gccxml_options=gccxml_options)
module_parser.scan_types()
callback_classes_file = open(os.path.join(os.path.dirname(pygen_file_name), "callbacks_list.py"), "wt")
scan_callback_classes(module_parser, callback_classes_file)
callback_classes_file.close()
module_parser.scan_methods()
module_parser.scan_functions()
module_parser.parse_finalize()
for section in sections:
section.code_sink.file.close()
if __name__ == '__main__':
ns3_module_scan(sys.argv[1], sys.argv[3], sys.argv[2], sys.argv[4])
+1
View File
@@ -0,0 +1 @@
+1
View File
@@ -0,0 +1 @@
placeholder
+909
View File
@@ -0,0 +1,909 @@
# Copyright (c) 2007 RADLogic
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""Provide various handy Python functions.
Running this script directly will execute the doctests.
Functions:
int2bin(i, n) -- Convert integer to binary string.
bin2int(bin_string) -- Convert binary string to integer.
reverse(input_string) -- Reverse a string.
transpose(matrix) -- Transpose a list of lists.
polygon_area(points_list) -- Calculate the area of an arbitrary polygon.
timestamp() -- Return string containing current time stamp.
pt2str(point) -- Return prettier string version of point tuple.
gcf(a, b) -- Return the greatest common factor of two numbers.
lcm(a, b) -- Return the least common multiple of two numbers.
permutations(input_list) -- Generate all permutations of a list of items.
reduce_fraction(fraction) -- Reduce fraction (num, denom) to simplest form.
quantile(l, p) -- Return p quantile of list l. E.g. p=0.25 for q1.
trim(l) -- Discard values in list more than 1.5*IQR outside IQR.
nice_units(value) -- Return value converted to human readable units.
uniquify(seq) -- Return sequence with duplicate items in sequence seq removed.
reverse_dict(d) -- Return the dictionary with the items as keys and vice-versa.
lsb(x, n) -- Return the n least significant bits of x.
gray_encode(i) -- Gray encode the given integer.
random_vec(bits, max_value=None) -- Return a random binary vector.
binary_range(bits) -- Return list of all possible binary numbers width=bits.
float_range([start], stop, [step]) -- Return range of floats.
find_common_fixes(s1, s2) -- Find common (prefix, suffix) of two strings.
is_rotated(seq1, seq2) -- Return true if the list is a rotation of other list.
getmodule(obj) -- Return the module that contains the object definition of obj.
(use inspect.getmodule instead, though)
get_args(argv) -- Store command-line args in a dictionary.
This module requires Python >= 2.2
"""
__author__ = 'Tim Wegener <twegener@radlogic.com.au>'
__date__ = '$Date: 2007/03/27 03:15:06 $'
__version__ = '$Revision: 0.45 $'
__credits__ = """
David Chandler, for polygon area algorithm.
(http://www.davidchandler.com/AreaOfAGeneralPolygon.pdf)
"""
import re
import sys
import time
import random
try:
True, False
except NameError:
True, False = (1==1, 0==1)
def int2bin(i, n):
"""Convert decimal integer i to n-bit binary number (string).
>>> int2bin(0, 8)
'00000000'
>>> int2bin(123, 8)
'01111011'
>>> int2bin(123L, 8)
'01111011'
>>> int2bin(15, 2)
Traceback (most recent call last):
ValueError: Value too large for given number of bits.
"""
hex2bin = {'0': '0000', '1': '0001', '2': '0010', '3': '0011',
'4': '0100', '5': '0101', '6': '0110', '7': '0111',
'8': '1000', '9': '1001', 'a': '1010', 'b': '1011',
'c': '1100', 'd': '1101', 'e': '1110', 'f': '1111'}
# Convert to hex then map each hex digit to binary equivalent.
result = ''.join([hex2bin[x] for x in hex(i).lower().replace('l','')[2:]])
# Shrink result to appropriate length.
# Raise an error if the value is changed by the truncation.
if '1' in result[:-n]:
raise ValueError("Value too large for given number of bits.")
result = result[-n:]
# Zero-pad if length longer than mapped result.
result = '0'*(n-len(result)) + result
return result
def bin2int(bin_string):
"""Convert binary number string to decimal integer.
Note: Python > v2 has int(bin_string, 2)
>>> bin2int('1111')
15
>>> bin2int('0101')
5
"""
## result = 0
## bin_list = list(bin_string)
## if len(filter(lambda x: x in ('1','0'), bin_list)) < len(bin_list):
## raise Exception ("bin2int: Error - not a binary number: %s"
## % bin_string)
## bit_list = map(int, bin_list)
## bit_list.reverse() # Make most significant bit have highest index.
## for bit_place in range(len(bit_list)):
## result = result + ((2**bit_place) * bit_list[bit_place])
## return result
return int(bin_string, 2)
def reverse(input_string):
"""Reverse a string. Useful for strings of binary numbers.
>>> reverse('abc')
'cba'
"""
str_list = list(input_string)
str_list.reverse()
return ''.join(str_list)
def transpose(matrix):
"""Transpose a list of lists.
>>> transpose([['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']])
[['a', 'd', 'g'], ['b', 'e', 'h'], ['c', 'f', 'i']]
>>> transpose([['a', 'b', 'c'], ['d', 'e', 'f']])
[['a', 'd'], ['b', 'e'], ['c', 'f']]
>>> transpose([['a', 'b'], ['d', 'e'], ['g', 'h']])
[['a', 'd', 'g'], ['b', 'e', 'h']]
"""
result = zip(*matrix)
# Convert list of tuples to list of lists.
# map is faster than a list comprehension since it is being used with
# a built-in function as an argument.
result = map(list, result)
return result
def polygon_area(points_list, precision=100):
"""Calculate area of an arbitrary polygon using an algorithm from the web.
Return the area of the polygon as a positive float.
Arguments:
points_list -- list of point tuples [(x0, y0), (x1, y1), (x2, y2), ...]
(Unclosed polygons will be closed automatically.
precision -- Internal arithmetic precision (integer arithmetic).
>>> polygon_area([(0, 0), (0, 1), (1, 1), (1, 2), (2, 2), (2, 0), (0, 0)])
3.0
Credits:
Area of a General Polygon by David Chandler
http://www.davidchandler.com/AreaOfAGeneralPolygon.pdf
"""
# Scale up co-ordinates and convert them to integers.
for i in range(len(points_list)):
points_list[i] = (int(points_list[i][0] * precision),
int(points_list[i][1] * precision))
# Close polygon if not closed.
if points_list[-1] != points_list[0]:
points_list.append(points_list[0])
# Calculate area.
area = 0
for i in range(len(points_list)-1):
(x_i, y_i) = points_list[i]
(x_i_plus_1, y_i_plus_1) = points_list[i+1]
area = area + (x_i_plus_1 * y_i) - (y_i_plus_1 * x_i)
area = abs(area / 2)
# Unscale area.
area = float(area)/(precision**2)
return area
def timestamp():
"""Return string containing current time stamp.
Note: In Python 2 onwards can use time.asctime() with no arguments.
"""
return time.asctime()
def pt2str(point):
"""Return prettier string version of point tuple.
>>> pt2str((1.8, 1.9))
'(1.8, 1.9)'
"""
return "(%s, %s)" % (str(point[0]), str(point[1]))
def gcf(a, b, epsilon=1e-16):
"""Return the greatest common factor of a and b, using Euclidean algorithm.
Arguments:
a, b -- two numbers
If both numbers are integers return an integer result,
otherwise return a float result.
epsilon -- floats less than this magnitude are considered to be zero
(default: 1e-16)
Examples:
>>> gcf(12, 34)
2
>>> gcf(13.5, 4)
0.5
>>> gcf(-2, 4)
2
>>> gcf(5, 0)
5
By (a convenient) definition:
>>> gcf(0, 0)
0
"""
result = max(a, b)
remainder = min(a, b)
while remainder and abs(remainder) > epsilon:
new_remainder = result % remainder
result = remainder
remainder = new_remainder
return abs(result)
def lcm(a, b, precision=None):
"""Return the least common multiple of a and b, using the gcf function.
Arguments:
a, b -- two numbers. If both are integers return an integer result,
otherwise a return a float result.
precision -- scaling factor if a and/or b are floats.
>>> lcm(21, 6)
42
>>> lcm(2.5, 3.5)
17.5
>>> str(lcm(1.5e-8, 2.5e-8, precision=1e9))
'7.5e-08'
By (an arbitary) definition:
>>> lcm(0, 0)
0
"""
# Note: Dummy precision argument is for backwards compatibility.
# Do the division first.
# (See http://en.wikipedia.org/wiki/Least_common_multiple )
denom = gcf(a, b)
if denom == 0:
result = 0
else:
result = a * (b / denom)
return result
def permutations(input_list):
"""Return a list containing all permutations of the input list.
Note: This is a recursive function.
>>> perms = permutations(['a', 'b', 'c'])
>>> perms.sort()
>>> for perm in perms:
... print perm
['a', 'b', 'c']
['a', 'c', 'b']
['b', 'a', 'c']
['b', 'c', 'a']
['c', 'a', 'b']
['c', 'b', 'a']
"""
out_lists = []
if len(input_list) > 1:
# Extract first item in list.
item = input_list[0]
# Find all permutations of remainder of list. (Recursive call.)
sub_lists = permutations(input_list[1:])
# For every permutation of the sub list...
for sub_list in sub_lists:
# Insert the extracted first item at every position of the list.
for i in range(len(input_list)):
new_list = sub_list[:]
new_list.insert(i, item)
out_lists.append(new_list)
else:
# Termination condition: only one item in input list.
out_lists = [input_list]
return out_lists
def reduce_fraction(fraction):
"""Reduce fraction tuple to simplest form. fraction=(num, denom)
>>> reduce_fraction((14, 7))
(2, 1)
>>> reduce_fraction((-2, 4))
(-1, 2)
>>> reduce_fraction((0, 4))
(0, 1)
>>> reduce_fraction((4, 0))
(1, 0)
"""
(numerator, denominator) = fraction
common_factor = abs(gcf(numerator, denominator))
result = (numerator/common_factor, denominator/common_factor)
return result
def quantile(l, p):
"""Return p quantile of list l. E.g. p=0.25 for q1.
See:
http://rweb.stat.umn.edu/R/library/base/html/quantile.html
"""
l_sort = l[:]
l_sort.sort()
n = len(l)
r = 1 + ((n - 1) * p)
i = int(r)
f = r - i
if i < n:
result = (1-f)*l_sort[i-1] + f*l_sort[i]
else:
result = l_sort[i-1]
return result
def trim(l):
"""Discard values in list more than 1.5*IQR outside IQR.
(IQR is inter-quartile-range)
This function uses rad_util.quantile
1.5*IQR -- mild outlier
3*IQR -- extreme outlier
See:
http://wind.cc.whecn.edu/~pwildman/statnew/section_7_-_exploratory_data_analysis.htm
"""
l_sort = l[:]
l_sort.sort()
# Calculate medianscore (based on stats.py lmedianscore by Gary Strangman)
if len(l_sort) % 2 == 0:
# If even number of scores, average middle 2.
index = int(len(l_sort) / 2) # Integer division correct
median = float(l_sort[index] + l_sort[index-1]) / 2
else:
# int divsion gives mid value when count from 0
index = int(len(l_sort) / 2)
median = l_sort[index]
# Calculate IQR.
q1 = quantile(l_sort, 0.25)
q3 = quantile(l_sort, 0.75)
iqr = q3 - q1
iqr_extra = iqr * 1.5
def in_interval(x, i=iqr_extra, q1=q1, q3=q3):
return (x >= q1-i and x <= q3+i)
l_trimmed = [x for x in l_sort if in_interval(x)]
return l_trimmed
def nice_units(value, dp=0, sigfigs=None, suffix='', space=' ',
use_extra_prefixes=False, use_full_name=False, mode='si'):
"""Return value converted to human readable units eg milli, micro, etc.
Arguments:
value -- number in base units
dp -- number of decimal places to display (rounded)
sigfigs -- number of significant figures to display (rounded)
This overrides dp if set.
suffix -- optional unit suffix to append to unit multiplier
space -- seperator between value and unit multiplier (default: ' ')
use_extra_prefixes -- use hecto, deka, deci and centi as well if set.
(default: False)
use_full_name -- use full name for multiplier symbol,
e.g. milli instead of m
(default: False)
mode -- 'si' for SI prefixes, 'bin' for binary multipliers (1024, etc.)
(Default: 'si')
SI prefixes from:
http://physics.nist.gov/cuu/Units/prefixes.html
(Greek mu changed to u.)
Binary prefixes based on:
http://physics.nist.gov/cuu/Units/binary.html
>>> nice_units(2e-11)
'20 p'
>>> nice_units(2e-11, space='')
'20p'
"""
si_prefixes = {1e24: ('Y', 'yotta'),
1e21: ('Z', 'zetta'),
1e18: ('E', 'exa'),
1e15: ('P', 'peta'),
1e12: ('T', 'tera'),
1e9: ('G', 'giga'),
1e6: ('M', 'mega'),
1e3: ('k', 'kilo'),
1e-3: ('m', 'milli'),
1e-6: ('u', 'micro'),
1e-9: ('n', 'nano'),
1e-12: ('p', 'pico'),
1e-15: ('f', 'femto'),
1e-18: ('a', 'atto'),
1e-21: ('z', 'zepto'),
1e-24: ('y', 'yocto')
}
if use_extra_prefixes:
si_prefixes.update({1e2: ('h', 'hecto'),
1e1: ('da', 'deka'),
1e-1: ('d', 'deci'),
1e-2: ('c', 'centi')
})
bin_prefixes = {2**10: ('K', 'kilo'),
2**20: ('M', 'mega'),
2**30: ('G', 'mega'),
2**40: ('T', 'tera'),
2**50: ('P', 'peta'),
2**60: ('E', 'exa')
}
if mode == 'bin':
prefixes = bin_prefixes
else:
prefixes = si_prefixes
prefixes[1] = ('', '') # Unity.
# Determine appropriate multiplier.
multipliers = prefixes.keys()
multipliers.sort()
mult = None
for i in range(len(multipliers) - 1):
lower_mult = multipliers[i]
upper_mult = multipliers[i+1]
if lower_mult <= value < upper_mult:
mult_i = i
break
if mult is None:
if value < multipliers[0]:
mult_i = 0
elif value >= multipliers[-1]:
mult_i = len(multipliers) - 1
mult = multipliers[mult_i]
# Convert value for this multiplier.
new_value = value / mult
# Deal with special case due to rounding.
if sigfigs is None:
if mult_i < (len(multipliers) - 1) and \
round(new_value, dp) == \
round((multipliers[mult_i+1] / mult), dp):
mult = multipliers[mult_i + 1]
new_value = value / mult
# Concatenate multiplier symbol.
if use_full_name:
label_type = 1
else:
label_type = 0
# Round and truncate to appropriate precision.
if sigfigs is None:
str_value = eval('"%.'+str(dp)+'f" % new_value', locals(), {})
else:
str_value = eval('"%.'+str(sigfigs)+'g" % new_value', locals(), {})
return str_value + space + prefixes[mult][label_type] + suffix
def uniquify(seq, preserve_order=False):
"""Return sequence with duplicate items in sequence seq removed.
The code is based on usenet post by Tim Peters.
This code is O(N) if the sequence items are hashable, O(N**2) if not.
Peter Bengtsson has a blog post with an empirical comparison of other
approaches:
http://www.peterbe.com/plog/uniqifiers-benchmark
If order is not important and the sequence items are hashable then
list(set(seq)) is readable and efficient.
If order is important and the sequence items are hashable generator
expressions can be used (in py >= 2.4) (useful for large sequences):
seen = set()
do_something(x for x in seq if x not in seen or seen.add(x))
Arguments:
seq -- sequence
preserve_order -- if not set the order will be arbitrary
Using this option will incur a speed penalty.
(default: False)
Example showing order preservation:
>>> uniquify(['a', 'aa', 'b', 'b', 'ccc', 'ccc', 'd'], preserve_order=True)
['a', 'aa', 'b', 'ccc', 'd']
Example using a sequence of un-hashable items:
>>> uniquify([['z'], ['x'], ['y'], ['z']], preserve_order=True)
[['z'], ['x'], ['y']]
The sorted output or the non-order-preserving approach should equal
that of the sorted order-preserving approach output:
>>> unordered = uniquify([3, 3, 1, 2], preserve_order=False)
>>> unordered.sort()
>>> ordered = uniquify([3, 3, 1, 2], preserve_order=True)
>>> ordered.sort()
>>> ordered
[1, 2, 3]
>>> int(ordered == unordered)
1
"""
try:
# Attempt fast algorithm.
d = {}
if preserve_order:
# This is based on Dave Kirby's method (f8) noted in the post:
# http://www.peterbe.com/plog/uniqifiers-benchmark
return [x for x in seq if (x not in d) and not d.__setitem__(x, 0)]
else:
for x in seq:
d[x] = 0
return d.keys()
except TypeError:
# Have an unhashable object, so use slow algorithm.
result = []
app = result.append
for x in seq:
if x not in result:
app(x)
return result
# Alias to noun form for backward compatibility.
unique = uniquify
def reverse_dict(d):
"""Reverse a dictionary so the items become the keys and vice-versa.
Note: The results will be arbitrary if the items are not unique.
>>> d = reverse_dict({'a': 1, 'b': 2})
>>> d_items = d.items()
>>> d_items.sort()
>>> d_items
[(1, 'a'), (2, 'b')]
"""
result = {}
for key, value in d.items():
result[value] = key
return result
def lsb(x, n):
"""Return the n least significant bits of x.
>>> lsb(13, 3)
5
"""
return x & ((2 ** n) - 1)
def gray_encode(i):
"""Gray encode the given integer."""
return i ^ (i >> 1)
def random_vec(bits, max_value=None):
"""Generate a random binary vector of length bits and given max value."""
vector = ""
for _ in range(int(bits / 10) + 1):
i = int((2**10) * random.random())
vector += int2bin(i, 10)
if max_value and (max_value < 2 ** bits - 1):
vector = int2bin((int(vector, 2) / (2 ** bits - 1)) * max_value, bits)
return vector[0:bits]
def binary_range(bits):
"""Return a list of all possible binary numbers in order with width=bits.
It would be nice to extend it to match the
functionality of python's range() built-in function.
"""
l = []
v = ['0'] * bits
toggle = [1] + [0] * bits
while toggle[bits] != 1:
v_copy = v[:]
v_copy.reverse()
l.append(''.join(v_copy))
toggle = [1] + [0]*bits
i = 0
while i < bits and toggle[i] == 1:
if toggle[i]:
if v[i] == '0':
v[i] = '1'
toggle[i+1] = 0
else:
v[i] = '0'
toggle[i+1] = 1
i += 1
return l
def float_range(start, stop=None, step=None):
"""Return a list containing an arithmetic progression of floats.
Return a list of floats between 0.0 (or start) and stop with an
increment of step.
This is in functionality to python's range() built-in function
but can accept float increments.
As with range(), stop is omitted from the list.
"""
if stop is None:
stop = float(start)
start = 0.0
if step is None:
step = 1.0
cur = float(start)
l = []
while cur < stop:
l.append(cur)
cur += step
return l
def find_common_fixes(s1, s2):
"""Find common (prefix, suffix) of two strings.
>>> find_common_fixes('abc', 'def')
('', '')
>>> find_common_fixes('abcelephantdef', 'abccowdef')
('abc', 'def')
>>> find_common_fixes('abcelephantdef', 'abccow')
('abc', '')
>>> find_common_fixes('elephantdef', 'abccowdef')
('', 'def')
"""
prefix = []
suffix = []
i = 0
common_len = min(len(s1), len(s2))
while i < common_len:
if s1[i] != s2[i]:
break
prefix.append(s1[i])
i += 1
i = 1
while i < (common_len + 1):
if s1[-i] != s2[-i]:
break
suffix.append(s1[-i])
i += 1
suffix.reverse()
prefix = ''.join(prefix)
suffix = ''.join(suffix)
return (prefix, suffix)
def is_rotated(seq1, seq2):
"""Return true if the first sequence is a rotation of the second sequence.
>>> seq1 = ['A', 'B', 'C', 'D']
>>> seq2 = ['C', 'D', 'A', 'B']
>>> int(is_rotated(seq1, seq2))
1
>>> seq2 = ['C', 'D', 'B', 'A']
>>> int(is_rotated(seq1, seq2))
0
>>> seq1 = ['A', 'B', 'C', 'A']
>>> seq2 = ['A', 'A', 'B', 'C']
>>> int(is_rotated(seq1, seq2))
1
>>> seq2 = ['A', 'B', 'C', 'A']
>>> int(is_rotated(seq1, seq2))
1
>>> seq2 = ['A', 'A', 'C', 'B']
>>> int(is_rotated(seq1, seq2))
0
"""
# Do a sanity check.
if len(seq1) != len(seq2):
return False
# Look for occurrences of second sequence head item in first sequence.
start_indexes = []
head_item = seq2[0]
for index1 in range(len(seq1)):
if seq1[index1] == head_item:
start_indexes.append(index1)
# Check that wrapped sequence matches.
double_seq1 = seq1 + seq1
for index1 in start_indexes:
if double_seq1[index1:index1+len(seq1)] == seq2:
return True
return False
def getmodule(obj):
"""Return the module that contains the object definition of obj.
Note: Use inspect.getmodule instead.
Arguments:
obj -- python obj, generally a class or a function
Examples:
A function:
>>> module = getmodule(random.choice)
>>> module.__name__
'random'
>>> module is random
1
A class:
>>> module = getmodule(random.Random)
>>> module.__name__
'random'
>>> module is random
1
A class inheriting from a class in another module:
(note: The inheriting class must define at least one function.)
>>> class MyRandom(random.Random):
... def play(self):
... pass
>>> module = getmodule(MyRandom)
>>> if __name__ == '__main__':
... name = 'rad_util'
... else:
... name = module.__name__
>>> name
'rad_util'
>>> module is sys.modules[__name__]
1
Discussion:
This approach is slightly hackish, and won't work in various situations.
However, this was the approach recommended by GvR, so it's as good as
you'll get.
See GvR's post in this thread:
http://groups.google.com.au/group/comp.lang.python/browse_thread/thread/966a7bdee07e3b34/c3cab3f41ea84236?lnk=st&q=python+determine+class+module&rnum=4&hl=en#c3cab3f41ea84236
"""
if hasattr(obj, 'func_globals'):
func = obj
else:
# Handle classes.
func = None
for item in obj.__dict__.values():
if hasattr(item, 'func_globals'):
func = item
break
if func is None:
raise ValueError("No functions attached to object: %r" % obj)
module_name = func.func_globals['__name__']
# Get module.
module = sys.modules[module_name]
return module
def round_grid(value, grid, mode=0):
"""Round off the given value to the given grid size.
Arguments:
value -- value to be roudne
grid -- result must be a multiple of this
mode -- 0 nearest, 1 up, -1 down
Examples:
>>> round_grid(7.5, 5)
10
>>> round_grid(7.5, 5, mode=-1)
5
>>> round_grid(7.3, 5, mode=1)
10
>>> round_grid(7.3, 5.0, mode=1)
10.0
"""
off_grid = value % grid
if mode == 0:
add_one = int(off_grid >= (grid / 2.0))
elif mode == 1 and off_grid:
add_one = 1
elif mode == -1 and off_grid:
add_one = 0
result = ((int(value / grid) + add_one) * grid)
return result
def get_args(argv):
"""Store command-line args in a dictionary.
-, -- prefixes are removed
Items not prefixed with - or -- are stored as a list, indexed by 'args'
For options that take a value use --option=value
Consider using optparse or getopt (in Python standard library) instead.
"""
d = {}
args = []
for arg in argv:
if arg.startswith('-'):
parts = re.sub(r'^-+', '', arg).split('=')
if len(parts) == 2:
d[parts[0]] = parts[1]
else:
d[parts[0]] = None
else:
args.append(arg)
d['args'] = args
return d
if __name__ == '__main__':
import doctest
doctest.testmod(sys.modules['__main__'])
+392
View File
@@ -0,0 +1,392 @@
# topsort - dependency (topological) sorting and cycle finding functions
# Copyright (C) 2007 RADLogic
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation;
# version 2.1 of the License.
#
# This library 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
# Lesser General Public License for more details.
#
# See http://www.fsf.org/licensing/licenses/lgpl.txt for full license text.
"""Provide toplogical sorting (i.e. dependency sorting) functions.
The topsort function is based on code posted on Usenet by Tim Peters.
Modifications:
- added doctests
- changed some bits to use current Python idioms
(listcomp instead of filter, +=/-=, inherit from Exception)
- added a topsort_levels version that ports items in each dependency level
into a sub-list
- added find_cycles to aid in cycle debugging
Run this module directly to run the doctests (unittests).
Make sure they all pass before checking in any modifications.
Requires Python >= 2.2
(For Python 2.2 also requires separate sets.py module)
This requires the rad_util.py module.
"""
# Provide support for Python 2.2*
from __future__ import generators
__version__ = '$Revision: 0.9 $'
__date__ = '$Date: 2007/03/27 04:15:26 $'
__credits__ = '''Tim Peters -- original topsort code
Tim Wegener -- doctesting, updating to current idioms, topsort_levels,
find_cycles
'''
# Make Python 2.3 sets look like Python 2.4 sets.
try:
set
except NameError:
from sets import Set as set
from rad_util import is_rotated
class CycleError(Exception):
"""Cycle Error"""
pass
def topsort(pairlist):
"""Topologically sort a list of (parent, child) pairs.
Return a list of the elements in dependency order (parent to child order).
>>> print topsort( [(1,2), (3,4), (5,6), (1,3), (1,5), (1,6), (2,5)] )
[1, 2, 3, 5, 4, 6]
>>> print topsort( [(1,2), (1,3), (2,4), (3,4), (5,6), (4,5)] )
[1, 2, 3, 4, 5, 6]
>>> print topsort( [(1,2), (2,3), (3,2)] )
Traceback (most recent call last):
CycleError: ([1], {2: 1, 3: 1}, {2: [3], 3: [2]})
"""
num_parents = {} # element -> # of predecessors
children = {} # element -> list of successors
for parent, child in pairlist:
# Make sure every element is a key in num_parents.
if not num_parents.has_key( parent ):
num_parents[parent] = 0
if not num_parents.has_key( child ):
num_parents[child] = 0
# Since child has a parent, increment child's num_parents count.
num_parents[child] += 1
# ... and parent gains a child.
children.setdefault(parent, []).append(child)
# Suck up everything without a parent.
answer = [x for x in num_parents.keys() if num_parents[x] == 0]
# For everything in answer, knock down the parent count on its children.
# Note that answer grows *in* the loop.
for parent in answer:
del num_parents[parent]
if children.has_key( parent ):
for child in children[parent]:
num_parents[child] -= 1
if num_parents[child] == 0:
answer.append( child )
# Following "del" isn't needed; just makes
# CycleError details easier to grasp.
del children[parent]
if num_parents:
# Everything in num_parents has at least one child ->
# there's a cycle.
raise CycleError(answer, num_parents, children)
return answer
def topsort_levels(pairlist):
"""Topologically sort a list of (parent, child) pairs into depth levels.
This returns a generator.
Turn this into a an iterator using the iter built-in function.
(if you iterate over the iterator, each element gets generated when
it is asked for, rather than generating the whole list up-front.)
Each generated element is a list of items at that dependency level.
>>> dependency_pairs = [(1,2), (3,4), (5,6), (1,3), (1,5), (1,6), (2,5)]
>>> for level in iter(topsort_levels( dependency_pairs )):
... print level
[1]
[2, 3]
[4, 5]
[6]
>>> dependency_pairs = [(1,2), (1,3), (2,4), (3,4), (5,6), (4,5)]
>>> for level in iter(topsort_levels( dependency_pairs )):
... print level
[1]
[2, 3]
[4]
[5]
[6]
>>> dependency_pairs = [(1,2), (2,3), (3,4), (4, 3)]
>>> try:
... for level in iter(topsort_levels( dependency_pairs )):
... print level
... except CycleError, exc:
... print 'CycleError:', exc
[1]
[2]
CycleError: ({3: 1, 4: 1}, {3: [4], 4: [3]})
The cycle error should look like.
CycleError: ({3: 1, 4: 1}, {3: [4], 4: [3]})
# todo: Make the doctest more robust (i.e. handle arbitrary dict order).
"""
num_parents = {} # element -> # of predecessors
children = {} # element -> list of successors
for parent, child in pairlist:
# Make sure every element is a key in num_parents.
if not num_parents.has_key( parent ):
num_parents[parent] = 0
if not num_parents.has_key( child ):
num_parents[child] = 0
# Since child has a parent, increment child's num_parents count.
num_parents[child] += 1
# ... and parent gains a child.
children.setdefault(parent, []).append(child)
return topsort_levels_core(num_parents, children)
def topsort_levels_core(num_parents, children):
"""Topologically sort a bunch of interdependent items based on dependency.
This returns a generator.
Turn this into a an iterator using the iter built-in function.
(if you iterate over the iterator, each element gets generated when
it is asked for, rather than generating the whole list up-front.)
Each generated element is a list of items at that dependency level.
>>> list(topsort_levels_core(
... {1: 0, 2: 1, 3: 1, 4: 1, 5: 2, 6: 2},
... {1: [2, 3, 5, 6], 2: [5], 3: [4], 4: [], 5: [6]}))
[[1], [2, 3], [4, 5], [6]]
>>> list(topsort_levels_core(
... {1: 0, 2: 2, 3: 1},
... {1: [2], 2: [3], 3: [2]}))
Traceback (most recent call last):
CycleError: ({2: 1, 3: 1}, {2: [3], 3: [2]})
This function has a more complicated interface than topsort_levels,
but is useful if the data is easier to generate in this form.
Arguments:
num_parents -- key: item, value: number of parents (predecessors)
children -- key: item, value: list of children (successors)
"""
while 1:
# Suck up everything without a predecessor.
level_parents = [x for x in num_parents.keys() if num_parents[x] == 0]
if not level_parents:
break
# Offer the next generated item,
# which is a list of the items at this dependency level.
yield level_parents
# For everything item in this level,
# decrement the parent count,
# since we have accounted for its parent.
for level_parent in level_parents:
del num_parents[level_parent]
if children.has_key(level_parent):
for level_parent_child in children[level_parent]:
num_parents[level_parent_child] -= 1
del children[level_parent]
if num_parents:
# Everything in num_parents has at least one child ->
# there's a cycle.
raise CycleError(num_parents, children)
else:
# This is the end of the generator.
raise StopIteration
def find_cycles(parent_children):
"""Yield cycles. Each result is a list of items comprising a cycle.
Use a 'stack' based approach to find all the cycles.
This is a generator, so yields each cycle as it finds it.
It is implicit that the last item in each cycle list is a parent of the
first item (thereby forming a cycle).
Arguments:
parent_children -- parent -> collection of children
Simplest cycle:
>>> cycles = list(find_cycles({'A': ['B'], 'B': ['A']}))
>>> len(cycles)
1
>>> cycle = cycles[0]
>>> cycle.sort()
>>> print cycle
['A', 'B']
Simplest cycle with extra baggage at the start and the end:
>>> cycles = list(find_cycles(parent_children={'A': ['B'],
... 'B': ['C'],
... 'C': ['B', 'D'],
... 'D': [],
... }))
>>> len(cycles)
1
>>> cycle = cycles[0]
>>> cycle.sort()
>>> print cycle
['B', 'C']
Double cycle:
>>> cycles = list(find_cycles(parent_children={'A': ['B'],
... 'B': ['C1', 'C2'],
... 'C1': ['D1'],
... 'D1': ['E1'],
... 'E1': ['D1'],
... 'C2': ['D2'],
... 'D2': ['E2'],
... 'E2': ['D2'],
... }))
>>> len(cycles)
2
>>> for cycle in cycles:
... cycle.sort()
>>> cycles.sort()
>>> cycle1 = cycles[0]
>>> cycle1.sort()
>>> print cycle1
['D1', 'E1']
>>> cycle2 = cycles[1]
>>> cycle2.sort()
>>> print cycle2
['D2', 'E2']
Simple cycle with children not specified for one item:
# todo: Should this barf instead?
>>> cycles = list(find_cycles(parent_children={'A': ['B'],
... 'B': ['A'],
... 'C': ['D']}))
>>> len(cycles)
1
>>> cycle = cycles[0]
>>> cycle.sort()
>>> print cycle
['A', 'B']
Diamond cycle
>>> cycles = list(find_cycles(parent_children={'A': ['B1', 'B2'],
... 'B1': ['C'],
... 'B2': ['C'],
... 'C': ['A', 'B1']}))
>>> len(cycles)
3
>>> sorted_cycles = []
>>> for cycle in cycles:
... cycle = list(cycle)
... cycle.sort()
... sorted_cycles.append(cycle)
>>> sorted_cycles.sort()
>>> for cycle in sorted_cycles:
... print cycle
['A', 'B1', 'C']
['A', 'B2', 'C']
['B1', 'C']
Hairy case (order can matter if something is wrong):
(Note order of B and C in the list.)
>>> cycles = list(find_cycles(parent_children={
... 'TD': ['DD'],
... 'TC': ['DC'],
... 'DC': ['DQ'],
... 'C': ['DQ'],
... 'DQ': ['IA', 'TO'],
... 'IA': ['A'],
... 'A': ['B', 'C'],
... }))
>>> len(cycles)
1
>>> cycle = cycles[0]
>>> cycle.sort()
>>> print cycle
['A', 'C', 'DQ', 'IA']
"""
cycles = []
visited_nodes = set()
for parent in parent_children:
if parent in visited_nodes:
# This node is part of a path that has already been traversed.
continue
paths = [[parent]]
while paths:
path = paths.pop()
parent = path[-1]
try:
children = parent_children[parent]
except KeyError:
continue
for child in children:
# Keeping a set of the path nodes, for O(1) lookups at the
# expense of more memory and complexity, actually makes speed
# worse. (Due to construction of sets.)
# This is O(N).
if child in path:
# This is a cycle.
cycle = path[path.index(child):]
# Check that this is not a dup cycle.
is_dup = False
for other_cycle in cycles:
if is_rotated(other_cycle, cycle):
is_dup = True
break
if not is_dup:
cycles.append(cycle)
yield cycle
else:
# Push this new path onto the 'stack'.
# This is probably the most expensive part of the algorithm
# (a list copy).
paths.append(path + [child])
# Mark the node as visited.
visited_nodes.add(child)
if __name__ == '__main__':
# Run the doctest tests.
import sys
import doctest
doctest.testmod(sys.modules['__main__'])
View File
+487
View File
@@ -0,0 +1,487 @@
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
import types
import re
import os
import subprocess
import shutil
import sys
import Task
import Options
import Configure
import TaskGen
import Logs
import Build
import Utils
from waflib.Errors import WafError
## https://launchpad.net/pybindgen/
REQUIRED_PYBINDGEN_VERSION = (0, 15, 0, 795)
REQUIRED_PYGCCXML_VERSION = (0, 9, 5)
from TaskGen import feature, after
import Task
def add_to_python_path(path):
if os.environ.get('PYTHONPATH', ''):
os.environ['PYTHONPATH'] = path + os.pathsep + os.environ.get('PYTHONPATH')
else:
os.environ['PYTHONPATH'] = path
def set_pybindgen_pythonpath(env):
if env['WITH_PYBINDGEN']:
add_to_python_path(env['WITH_PYBINDGEN'])
def options(opt):
opt.tool_options('python', ["waf-tools"])
opt.add_option('--disable-python',
help=("Don't build Python bindings."),
action="store_true", default=False,
dest='python_disable')
opt.add_option('--apiscan',
help=("Rescan the API for the indicated module(s), for Python bindings. "
"Needs working GCCXML / pygccxml environment. "
"The metamodule 'all' expands to all available ns-3 modules."),
default=None, dest='apiscan', metavar="MODULE[,MODULE...]")
opt.add_option('--with-pybindgen',
help=('Path to an existing pybindgen source tree to use.'),
default=None,
dest='with_pybindgen', type="string")
opt.add_option('--with-python',
help=('Path to the Python interpreter to use.'),
default=None, dest='with_python', type="string")
def configure(conf):
conf.env['ENABLE_PYTHON_BINDINGS'] = False
if Options.options.python_disable:
conf.report_optional_feature("python", "Python Bindings", False,
"disabled by user request")
return
# Disable python in static builds (bug #1253)
if ((conf.env['ENABLE_STATIC_NS3']) or \
(conf.env['ENABLE_SHARED_AND_STATIC_NS3'])):
conf.report_optional_feature("python", "Python Bindings", False,
"bindings incompatible with static build")
return
enabled_modules = list(conf.env['NS3_ENABLED_MODULES'])
enabled_modules.sort()
available_modules = list(conf.env['NS3_MODULES'])
available_modules.sort()
all_modules_enabled = (enabled_modules == available_modules)
conf.check_tool('misc', tooldir=['waf-tools'])
if sys.platform == 'cygwin':
conf.report_optional_feature("python", "Python Bindings", False,
"unsupported platform 'cygwin'")
Logs.warn("Python is not supported in CygWin environment. Try MingW instead.")
return
## Check for Python
if Options.options.with_python is not None:
conf.env.PYTHON = Options.options.with_python
try:
conf.check_tool('python', ["waf-tools"])
conf.check_python_version((2,3))
conf.check_python_headers()
except Configure.ConfigurationError, ex:
conf.report_optional_feature("python", "Python Bindings", False, str(ex))
return
# stupid Mac OSX Python wants to build extensions as "universal
# binaries", i386, x86_64, and ppc, but this way the type
# __uint128_t is not available. We need to disable the multiarch
# crap by removing the -arch parameters.
for flags_var in ["CFLAGS_PYEXT", "CFLAGS_PYEMBED", "CXXFLAGS_PYEMBED",
"CXXFLAGS_PYEXT", "LINKFLAGS_PYEMBED", "LINKFLAGS_PYEXT"]:
flags = conf.env[flags_var]
i = 0
while i < len(flags):
if flags[i] == '-arch':
del flags[i]
del flags[i]
continue
i += 1
conf.env[flags_var] = flags
# -fvisibility=hidden optimization
if (conf.env['CXX_NAME'] == 'gcc' and [int(x) for x in conf.env['CC_VERSION']] >= [4,0,0]
and conf.check_compilation_flag('-fvisibility=hidden')):
conf.env.append_value('CXXFLAGS_PYEXT', '-fvisibility=hidden')
conf.env.append_value('CCFLAGS_PYEXT', '-fvisibility=hidden')
# Check for the location of pybindgen
if Options.options.with_pybindgen is not None:
if os.path.isdir(Options.options.with_pybindgen):
conf.msg("Checking for pybindgen location", ("%s (given)" % Options.options.with_pybindgen))
conf.env['WITH_PYBINDGEN'] = os.path.abspath(Options.options.with_pybindgen)
else:
# ns-3-dev uses ../pybindgen, while ns-3 releases use ../REQUIRED_PYBINDGEN_VERSION
pybindgen_dir = os.path.join('..', "pybindgen")
pybindgen_release_str = "pybindgen-" + '.'.join([str(x) for x in REQUIRED_PYBINDGEN_VERSION])
pybindgen_release_dir = os.path.join('..', pybindgen_release_str)
if os.path.isdir(pybindgen_dir):
conf.msg("Checking for pybindgen location", ("%s (guessed)" % pybindgen_dir))
conf.env['WITH_PYBINDGEN'] = os.path.abspath(pybindgen_dir)
elif os.path.isdir(pybindgen_release_dir):
conf.msg("Checking for pybindgen location", ("%s (guessed)" % pybindgen_release_dir))
conf.env['WITH_PYBINDGEN'] = os.path.abspath(pybindgen_release_dir)
del pybindgen_dir
del pybindgen_release_dir
if not conf.env['WITH_PYBINDGEN']:
conf.msg("Checking for pybindgen location", False)
# Check for pybindgen
set_pybindgen_pythonpath(conf.env)
try:
conf.check_python_module('pybindgen')
except Configure.ConfigurationError:
Logs.warn("pybindgen missing => no python bindings")
conf.report_optional_feature("python", "Python Bindings", False,
"PyBindGen missing")
return
else:
out = subprocess.Popen([conf.env['PYTHON'][0], "-c",
"import pybindgen.version; "
"print '.'.join([str(x) for x in pybindgen.version.__version__])"],
stdout=subprocess.PIPE).communicate()[0]
pybindgen_version_str = out.strip()
pybindgen_version = tuple([int(x) for x in pybindgen_version_str.split('.')])
conf.msg('Checking for pybindgen version', pybindgen_version_str)
if not (pybindgen_version == REQUIRED_PYBINDGEN_VERSION):
Logs.warn("pybindgen (found %s), (need %s)" %
(pybindgen_version_str,
'.'.join([str(x) for x in REQUIRED_PYBINDGEN_VERSION])))
conf.report_optional_feature("python", "Python Bindings", False,
"PyBindGen version not correct and newer version could not be retrieved")
return
def test(t1, t2):
test_program = '''
#include <stdint.h>
#include <vector>
int main ()
{
std::vector< %(type1)s > t = std::vector< %(type2)s > ();
return 0;
}
''' % dict(type1=t1, type2=t2)
try:
ret = conf.run_c_code(code=test_program,
env=conf.env.copy(), compile_filename='test.cc',
features='cxx cprogram', execute=False)
except Configure.ConfigurationError:
ret = 1
conf.msg('Checking for types %s and %s equivalence' % (t1, t2), (ret and 'no' or 'yes'))
return not ret
uint64_is_long = test("uint64_t", "unsigned long")
uint64_is_long_long = test("uint64_t", "unsigned long long")
if uint64_is_long:
conf.env['PYTHON_BINDINGS_APIDEFS'] = 'gcc-LP64'
elif uint64_is_long_long:
conf.env['PYTHON_BINDINGS_APIDEFS'] = 'gcc-ILP32'
else:
conf.env['PYTHON_BINDINGS_APIDEFS'] = None
if conf.env['PYTHON_BINDINGS_APIDEFS'] is None:
msg = 'none available'
else:
msg = conf.env['PYTHON_BINDINGS_APIDEFS']
conf.msg('Checking for the apidefs that can be used for Python bindings', msg)
if conf.env['PYTHON_BINDINGS_APIDEFS'] is None:
conf.report_optional_feature("python", "Python Bindings", False,
"No apidefs are available that can be used in this system")
return
## If all has gone well, we finally enable the Python bindings
conf.env['ENABLE_PYTHON_BINDINGS'] = True
conf.report_optional_feature("python", "Python Bindings", True, None)
# check cxxabi stuff (which Mac OS X Lion breaks)
fragment = r"""
# include <cxxabi.h>
int main ()
{
const abi::__si_class_type_info *_typeinfo __attribute__((unused)) = NULL;
return 0;
}
"""
gcc_rtti_abi = conf.check_nonfatal(fragment=fragment, msg="Checking for internal GCC cxxabi",
okmsg="complete", errmsg='incomplete',
mandatory=False)
conf.env["GCC_RTTI_ABI_COMPLETE"] = str(bool(gcc_rtti_abi))
## Check for pygccxml
try:
conf.check_python_module('pygccxml')
except Configure.ConfigurationError:
conf.report_optional_feature("pygccxml", "Python API Scanning Support", False,
"Missing 'pygccxml' Python module")
return
out = subprocess.Popen([conf.env['PYTHON'][0], "-c",
"import pygccxml; print pygccxml.__version__"],
stdout=subprocess.PIPE).communicate()[0]
pygccxml_version_str = out.strip()
pygccxml_version = tuple([int(x) for x in pygccxml_version_str.split('.')])
conf.msg('Checking for pygccxml version', pygccxml_version_str)
if not (pygccxml_version >= REQUIRED_PYGCCXML_VERSION):
Logs.warn("pygccxml (found %s) is too old (need %s) => "
"automatic scanning of API definitions will not be possible" %
(pygccxml_version_str,
'.'.join([str(x) for x in REQUIRED_PYGCCXML_VERSION])))
conf.report_optional_feature("pygccxml", "Python API Scanning Support", False,
"pygccxml too old")
return
## Check gccxml version
try:
gccxml = conf.find_program('gccxml', var='GCCXML')
except WafError:
gccxml = None
if not gccxml:
Logs.warn("gccxml missing; automatic scanning of API definitions will not be possible")
conf.report_optional_feature("pygccxml", "Python API Scanning Support", False,
"gccxml missing")
return
gccxml_version_line = os.popen(gccxml + " --version").readline().strip()
m = re.match( "^GCC-XML version (\d\.\d(\.\d)?)$", gccxml_version_line)
gccxml_version = m.group(1)
gccxml_version_ok = ([int(s) for s in gccxml_version.split('.')] >= [0, 9])
conf.msg('Checking for gccxml version', gccxml_version)
if not gccxml_version_ok:
Logs.warn("gccxml too old, need version >= 0.9; automatic scanning of API definitions will not be possible")
conf.report_optional_feature("pygccxml", "Python API Scanning Support", False,
"gccxml too old")
return
## If we reached
conf.env['ENABLE_PYTHON_SCANNING'] = True
conf.report_optional_feature("pygccxml", "Python API Scanning Support", True, None)
# ---------------------
def get_headers_map(bld):
headers_map = {} # header => module
for ns3headers in bld.all_task_gen:
if 'ns3header' in getattr(ns3headers, "features", []):
if ns3headers.module.endswith('-test'):
continue
for h in ns3headers.to_list(ns3headers.headers):
headers_map[os.path.basename(h)] = ns3headers.module
return headers_map
def get_module_path(bld, module):
for ns3headers in bld.all_task_gen:
if 'ns3header' in getattr(ns3headers, "features", []):
if ns3headers.module == module:
break
else:
raise ValueError("Module %r not found" % module)
return ns3headers.path.abspath()
class apiscan_task(Task.TaskBase):
"""Uses gccxml to scan the file 'everything.h' and extract API definitions.
"""
after = 'gen_ns3_module_header ns3header'
before = 'cc cxx command'
color = "BLUE"
def __init__(self, curdirnode, env, bld, target, cflags, module):
self.bld = bld
super(apiscan_task, self).__init__(generator=self)
self.curdirnode = curdirnode
self.env = env
self.target = target
self.cflags = cflags
self.module = module
def display(self):
return 'api-scan-%s\n' % (self.target,)
def run(self):
top_builddir = self.bld.bldnode.abspath()
module_path = get_module_path(self.bld, self.module)
headers_map = get_headers_map(self.bld)
scan_header = os.path.join(top_builddir, "ns3", "%s-module.h" % self.module)
if not os.path.exists(scan_header):
Logs.error("Cannot apiscan module %r: %s does not exist" % (self.module, scan_header))
return 0
argv = [
self.env['PYTHON'][0],
os.path.join(self.curdirnode.abspath(), 'ns3modulescan-modular.py'), # scanning script
top_builddir,
self.module,
repr(get_headers_map(self.bld)),
os.path.join(module_path, "bindings", 'modulegen__%s.py' % (self.target)), # output file
self.cflags,
]
scan = subprocess.Popen(argv, stdin=subprocess.PIPE)
retval = scan.wait()
return retval
def get_modules_and_headers(bld):
"""
Gets a dict of
module_name => ([module_dep1, module_dep2, ...], [module_header1, module_header2, ...])
tuples, one for each module.
"""
retval = {}
for module in bld.all_task_gen:
if not module.name.startswith('ns3-'):
continue
if module.name.endswith('-test'):
continue
module_name = module.name[4:] # strip the ns3- prefix
## find the headers object for this module
headers = []
for ns3headers in bld.all_task_gen:
if 'ns3header' not in getattr(ns3headers, "features", []):
continue
if ns3headers.module != module_name:
continue
for source in ns3headers.to_list(ns3headers.headers):
headers.append(os.path.basename(source))
retval[module_name] = (list(module.module_deps), headers)
return retval
class python_scan_task_collector(Task.TaskBase):
"""Tasks that waits for the python-scan-* tasks to complete and then signals WAF to exit
"""
after = 'apiscan'
before = 'cc cxx'
color = "BLUE"
def __init__(self, curdirnode, env, bld):
self.bld = bld
super(python_scan_task_collector, self).__init__(generator=self)
self.curdirnode = curdirnode
self.env = env
def display(self):
return 'python-scan-collector\n'
def run(self):
# signal stop (we generated files into the source dir and WAF
# can't cope with it, so we have to force the user to restart
# WAF)
self.bld.producer.stop = 1
self.bld.producer.free_task_pool()
return 0
class gen_ns3_compat_pymod_task(Task.Task):
"""Generates a 'ns3.py' compatibility module."""
before = 'cc cxx'
color = 'BLUE'
def run(self):
assert len(self.outputs) == 1
outfile = file(self.outputs[0].abspath(), "w")
print >> outfile, "import warnings"
print >> outfile, 'warnings.warn("the ns3 module is a compatibility layer '\
'and should not be used in newly written code", DeprecationWarning, stacklevel=2)'
print >> outfile
for module in self.bld.env['PYTHON_MODULES_BUILT']:
print >> outfile, "from ns.%s import *" % (module.replace('-', '_'))
outfile.close()
return 0
def build(bld):
if Options.options.python_disable:
return
env = bld.env
curdir = bld.path.abspath()
set_pybindgen_pythonpath(env)
if Options.options.apiscan:
if not env['ENABLE_PYTHON_SCANNING']:
raise WafError("Cannot re-scan python bindings: (py)gccxml not available")
scan_targets = []
if sys.platform == 'cygwin':
scan_targets.append(('gcc_cygwin', ''))
else:
import struct
if struct.calcsize('I') == 4 and struct.calcsize('L') == 8 and struct.calcsize('P') == 8:
scan_targets.extend([('gcc_ILP32', '-m32'), ('gcc_LP64', '-m64')])
elif struct.calcsize('I') == 4 and struct.calcsize('L') == 4 and struct.calcsize('P') == 4:
scan_targets.append(('gcc_ILP32', ''))
else:
raise WafError("Cannot scan python bindings for unsupported data model")
test_module_path = bld.path.find_dir("../../src/test")
if Options.options.apiscan == 'all':
scan_modules = []
for mod in bld.all_task_gen:
if not mod.name.startswith('ns3-'):
continue
if mod.path.is_child_of(test_module_path):
continue
if mod.name.endswith('-test'):
continue
bindings_enabled = (mod.name in env.MODULAR_BINDINGS_MODULES)
#print mod.name, bindings_enabled
if bindings_enabled:
scan_modules.append(mod.name.split('ns3-')[1])
else:
scan_modules = Options.options.apiscan.split(',')
print "Modules to scan: ", scan_modules
for target, cflags in scan_targets:
group = bld.get_group(bld.current_group)
for module in scan_modules:
group.append(apiscan_task(bld.path, env, bld, target, cflags, module))
group.append(python_scan_task_collector(bld.path, env, bld))
return
if env['ENABLE_PYTHON_BINDINGS']:
task = gen_ns3_compat_pymod_task(env=env.derive())
task.set_outputs(bld.path.find_or_declare("ns3.py"))
task.dep_vars = ['PYTHON_MODULES_BUILT']
task.bld = bld
grp = bld.get_group(bld.current_group)
grp.append(task)
bld.new_task_gen(features='copy',
source="ns__init__.py",
target='ns/__init__.py')
bld.install_as('${PYTHONDIR}/ns/__init__.py', 'ns__init__.py')
# note: the actual build commands for the python bindings are in
# src/wscript, not here.
Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

+40 -31
View File
@@ -1,9 +1,19 @@
The Waf build system is used to build ns-3. Waf is a Python-based
build system (http://www.freehackers.org/~tnagy/waf.html)
Note: We've added a wiki page with more complete build instructions
than the quick ones you find below:
http://www.nsnam.org/wiki/index.php/Installation
=== Installing Waf ===
The top-level ns-3 directory should contain a current waf script.
The top-level ns-3 directory should contain a current waf script, so
there is no need to have WAF installed in the system. We are using
some extensions to WAF, which can be found in the 'waf-tools'
directory. The upstream location for these WAF extensions is:
https://code.launchpad.net/~gjc/waf/cmd
=== Building with Waf ===
@@ -13,29 +23,29 @@ To build ns-3 with waf type the commands from the top-level directory:
To see valid configure options, type ./waf --help. The most important
option is -d <debug level>. Valid debug levels (which are listed in
waf --help) are: "debug" or "optimized". It is
waf --help) are: "debug" or "optimized", with debug being default. It is
also possible to change the flags used for compilation with (e.g.):
CXXFLAGS="-O3" ./waf configure.
CXXFLAGS="-O3" ./waf configure. By default, ns-3 is built as debug code,
with examples and tests disabled, and with python bindings enabled.
[ Note: Unlike some other build tools, to change the build target,
the option must be supplied during the configure stage rather than
the build stage (i.e., "./waf -d optimized" will not work; instead, do
"./waf -d optimized configure; ./waf" ]
The resulting binaries are placed in build/<debuglevel>/srcpath.
The resulting executables and libraries are placed in build/.
Other waf usages include:
1. ./waf check
Runs the unit tests
1. ./waf configure --enable-examples --enable-tests
Turn on examples and tests.
2. ./waf --doxygen
2. ./waf configure --disable-python
Disable python bindings.
3. ./waf --doxygen
Run doxygen to generate documentation
3. ./waf --lcov-report
Run code coverage analysis (assuming the project was configured
with --enable-gcov)
4. ./waf --run "program [args]"
Run a ns3 program, given its target name, with the given
arguments. This takes care of automatically modifying the the
@@ -63,36 +73,35 @@ with --enable-gcov)
It includes all files in the source directory, except some particular
extensions that are blacklisted, such as back files (ending in ~).
=== Extending ns-3 ===
To add new modules:
1. Create the module directory under src (or src/devices, or whatever);
1. Create the module directory under src;
2. Add the source files to it;
3. Add a 'wscript' describing it;
4. Add the module subdirectory name to the all_modules list in src/wscript.
A convenience program to auto-generate the template of a new module can
be found in src/create-module.py.
A module's wscript file is basically a regular Waf script. A ns-3
module is created as a cpp/shlib object, like this:
def build(bld):
obj = bld.create_obj('cpp', 'shlib')
module = bld.create_ns3_module('ns3-mymodule', ['core'])
module.source = [
'model/ns3-mymodule.cc',
'helper/ns3-mymodule-helper.cc',
]
## set module name; by convention it starts with ns3-
obj.name = 'ns3-mymodule'
obj.target = obj.name
## list dependencies to other modules
obj.uselib_local = ['ns3-core']
## list source files (private or public header files excluded)
obj.source = [
'mymodule.cc',
]
## list module public header files
headers = bld.create_obj('ns3header')
headers = bld.new_task_gen(features=['ns3header'])
headers.module = 'ns3-mymodule'
headers.source = [
'mymodule-header.h',
]
'model/ns3-mymodule.h',
'helper/ns3-mymodule-helper.h',
]
if bld.env.ENABLE_EXAMPLES:
bld.add_subdirs('examples')
# bld.ns3_python_bindings()
+2 -210
View File
@@ -1,210 +1,2 @@
The Ns-3 Coding Style
/*
* Note: This file is incomplete and will be converted to non-text (html,pdf)
* formats at a future date
*/
1) Code layout
-----------
The code layout follows the GNU coding standard layout for C and extends
it to C++. Do not use tabs for indentation. Indentation spacing is 2
spaces as outlined below:
void
Foo (void)
{
if (test)
{
// do stuff here
}
else
{
// do other stuff here
}
for (int i = 0; i < 100; i++)
{
// do loop
}
while (test)
{
// do while
}
do
{
// do stuff
} while ();
}
The following is not recommended:
if (test) statement
if (test)
statement
for (...) statement
Each statement should be put on a separate line to increase readability.
Short one-line comments can use the C++ comment style, that is, '//'
but longer comments should use C-style comments:
/*
*
*
*/
2) Naming Patterns
---------------
2.1) Name encoding
-------------
Function, Method, and Type names should follow the CamelCase convention:
words are joined without spaces and are capitalized. For example,
"my computer" is transformed into MyComputer. Do not use all capital
letters such as MAC or, PHY, but choose instead Mac or Phy. Do not use
all capital letters, even for acronyms such as EDCA: use Edca instead.
The goal of the CamelCase convention is to ensure that the words which
make up a name can be separated by the eye: the initial Caps fills
that role.
Variable names should follow a slight variation on the base CamelCase
convention: camelBack. For example, the variable "user name" would be
named "userName". This variation on the basic naming pattern is used to
allow a reader to distinguish a variable name from its type. For example,
"UserName userName;" would be used to declare a variable named userName
of type UserName.
Global variables should be prefixed with a "g_" and member variables
(including static member variables) should be prefixed with a "m_". The
goal of that prefix is to give a reader a sense of where a variable of
a given name is declared to allow the reader to locate the variable
declaration and infer the variable type from that declaration. For example
you could declare in your class header my-class.h:
class MyClass
{
void MyMethod (int aVar);
int m_aVar;
static int m_anotherVar;
};
and implement in your class file my-class.cc:
int MyClass::m_anotherVar = 10;
static int g_aStaticVar = 100;
int g_aGlobalVar = 1000;
void
MyClass::MyMethod (int aVar)
{
m_aVar = aVar;
}
2.2) Choosing names
Variable, function, method, and type names should be based on the
english language. Furthermore, always try to choose descriptive
names for them. Types are often english names such as: Packet,
Buffer, Mac, or Phy. Functions and Methods are often named
based on verbs and adjectives: GetX, DoDispose, ClearArray, etc.
A long descriptive name which requires a lot of typing is always
better than a short name which is hard to decipher. Do not use
abbreviations in names unless the abbreviation is really unambiguous
and obvious to everyone. Do not use short inapropriate names such
as foo, bar, or baz. The name of an item should always match its
purpose. As such, names such as tmp to identify a temporary
variable or such as 'i' to identify a loop index are ok.
3) File layout and code organization
---------------------------------
A class named MyClass should be declared in a header named my-class.h
and implemented in a source file named my-class.cc. The goal of this
naming pattern is to allow a reader to quickly navigate through
the ns-3 codebase to locate the source file relevant to a specific
type.
Each my-class.h header should start with the following comments: the
first line ensures that developers who use the emacs editor will be
able to indent your code correctly. The following lines ensure that
your code is licensed under the GPL, that the copyright holders
are properly identified (typically, you or your employer), and
that the actual author of the code is identified. The latter is
purely informational and we use it to try to track the most
appropriate person to review a patch or fix a bug.
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) YEAR COPYRIGHTHOLDER
*
* 3-paragran GPL blurb
*
* Author: MyName <myemail@foo.com>
*/
Below these C-style comments, always include the following which
defines a set of header guards (MY_CLASS_H) used to avoid multiple
header includes, which ensures that your code is included
in the "ns3" namespace and which provides a set of doxygen comments
for the public part of your class API. Detailed information
on the set of tags available for doxygen documentation is described
in the doxygen website: http://www.doxygen.org.
#ifndef MY_CLASS_H
#define MY_CLASS_H
namespace n3 {
/**
* \brief short one-line description of the purpose of your class
*
* A longer description of the purpose of your class after a blank
* empty line.
*/
class MyClass
{
public:
MyClass ();
/**
* \param firstParam a short description of the purpose of this parameter
* \returns a short description of what is returned from this function.
*
* A detailed description of the purpose of the method.
*/
int DoFoo (int firstParam);
private:
void MyPrivateMethod (void);
int m_myPrivateMemberVariable;
};
} // namespace ns3
#endif /* MY_CLASS_H */
The my-class.cc file is structured similarly:
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) YEAR COPYRIGHTHOLDER
*
* 3-paragran GPL blurb
*
* Author: MyName <myemail@foo.com>
*/
#include "my-class.h"
namespace ns3 {
MyClass::MyClass ()
{}
...
} // namespace ns3
The project coding style document is maintained at:
http://www.nsnam.org/developers/contributing-code/coding-style/
+4 -60
View File
@@ -1,63 +1,7 @@
Contributing to the ns-3 project
--------------------------------
ns-3 is an open source project backed by an NSF CISE CRI grant.
Although the NSF PIs have specific aims to fulfill, we want others to
contribute, and we'd like to have a broad community of users and
developers, with the goal of a self-sustaining project downstream.
The project is currently in a bootstrapping phase, but we welcome
ambitious developers who might want to help shape the early design.
Despite the lack of a formal contribution process to the ns-3
project, there are a number of steps which we expect every
potential contributor to follow. These naturally stem from
the open-source roots of the project:
- first, you should subscribe to the ns-developers
mailing-list (see http://www.nsnam.org/mailing_lists.html)
- then, you should send an email there stating your interest
in working on a specific part of the models and trying
to explain how you would like to implement it, what
resources you have, etc.
- you should be prepared to work together with the other
potential contributors who want to work on the same models.
- you should be prepared to go through code reviews with the
ns-3 development team prior to integration. The goal of these
code reviews is to:
- ensure adherence to the coding style of the project
(see doc/codingstyle.html)
- ensure that the structure of your code has a certain
coherence with regard to the rest of the ns-3 codebase
- improve the quality of the code: we strongly believe in
the old saying: "many eyes make all bugs shallow".
- increase code reuse by trying to generalize certain
useful pieces of your code to make them available to
other models.
- you should be prepared to try to integrate as many tests
in the codebase as possible: we understand that writing
tests is not sexy and that not everyone is convinced that
they improve the code-writing poductivity which is why
we do not enforce strict rules about testing. However,
we expect model authors to answer basic questions about
how they plan to test and validate their models.
- you should be prepared to maintain your model once it is
integrated: while we consider every bug filed against the
simulator as being a bug we must deal with and while we
will try to fix as many bugs as humanly possible, we
also expect model authors to act as responsible maintainers
and be reactive to bug reports concerning their models.
- The project has decided upon GNU GPLv2 as the licensing structure.
All simulation software in the ns-3 repositories will be GNU GPLv2
or GNU GPLv2-compatible (with non-GPLv2 licensing reserved for
ports of pre-existing code under a different license, such as BSD).
You do not have to assign your copyright to the ns-3 project but
you must accept the terms of the GPLv2 and attest that your
contributions can be licensed under those terms. See the
following link:
http://www.fsf.org/licensing/licenses/info/GPLv2.html
ns-3 is a free, open source software project that welcomes contributions
from users worldwide. Please see the following web page for how to
contribute:
http://www.nsnam.org/developers/contributing-code/
+821 -589
View File
File diff suppressed because it is too large Load Diff
+74
View File
@@ -0,0 +1,74 @@
/**
* \mainpage ns-3 Documentation
*
* \section intro-sec Introduction
* <a href="http://www.nsnam.org/">ns-3</a> documentation is maintained using
* <a href="http://www.doxygen.org">Doxygen</a>.
* Doxygen is typically used for
* API documentation, and organizes such documentation across different
* modules. This project uses Doxygen for building the definitive
* maintained API documentation. Additional ns-3 project documentation
* can be found at the
* <a href="http://www.nsnam.org/documentation/latest">project web site</a>.
*
* \section install-sec Building the Documentation
*
* ns-3 requires Doxygen version 1.5.4 or greater to fully build all items,
* although earlier versions of Doxygen will mostly work.
*
* Type "./waf --doxygen" or "./waf --doxygen-no-build" to build the
* documentation. The doc/ directory contains
* configuration for Doxygen (doxygen.conf) and main.h. The Doxygen
* build process puts html files into the doc/html/ directory, and latex
* filex into the doc/latex/ directory.
*
* \section module-sec Module overview
*
* The ns-3 library is split across many modules organized under the
* <b><a href="modules.html">Modules</a></b> tab.
* - aodv
* - applications
* - bridge
* - click
* - config-store
* - core
* - csma
* - csma-layout
* - dsdv
* - emu
* - energy
* - flow-monitor
* - internet
* - lte
* - mesh
* - mobility
* - mpi
* - netanim
* - network
* - nix-vector-routing
* - ns3tcp
* - ns3wifi
* - olsr
* - openflow
* - point-to-point
* - point-to-point-layout
* - propagation
* - spectrum
* - stats
* - tap-bridge
* - test
* - tools
* - topology-read
* - uan
* - virtual-net-device
* - visualizer
* - wifi
* - wimax
*
*/
/**
* \namespace ns3
* \brief Every class exported by the ns3 library is enclosed in the
* ns3 namespace.
*/
-68
View File
@@ -1,68 +0,0 @@
/**
* \mainpage An Introduction to ns-3
*
* The ns-3 library is split across multiple modules:
* - core: located in src/core and contains a number of facilities which
* do not depend on any other module. Some of these facilities are
* OS-dependent.
* - simulator: located in src/simulator and contains event scheduling
* facilities.
* - common: located in src/common and contains facilities specific
* to network simulations but shared by pretty much every model
* of a network component.
* - node: located in src/node. Defines the abstract interfaces which
* must be implemented by every node and more specifically, by ipv4 nodes.
* - devices: located in src/devices. Contains a set of MAC-level models
*
* The "core" module contains:
* - a Functor class: ns3::Callback
* - an os-independent interface to get access to the elapsed wall clock time: ns3::SystemWallClockMs
* - a class to register regression tests with the test manager: ns3::Test and ns3::TestManager
* - debugging facilities: \ref logging, \ref assert, \ref error
* - \ref randomvariable
* - \ref config
* - a base class for objects which need to support reference counting
* and QueryInterface: ns3::Object and ns3::InterfaceId
* - a set of low-level trace facilities integrated in the ns3::Object system: \ref tracing
* - a ns3::ComponentManager which can be used to manage the creation
* of any object which derives from ns3::Object through an ns3::ClassId
* - a smart-pointer class ns3::Ptr designed to work together with ns3::Object
*
* The "simulator" module contains:
* - a time management class to hold a time and convert between various time units: ns3::Time
* - a scheduler base class used to implement new simulation event schedulers:
* ns3::Scheduler and ns3::SchedulerFactory
* - a simulator class used to create, schedule and cancel events: ns3::Simulator
*
* The "core" module contains:
* - a packet class to create and manipulate simulation packets: ns3::Packet, ns3::Header,
* and ns3::Trailer. This packet class also supports per-packet ns3::Tag which are
* globs of data which can be attached to any packet.
*
* The "node" module contains:
* - a ns3::Node base class which should be subclassed by any new type of
* network Node.
* - models which abstract the MAC-layer from the IP layer protocols:
* ns3::NetDevice and ns3::Channel.
* - models which abstract the application-layer API: ns3::Application,
* ns3::Socket, ns3::SocketFactory, and, ns3::Udp
*
* The "internet-node" module contains a set of classes which implement the
* APIs defined in the "node" module:
* - an Ipv4/Udp stack with socket support
* - an ARP module
* - an InternetNode class which is a Node subclass.
*
* The "devices" module contains:
* - a PointToPoint MAC device: ns3::PointToPointNetDevice, ns3::PointToPointChannel,
* and ns3::PointToPointTopology.
*/
/**
* \namespace ns3
* \brief Every class exported by the ns3 library is enclosed in the
* ns3 namespace.
*/
/**
* \defgroup constants Constants
* \brief Constants you can change
*/
+163
View File
@@ -0,0 +1,163 @@
EPSTOPDF = epstopdf
DIA = dia
CONVERT = convert
FIGURES = figures
VPATH = $(FIGURES)
IMAGES_EPS = \
$(FIGURES)/software-organization.eps \
# rescale pdf figures as necessary
$(FIGURES)/software-organization.pdf_width = 5in
IMAGES_PNG = \
$(FIGURES)/plot-2d.png \
$(FIGURES)/plot-2d-with-error-bars.png \
$(FIGURES)/plot-3d.png \
${IMAGES_EPS:.eps=.png}
IMAGES_PDF = ${IMAGES_EPS:.eps=.pdf}
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
%.eps : %.dia; $(DIA) -t eps $< -e $@
%.png : %.dia; $(DIA) -t png $< -e $@
%.png : %.eps; $(CONVERT) $< $@
%.pdf : %.eps; $(EPSTOPDF) $< -o=$@; if test x$($@_width) != x; then TMPFILE=`mktemp`; ./rescale-pdf.sh $($@_width) $@ $${TMPFILE} && mv $${TMPFILE} $@; fi
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
-rm -rf $(BUILDDIR)
-rm -rf $(IMAGES)
frag: pickle
@if test ! -d $(BUILDDIR)/frag; then mkdir $(BUILDDIR)/frag; fi
pushd $(BUILDDIR)/frag && ../../pickle-to-xml.py ../pickle/index.fpickle > navigation.xml && popd
cp -r $(BUILDDIR)/pickle/_images $(BUILDDIR)/frag
html: $(IMAGES)
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml: $(IMAGES)
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml: $(IMAGES)
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle: $(IMAGES)
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json: $(IMAGES)
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp: $(IMAGES)
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp: $(IMAGES)
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ns-3.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ns-3.qhc"
devhelp: $(IMAGES)
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/ns-3"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/ns-3"
@echo "# devhelp"
epub: $(IMAGES)
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex: $(IMAGES)
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf: $(IMAGES)
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
make -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text: $(IMAGES)
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man: $(IMAGES)
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
changes: $(IMAGES)
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck: $(IMAGEs)
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest: $(IMAGES)
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
+18
View File
@@ -0,0 +1,18 @@
Please write image files in a vector graphics format, when possible, and
generate the .png and .pdf versions on the fly (see ../Makefile).
The currently supported tool is dia. xfig could be added similarly
if someone wants to add it. The main requirement for adding another format
is that the tool to edit it is freely available and that a cron script can
autogenerate the pdf and png from the figure source. Tgif (.obj) files
were once used but the file conversions require a valid X display to
be running, and are therefore to be avoided since our code server
does not run such a server. Tgif pdf conversions were also cumbersome.
Store the .dia versions in mercurial, but not the .png or .pdfs.
If the figure is not available in a vector graphics format, store both
a .png and a .pdf version in this directory.
If you add a source (.dia) file here, remember to add it to
the list of figure sources in the Makefile in the directory above
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.
+12
View File
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
TMPFILE=`mktemp`
echo "\documentclass{book}
\usepackage{pdfpages}
\begin{document}
\includepdf[width=${1},fitpaper]{${2}}
\end{document}" >${TMPFILE}.tex
pdflatex -output-directory /tmp ${TMPFILE}.tex >/dev/null 2>/dev/null
cp ${TMPFILE}.pdf ${3}
View File
+887
View File
@@ -0,0 +1,887 @@
.. include:: replace.txt
Attributes
----------
In |ns3| simulations, there are two main aspects to configuration:
* the simulation topology and how objects are connected
* the values used by the models instantiated in the topology
This chapter focuses on the second item above: how the many values in use in
|ns3| are organized, documented, and modifiable by |ns3| users. The |ns3|
attribute system is also the underpinning of how traces and statistics are
gathered in the simulator.
Before delving into details of the attribute value system, it will help to
review some basic properties of class :cpp:class:`ns3::Object`.
Object Overview
***************
|ns3| is fundamentally a C++ object-based system. By this we mean that new C++
classes (types) can be declared, defined, and subclassed as usual.
Many |ns3| objects inherit from the :cpp:class:`ns3::Object` base class. These
objects have some additional properties that we exploit for organizing the
system and improving the memory management of our objects:
* a "metadata" system that links the class name to a lot of meta-information
about the object, including the base class of the subclass, the set of
accessible constructors in the subclass, and the set of "attributes" of the
subclass
* a reference counting smart pointer implementation, for memory management.
|ns3| objects that use the attribute system derive from either
:cpp:class:`ns3::Object` or :cpp:class:`ns3::ObjectBase`. Most |ns3| objects we
will discuss derive from :cpp:class:`ns3::Object`, but a few that are outside
the smart pointer memory management framework derive from
:cpp:class:`ns3::ObjectBase`.
Let's review a couple of properties of these objects.
Smart pointers
**************
As introduced in the |ns3| tutorial, |ns3| objects are memory managed by a
`reference counting smart pointer implementation
<http://en.wikipedia.org/wiki/Smart_pointer>`_, class :cpp:class:`ns3::Ptr`.
Smart pointers are used extensively in the |ns3| APIs, to avoid passing
references to heap-allocated objects that may cause memory leaks.
For most basic usage (syntax), treat a smart pointer like a regular pointer:::
Ptr<WifiNetDevice> nd = ...;
nd->CallSomeFunction ();
// etc.
CreateObject
++++++++++++
As we discussed above in :ref:`Memory management and class Ptr`, at the
lowest-level API, objects of type :cpp:class:`ns3::Object` are not instantiated
using ``operator new`` as usual but instead by a templated function called
:cpp:func:`CreateObject()`.
A typical way to create such an object is as follows:::
Ptr<WifiNetDevice> nd = CreateObject<WifiNetDevice> ();
You can think of this as being functionally equivalent to:::
WifiNetDevice* nd = new WifiNetDevice ();
Objects that derive from :cpp:class:`ns3::Object` must be allocated on the heap
using CreateObject(). Those deriving from :cpp:class:`ns3::ObjectBase`, such as
|ns3| helper functions and packet headers and trailers, can be allocated on the
stack.
In some scripts, you may not see a lot of CreateObject() calls in the code; this
is because there are some helper objects in effect that are doing the
CreateObject()s for you.
TypeId
++++++
|ns3| classes that derive from class ns3::Object can include a metadata class
called ``TypeId`` that records meta-information about the class, for use in the
object aggregation and component manager systems:
* a unique string identifying the class
* the base class of the subclass, within the metadata system
* the set of accessible constructors in the subclass
Object Summary
++++++++++++++
Putting all of these concepts together, let's look at a specific
example: class :cpp:class:`ns3::Node`.
The public header file node.h has a declaration that includes a static GetTypeId
function call:::
class Node : public Object
{
public:
static TypeId GetTypeId (void);
...
This is defined in the ``node.cc`` file as follows:::
TypeId
Node::GetTypeId (void)
{
static TypeId tid = TypeId ("ns3::Node")
.SetParent<Object> ()
.AddConstructor<Node> ()
.AddAttribute ("DeviceList", "The list of devices associated to this Node.",
ObjectVectorValue (),
MakeObjectVectorAccessor (&Node::m_devices),
MakeObjectVectorChecker<NetDevice> ())
.AddAttribute ("ApplicationList", "The list of applications associated to this Node.",
ObjectVectorValue (),
MakeObjectVectorAccessor (&Node::m_applications),
MakeObjectVectorChecker<Application> ())
.AddAttribute ("Id", "The id (unique integer) of this Node.",
TypeId::ATTR_GET, // allow only getting it.
UintegerValue (0),
MakeUintegerAccessor (&Node::m_id),
MakeUintegerChecker<uint32_t> ())
;
return tid;
}
Consider the TypeId of an |ns3| ``Object`` class as an extended form of run time
type information (RTTI). The C++ language includes a simple kind of RTTI in
order to support ``dynamic_cast`` and ``typeid`` operators.
The "``.SetParent<Object> ()``" call in the declaration above is used in
conjunction with our object aggregation mechanisms to allow safe up- and
down-casting in inheritance trees during ``GetObject``.
The "``.AddConstructor<Node> ()``" call is used in conjunction with our abstract
object factory mechanisms to allow us to construct C++ objects without forcing a
user to know the concrete class of the object she is building.
The three calls to "``.AddAttribute``" associate a given string with a strongly
typed value in the class. Notice that you must provide a help string which may
be displayed, for example, via command line processors. Each ``Attribute`` is
associated with mechanisms for accessing the underlying member variable in the
object (for example, ``MakeUintegerAccessor`` tells the generic ``Attribute``
code how to get to the node ID above). There are also "Checker" methods which
are used to validate values.
When users want to create Nodes, they will usually call some form of
``CreateObject``,::
Ptr<Node> n = CreateObject<Node> ();
or more abstractly, using an object factory, you can create a ``Node`` object
without even knowing the concrete C++ type::
ObjectFactory factory;
const std::string typeId = "ns3::Node'';
factory.SetTypeId (typeId);
Ptr<Object> node = factory.Create <Object> ();
Both of these methods result in fully initialized attributes being available
in the resulting ``Object`` instances.
We next discuss how attributes (values associated with member variables or
functions of the class) are plumbed into the above TypeId.
Attribute Overview
******************
The goal of the attribute system is to organize the access of
internal member objects of a simulation. This goal arises because,
typically in simulation, users will cut and paste/modify existing
simulation scripts, or will use higher-level simulation constructs,
but often will be interested in studying or tracing particular
internal variables. For instance, use cases such as:
* "I want to trace the packets on the wireless interface only on the first
access point"
* "I want to trace the value of the TCP congestion window (every time it
changes) on a particular TCP socket"
* "I want a dump of all values that were used in my simulation."
Similarly, users may want fine-grained access to internal variables in the
simulation, or may want to broadly change the initial value used for a
particular parameter in all subsequently created objects. Finally, users may
wish to know what variables are settable and retrievable in a simulation
configuration. This is not just for direct simulation interaction on the command
line; consider also a (future) graphical user interface that would like to be
able to provide a feature whereby a user might right-click on an node on the
canvas and see a hierarchical, organized list of parameters that are settable on
the node and its constituent member objects, and help text and default values
for each parameter.
Functional overview
+++++++++++++++++++
We provide a way for users to access values deep in the system, without having
to plumb accessors (pointers) through the system and walk pointer chains to get
to them. Consider a class DropTailQueue that has a member variable that is an
unsigned integer ``m_maxPackets``; this member variable controls the depth of
the queue.
If we look at the declaration of DropTailQueue, we see the following:::
class DropTailQueue : public Queue {
public:
static TypeId GetTypeId (void);
...
private:
std::queue<Ptr<Packet> > m_packets;
uint32_t m_maxPackets;
};
Let's consider things that a user may want to do with the value of
m_maxPackets:
* Set a default value for the system, such that whenever a new DropTailQueue is
created, this member is initialized to that default.
* Set or get the value on an already instantiated queue.
The above things typically require providing Set() and Get() functions, and some
type of global default value.
In the |ns3| attribute system, these value definitions and accessor functions
are moved into the TypeId class; e.g.:::
NS_OBJECT_ENSURE_REGISTERED (DropTailQueue);
TypeId DropTailQueue::GetTypeId (void)
{
static TypeId tid = TypeId ("ns3::DropTailQueue")
.SetParent<Queue> ()
.AddConstructor<DropTailQueue> ()
.AddAttribute ("MaxPackets",
"The maximum number of packets accepted by this DropTailQueue.",
UintegerValue (100),
MakeUintegerAccessor (&DropTailQueue::m_maxPackets),
MakeUintegerChecker<uint32_t> ())
;
return tid;
}
The AddAttribute() method is performing a number of things with this
value:
* Binding the variable m_maxPackets to a string "MaxPackets"
* Providing a default value (100 packets)
* Providing some help text defining the value
* Providing a "checker" (not used in this example) that can be used to set
bounds on the allowable range of values
The key point is that now the value of this variable and its default value are
accessible in the attribute namespace, which is based on strings such as
"MaxPackets" and TypeId strings. In the next section, we will provide an example
script that shows how users may manipulate these values.
Note that initialization of the attribute relies on the macro
``NS_OBJECT_ENSURE_REGISTERED`` (DropTailQueue) being called; if you leave this
out of your new class implementation, your attributes will not be initialized
correctly.
While we have described how to create attributes, we still haven't described how
to access and manage these values. For instance, there is no ``globals.h``
header file where these are stored; attributes are stored with their classes.
Questions that naturally arise are how do users easily learn about all of the
attributes of their models, and how does a user access these attributes, or
document their values as part of the record of their simulation?
Default values and command-line arguments
+++++++++++++++++++++++++++++++++++++++++
Let's look at how a user script might access these values.
This is based on the script found at ``src/point-to-point/examples/main-attribute-value.cc``,
with some details stripped out.::
//
// This is a basic example of how to use the attribute system to
// set and get a value in the underlying system; namely, an unsigned
// integer of the maximum number of packets in a queue
//
int
main (int argc, char *argv[])
{
// By default, the MaxPackets attribute has a value of 100 packets
// (this default can be observed in the function DropTailQueue::GetTypeId)
//
// Here, we set it to 80 packets. We could use one of two value types:
// a string-based value or a Uinteger value
Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("80"));
// The below function call is redundant
Config::SetDefault ("ns3::DropTailQueue::MaxPackets", UintegerValue (80));
// Allow the user to override any of the defaults and the above
// SetDefaults() at run-time, via command-line arguments
CommandLine cmd;
cmd.Parse (argc, argv);
The main thing to notice in the above are the two calls to
``Config::SetDefault``. This is how we set the default value
for all subsequently instantiated DropTailQueues. We illustrate
that two types of Value classes, a StringValue and a UintegerValue class,
can be used to assign the value to the attribute named by
"ns3::DropTailQueue::MaxPackets".
Now, we will create a few objects using the low-level API; here,
our newly created queues will not have a m_maxPackets initialized to
100 packets but to 80 packets, because of what we did above with
default values.::
Ptr<Node> n0 = CreateObject<Node> ();
Ptr<PointToPointNetDevice> net0 = CreateObject<PointToPointNetDevice> ();
n0->AddDevice (net0);
Ptr<Queue> q = CreateObject<DropTailQueue> ();
net0->AddQueue(q);
At this point, we have created a single node (Node 0) and a single
PointToPointNetDevice (NetDevice 0) and added a DropTailQueue to it.
Now, we can manipulate the MaxPackets value of the already instantiated
DropTailQueue. Here are various ways to do that.
Pointer-based access
++++++++++++++++++++
We assume that a smart pointer (Ptr) to a relevant network device is in hand; in
the current example, it is the ``net0`` pointer.
One way to change the value is to access a pointer to the underlying queue and
modify its attribute.
First, we observe that we can get a pointer to the (base class) queue via the
PointToPointNetDevice attributes, where it is called TxQueue::
PointerValue tmp;
net0->GetAttribute ("TxQueue", tmp);
Ptr<Object> txQueue = tmp.GetObject ();
Using the GetObject function, we can perform a safe downcast to a DropTailQueue,
where MaxPackets is a member::
Ptr<DropTailQueue> dtq = txQueue->GetObject <DropTailQueue> ();
NS_ASSERT (dtq != 0);
Next, we can get the value of an attribute on this queue. We have introduced
wrapper "Value" classes for the underlying data types, similar to Java wrappers
around these types, since the attribute system stores values and not disparate
types. Here, the attribute value is assigned to a UintegerValue, and the Get()
method on this value produces the (unwrapped) uint32_t.::
UintegerValue limit;
dtq->GetAttribute ("MaxPackets", limit);
NS_LOG_INFO ("1. dtq limit: " << limit.Get () << " packets");
Note that the above downcast is not really needed; we could have done the same
using the Ptr<Queue> even though the attribute is a member of the subclass::
txQueue->GetAttribute ("MaxPackets", limit);
NS_LOG_INFO ("2. txQueue limit: " << limit.Get () << " packets");
Now, let's set it to another value (60 packets)::
txQueue->SetAttribute("MaxPackets", UintegerValue (60));
txQueue->GetAttribute ("MaxPackets", limit);
NS_LOG_INFO ("3. txQueue limit changed: " << limit.Get () << " packets");
Namespace-based access
++++++++++++++++++++++
An alternative way to get at the attribute is to use the configuration
namespace. Here, this attribute resides on a known path in this namespace; this
approach is useful if one doesn't have access to the underlying pointers and
would like to configure a specific attribute with a single statement.::
Config::Set ("/NodeList/0/DeviceList/0/TxQueue/MaxPackets", UintegerValue (25));
txQueue->GetAttribute ("MaxPackets", limit);
NS_LOG_INFO ("4. txQueue limit changed through namespace: " <<
limit.Get () << " packets");
We could have also used wildcards to set this value for all nodes and all net
devices (which in this simple example has the same effect as the previous
Set())::
Config::Set ("/NodeList/*/DeviceList/*/TxQueue/MaxPackets", UintegerValue (15));
txQueue->GetAttribute ("MaxPackets", limit);
NS_LOG_INFO ("5. txQueue limit changed through wildcarded namespace: " <<
limit.Get () << " packets");
Object Name Service-based access
++++++++++++++++++++++++++++++++
Another way to get at the attribute is to use the object name service facility.
Here, this attribute is found using a name string. This approach is useful if
one doesn't have access to the underlying pointers and it is difficult to
determine the required concrete configuration namespaced path.::
Names::Add ("server", serverNode);
Names::Add ("server/eth0", serverDevice);
...
Config::Set ("/Names/server/eth0/TxQueue/MaxPackets", UintegerValue (25));
:ref:`Object names` for a fuller treatment of the |ns3| configuration namespace.
Setting through constructors helper classes
+++++++++++++++++++++++++++++++++++++++++++
Arbitrary combinations of attributes can be set and fetched from
the helper and low-level APIs; either from the constructors themselves:::
Ptr<Object> p = CreateObject<MyNewObject> ("n1", v1, "n2", v2, ...);
or from the higher-level helper APIs, such as:::
mobility.SetPositionAllocator ("GridPositionAllocator",
"MinX", DoubleValue (-100.0),
"MinY", DoubleValue (-100.0),
"DeltaX", DoubleValue (5.0),
"DeltaY", DoubleValue (20.0),
"GridWidth", UintegerValue (20),
"LayoutType", StringValue ("RowFirst"));
Implementation details
++++++++++++++++++++++
Value classes
~~~~~~~~~~~~~
Readers will note the new FooValue classes which are subclasses of the
AttributeValue base class. These can be thought of as an intermediate class that
can be used to convert from raw types to the Values that are used by the
attribute system. Recall that this database is holding objects of many types
with a single generic type. Conversions to this type can either be done using an
intermediate class (IntegerValue, DoubleValue for "floating point") or via
strings. Direct implicit conversion of types to Value is not really practical.
So in the above, users have a choice of using strings or values:::
p->Set ("cwnd", StringValue ("100")); // string-based setter
p->Set ("cwnd", IntegerValue (100)); // integer-based setter
The system provides some macros that help users declare and define
new AttributeValue subclasses for new types that they want to introduce into
the attribute system:
* ATTRIBUTE_HELPER_HEADER
* ATTRIBUTE_HELPER_CPP
Initialization order
~~~~~~~~~~~~~~~~~~~~
Attributes in the system must not depend on the state of any other Attribute in
this system. This is because an ordering of Attribute initialization is not
specified, nor enforced, by the system. A specific example of this can be seen
in automated configuration programs such as :cpp:class:`ns3::ConfigStore`.
Although a given model may arrange it so that Attributes are initialized in a
particular order, another automatic configurator may decide independently to
change Attributes in, for example, alphabetic order.
Because of this non-specific ordering, no Attribute in the system may have any
dependence on any other Attribute. As a corollary, Attribute setters must never
fail due to the state of another Attribute. No Attribute setter may change (set)
any other Attribute value as a result of changing its value.
This is a very strong restriction and there are cases where Attributes must set
consistently to allow correct operation. To this end we do allow for consistency
checking *when the attribute is used* (cf. NS_ASSERT_MSG or NS_ABORT_MSG).
In general, the attribute code to assign values to the underlying class member
variables is executed after an object is constructed. But what if you need the
values assigned before the constructor body executes, because you need them in
the logic of the constructor? There is a way to do this, used for example in the
class :cpp:class:`ns3::ConfigStore`: call ``ObjectBase::ConstructSelf ()`` as
follows:::
ConfigStore::ConfigStore ()
{
ObjectBase::ConstructSelf (AttributeList ());
// continue on with constructor.
}
Extending attributes
********************
The |ns3| system will place a number of internal values under the attribute
system, but undoubtedly users will want to extend this to pick up ones we have
missed, or to add their own classes to this.
Adding an existing internal variable to the metadata system
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Consider this variable in class TcpSocket:::
uint32_t m_cWnd; // Congestion window
Suppose that someone working with TCP wanted to get or set the value of that
variable using the metadata system. If it were not already provided by |ns3|,
the user could declare the following addition in the runtime metadata system (to
the TypeId declaration for TcpSocket):::
.AddAttribute ("Congestion window",
"Tcp congestion window (bytes)",
UintegerValue (1),
MakeUintegerAccessor (&TcpSocket::m_cWnd),
MakeUintegerChecker<uint16_t> ())
Now, the user with a pointer to the TcpSocket can perform operations such as
setting and getting the value, without having to add these functions explicitly.
Furthermore, access controls can be applied, such as allowing the parameter to
be read and not written, or bounds checking on the permissible values can be
applied.
Adding a new TypeId
+++++++++++++++++++
Here, we discuss the impact on a user who wants to add a new class to |ns3|;
what additional things must be done to hook it into this system.
We've already introduced what a TypeId definition looks like:::
TypeId
RandomWalk2dMobilityModel::GetTypeId (void)
{
static TypeId tid = TypeId ("ns3::RandomWalk2dMobilityModel")
.SetParent<MobilityModel> ()
.SetGroupName ("Mobility")
.AddConstructor<RandomWalk2dMobilityModel> ()
.AddAttribute ("Bounds",
"Bounds of the area to cruise.",
RectangleValue (Rectangle (0.0, 0.0, 100.0, 100.0)),
MakeRectangleAccessor (&RandomWalk2dMobilityModel::m_bounds),
MakeRectangleChecker ())
.AddAttribute ("Time",
"Change current direction and speed after moving for this delay.",
TimeValue (Seconds (1.0)),
MakeTimeAccessor (&RandomWalk2dMobilityModel::m_modeTime),
MakeTimeChecker ())
// etc (more parameters).
;
return tid;
}
The declaration for this in the class declaration is one-line public member
method:::
public:
static TypeId GetTypeId (void);
Typical mistakes here involve:
* Not calling the SetParent method or calling it with the wrong type
* Not calling the AddConstructor method of calling it with the wrong type
* Introducing a typographical error in the name of the TypeId in its constructor
* Not using the fully-qualified c++ typename of the enclosing c++ class as the
name of the TypeId
None of these mistakes can be detected by the |ns3| codebase so, users
are advised to check carefully multiple times that they got these right.
Adding new class type to the attribute system
*********************************************
From the perspective of the user who writes a new class in the system and wants
to hook it in to the attribute system, there is mainly the matter of writing the
conversions to/from strings and attribute values. Most of this can be
copy/pasted with macro-ized code. For instance, consider class declaration for
Rectangle in the ``src/mobility/model`` directory:
Header file
+++++++++++
::
/**
* \brief a 2d rectangle
*/
class Rectangle
{
...
double xMin;
double xMax;
double yMin;
double yMax;
};
One macro call and two operators, must be added below the class declaration in
order to turn a Rectangle into a value usable by the ``Attribute`` system:::
std::ostream &operator << (std::ostream &os, const Rectangle &rectangle);
std::istream &operator >> (std::istream &is, Rectangle &rectangle);
ATTRIBUTE_HELPER_HEADER (Rectangle);
Implementation file
+++++++++++++++++++
In the class definition (``.cc`` file), the code looks like this:::
ATTRIBUTE_HELPER_CPP (Rectangle);
std::ostream &
operator << (std::ostream &os, const Rectangle &rectangle)
{
os << rectangle.xMin << "|" << rectangle.xMax << "|" << rectangle.yMin << "|"
<< rectangle.yMax;
return os;
}
std::istream &
operator >> (std::istream &is, Rectangle &rectangle)
{
char c1, c2, c3;
is >> rectangle.xMin >> c1 >> rectangle.xMax >> c2 >> rectangle.yMin >> c3
>> rectangle.yMax;
if (c1 != '|' ||
c2 != '|' ||
c3 != '|')
{
is.setstate (std::ios_base::failbit);
}
return is;
}
These stream operators simply convert from a string representation of the
Rectangle ("xMin|xMax|yMin|yMax") to the underlying Rectangle, and the modeler
must specify these operators and the string syntactical representation of an
instance of the new class.
ConfigStore
***********
The ConfigStore is a specialized database for attribute values and
default values. Although it is a separately maintained module in
``src/config-store/`` directory, we document it here because of its
sole dependency on |ns3| core module and attributes.
Values for |ns3| attributes can be stored in an ASCII or XML text file
and loaded into a future simulation. This feature is known as the
|ns3| ConfigStore. We can explore this system by using an example from
``src/config-store/examples/config-store-save.cc``.
First, all users must include the following statement:::
#include "ns3/config-store-module.h"
Next, this program adds a sample object A to show how the system
is extended:::
class A : public Object
{
public:
static TypeId GetTypeId (void) {
static TypeId tid = TypeId ("ns3::A")
.SetParent<Object> ()
.AddAttribute ("TestInt16", "help text",
IntegerValue (-2),
MakeIntegerAccessor (&A::m_int16),
MakeIntegerChecker<int16_t> ())
;
return tid;
}
int16_t m_int16;
};
NS_OBJECT_ENSURE_REGISTERED (A);
Next, we use the Config subsystem to override the defaults in a couple of
ways:::
Config::SetDefault ("ns3::A::TestInt16", IntegerValue (-5));
Ptr<A> a_obj = CreateObject<A> ();
NS_ABORT_MSG_UNLESS (a_obj->m_int16 == -5, "Cannot set A's integer attribute via Config::SetDefault");
Ptr<A> a2_obj = CreateObject<A> ();
a2_obj->SetAttribute ("TestInt16", IntegerValue (-3));
IntegerValue iv;
a2_obj->GetAttribute ("TestInt16", iv);
NS_ABORT_MSG_UNLESS (iv.Get () == -3, "Cannot set A's integer attribute via SetAttribute");
The next statement is necessary to make sure that (one of) the objects
created is rooted in the configuration namespace as an object instance.
This normally happens when you aggregate objects to ns3::Node or ns3::Channel
but here, since we are working at the core level, we need to create a
new root namespace object:::
Config::RegisterRootNamespaceObject (a2_obj);
Next, we want to output the configuration store. The examples show how
to do it in two formats, XML and raw text. In practice, one should perform
this step just before calling ``Simulator::Run ()``; it will allow the
configuration to be saved just before running the simulation.
There are three attributes that govern the behavior of the ConfigStore: "Mode",
"Filename", and "FileFormat". The Mode (default "None") configures whether
|ns3| should load configuration from a previously saved file (specify
"Mode=Load") or save it to a file (specify "Mode=Save"). The Filename (default
"") is where the ConfigStore should store its output data. The FileFormat
(default "RawText") governs whether the ConfigStore format is Xml or RawText
format.
The example shows:::
Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("output-attributes.xml"));
Config::SetDefault ("ns3::ConfigStore::FileFormat", StringValue ("Xml"));
Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Save"));
ConfigStore outputConfig;
outputConfig.ConfigureDefaults ();
outputConfig.ConfigureAttributes ();
// Output config store to txt format
Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("output-attributes.txt"));
Config::SetDefault ("ns3::ConfigStore::FileFormat", StringValue ("RawText"));
Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Save"));
ConfigStore outputConfig2;
outputConfig2.ConfigureDefaults ();
outputConfig2.ConfigureAttributes ();
Simulator::Run ();
Simulator::Destroy ();
After running, you can open the output-attributes.txt file and see:::
default ns3::RealtimeSimulatorImpl::SynchronizationMode "BestEffort"
default ns3::RealtimeSimulatorImpl::HardLimit "+100000000.0ns"
default ns3::PcapFileWrapper::CaptureSize "65535"
default ns3::PacketSocket::RcvBufSize "131072"
default ns3::ErrorModel::IsEnabled "true"
default ns3::RateErrorModel::ErrorUnit "EU_BYTE"
default ns3::RateErrorModel::ErrorRate "0"
default ns3::RateErrorModel::RanVar "Uniform:0:1"
default ns3::DropTailQueue::Mode "Packets"
default ns3::DropTailQueue::MaxPackets "100"
default ns3::DropTailQueue::MaxBytes "6553500"
default ns3::Application::StartTime "+0.0ns"
default ns3::Application::StopTime "+0.0ns"
default ns3::ConfigStore::Mode "Save"
default ns3::ConfigStore::Filename "output-attributes.txt"
default ns3::ConfigStore::FileFormat "RawText"
default ns3::A::TestInt16 "-5"
global RngSeed "1"
global RngRun "1"
global SimulatorImplementationType "ns3::DefaultSimulatorImpl"
global SchedulerType "ns3::MapScheduler"
global ChecksumEnabled "false"
value /$ns3::A/TestInt16 "-3"
In the above, all of the default values for attributes for the core
module are shown. Then, all the values for the |ns3| global values
are recorded. Finally, the value of the instance of A that was rooted
in the configuration namespace is shown. In a real ns-3 program, many
more models, attributes, and defaults would be shown.
An XML version also exists in ``output-attributes.xml``:::
<?xml version="1.0" encoding="UTF-8"?>
<ns3>
<default name="ns3::RealtimeSimulatorImpl::SynchronizationMode" value="BestEffort"/>
<default name="ns3::RealtimeSimulatorImpl::HardLimit" value="+100000000.0ns"/>
<default name="ns3::PcapFileWrapper::CaptureSize" value="65535"/>
<default name="ns3::PacketSocket::RcvBufSize" value="131072"/>
<default name="ns3::ErrorModel::IsEnabled" value="true"/>
<default name="ns3::RateErrorModel::ErrorUnit" value="EU_BYTE"/>
<default name="ns3::RateErrorModel::ErrorRate" value="0"/>
<default name="ns3::RateErrorModel::RanVar" value="Uniform:0:1"/>
<default name="ns3::DropTailQueue::Mode" value="Packets"/>
<default name="ns3::DropTailQueue::MaxPackets" value="100"/>
<default name="ns3::DropTailQueue::MaxBytes" value="6553500"/>
<default name="ns3::Application::StartTime" value="+0.0ns"/>
<default name="ns3::Application::StopTime" value="+0.0ns"/>
<default name="ns3::ConfigStore::Mode" value="Save"/>
<default name="ns3::ConfigStore::Filename" value="output-attributes.xml"/>
<default name="ns3::ConfigStore::FileFormat" value="Xml"/>
<default name="ns3::A::TestInt16" value="-5"/>
<global name="RngSeed" value="1"/>
<global name="RngRun" value="1"/>
<global name="SimulatorImplementationType" value="ns3::DefaultSimulatorImpl"/>
<global name="SchedulerType" value="ns3::MapScheduler"/>
<global name="ChecksumEnabled" value="false"/>
<value path="/$ns3::A/TestInt16" value="-3"/>
</ns3>
This file can be archived with your simulation script and output data.
While it is possible to generate a sample config file and lightly edit it to
change a couple of values, there are cases where this process will not work
because the same value on the same object can appear multiple times in the same
automatically-generated configuration file under different configuration paths.
As such, the best way to use this class is to use it to generate an initial
configuration file, extract from that configuration file only the strictly
necessary elements, and move these minimal elements to a new configuration file
which can then safely be edited and loaded in a subsequent simulation run.
When the ConfigStore object is instantiated, its attributes Filename, Mode, and
FileFormat must be set, either via command-line or via program statements.
As a more complicated example, let's assume that we want to read in a
configuration of defaults from an input file named "input-defaults.xml", and
write out the resulting attributes to a separate file called
"output-attributes.xml". (Note-- to get this input xml file to begin with, it
is sometimes helpful to run the program to generate an output xml file first,
then hand-edit that file and re-input it for the next simulation run).::
#include "ns3/config-store-module.h"
...
int main (...)
{
Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("input-defaults.xml"));
Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Load"));
Config::SetDefault ("ns3::ConfigStore::FileFormat", StringValue ("Xml"));
ConfigStore inputConfig;
inputConfig.ConfigureDefaults ();
//
// Allow the user to override any of the defaults and the above Bind() at
// run-time, via command-line arguments
//
CommandLine cmd;
cmd.Parse (argc, argv);
// setup topology
...
// Invoke just before entering Simulator::Run ()
Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("output-attributes.xml"));
Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Save"));
ConfigStore outputConfig;
outputConfig.ConfigureAttributes ();
Simulator::Run ();
}
GTK-based ConfigStore
+++++++++++++++++++++
There is a GTK-based front end for the ConfigStore. This allows users to use a
GUI to access and change variables. Screenshots of this feature are available
in the `|ns3| Overview <http://www.nsnam.org/docs/ns-3-overview.pdf>`_
presentation.
To use this feature, one must install libgtk and libgtk-dev; an example
Ubuntu installation command is:::
sudo apt-get install libgtk2.0-0 libgtk2.0-dev
To check whether it is configured or not, check the output of the step:::
./waf configure --enable-examples --enable-tests
---- Summary of optional NS-3 features:
Threading Primitives : enabled
Real Time Simulator : enabled
GtkConfigStore : not enabled (library 'gtk+-2.0 >= 2.12' not found)
In the above example, it was not enabled, so it cannot be used until a suitable
version is installed and ./waf configure --enable-examples --enable-tests; ./waf is rerun.
Usage is almost the same as the non-GTK-based version, but there
are no ConfigStore attributes involved:::
// Invoke just before entering Simulator::Run ()
GtkConfigStore config;
config.ConfigureDefaults ();
config.ConfigureAttributes ();
Now, when you run the script, a GUI should pop up, allowing you to open menus of
attributes on different nodes/objects, and then launch the simulation execution
when you are done.
Future work
+++++++++++
There are a couple of possible improvements:
* save a unique version number with date and time at start of file
* save rng initial seed somewhere.
* make each RandomVariable serialize its own initial seed and re-read it later
+255
View File
@@ -0,0 +1,255 @@
.. include:: replace.txt
Callbacks
---------
Some new users to |ns3| are unfamiliar with an extensively used programming
idiom used throughout the code: the *ns-3 callback*. This chapter provides some
motivation on the callback, guidance on how to use it, and details on its
implementation.
Callbacks Motivation
********************
Consider that you have two simulation models A and B, and you wish to have them
pass information between them during the simulation. One way that you can do
that is that you can make A and B each explicitly knowledgeable about the other,
so that they can invoke methods on each other::
class A {
public:
void ReceiveInput ( // parameters );
...
}
(in another source file:)
class B {
public:
void DoSomething (void);
...
private:
A* a_instance; // pointer to an A
}
void
B::DoSomething()
{
// Tell a_instance that something happened
a_instance->ReceiveInput ( // parameters);
...
}
This certainly works, but it has the drawback that it introduces a dependency on
A and B to know about the other at compile time (this makes it harder to have
independent compilation units in the simulator) and is not generalized; if in a
later usage scenario, B needs to talk to a completely different C object, the
source code for B needs to be changed to add a ``c_instance`` and so forth. It
is easy to see that this is a brute force mechanism of communication that can
lead to programming cruft in the models.
This is not to say that objects should not know about one another if there is a
hard dependency between them, but that often the model can be made more flexible
if its interactions are less constrained at compile time.
This is not an abstract problem for network simulation research, but rather it
has been a source of problems in previous simulators, when researchers want to
extend or modify the system to do different things (as they are apt to do in
research). Consider, for example, a user who wants to add an IPsec security
protocol sublayer between TCP and IP::
------------ -----------
| TCP | | TCP |
------------ -----------
| becomes -> |
----------- -----------
| IP | | IPsec |
----------- -----------
|
-----------
| IP |
-----------
If the simulator has made assumptions, and hard coded into the code, that IP
always talks to a transport protocol above, the user may be forced to hack the
system to get the desired interconnections. This is clearly not an optimal way
to design a generic simulator.
Callbacks Background
********************
.. note:: Readers familiar with programming callbacks may skip this tutorial
section.
The basic mechanism that allows one to address the problem above is known as a
*callback*. The ultimate goal is to allow one piece of code to call a function
(or method in C++) without any specific inter-module dependency.
This ultimately means you need some kind of indirection -- you treat the address
of the called function as a variable. This variable is called a
pointer-to-function variable. The relationship between function and
pointer-to-function pointer is really no different that that of object and
pointer-to-object.
In C the canonical example of a pointer-to-function is a
pointer-to-function-returning-integer (PFI). For a PFI taking one int parameter,
this could be declared like,::
int (*pfi)(int arg) = 0;
What you get from this is a variable named simply ``pfi`` that is initialized to
the value 0. If you want to initialize this pointer to something meaningful, you
have to have a function with a matching signature. In this case::
int MyFunction (int arg) {}
If you have this target, you can initialize the variable to point to your
function like::
pfi = MyFunction;
You can then call MyFunction indirectly using the more suggestive form of the
call::
int result = (*pfi) (1234);
This is suggestive since it looks like you are dereferencing the function
pointer just like you would dereference any pointer. Typically, however, people
take advantage of the fact that the compiler knows what is going on and will
just use a shorter form::
int result = pfi (1234);
Notice that the function pointer obeys value semantics, so you can pass it
around like any other value. Typically, when you use an asynchronous interface
you will pass some entity like this to a function which will perform an action
and *call back* to let you know it completed. It calls back by following the
indirection and executing the provided function.
In C++ you have the added complexity of objects. The analogy with the PFI above
means you have a pointer to a member function returning an int (PMI) instead of
the pointer to function returning an int (PFI).
The declaration of the variable providing the indirection looks only slightly
different::
int (MyClass::*pmi) (int arg) = 0;
This declares a variable named ``pmi`` just as the previous example declared a
variable named ``pfi``. Since the will be to call a method of an instance of a
particular class, one must declare that method in a class::
class MyClass {
public:
int MyMethod (int arg);
};
Given this class declaration, one would then initialize that variable like
this::
pmi = &MyClass::MyMethod;
This assigns the address of the code implementing the method to the variable,
completing the indirection. In order to call a method, the code needs a ``this``
pointer. This, in turn, means there must be an object of MyClass to refer to. A
simplistic example of this is just calling a method indirectly (think virtual
function)::
int (MyClass::*pmi) (int arg) = 0; // Declare a PMI
pmi = &MyClass::MyMethod; // Point at the implementation code
MyClass myClass; // Need an instance of the class
(myClass.*pmi) (1234); // Call the method with an object ptr
Just like in the C example, you can use this in an asynchronous call to another
module which will *call back* using a method and an object pointer. The
straightforward extension one might consider is to pass a pointer to the object
and the PMI variable. The module would just do::
(*objectPtr.*pmi) (1234);
to execute the callback on the desired object.
One might ask at this time, *what's the point*? The called module will have to
understand the concrete type of the calling object in order to properly make the
callback. Why not just accept this, pass the correctly typed object pointer and
do ``object->Method(1234)`` in the code instead of the callback? This is
precisely the problem described above. What is needed is a way to decouple the
calling function from the called class completely. This requirement led to the
development of the *Functor*.
A functor is the outgrowth of something invented in the 1960s called a closure.
It is basically just a packaged-up function call, possibly with some state.
A functor has two parts, a specific part and a generic part, related through
inheritance. The calling code (the code that executes the callback) will execute
a generic overloaded ``operator ()`` of a generic functor to cause the callback
to be called. The called code (the code that wants to be called back) will have
to provide a specialized implementation of the ``operator ()`` that performs the
class-specific work that caused the close-coupling problem above.
With the specific functor and its overloaded ``operator ()`` created, the called
code then gives the specialized code to the module that will execute the
callback (the calling code).
The calling code will take a generic functor as a parameter, so an implicit cast
is done in the function call to convert the specific functor to a generic
functor. This means that the calling module just needs to understand the
generic functor type. It is decoupled from the calling code completely.
The information one needs to make a specific functor is the object pointer and
the pointer-to-method address.
The essence of what needs to happen is that the system declares a generic part
of the functor::
template <typename T>
class Functor
{
public:
virtual int operator() (T arg) = 0;
};
The caller defines a specific part of the functor that really is just there to
implement the specific ``operator()`` method::
template <typename T, typename ARG>
class SpecificFunctor : public Functor<ARG>
{
public:
SpecificFunctor(T* p, int (T::*_pmi)(ARG arg))
{
m_p = p;
m_pmi = _pmi;
}
virtual int operator() (ARG arg)
{
(*m_p.*m_pmi)(arg);
}
private:
int (T::*m_pmi)(ARG arg);
T* m_p;
};
Here is an example of the usage::
class A
{
public:
A (int ao) : a (a0) {}
int Hello (int b0)
{
std::cout << "Hello from A, a = " << a << " b0 = " << b0 << std::endl;
}
int a;
};
int main()
{
A a(10);
SpecificFunctor<A, int> sf(&a, &A::Hello);
sf(5);
}
+216
View File
@@ -0,0 +1,216 @@
# -*- coding: utf-8 -*-
#
# ns-3 documentation build configuration file, created by
# sphinx-quickstart on Tue Dec 14 09:00:39 2010.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.pngmath']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'ns-3'
copyright = u'2010, ns-3 project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = 'ns-3-dev'
# The full version, including alpha/beta/rc tags.
release = 'ns-3-dev'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = []
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'default'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'ns-3doc'
# -- Options for LaTeX output --------------------------------------------------
# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'
# The font size ('10pt', '11pt' or '12pt').
#latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'ns-3-manual.tex', u'ns-3 Manual',
u'ns-3 project', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output --------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'ns-3-manual', u'ns-3 Manual',
[u'ns-3 project'], 1)
]
+137
View File
@@ -0,0 +1,137 @@
.. include:: replace.txt
Enabling Subsets of |ns3| Modules
---------------------------------
As with most software projects, |ns3| is ever growing larger in terms of number of modules, lines of code, and memory footprint. Users, however, may only use a few of those modules at a time. For this reason, users may want to explicitly enable only the subset of the possible |ns3| modules that they actually need for their research.
This chapter discusses how to enable only the |ns3| modules that you are intersted in using.
How to enable a subset of |ns3|'s modules
*****************************************
If shared libraries are being built, then enabling a module will cause at least one library to be built: ::
libns3-modulename.so
If the module has a test library and test libraries are being built, then ::
libns3-modulename-test.so
will be built, too. Other modules that the module depends on and their test libraries will also be built.
By default, all modules are built in |ns3|. There are two ways to enable a subset of these modules:
#. Using waf's --enable-modules option
#. Using the |ns3| configuration file
Enable modules using waf's --enable-modules option
++++++++++++++++++++++++++++++++++++++++++++++++++
To enable only the core module with example and tests, for example,
try these commands: ::
./waf clean
./waf configure --enable-examples --enable-tests --enable-modules=core
./waf build
cd build/debug/
ls
and the following libraries should be present: ::
bindings libns3-core.so ns3 scratch utils
examples libns3-core-test.so samples src
Note the ``./waf clean`` step is done here only to make it more obvious which module libraries were built. You don't have to do ``./waf clean`` in order to enable subsets of modules.
Running test.py will cause only those tests that depend on module core to be run: ::
24 of 24 tests passed (24 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
Repeat the above steps for the "network" module instead of the "core" module, and the following will be built, since network depends on core: ::
bindings libns3-core.so libns3-network.so ns3 scratch utils
examples libns3-core-test.so libns3-network-test.so samples src
Running test.py will cause those tests that depend on only the core and network modules to be run: ::
31 of 31 tests passed (31 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
Enable modules using the |ns3| configuration file
+++++++++++++++++++++++++++++++++++++++++++++++++
A configuration file, .ns3rc, has been added to |ns3| that allows users to specify which modules are to be included in the build.
When enabling a subset of |ns3| modules, the precedence rules are as follows:
#. the --enable-modules configure string overrides any .ns3rc file
#. the .ns3rc file in the top level |ns3| directory is next consulted, if present
#. the system searches for ~/.ns3rc if the above two are unspecified
If none of the above limits the modules to be built, all modules that waf knows about will be built.
The maintained version of the .ns3rc file in the |ns3| source code repository resides in the ``utils`` directory. The reason for this is if it were in the top-level directory of the repository, it would be prone to accidental checkins from maintainers that enable the modules they want to use. Therefore, users need to manually copy the .ns3rc from the ``utils`` directory to their preferred place (top level directory or their home directory) to enable persistent modular build configuration.
Assuming that you are in the top level |ns3| directory, you can get a copy of the .ns3rc file that is in the ``utils`` directory as follows: ::
cp utils/.ns3rc .
The .ns3rc file should now be in your top level |ns3| directory, and it contains the following: ::
#! /usr/bin/env python
# A list of the modules that will be enabled when ns-3 is run.
# Modules that depend on the listed modules will be enabled also.
#
# All modules can be enabled by choosing 'all_modules'.
modules_enabled = ['all_modules']
# Set this equal to true if you want examples to be run.
examples_enabled = False
# Set this equal to true if you want tests to be run.
tests_enabled = False
Use your favorite editor to modify the .ns3rc file to only enable the core module with examples and tests like this: ::
#! /usr/bin/env python
# A list of the modules that will be enabled when ns-3 is run.
# Modules that depend on the listed modules will be enabled also.
#
# All modules can be enabled by choosing 'all_modules'.
modules_enabled = ['core']
# Set this equal to true if you want examples to be run.
examples_enabled = True
# Set this equal to true if you want tests to be run.
tests_enabled = True
Only the core module will be enabled now if you try these commands: ::
./waf clean
./waf configure
./waf build
cd build/debug/
ls
and the following libraries should be present: ::
bindings libns3-core.so ns3 scratch utils
examples libns3-core-test.so samples src
Note the ``./waf clean`` step is done here only to make it more obvious which module libraries were built. You don't have to do ``./waf clean`` in order to enable subsets of modules.
Running test.py will cause only those tests that depend on module core to be run: ::
24 of 24 tests passed (24 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
Repeat the above steps for the "network" module instead of the "core" module, and the following will be built, since network depends on core: ::
bindings libns3-core.so libns3-network.so ns3 scratch utils
examples libns3-core-test.so libns3-network-test.so samples src
Running test.py will cause those tests that depend on only the core and network modules to be run: ::
31 of 31 tests passed (31 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
+141
View File
@@ -0,0 +1,141 @@
.. include:: replace.txt
Enabling/disabling |ns3| Tests and Examples
-------------------------------------------
The |ns3| distribution includes many examples and tests that are used to validate the |ns3| system. Users, however, may not always want these examples and tests to be run for their installation of |ns3|.
This chapter discusses how to build |ns3| with or without its examples and tests.
How to enable/disable examples and tests in |ns3|
*************************************************
There are 3 ways to enable/disable examples and tests in |ns3|:
#. Using build.py when |ns3| is built for the first time
#. Using waf once |ns3| has been built
#. Using the |ns3| configuration file once |ns3| has been built
Enable/disable examples and tests using build.py
++++++++++++++++++++++++++++++++++++++++++++++++
You can use build.py to enable/disable examples and tests when |ns3| is built for the first time.
By default, examples and tests are not built in |ns3|.
From the ns-3-allinone directory, you can build |ns3| without any
examples or tests simply by doing: ::
./build.py
Running test.py in the top level |ns3| directory now will cause no examples or tests to be run: ::
0 of 0 tests passed (0 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
If you would like build |ns3| with examples and tests, then do the following from the ns-3-allinone directory: ::
./build.py --enable-examples --enable-tests
Running test.py in the top level |ns3| directory will cause all of the examples and tests to be run: ::
170 of 170 tests passed (170 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
Enable/disable examples and tests using waf
+++++++++++++++++++++++++++++++++++++++++++
You can use waf to enable/disable examples and tests once |ns3| has been built.
By default, examples and tests are not built in |ns3|.
From the top level |ns3| directory, you can build |ns3| without any
examples or tests simply by doing: ::
./waf configure
./waf build
Running test.py now will cause no examples or tests to be run: ::
0 of 0 tests passed (0 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
If you would like build |ns3| with examples and tests, then do the following from the top level |ns3| directory: ::
./waf configure --enable-examples --enable-tests
./waf build
Running test.py will cause all of the examples and tests to be run: ::
170 of 170 tests passed (170 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
Enable/disable examples and tests using the |ns3| configuration file
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A configuration file, .ns3rc, has been added to |ns3| that allows users to specify whether examples and tests should be built or not. You can use this file to enable/disable examples and tests once |ns3| has been built.
When enabling disabling examples and tests, the precedence rules are as follows:
#. the --enable-examples/--disable-examples configure strings override any .ns3rc file
#. the --enable-tests/--disable-tests configure strings override any .ns3rc file
#. the .ns3rc file in the top level |ns3| directory is next consulted, if present
#. the system searches for ~/.ns3rc if the .ns3rc file was not found in the previous step
If none of the above exists, then examples and tests will not be built.
The maintained version of the .ns3rc file in the |ns3| source code repository resides in the ``utils`` directory. The reason for this is if it were in the top-level directory of the repository, it would be prone to accidental checkins from maintainers that enable the modules they want to use. Therefore, users need to manually copy the .ns3rc from the ``utils`` directory to their preferred place (top level directory or their home directory) to enable persistent enabling of examples and tests.
Assuming that you are in the top level |ns3| directory, you can get a copy of the .ns3rc file that is in the ``utils`` directory as follows: ::
cp utils/.ns3rc .
The .ns3rc file should now be in your top level |ns3| directory, and it contains the following: ::
#! /usr/bin/env python
# A list of the modules that will be enabled when ns-3 is run.
# Modules that depend on the listed modules will be enabled also.
#
# All modules can be enabled by choosing 'all_modules'.
modules_enabled = ['all_modules']
# Set this equal to true if you want examples to be run.
examples_enabled = False
# Set this equal to true if you want tests to be run.
tests_enabled = False
From the top level |ns3| directory, you can build |ns3| without any
examples or tests simply by doing: ::
./waf configure
./waf build
Running test.py now will cause no examples or tests to be run: ::
0 of 0 tests passed (0 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
If you would like build |ns3| with examples and tests, use your
favorite editor to change the values in the .ns3rc file for
examples_enabled and tests_enabled file to be True: ::
#! /usr/bin/env python
# A list of the modules that will be enabled when ns-3 is run.
# Modules that depend on the listed modules will be enabled also.
#
# All modules can be enabled by choosing 'all_modules'.
modules_enabled = ['all_modules']
# Set this equal to true if you want examples to be run.
examples_enabled = True
# Set this equal to true if you want tests to be run.
tests_enabled = True
From the top level |ns3| directory, you can build |ns3| with examples
and tests simply by doing: ::
./waf configure
./waf build
Running test.py will cause all of the examples and tests to be run: ::
170 of 170 tests passed (170 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
+1
View File
@@ -0,0 +1 @@
../figures
+294
View File
@@ -0,0 +1,294 @@
.. include:: replace.txt
Making Plots using the Gnuplot Class
------------------------------------
There are 2 common methods to make a plot using |ns3| and gnuplot (http://www.gnuplot.info):
#. Create a gnuplot control file using |ns3|'s Gnuplot class.
#. Create a gnuplot data file using values generated by |ns3|.
This section is about method 1, i.e. it is about how to make a plot using |ns3|'s Gnuplot class. If you are interested in method 2, see the "A Real Example" subsection under the "Tracing" section in the |ns3| `Tutorial <http://www.nsnam.org/tutorials.html>`_.
Creating Plots Using the Gnuplot Class
**************************************
The following steps must be taken in order to create a plot using |ns3|'s Gnuplot class:
#. Modify your code so that is uses the Gnuplot class and its functions.
#. Run your code so that it creates a gnuplot control file.
#. Call gnuplot with the name of the gnuplot control file.
#. View the graphics file that was produced in your favorite graphics viewer.
See the code from the example plots that are discussed below for details on step 1.
An Example Program that Uses the Gnuplot Class
**********************************************
An example program that uses |ns3|'s Gnuplot class can be found here: ::
src/tools/examples/gnuplot-example.cc
In order to run this example, do the following: ::
./waf shell
cd build/debug/src/tools/examples
./gnuplot-example
This should produce the following gnuplot control files in the directory where the example is located: ::
plot-2d.plt
plot-2d-with-error-bars.plt
plot-3d.plt
In order to process these gnuplot control files, do the following: ::
gnuplot plot-2d.plt
gnuplot plot-2d-with-error-bars.plt
gnuplot plot-3d.plt
This should produce the following graphics files in the directory where the example is located: ::
plot-2d.png
plot-2d-with-error-bars.png
plot-3d.png
You can view these graphics files in your favorite graphics viewer. If you have gimp installed on your machine, for example, you can do this: ::
gimp plot-2d.png
gimp plot-2d-with-error-bars.png
gimp plot-3d.png
An Example 2-Dimensional Plot
*****************************
The following 2-Dimensional plot
.. _plot-2d:
.. figure:: figures/plot-2d.*
was created using the following code from gnuplot-example.cc: ::
using namespace std;
string fileNameWithNoExtension = "plot-2d";
string graphicsFileName = fileNameWithNoExtension + ".png";
string plotFileName = fileNameWithNoExtension + ".plt";
string plotTitle = "2-D Plot";
string dataTitle = "2-D Data";
// Instantiate the plot and set its title.
Gnuplot plot (graphicsFileName);
plot.SetTitle (plotTitle);
// Make the graphics file, which the plot file will create when it
// is used with Gnuplot, be a PNG file.
plot.SetTerminal ("png");
// Set the labels for each axis.
plot.SetLegend ("X Values", "Y Values");
// Set the range for the x axis.
plot.AppendExtra ("set xrange [-6:+6]");
// Instantiate the dataset, set its title, and make the points be
// plotted along with connecting lines.
Gnuplot2dDataset dataset;
dataset.SetTitle (dataTitle);
dataset.SetStyle (Gnuplot2dDataset::LINES_POINTS);
double x;
double y;
// Create the 2-D dataset.
for (x = -5.0; x <= +5.0; x += 1.0)
{
// Calculate the 2-D curve
//
// 2
// y = x .
//
y = x * x;
// Add this point.
dataset.Add (x, y);
}
// Add the dataset to the plot.
plot.AddDataset (dataset);
// Open the plot file.
ofstream plotFile (plotFileName.c_str());
// Write the plot file.
plot.GenerateOutput (plotFile);
// Close the plot file.
plotFile.close ();
An Example 2-Dimensional Plot with Error Bars
*********************************************
The following 2-Dimensional plot with error bars in the x and y directions
.. _plot-2d-with-error-bars:
.. figure:: figures/plot-2d-with-error-bars.*
was created using the following code from gnuplot-example.cc: ::
using namespace std;
string fileNameWithNoExtension = "plot-2d-with-error-bars";
string graphicsFileName = fileNameWithNoExtension + ".png";
string plotFileName = fileNameWithNoExtension + ".plt";
string plotTitle = "2-D Plot With Error Bars";
string dataTitle = "2-D Data With Error Bars";
// Instantiate the plot and set its title.
Gnuplot plot (graphicsFileName);
plot.SetTitle (plotTitle);
// Make the graphics file, which the plot file will create when it
// is used with Gnuplot, be a PNG file.
plot.SetTerminal ("png");
// Set the labels for each axis.
plot.SetLegend ("X Values", "Y Values");
// Set the range for the x axis.
plot.AppendExtra ("set xrange [-6:+6]");
// Instantiate the dataset, set its title, and make the points be
// plotted with no connecting lines.
Gnuplot2dDataset dataset;
dataset.SetTitle (dataTitle);
dataset.SetStyle (Gnuplot2dDataset::POINTS);
// Make the dataset have error bars in both the x and y directions.
dataset.SetErrorBars (Gnuplot2dDataset::XY);
double x;
double xErrorDelta;
double y;
double yErrorDelta;
// Create the 2-D dataset.
for (x = -5.0; x <= +5.0; x += 1.0)
{
// Calculate the 2-D curve
//
// 2
// y = x .
//
y = x * x;
// Make the uncertainty in the x direction be constant and make
// the uncertainty in the y direction be a constant fraction of
// y's value.
xErrorDelta = 0.25;
yErrorDelta = 0.1 * y;
// Add this point with uncertainties in both the x and y
// direction.
dataset.Add (x, y, xErrorDelta, yErrorDelta);
}
// Add the dataset to the plot.
plot.AddDataset (dataset);
// Open the plot file.
ofstream plotFile (plotFileName.c_str());
// Write the plot file.
plot.GenerateOutput (plotFile);
// Close the plot file.
plotFile.close ();
An Example 3-Dimensional Plot
*****************************
The following 3-Dimensional plot
.. _plot-3d:
.. figure:: figures/plot-3d.*
was created using the following code from gnuplot-example.cc: ::
using namespace std;
string fileNameWithNoExtension = "plot-3d";
string graphicsFileName = fileNameWithNoExtension + ".png";
string plotFileName = fileNameWithNoExtension + ".plt";
string plotTitle = "3-D Plot";
string dataTitle = "3-D Data";
// Instantiate the plot and set its title.
Gnuplot plot (graphicsFileName);
plot.SetTitle (plotTitle);
// Make the graphics file, which the plot file will create when it
// is used with Gnuplot, be a PNG file.
plot.SetTerminal ("png");
// Rotate the plot 30 degrees around the x axis and then rotate the
// plot 120 degrees around the new z axis.
plot.AppendExtra ("set view 30, 120, 1.0, 1.0");
// Make the zero for the z-axis be in the x-axis and y-axis plane.
plot.AppendExtra ("set ticslevel 0");
// Set the labels for each axis.
plot.AppendExtra ("set xlabel 'X Values'");
plot.AppendExtra ("set ylabel 'Y Values'");
plot.AppendExtra ("set zlabel 'Z Values'");
// Set the ranges for the x and y axis.
plot.AppendExtra ("set xrange [-5:+5]");
plot.AppendExtra ("set yrange [-5:+5]");
// Instantiate the dataset, set its title, and make the points be
// connected by lines.
Gnuplot3dDataset dataset;
dataset.SetTitle (dataTitle);
dataset.SetStyle ("with lines");
double x;
double y;
double z;
// Create the 3-D dataset.
for (x = -5.0; x <= +5.0; x += 1.0)
{
for (y = -5.0; y <= +5.0; y += 1.0)
{
// Calculate the 3-D surface
//
// 2 2
// z = x * y .
//
z = x * x * y * y;
// Add this point.
dataset.Add (x, y, z);
}
// The blank line is necessary at the end of each x value's data
// points for the 3-D surface grid to work.
dataset.AddEmptyLine ();
}
// Add the dataset to the plot.
plot.AddDataset (dataset);
// Open the plot file.
ofstream plotFile (plotFileName.c_str());
// Write the plot file.
plot.GenerateOutput (plotFile);
// Close the plot file.
plotFile.close ();
+37
View File
@@ -0,0 +1,37 @@
.. include:: replace.txt
Helpers
-------
The above chapters introduced you to various |ns3| programming concepts such as
smart pointers for reference-counted memory management, attributes, namespaces,
callbacks, etc. Users who work at this low-level API can interconnect |ns3|
objects with fine granulariy. However, a simulation program written entirely
using the low-level API would be quite long and tedious to code. For this
reason, a separate so-called "helper API" has been overlaid on the core |ns3|
API. If you have read the |ns3| tutorial, you will already be familiar with the
helper API, since it is the API that new users are typically introduced to
first. In this chapter, we introduce the design philosophy of the helper API
and contrast it to the low-level API. If you become a heavy user of |ns3|, you
will likely move back and forth between these APIs even in the same program.
The helper API has a few goals:
#. the rest of ``src/`` has no dependencies on the helper API; anything that can
be done with the helper API can be coded also at the low-level API
#. **Containers:** Often simulations will need to do a number of identical
actions to groups of objects. The helper API makes heavy use of containers of
similar objects to which similar or identical operations can be performed.
#. The helper API is not generic; it does not strive to maximize code reuse. So,
programming constructs such as polymorphism and templates that achieve code
reuse are not as prevalent. For instance, there are separate CsmaNetDevice
helpers and PointToPointNetDevice helpers but they do not derive from a
common NetDevice base class.
#. The helper API typically works with stack-allocated (vs. heap-allocated)
objects. For some programs, |ns3| users may not need to worry about any low
level Object Create or Ptr handling; they can make do with containers of
objects and stack-allocated helpers that operate on them.
The helper API is really all about making |ns3| programs easier to write and
read, without taking away the power of the low-level interface. The rest of this
chapter provides some examples of the programming conventions of the helper API.
+60
View File
@@ -0,0 +1,60 @@
.. include:: replace.txt
How to write tests
------------------
A primary goal of the ns-3 project is to help users to improve the
validity and credibility of their results. There are many elements
to obtaining valid models and simulations, and testing is a major
component. If you contribute models or examples to ns-3, you may
be asked to contribute test code. Models that you contribute will be
used for many years by other people, who probably have no idea upon
first glance whether the model is correct. The test code that you
write for your model will help to avoid future regressions in
the output and will aid future users in understanding the validity
and bounds of applicability of your models.
There are many ways to test that a model is valid. In this chapter,
we hope to cover some common cases that can be used as a guide to
writing new tests.
Sample TestSuite skeleton
*************************
When starting from scratch (i.e. not adding a TestCase to an existing
TestSuite), these things need to be decided up front:
* What the test suite will be called
* What type of test it will be (Build Verification Test, Unit Test,
System Test, or Performance Test)
* Where the test code will live (either in an existing ns-3 module or
separately in src/test/ directory). You will have to edit the wscript
file in that directory to compile your new code, if it is a new file.
See the file ``src/template/test/sample-test-suite.cc`` and corresponding
wscript file in that directory for a simple example, and see the directories
under ``src/test`` for more complicated examples.
*The rest of this chapter remains to be written*
How to add an example program to the test suite
***********************************************
Testing for boolean outcomes
****************************
Testing outcomes when randomness is involved
********************************************
Testing output data against a known distribution
************************************************
Providing non-trivial input vectors of data
*******************************************
Storing and referencing non-trivial output data
***********************************************
Presenting your output test data
********************************
+32
View File
@@ -0,0 +1,32 @@
.. only:: html or latex
ns-3 Manual
===========
This is the *ns-3 Manual*. Primary documentation for the ns-3 project is
available in five forms:
* `ns-3 Doxygen <http://www.nsnam.org/doxygen/index.html>`_: Documentation of the public APIs of the simulator
* Tutorial, Manual *(this document)*, and Model Library for the `latest release <http://www.nsnam.org/documentation/latest/>`_ and `development tree <http://www.nsnam.org/ns-3-dev/documentation/>`_
* `ns-3 wiki <http://www.nsnam.org/wiki/index.php/Main_Page>`_
This document is written in `reStructuredText <http://docutils.sourceforge.net/rst.html>`_ for `Sphinx <http://sphinx.pocoo.org/>`_ and is maintained in the
``doc/manual`` directory of ns-3's source code.
.. toctree::
:maxdepth: 2
organization
random-variables
callbacks
object-model
attributes
object-names
logging
tracing
realtime
helpers
gnuplot
python
tests
support
+7
View File
@@ -0,0 +1,7 @@
.. include:: replace.txt
Logging
-------
*This chapter not yet written. For now, the ns-3 tutorial contains logging
information.*
+569
View File
@@ -0,0 +1,569 @@
.. include:: replace.txt
Creating a new ns-3 model
-------------------------
This chapter walks through the design process of an |ns3| model. In many
research cases, users will not be satisfied to merely adapt existing models, but
may want to extend the core of the simulator in a novel way. We will use the
example of adding an ErrorModel to a simple |ns3| link as a motivating example
of how one might approach this problem and proceed through a design and
implementation.
Design-approach
***************
Consider how you want it to work; what should it do. Think about these things:
* *functionality:* What functionality should it have? What attributes or
configuration is exposed to the user?
* *reusability:* How much should others be able to reuse my design? Can I
reuse code from |ns2| to get started? How does a user integrate the model
with the rest of another simulation?
* *dependencies:* How can I reduce the introduction of outside dependencies on
my new code as much as possible (to make it more modular)? For instance,
should I avoid any dependence on IPv4 if I want it to also be used by IPv6?
Should I avoid any dependency on IP at all?
Do not be hesitant to contact the ns-3-users or ns-developers list if you have
questions. In particular, it is important to think about the public API of your
new model and ask for feedback. It also helps to let others know of your work in
case you are interested in collaborators.
Example: ErrorModel
+++++++++++++++++++
An error model exists in |ns2|. It allows packets to be passed to a stateful
object that determines, based on a random variable, whether the packet is
corrupted. The caller can then decide what to do with the packet (drop it,
etc.).
The main API of the error model is a function to pass a packet to, and the
return value of this function is a boolean that tells the caller whether any
corruption occurred. Note that depending on the error model, the packet data
buffer may or may not be corrupted. Let's call this function "IsCorrupt()".
So far, in our design, we have:::
class ErrorModel
{
public:
/**
* \returns true if the Packet is to be considered as errored/corrupted
* \param pkt Packet to apply error model to
*/
bool IsCorrupt (Ptr<Packet> pkt);
};
Note that we do not pass a const pointer, thereby allowing the function to
modify the packet if IsCorrupt() returns true. Not all error models will
actually modify the packet; whether or not the packet data buffer is corrupted
should be documented.
We may also want specialized versions of this, such as in |ns2|, so although it
is not the only design choice for polymorphism, we assume that we will subclass
a base class ErrorModel for specialized classes, such as RateErrorModel,
ListErrorModel, etc, such as is done in |ns2|.
You may be thinking at this point, "Why not make IsCorrupt() a virtual method?".
That is one approach; the other is to make the public non-virtual function
indirect through a private virtual function (this in C++ is known as the non
virtual interface idiom and is adopted in the |ns3| ErrorModel class).
Next, should this device have any dependencies on IP or other protocols? We do
not want to create dependencies on Internet protocols (the error model should be
applicable to non-Internet protocols too), so we'll keep that in mind later.
Another consideration is how objects will include this error model. We envision
putting an explicit setter in certain NetDevice implementations, for example.::
/**
* Attach a receive ErrorModel to the PointToPointNetDevice.
*
* The PointToPointNetDevice may optionally include an ErrorModel in
* the packet receive chain.
*
* @see ErrorModel
* @param em Ptr to the ErrorModel.
*/
void PointToPointNetDevice::SetReceiveErrorModel(Ptr<ErrorModel> em);
Again, this is not the only choice we have (error models could be aggregated to
lots of other objects), but it satisfies our primary use case, which is to allow
a user to force errors on otherwise successful packet transmissions, at the
NetDevice level.
After some thinking and looking at existing |ns2| code, here is a sample API of
a base class and first subclass that could be posted for initial review:::
class ErrorModel
{
public:
ErrorModel ();
virtual ~ErrorModel ();
bool IsCorrupt (Ptr<Packet> pkt);
void Reset (void);
void Enable (void);
void Disable (void);
bool IsEnabled (void) const;
private:
virtual bool DoCorrupt (Ptr<Packet> pkt) = 0;
virtual void DoReset (void) = 0;
};
enum ErrorUnit
{
EU_BIT,
EU_BYTE,
EU_PKT
};
// Determine which packets are errored corresponding to an underlying
// random variable distribution, an error rate, and unit for the rate.
class RateErrorModel : public ErrorModel
{
public:
RateErrorModel ();
virtual ~RateErrorModel ();
enum ErrorUnit GetUnit (void) const;
void SetUnit (enum ErrorUnit error_unit);
double GetRate (void) const;
void SetRate (double rate);
void SetRandomVariable (const RandomVariable &ranvar);
private:
virtual bool DoCorrupt (Ptr<Packet> pkt);
virtual void DoReset (void);
};
Scaffolding
***********
Let's say that you are ready to start implementing; you have a fairly clear
picture of what you want to build, and you may have solicited some initial
review or suggestions from the list. One way to approach the next step
(implementation) is to create scaffolding and fill in the details as the design
matures.
This section walks through many of the steps you should consider to define
scaffolding, or a non-functional skeleton of what your model will eventually
implement. It is usually good practice to not wait to get these details
integrated at the end, but instead to plumb a skeleton of your model into the
system early and then add functions later once the API and integration seems
about right.
Note that you will want to modify a few things in the below presentation for
your model since if you follow the error model verbatim, the code you produce
will collide with the existing error model. The below is just an outline of how
ErrorModel was built that you can adapt to other models.
Review the ns-3 coding style document
+++++++++++++++++++++++++++++++++++++
At this point, you may want to pause and read the |ns3| coding style document,
especially if you are considering to contribute your code back to the project.
The coding style document is linked off the main project page: `ns-3 coding
style <http://www.nsnam.org/codingstyle.html>`_.
Decide where in the source tree the model will reside in
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
All of the |ns3| model source code is in the directory ``src/``. You will need
to choose which subdirectory it resides in. If it is new model code of some
sort, it makes sense to put it into the ``src/`` directory somewhere,
particularly for ease of integrating with the build system.
In the case of the error model, it is very related to the packet class, so it
makes sense to implement this in the ``src/network/model`` directory where |ns3|
packets are implemented.
waf and wscript
+++++++++++++++
|ns3| uses the `Waf <http://www.freehackers.org/~tnagy/waf.html>`_ build system.
You will want to integrate your new |ns3| uses the Waf build system. You will
want to integrate your new source files into this system. This requires that you
add your files to the ``wscript`` file found in each directory.
Let's start with empty files error-model.h and error-model.cc, and add this to
``src/network/wscript``. It is really just a matter of adding the .cc file to the
rest of the source files, and the .h file to the list of the header files.
Now, pop up to the top level directory and type "./test.py". You
shouldn't have broken anything by this operation.
include guards
++++++++++++++
Next, let's add some `include guards
<http://en.wikipedia.org/wiki/Include_guard>`_ in our header file.::
#ifndef ERROR_MODEL_H
#define ERROR_MODEL_H
...
#endif
namespace ns3
+++++++++++++
|ns3| uses the |ns3| `namespace
<http://en.wikipedia.org/wiki/Namespace_(computer_science)#Use_in_common_languages>`_
to isolate its symbols from other namespaces. Typically, a user will next put
an |ns3| namespace block in both the cc and h file.::
namespace ns3 {
...
}
At this point, we have some skeletal files in which we can start defining
our new classes. The header file looks like this:::
#ifndef ERROR_MODEL_H
#define ERROR_MODEL_H
namespace ns3 {
} // namespace ns3
#endif
while the ``error-model.cc`` file simply looks like this:::
#include "error-model.h"
namespace ns3 {
} // namespace ns3
These files should compile since they don't really have any contents. We're now
ready to start adding classes.
Initial Implementation
**********************
At this point, we're still working on some scaffolding, but we can begin to
define our classes, with the functionality to be added later.
use of class Object?
++++++++++++++++++++
This is an important design step; whether to use class :cpp:class:`Object` as a
base class for your new classes.
As described in the chapter on the |ns3| :ref:`Object model`, classes that
inherit from class :cpp:class:`Object` get special properties:
* the |ns3| type and attribute system (see :ref:`Attributes`)
* an object aggregation system
* a smart-pointer reference counting system (class Ptr)
Classes that derive from class :cpp:class:`ObjectBase`} get the first two
properties above, but do not get smart pointers. Classes that derive from class
:cpp:class:`RefCountBase` get only the smart-pointer reference counting system.
In practice, class :cpp:class:`Object` is the variant of the three above that
the |ns3| developer will most commonly encounter.
In our case, we want to make use of the attribute system, and we will be passing
instances of this object across the |ns3| public API, so class
:cpp:class:`Object` is appropriate for us.
initial classes
+++++++++++++++
One way to proceed is to start by defining the bare minimum functions and see if
they will compile. Let's review what all is needed to implement when we derive
from class Object.::
#ifndef ERROR_MODEL_H
#define ERROR_MODEL_H
#include "ns3/object.h"
namespace ns3 {
class ErrorModel : public Object
{
public:
static TypeId GetTypeId (void);
ErrorModel ();
virtual ~ErrorModel ();
};
class RateErrorModel : public ErrorModel
{
public:
static TypeId GetTypeId (void);
RateErrorModel ();
virtual ~RateErrorModel ();
};
#endif
A few things to note here. We need to include ``object.h``. The convention in
|ns3| is that if the header file is co-located in the same directory, it may be
included without any path prefix. Therefore, if we were implementing ErrorModel
in ``src/core/model`` directory, we could have just said "``#include "object.h"``".
But we are in ``src/network/model``, so we must include it as "``#include
"ns3/object.h"``". Note also that this goes outside the namespace declaration.
Second, each class must implement a static public member function called
``GetTypeId (void)``.
Third, it is a good idea to implement constructors and destructors rather than
to let the compiler generate them, and to make the destructor virtual. In C++,
note also that copy assignment operator and copy constructors are auto-generated
if they are not defined, so if you do not want those, you should implement those
as private members. This aspect of C++ is discussed in Scott Meyers' Effective
C++ book. item 45.
Let's now look at some corresponding skeletal implementation code in the .cc
file.::
#include "error-model.h"
namespace ns3 {
NS_OBJECT_ENSURE_REGISTERED (ErrorModel);
TypeId ErrorModel::GetTypeId (void)
{
static TypeId tid = TypeId ("ns3::ErrorModel")
.SetParent<Object> ()
;
return tid;
}
ErrorModel::ErrorModel ()
{
}
ErrorModel::~ErrorModel ()
{
}
NS_OBJECT_ENSURE_REGISTERED (RateErrorModel);
TypeId RateErrorModel::GetTypeId (void)
{
static TypeId tid = TypeId ("ns3::RateErrorModel")
.SetParent<ErrorModel> ()
.AddConstructor<RateErrorModel> ()
;
return tid;
}
RateErrorModel::RateErrorModel ()
{
}
RateErrorModel::~RateErrorModel ()
{
}
What is the ``GetTypeId (void)`` function? This function does a few things. It
registers a unique string into the TypeId system. It establishes the hierarchy
of objects in the attribute system (via ``SetParent``). It also declares that
certain objects can be created via the object creation framework
(``AddConstructor``).
The macro ``NS_OBJECT_ENSURE_REGISTERED (classname)`` is needed also once for
every class that defines a new GetTypeId method, and it does the actual
registration of the class into the system. The :ref:`Object model` chapter
discusses this in more detail.
how to include files from elsewhere
+++++++++++++++++++++++++++++++++++
log component
+++++++++++++
*Here, write a bit about adding |ns3| logging macros. Note that
LOG_COMPONENT_DEFINE is done outside the namespace ns3*
constructor, empty function prototypes
++++++++++++++++++++++++++++++++++++++
key variables (default values, attributes)
++++++++++++++++++++++++++++++++++++++++++
test program 1
++++++++++++++
Object Framework
++++++++++++++++
::
static const ClassId cid;
const InterfaceId ErrorModel::iid =
MakeInterfaceId ("ErrorModel", Object::iid);
const ClassId ErrorModel::cid =
MakeClassId<ErrorModel> ("ErrorModel", ErrorModel::iid);
Adding-a-sample-script
**********************
At this point, one may want to try to take the basic scaffolding defined above
and add it into the system. Performing this step now allows one to use a simpler
model when plumbing into the system and may also reveal whether any design or
API modifications need to be made. Once this is done, we will return to building
out the functionality of the ErrorModels themselves.
Add basic support in the class
++++++++++++++++++++++++++++++
::
point-to-point-net-device.h
class ErrorModel;
/**
* Error model for receive packet events
*/
Ptr<ErrorModel> m_receiveErrorModel;
Add Accessor
++++++++++++
::
void
PointToPointNetDevice::SetReceiveErrorModel (Ptr<ErrorModel> em)
{
NS_LOG_FUNCTION (this << em);
m_receiveErrorModel = em;
}
.AddAttribute ("ReceiveErrorModel",
"The receiver error model used to simulate packet loss",
PointerValue (),
MakePointerAccessor (&PointToPointNetDevice::m_receiveErrorModel),
MakePointerChecker<ErrorModel> ())
Plumb into the system
+++++++++++++++++++++
::
void PointToPointNetDevice::Receive (Ptr<Packet> packet)
{
NS_LOG_FUNCTION (this << packet);
uint16_t protocol = 0;
if (m_receiveErrorModel && m_receiveErrorModel->IsCorrupt (packet) )
{
//
// If we have an error model and it indicates that it is time to lose a
// corrupted packet, don't forward this packet up, let it go.
//
m_dropTrace (packet);
}
else
{
//
// Hit the receive trace hook, strip off the point-to-point protocol header
// and forward this packet up the protocol stack.
//
m_rxTrace (packet);
ProcessHeader(packet, protocol);
m_rxCallback (this, packet, protocol, GetRemote ());
if (!m_promiscCallback.IsNull ())
{ m_promiscCallback (this, packet, protocol, GetRemote (),
GetAddress (), NetDevice::PACKET_HOST);
}
}
}
Create null functional script
+++++++++++++++++++++++++++++
::
simple-error-model.cc
// Error model
// We want to add an error model to node 3's NetDevice
// We can obtain a handle to the NetDevice via the channel and node
// pointers
Ptr<PointToPointNetDevice> nd3 = PointToPointTopology::GetNetDevice
(n3, channel2);
Ptr<ErrorModel> em = Create<ErrorModel> ();
nd3->SetReceiveErrorModel (em);
bool
ErrorModel::DoCorrupt (Packet& p)
{
NS_LOG_FUNCTION;
NS_LOG_UNCOND("Corrupt!");
return false;
}
At this point, we can run the program with our trivial ErrorModel plumbed into
the receive path of the PointToPointNetDevice. It prints out the string
"Corrupt!" for each packet received at node n3. Next, we return to the error
model to add in a subclass that performs more interesting error modeling.
Add subclass
************
The trivial base class ErrorModel does not do anything interesting, but it
provides a useful base class interface (Corrupt () and Reset ()), forwarded to
virtual functions that can be subclassed. Let's next consider what we call a
BasicErrorModel which is based on the |ns2| ErrorModel class (in
``ns-2/queue/errmodel.{cc,h}``).
What properties do we want this to have, from a user interface perspective? We
would like for the user to be able to trivially swap out the type of ErrorModel
used in the NetDevice. We would also like the capability to set configurable
parameters.
Here are a few simple requirements we will consider:
* Ability to set the random variable that governs the losses (default is
UniformVariable)
* Ability to set the unit (bit, byte, packet, time) of granularity over which
errors are applied.
* Ability to set the rate of errors (e.g. 10^-3) corresponding to the above unit
of granularity.
* Ability to enable/disable (default is enabled)
How to subclass
+++++++++++++++
We declare BasicErrorModel to be a subclass of ErrorModel as follows,::
class BasicErrorModel : public ErrorModel
{
public:
static TypeId GetTypeId (void);
...
private:
// Implement base class pure virtual functions
virtual bool DoCorrupt (Ptr<Packet> p);
virtual bool DoReset (void);
...
}
and configure the subclass GetTypeId function by setting a unique TypeId string
and setting the Parent to ErrorModel:::
TypeId RateErrorModel::GetTypeId (void)
{
static TypeId tid = TypeId ("ns3::RateErrorModel")
.SetParent<ErrorModel> ()
.AddConstructor<RateErrorModel> ()
...
Build-core-functions-and-unit-tests
***********************************
assert macros
+++++++++++++
Writing unit tests
++++++++++++++++++
+285
View File
@@ -0,0 +1,285 @@
.. include:: replace.txt
Adding a New Module to |ns3|
----------------------------
When you have created a group of related classes, examples, and tests,
they can be combined together into an |ns3| module so that they can be
used with existing |ns3| modules and by other researchers.
This chapter walks you through the steps necessary to add a new module
to |ns3|.
Step 1 - Familiarize yourself with the module layout
****************************************************
All modules can be found in the ``src`` directory. Each module can be
found in a directory that has the same name as the module. For
example, the spectrum module can be found here: ::
src/spectrum
A prototypical module has the following directory structure and
required files: ::
src/
module-name/
bindings/
doc/
examples/
wscript
helper/
model/
test/
examples-to-run.py
wscript
Not all directories will be present in each module.
Step 2 - Create your new module based on the template module
************************************************************
A python program is provided in the source directory that will create a skeleton for a new module ::
src/create-module.py
For the purposes of this discussion we will assume that your new module is called "new-module". From the ``src`` directory, do the following to create the new module: ::
./create-module.py new-module
Next, cd into ``new-module``; you will find this directory layout: ::
examples helper model test wscript
We next walk through how to customize this module. All |ns3| modules
depend on the 'core' module and usually on other modules. This
dependency is specified in the wscript file.
Let's assume that 'new-module' depends on the internet,
mobility, and aodv modules. Then the call to the function that will
create this module should look like this before editing: ::
def build(bld):
module = bld.create_ns3_module('new-module', ['core'])
and after editing: ::
def build(bld):
module = bld.create_ns3_module('new-module', ['internet', 'mobility', 'aodv'])
Your module will most likely have model source files. Initial skeletons (which will compile successfully) are created in ``model/new-module.cc`` and ``model/new-module.h``.
If your module will have helper source files, then they will go into the helper/ directory; again, initial skeletons are created in that directory.
Finally, it is good practice to write tests. A skeleton test suite and test case is created in the test/ directory. The below constructor specifies that it will be a unit test named 'new-module': ::
New-moduleTestSuite::New-moduleTestSuite ()
: TestSuite ("new-module", UNIT)
{
AddTestCase (new New-moduleTestCase1);
}
Step 3 - Adding to your module's source files
*********************************************
If your new module has model and/or helper source files, then they
must be specified in your ::
src/new-module/wscript
file by modifying it with your text editor.
As an example, the source files for the spectrum module are specified
in ::
src/spectrum/wscript
with the following list of source files: ::
module.source = [
'model/spectrum-model.cc',
'model/spectrum-value.cc',
.
.
.
'model/microwave-oven-spectrum-value-helper.cc',
'helper/spectrum-helper.cc',
'helper/adhoc-aloha-noack-ideal-phy-helper.cc',
'helper/waveform-generator-helper.cc',
'helper/spectrum-analyzer-helper.cc',
]
Step 4 - Specify your module's header files
*******************************************
If your new module has model and/or helper header files, then they
must be specified in your ::
src/new-module/wscript
file by modifying it with your text editor.
As an example, the header files for the spectrum module are specified
in ::
src/spectrum/wscript
with the following function call, module name, and list of header
files. Note that the argument for the function new_task_gen() tells
waf to install this module's headers with the other |ns3| headers: ::
headers = bld.new_task_gen(features=['ns3header'])
headers.module = 'spectrum'
headers.source = [
'model/spectrum-model.h',
'model/spectrum-value.h',
.
.
.
'model/microwave-oven-spectrum-value-helper.h',
'helper/spectrum-helper.h',
'helper/adhoc-aloha-noack-ideal-phy-helper.h',
'helper/waveform-generator-helper.h',
'helper/spectrum-analyzer-helper.h',
]
Step 5 - Specify your module's tests
************************************
If your new module has tests, then they must be specified in your ::
src/new-module/wscript
file by modifying it with your text editor.
As an example, the tests for the spectrum module are specified in ::
src/spectrum/wscript
with the following function call and list of test suites: ::
module_test = bld.create_ns3_module_test_library('spectrum')
module_test.source = [
'test/spectrum-interference-test.cc',
'test/spectrum-value-test.cc',
]
Step 6 - Specify your module's examples
***************************************
If your new module has examples, then they must be specified in your ::
src/new-module/examples/wscript
file by modifying it with your text editor.
As an example, the examples for the core module are specified in ::
src/core/examples/wscript
The core module's C++ examples are specified using the following
function calls and source file names. Note that the second argument
for the function ``create_ns3_program()`` is the list of modules that the
program being created depends on: ::
obj = bld.create_ns3_program('main-callback', ['core'])
obj.source = 'main-callback.cc'
obj = bld.create_ns3_program('sample-simulator', ['core'])
obj.source = 'sample-simulator.cc'
The core module's Python examples are specified using the following
function call. Note that the second argument for the function
register_ns3_script() is the list of modules that the Python example
depends on: ::
bld.register_ns3_script('sample-simulator.py', ['core'])
Step 7 - Specify which of your module's examples should be run as tests
***********************************************************************
The test framework can also be instrumented to run example programs to
try to catch regressions in the examples. However, not all examples
are suitable for regression tests. A file called ``examples-to-run.py``
that exists in each module's test directory can control the invocation
of the examples when the test framework runs.
As an example, the examples that are run by ``test.py`` for the core module are specified in ::
src/core/test/examples-to-run.py
using the following two lists of C++ and Python examples: ::
# A list of C++ examples to run in order to ensure that they remain
# buildable and runnable over time. Each tuple in the list contains
#
# (example_name, do_run, do_valgrind_run).
#
# See test.py for more information.
cpp_examples = [
("main-attribute-value", "True", "True"),
("main-callback", "True", "True"),
("sample-simulator", "True", "True"),
("main-ptr", "True", "True"),
("main-random-variable", "True", "True"),
("sample-random-variable", "True", "True"),
]
# A list of Python examples to run in order to ensure that they remain
# runnable over time. Each tuple in the list contains
#
# (example_name, do_run).
#
# See test.py for more information.
python_examples = [
("sample-simulator.py", "True"),
]
Each tuple in the C++ list of examples to run contains ::
(example_name, do_run, do_valgrind_run)
where example_name is the executable to be run, do_run is a
condition under which to run the example, and do_valgrind_run is
a condition under which to run the example under valgrind. This
is needed because NSC causes illegal instruction crashes with
some tests when they are run under valgrind.
Note that the two conditions are Python statements that
can depend on waf configuration variables. For example, ::
("tcp-nsc-lfn", "NSC_ENABLED == True", "NSC_ENABLED == False"),
Each tuple in the Python list of examples to run contains ::
(example_name, do_run)
where example_name is the Python script to be run and
do_run is a condition under which to run the example.
Note that the condition is a Python statement that can
depend on waf configuration variables. For example, ::
("realtime-udp-echo.py", "ENABLE_REAL_TIME == False"),
If your new module has examples, then you must specify which of them
should be run in your ::
src/new-module/test/examples-to-run.py
file by modifying it with your text editor. These examples are run by
test.py.
Step 8 - Build and test your new module
***************************************
You can now build and test your module as normal: ::
./waf configure --enable-examples --enable-tests
./waf build
./test.py
and look for your new module's test suite (and example programs, if enabled) in the test output.
+290
View File
@@ -0,0 +1,290 @@
.. include:: replace.txt
Object model
------------
|ns3| is fundamentally a C++ object system. Objects can be declared and
instantiated as usual, per C++ rules. |ns3| also adds some features to
traditional C++ objects, as described below, to provide greater functionality
and features. This manual chapter is intended to introduce the reader to the
|ns3| object model.
This section describes the C++ class design for |ns3| objects. In brief,
several design patterns in use include classic object-oriented design
(polymorphic interfaces and implementations), separation of interface and
implementation, the non-virtual public interface design pattern, an object
aggregation facility, and reference counting for memory management. Those
familiar with component models such as COM or Bonobo will recognize elements of
the design in the |ns3| object aggregation model, although the |ns3| design is
not strictly in accordance with either.
Object-oriented behavior
************************
C++ objects, in general, provide common object-oriented capabilities
(abstraction, encapsulation, inheritance, and polymorphism) that are part
of classic object-oriented design. |ns3| objects make use of these
properties; for instance:::
class Address
{
public:
Address ();
Address (uint8_t type, const uint8_t *buffer, uint8_t len);
Address (const Address & address);
Address &operator = (const Address &address);
...
private:
uint8_t m_type;
uint8_t m_len;
...
};
Object base classes
*******************
There are three special base classes used in |ns3|. Classes that inherit
from these base classes can instantiate objects with special properties.
These base classes are:
* class :cpp:class:`Object`
* class :cpp:class:`ObjectBase`
* class :cpp:class:`SimpleRefCount`
It is not required that |ns3| objects inherit from these class, but
those that do get special properties. Classes deriving from
class :cpp:class:`Object` get the following properties.
* the |ns3| type and attribute system (see :ref:`Attributes`)
* an object aggregation system
* a smart-pointer reference counting system (class Ptr)
Classes that derive from class :cpp:class:`ObjectBase` get the first two
properties above, but do not get smart pointers. Classes that derive from class
:cpp:class:`SimpleRefCount`: get only the smart-pointer reference counting
system.
In practice, class :cpp:class:`Object` is the variant of the three above that
the |ns3| developer will most commonly encounter.
Memory management and class Ptr
*******************************
Memory management in a C++ program is a complex process, and is often done
incorrectly or inconsistently. We have settled on a reference counting design
described as follows.
All objects using reference counting maintain an internal reference count to
determine when an object can safely delete itself. Each time that a pointer is
obtained to an interface, the object's reference count is incremented by calling
``Ref()``. It is the obligation of the user of the pointer to explicitly
``Unref()`` the pointer when done. When the reference count falls to zero, the
object is deleted.
* When the client code obtains a pointer from the object itself through object
creation, or via GetObject, it does not have to increment the reference count.
* When client code obtains a pointer from another source (e.g., copying a
pointer) it must call ``Ref()`` to increment the reference count.
* All users of the object pointer must call ``Unref()`` to release the
reference.
The burden for calling :cpp:func:`Unref()` is somewhat relieved by the use of
the reference counting smart pointer class described below.
Users using a low-level API who wish to explicitly allocate
non-reference-counted objects on the heap, using operator new, are responsible
for deleting such objects.
Reference counting smart pointer (Ptr)
++++++++++++++++++++++++++++++++++++++
Calling ``Ref()`` and ``Unref()`` all the time would be cumbersome, so |ns3|
provides a smart pointer class :cpp:class:`Ptr` similar to
:cpp:class:`Boost::intrusive_ptr`. This smart-pointer class assumes that the
underlying type provides a pair of ``Ref`` and ``Unref`` methods that are
expected to increment and decrement the internal refcount of the object
instance.
This implementation allows you to manipulate the smart pointer as if it was a
normal pointer: you can compare it with zero, compare it against other pointers,
assign zero to it, etc.
It is possible to extract the raw pointer from this smart pointer with the
:cpp:func:`GetPointer` and :cpp:func:`PeekPointer` methods.
If you want to store a newed object into a smart pointer, we recommend you to
use the CreateObject template functions to create the object and store it in a
smart pointer to avoid memory leaks. These functions are really small
convenience functions and their goal is just to save you a small bit of typing.
CreateObject and Create
+++++++++++++++++++++++
Objects in C++ may be statically, dynamically, or automatically created. This
holds true for |ns3| also, but some objects in the system have some additional
frameworks available. Specifically, reference counted objects are usually
allocated using a templated Create or CreateObject method, as follows.
For objects deriving from class :cpp:class:`Object`:::
Ptr<WifiNetDevice> device = CreateObject<WifiNetDevice> ();
Please do not create such objects using ``operator new``; create them using
:cpp:func:`CreateObject()` instead.
For objects deriving from class :cpp:class:`SimpleRefCount`, or other objects
that support usage of the smart pointer class, a templated helper function is
available and recommended to be used:::
Ptr<B> b = Create<B> ();
This is simply a wrapper around operator new that correctly handles the
reference counting system.
In summary, use ``Create<B>`` if B is not an object but just uses reference
counting (e.g. :cpp:class:`Packet`), and use ``CreateObject<B>`` if B derives
from :cpp:class:`ns3::Object`.
Aggregation
+++++++++++
The |ns3| object aggregation system is motivated in strong part by a recognition
that a common use case for |ns2| has been the use of inheritance and
polymorphism to extend protocol models. For instance, specialized versions of
TCP such as RenoTcpAgent derive from (and override functions from) class
TcpAgent.
However, two problems that have arisen in the |ns2| model are downcasts and
"weak base class." Downcasting refers to the procedure of using a base class
pointer to an object and querying it at run time to find out type information,
used to explicitly cast the pointer to a subclass pointer so that the subclass
API can be used. Weak base class refers to the problems that arise when a class
cannot be effectively reused (derived from) because it lacks necessary
functionality, leading the developer to have to modify the base class and
causing proliferation of base class API calls, some of which may not be
semantically correct for all subclasses.
|ns3| is using a version of the query interface design pattern to avoid these
problems. This design is based on elements of the `Component Object Model
<http://en.wikipedia.org/wiki/Component_Object_Model>`_ and `GNOME Bonobo
<http://en.wikipedia.org/wiki/Bonobo_(component_model)>`_ although full
binary-level compatibility of replaceable components is not supported and we
have tried to simplify the syntax and impact on model developers.
Aggregation example
+++++++++++++++++++
:cpp:class:`Node` is a good example of the use of aggregation in |ns3|. Note
that there are not derived classes of Nodes in |ns3| such as class
:cpp:class:`InternetNode`. Instead, components (protocols) are aggregated to a
node. Let's look at how some Ipv4 protocols are added to a node.::
static void
AddIpv4Stack(Ptr<Node> node)
{
Ptr<Ipv4L3Protocol> ipv4 = CreateObject<Ipv4L3Protocol> ();
ipv4->SetNode (node);
node->AggregateObject (ipv4);
Ptr<Ipv4Impl> ipv4Impl = CreateObject<Ipv4Impl> ();
ipv4Impl->SetIpv4 (ipv4);
node->AggregateObject (ipv4Impl);
}
Note that the Ipv4 protocols are created using :cpp:func:`CreateObject()`.
Then, they are aggregated to the node. In this manner, the Node base class does
not need to be edited to allow users with a base class Node pointer to access
the Ipv4 interface; users may ask the node for a pointer to its Ipv4 interface
at runtime. How the user asks the node is described in the next subsection.
Note that it is a programming error to aggregate more than one object of the
same type to an :cpp:class:`ns3::Object`. So, for instance, aggregation is not
an option for storing all of the active sockets of a node.
GetObject example
+++++++++++++++++
GetObject is a type-safe way to achieve a safe downcasting and to allow
interfaces to be found on an object.
Consider a node pointer ``m_node`` that points to a Node object that has an
implementation of IPv4 previously aggregated to it. The client code wishes to
configure a default route. To do so, it must access an object within the node
that has an interface to the IP forwarding configuration. It performs the
following:::
Ptr<Ipv4> ipv4 = m_node->GetObject<Ipv4> ();
If the node in fact does not have an Ipv4 object aggregated to it, then the
method will return null. Therefore, it is good practice to check the return
value from such a function call. If successful, the user can now use the Ptr to
the Ipv4 object that was previously aggregated to the node.
Another example of how one might use aggregation is to add optional models to
objects. For instance, an existing Node object may have an "Energy Model" object
aggregated to it at run time (without modifying and recompiling the node class).
An existing model (such as a wireless net device) can then later "GetObject" for
the energy model and act appropriately if the interface has been either built in
to the underlying Node object or aggregated to it at run time. However, other
nodes need not know anything about energy models.
We hope that this mode of programming will require much less need for developers
to modify the base classes.
Object factories
****************
A common use case is to create lots of similarly configured objects. One can
repeatedly call :cpp:func:`CreateObject` but there is also a factory design
pattern in use in the |ns3| system. It is heavily used in the "helper" API.
Class :cpp:class:`ObjectFactory` can be used to instantiate objects and to
configure the attributes on those objects::
void SetTypeId (TypeId tid);
void Set (std::string name, const AttributeValue &value);
Ptr<T> Create (void) const;
The first method allows one to use the |ns3| TypeId system to specify the type
of objects created. The second allows one to set attributes on the objects to be
created, and the third allows one to create the objects themselves.
For example: ::
ObjectFactory factory;
// Make this factory create objects of type FriisPropagationLossModel
factory.SetTypeId ("ns3::FriisPropagationLossModel")
// Make this factory object change a default value of an attribute, for
// subsequently created objects
factory.Set ("SystemLoss", DoubleValue (2.0));
// Create one such object
Ptr<Object> object = factory.Create ();
factory.Set ("SystemLoss", DoubleValue (3.0));
// Create another object with a different SystemLoss
Ptr<Object> object = factory.Create ();
Downcasting
***********
A question that has arisen several times is, "If I have a base class pointer
(Ptr) to an object and I want the derived class pointer, should I downcast (via
C++ dynamic cast) to get the derived pointer, or should I use the object
aggregation system to :cpp:func:`GetObject\<> ()` to find a Ptr to the interface
to the subclass API?"
The answer to this is that in many situations, both techniques will work.
|ns3| provides a templated function for making the syntax of Object
dynamic casting much more user friendly:::
template <typename T1, typename T2>
Ptr<T1>
DynamicCast (Ptr<T2> const&p)
{
return Ptr<T1> (dynamic_cast<T1 *> (PeekPointer (p)));
}
DynamicCast works when the programmer has a base type pointer and is testing
against a subclass pointer. GetObject works when looking for different objects
aggregated, but also works with subclasses, in the same way as DynamicCast. If
unsure, the programmer should use GetObject, as it works in all cases. If the
programmer knows the class hierarchy of the object under consideration, it is
more direct to just use DynamicCast.
+6
View File
@@ -0,0 +1,6 @@
.. include:: replace.txt
Object names
------------
*Placeholder chapter*
+60
View File
@@ -0,0 +1,60 @@
.. include:: replace.txt
Organization
------------
This chapter describes the overall |ns3| software organization and the
corresponding organization of this manual.
|ns3| is a discrete-event network simulator in which the simulation core
and models are implemented in C++. |ns3| is built as a library which may be
statically or dynamically linked to a C++ main program that defines the
simulation topology and starts the simulator. |ns3| also exports nearly all
of its API to Python, allowing Python programs to import an "ns3" module in
much the same way as the |ns3| library is linked by executables in C++.
.. _software-organization:
.. figure:: figures/software-organization.*
Software organization of |ns3|
The source code for |ns3| is mostly organized in the ``src`` directory and
can be described by the diagram in :ref:`software-organization`. We will
work our way from the bottom up; in general, modules only have dependencies
on modules beneath them in the figure.
We first describe the core of the simulator; those components that are
common across all protocol, hardware, and environmental models.
The simulation core is implemented in ``src/core``. Packets are
fundamental objects in a network simulator
and are implemented in ``src/network``. These two simulation modules by
themselves are intended to comprise a generic simulation core that can be
used by different kinds of networks, not just Internet-based networks. The
above modules of |ns3| are independent of specific network and device
models, which are covered in subsequent parts of this manual.
In addition to the above |ns3| core, we introduce, also in the initial
portion of the manual, two other modules that supplement the core C++-based
API. |ns3| programs may access
all of the API directly or may make use of a so-called *helper API* that
provides convenient wrappers or encapsulation of low-level API calls. The
fact that |ns3| programs can be written to two APIs (or a combination
thereof) is a fundamental aspect of the simulator.
We also describe how Python is supported in |ns3| before moving onto
specific models of relevance to network simulation.
The remainder of the manual is focused on documenting the models and
supporting capabilities. The next part focuses on two fundamental objects in
|ns3|: the ``Node`` and ``NetDevice``. Two special NetDevice types are
designed to support network emulation use cases, and emulation is described
next. The following chapter is devoted to Internet-related models,
including the
sockets API used by Internet applications. The next chapter covers
applications, and the following chapter describes additional support for
simulation, such as animators and statistics.
The project maintains a separate manual devoted to testing and validation
of |ns3| code (see the `ns-3 Testing and Validation manual
<http://www.nsnam.org/tutorials.html>`_).
+315
View File
@@ -0,0 +1,315 @@
.. include:: replace.txt
Using Python to Run |ns3|
-------------------------
Python bindings allow the C++ code in |ns3| to be called from Python.
This chapter shows you how to create a Python script that can run |ns3| and also the process of creating Python bindings for a C++ |ns3| module.
Introduction
************
The goal of Python bindings for |ns3| are two fold:
#. Allow the programmer to write complete simulation scripts in Python (http://www.python.org);
#. Prototype new models (e.g. routing protocols).
For the time being, the primary focus of the bindings is the first goal, but the second goal will eventually be supported as well.
Python bindings for |ns3| are being developed using a new tool called PyBindGen (http://code.google.com/p/pybindgen).
An Example Python Script that Runs |ns3|
****************************************
Here is some example code that is written in Python and that runs |ns3|, which is written in C++. This Python example can be found in ``examples/tutorial/first.py``:
::
import ns.applications
import ns.core
import ns.internet
import ns.network
import ns.point_to_point
ns.core.LogComponentEnable("UdpEchoClientApplication", ns.core.LOG_LEVEL_INFO)
ns.core.LogComponentEnable("UdpEchoServerApplication", ns.core.LOG_LEVEL_INFO)
nodes = ns.network.NodeContainer()
nodes.Create(2)
pointToPoint = ns.point_to_point.PointToPointHelper()
pointToPoint.SetDeviceAttribute("DataRate", ns.core.StringValue("5Mbps"))
pointToPoint.SetChannelAttribute("Delay", ns.core.StringValue("2ms"))
devices = pointToPoint.Install(nodes)
stack = ns.internet.InternetStackHelper()
stack.Install(nodes)
address = ns.internet.Ipv4AddressHelper()
address.SetBase(ns.network.Ipv4Address("10.1.1.0"), ns.network.Ipv4Mask("255.255.255.0"))
interfaces = address.Assign (devices);
echoServer = ns.applications.UdpEchoServerHelper(9)
serverApps = echoServer.Install(nodes.Get(1))
serverApps.Start(ns.core.Seconds(1.0))
serverApps.Stop(ns.core.Seconds(10.0))
echoClient = ns.applications.UdpEchoClientHelper(interfaces.GetAddress(1), 9)
echoClient.SetAttribute("MaxPackets", ns.core.UintegerValue(1))
echoClient.SetAttribute("Interval", ns.core.TimeValue(ns.core.Seconds (1.0)))
echoClient.SetAttribute("PacketSize", ns.core.UintegerValue(1024))
clientApps = echoClient.Install(nodes.Get(0))
clientApps.Start(ns.core.Seconds(2.0))
clientApps.Stop(ns.core.Seconds(10.0))
ns.core.Simulator.Run()
ns.core.Simulator.Destroy()
Running Python Scripts
**********************
waf contains some options that automatically update the python path to find the ns3 module. To run example programs, there are two ways to use waf to take care of this. One is to run a waf shell; e.g.:
::
./waf --shell
python examples/mixed-wireless.py
and the other is to use the --pyrun option to waf:
::
./waf --pyrun examples/mixed-wireless.py
To run a python script under the C debugger:
::
./waf --shell
gdb --args python examples/mixed-wireless.py
To run your own Python script that calls |ns3| and that has this path, ``/path/to/your/example/my-script.py``, do the following:
::
./waf --shell
python /path/to/your/example/my-script.py
Caveats
*******
Python bindings for |ns3| are a work in progress, and some limitations are known by developers. Some of these limitations (not all) are listed here.
Incomplete Coverage
+++++++++++++++++++
First of all, keep in mind that not 100% of the API is supported in Python. Some of the reasons are:
#. some of the APIs involve pointers, which require knowledge of what kind of memory passing semantics (who owns what memory). Such knowledge is not part of the function signatures, and is either documented or sometimes not even documented. Annotations are needed to bind those functions;
#. Sometimes a unusual fundamental data type or C++ construct is used which is not yet supported by PyBindGen;
#. GCC-XML does not report template based classes unless they are instantiated.
Most of the missing APIs can be wrapped, given enough time, patience, and expertise, and will likely be wrapped if bug reports are submitted. However, don't file a bug report saying "bindings are incomplete", because we do not have manpower to complete 100% of the bindings.
Conversion Constructors
+++++++++++++++++++++++
Conversion constructors (http://publib.boulder.ibm.com/infocenter/compbgpl/v9v111/topic/com.ibm.xlcpp9.bg.doc/language_ref/cplr384.htm) are not fully supported yet by PyBindGen, and they always act as explicit constructors when translating an API into Python. For example, in C++ you can do this:
::
Ipv4AddressHelper ipAddrs;
ipAddrs.SetBase ("192.168.0.0", "255.255.255.0");
ipAddrs.Assign (backboneDevices);
In Python, for the time being you have to do:
::
ipAddrs = ns3.Ipv4AddressHelper()
ipAddrs.SetBase(ns3.Ipv4Address("192.168.0.0"), ns3.Ipv4Mask("255.255.255.0"))
ipAddrs.Assign(backboneDevices)
CommandLine
+++++++++++
:cpp:func:`CommandLine::AddValue` works differently in Python than it does in |ns3|. In Python, the first parameter is a string that represents the command-line option name. When the option is set, an attribute with the same name as the option name is set on the :cpp:func:`CommandLine` object. Example:
::
NUM_NODES_SIDE_DEFAULT = 3
cmd = ns3.CommandLine()
cmd.NumNodesSide = None
cmd.AddValue("NumNodesSide", "Grid side number of nodes (total number of nodes will be this number squared)")
cmd.Parse(argv)
[...]
if cmd.NumNodesSide is None:
num_nodes_side = NUM_NODES_SIDE_DEFAULT
else:
num_nodes_side = int(cmd.NumNodesSide)
Tracing
+++++++
Callback based tracing is not yet properly supported for Python, as new |ns3| API needs to be provided for this to be supported.
Pcap file writing is supported via the normal API.
Ascii tracing is supported since |ns3|.4 via the normal C++ API translated to Python. However, ascii tracing requires the creation of an ostream object to pass into the ascii tracing methods. In Python, the C++ std::ofstream has been minimally wrapped to allow this. For example:
::
ascii = ns3.ofstream("wifi-ap.tr") # create the file
ns3.YansWifiPhyHelper.EnableAsciiAll(ascii)
ns3.Simulator.Run()
ns3.Simulator.Destroy()
ascii.close() # close the file
There is one caveat: you must not allow the file object to be garbage collected while |ns3| is still using it. That means that the 'ascii' variable above must not be allowed to go out of scope or else the program will crash.
Cygwin limitation
+++++++++++++++++
Python bindings do not work on Cygwin. This is due to a gccxml bug.
You might get away with it by re-scanning API definitions from within the
cygwin environment (./waf --python-scan). However the most likely solution
will probably have to be that we disable python bindings in CygWin.
If you really care about Python bindings on Windows, try building with mingw and native
python instead. Or else, to build without python bindings, disable python bindings in the configuration stage:
::
./waf configure --disable-python
Working with Python Bindings
****************************
There are currently two kinds of Python bindings in |ns3|:
#. Monolithic bindings contain API definitions for all of the modules and can be found in a single directory, ``bindings/python``.
#. Modular bindings contain API definitions for a single module and can be found in each module's ``bindings`` directory.
Python Bindings Workflow
++++++++++++++++++++++++
The process by which Python bindings are handled is the following:
#. Periodically a developer uses a GCC-XML (http://www.gccxml.org) based API scanning script, which saves the scanned API definition as ``bindings/python/ns3_module_*.py`` files or as Python files in each modules' ``bindings`` directory. These files are kept under version control in the main |ns3| repository;
#. Other developers clone the repository and use the already scanned API definitions;
#. When configuring |ns3|, pybindgen will be automatically downloaded if not already installed. Released |ns3| tarballs will ship a copy of pybindgen.
If something goes wrong with compiling Python bindings and you just want to ignore them and move on with C++, you can disable Python with:
::
./waf --disable-python
Instructions for Handling New Files or Changed API's
****************************************************
So you have been changing existing |ns3| APIs and Python bindings no longer compile? Do not despair, you can rescan the bindings to create new bindings that reflect the changes to the |ns3| API.
Depending on if you are using monolithic or modular bindings, see the discussions below to learn how to rescan your Python bindings.
Monolithic Python Bindings
**************************
Scanning the Monolithic Python Bindings
+++++++++++++++++++++++++++++++++++++++
To scan the monolithic Python bindings do the following:
::
./waf --python-scan
Organization of the Monolithic Python Bindings
++++++++++++++++++++++++++++++++++++++++++++++
The monolithic Python API definitions are organized as follows. For each |ns3| module <name>, the file ``bindings/python/ns3_module_<name>.py`` describes its API. Each of those files have 3 toplevel functions:
#. :cpp:func:`def register_types(module)`: this function takes care of registering new types (e.g. C++ classes, enums) that are defined in tha module;
#. :cpp:func:`def register_methods(module)`: this function calls, for each class <name>, another function register_methods_Ns3<name>(module). These latter functions add method definitions for each class;
#. :cpp:func:`def register_functions(module)`: this function registers |ns3| functions that belong to that module.
Modular Python Bindings
***********************
Overview
++++++++
Since ns 3.11, the modular bindings are being added, in parallel to the old monolithic bindings.
The new python bindings are generated into an 'ns' namespace, instead of 'ns3' for the old bindings. Example:
::
from ns.network import Node
n1 = Node()
With modular Python bindings:
#. There is one separate Python extension module for each |ns3| module;
#. Scanning API definitions (apidefs) is done on a per ns- module basis;
#. Each module's apidefs files are stored in a 'bindings' subdirectory of the module directory;
Scanning the Modular Python Bindings
+++++++++++++++++++++++++++++++++++++++
To scan the modular Python bindings for the core module, for example, do the following:
::
./waf --apiscan=core
To scan the modular Python bindings for all of the modules, do the following:
::
./waf --apiscan=all
Creating a New Module
+++++++++++++++++++++
If you are adding a new module, Python bindings will continue to compile but will not cover the new module.
To cover a new module, you have to create a ``bindings/python/ns3_module_<name>.py`` file, similar to the what is described in the previous sections, and register it in the variable :cpp:func:`LOCAL_MODULES` in ``bindings/python/ns3modulegen.py``
Adding Modular Bindings To A Existing Module
++++++++++++++++++++++++++++++++++++++++++++
To add support for modular bindings to an existing |ns3| module, simply add the following line to its wscript build() function:
::
bld.ns3_python_bindings()
Organization of the Modular Python Bindings
+++++++++++++++++++++++++++++++++++++++++++
The ``src/<module>/bindings`` directory may contain the following files, some of them optional:
* ``callbacks_list.py``: this is a scanned file, DO NOT TOUCH. Contains a list of Callback<...> template instances found in the scanned headers;
* ``modulegen__gcc_LP64.py``: this is a scanned file, DO NOT TOUCH. Scanned API definitions for the GCC, LP64 architecture (64-bit)
* ``modulegen__gcc_ILP32.py``: this is a scanned file, DO NOT TOUCH. Scanned API definitions for the GCC, ILP32 architecture (32-bit)
* ``modulegen_customizations.py``: you may optionally add this file in order to customize the pybindgen code generation
* ``scan-header.h``: you may optionally add this file to customize what header file is scanned for the module. Basically this file is scanned instead of ns3/<module>-module.h. Typically, the first statement is #include "ns3/<module>-module.h", plus some other stuff to force template instantiations;
* ``module_helpers.cc``: you may add additional files, such as this, to be linked to python extension module, but they have to be registered in the wscript. Look at src/core/wscript for an example of how to do so;
* ``<module>.py``: if this file exists, it becomes the "frontend" python module for the ns3 module, and the extension module (.so file) becomes _<module>.so instead of <module>.so. The <module>.py file has to import all symbols from the module _<module> (this is more tricky than it sounds, see src/core/bindings/core.py for an example), and then can add some additional pure-python definitions.
More Information for Developers
*******************************
If you are a developer and need more information on |ns3|'s Python bindings, please see the Python Bindings wiki page at
`<http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings>`_.
+289
View File
@@ -0,0 +1,289 @@
.. include:: replace.txt
Random Variables
----------------
|ns3| contains a built-in pseudo-random number generator (PRNG). It is important
for serious users of the simulator to understand the functionality,
configuration, and usage of this PRNG, and to decide whether it is sufficient
for his or her research use.
Quick Overview
**************
|ns3| random numbers are provided via instances of
:cpp:class:`ns3::RandomVariable`.
* by default, |ns3| simulations use a fixed seed; if there is any randomness in
the simulation, each run of the program will yield identical results unless
the seed and/or run number is changed.
* in *ns-3.3* and earlier, |ns3| simulations used a random seed by default; this
marks a change in policy starting with *ns-3.4*.
* to obtain randomness across multiple simulation runs, you must either set the
seed differently or set the run number differently. To set a seed, call
:cpp:func:`ns3::SeedManager::SetSeed` at the beginning of the program; to set
a run number with the same seed, call :cpp:func:`ns3::SeedManager::SetRun` at
the beginning of the program; see :ref:`seeding-and-independent-replications`.
* each RandomVariable used in |ns3| has a virtual random number generator
associated with it; all random variables use either a fixed or random seed
based on the use of the global seed (previous bullet);
* if you intend to perform multiple runs of the same scenario, with different
random numbers, please be sure to read the section on how to perform
independent replications: :ref:`seeding-and-independent-replications`.
Read further for more explanation about the random number facility for |ns3|.
Background
**********
Simulations use a lot of random numbers; one study
found that most network simulations spend as much as 50%
of the CPU generating random numbers. Simulation users need
to be concerned with the quality of the (pseudo) random numbers and
the independence between different streams of random numbers.
Users need to be concerned with a few issues, such as:
* the seeding of the random number generator and whether a
simulation outcome is deterministic or not,
* how to acquire different streams of random numbers that are
independent from one another, and
* how long it takes for streams to cycle
We will introduce a few terms here: a RNG provides a long sequence
of (pseudo) random numbers.
The length of this sequence is called the *cycle length*
or *period*, after which the RNG will repeat itself.
This sequence can
be partitioned into disjoint *streams*. A stream of a
RNG is a contiguous subset or block of the RNG sequence.
For instance, if the
RNG period is of length N, and two streams are provided from this
RNG, then
the first stream might use the first N/2 values and the second
stream might produce the second N/2 values. An important property
here is that the two streams are uncorrelated. Likewise, each
stream can be partitioned disjointedly to a number of
uncorrelated *substreams*. The underlying RNG hopefully
produces a pseudo-random sequence of numbers with a very long
cycle length, and partitions this into streams and substreams in an
efficient manner.
|ns3| uses the same underlying random number generator as does |ns2|: the
MRG32k3a generator from Pierre L'Ecuyer. A detailed description can be found in
http://www.iro.umontreal.ca/~lecuyer/myftp/papers/streams00.pdf. The MRG32k3a
generator provides :math:`1.8x10^{19}` independent streams of random numbers,
each of which consists of :math:`2.3x10^{15}` substreams. Each substream has a
period (*i.e.*, the number of random numbers before overlap) of
:math:`7.6x10^{22}`. The period of the entire generator is :math:`3.1x10^{57}`.
Class :cpp:class:`ns3::RandomVariable` is the public interface to this
underlying random number generator. When users create new ``RandomVariables``
(such as :cpp:class:`ns3::UniformVariable`,
:cpp:class:`ns3::ExponentialVariable`, etc.), they create an object that uses
one of the distinct, independent streams of the random number generator.
Therefore, each object of type :cpp:class:`ns3::RandomVariable` has,
conceptually, its own "virtual" RNG. Furthermore, each
:cpp:class:`ns3::RandomVariable` can be configured to use one of the set of
substreams drawn from the main stream.
An alternate implementation would be to allow each RandomVariable to have its
own (differently seeded) RNG. However, we cannot guarantee as strongly that the
different sequences would be uncorrelated in such a case; hence, we prefer to
use a single RNG and streams and substreams from it.
.. _seeding-and-independent-replications:
Seeding and independent replications
************************************
|ns3| simulations can be configured to produce deterministic or random results.
If the |ns3| simulation is configured to use a fixed, deterministic seed with
the same run number, it should give the same output each time it is run.
By default, |ns3| simulations use a fixed seed and run number. These values
are stored in two :cpp:class:`ns3::GlobalValue` instances: ``g_rngSeed`` and
``g_rngRun``.
A typical use case is to run a simulation as a sequence of independent trials,
so as to compute statistics on a large number of independent runs. The user can
either change the global seed and rerun the simulation, or can advance the
substream state of the RNG, which is referred to as incrementing the run number.
A class :cpp:class:`ns3::SeedManager` provides an API to control the seeding and
run number behavior. This seeding and substream state setting must be called
before any random variables are created; e.g::
SeedManager::SetSeed (3); // Changes seed from default of 1 to 3
SeedManager::SetRun (7); // Changes run number from default of 1 to 7
// Now, create random variables
UniformVariable x(0,10);
ExponentialVariable y(2902);
...
Which is better, setting a new seed or advancing the substream state? There is
no guarantee that the streams produced by two random seeds will not overlap.
The only way to guarantee that two streams do not overlap is to use the
substream capability provided by the RNG implementation. *Therefore, use the
substream capability to produce multiple independent runs of the same
simulation.* In other words, the more statistically rigorous way to configure
multiple independent replications is to use a fixed seed and to advance the run
number. This implementation allows for a maximum of :math:`2.3x10^{15}`
independent replications using the substreams.
For ease of use, it is not necessary to control the seed and run number from
within the program; the user can set the ``NS_GLOBAL_VALUE`` environment
variable as follows::
NS_GLOBAL_VALUE="RngRun=3" ./waf --run program-name
Another way to control this is by passing a command-line argument; since this is
an |ns3| GlobalValue instance, it is equivalently done such as follows::
./waf --command-template="%s --RngRun=3" --run program-name
or, if you are running programs directly outside of waf::
./build/optimized/scratch/program-name --RngRun=3
The above command-line variants make it easy to run lots of different
runs from a shell script by just passing a different RngRun index.
Class RandomVariable
********************
All random variables should derive from class :cpp:class:`RandomVariable`. This
base class provides a few static methods for globally configuring the behavior
of the random number generator. Derived classes provide API for drawing random
variates from the particular distribution being supported.
Each RandomVariable created in the simulation is given a generator that is a new
RNGStream from the underlying PRNG. Used in this manner, the L'Ecuyer
implementation allows for a maximum of :math:`1.8x10^19` random variables. Each
random variable in a single replication can produce up to :math:`7.6x10^22`
random numbers before overlapping.
Base class public API
*********************
Below are excerpted a few public methods of class :cpp:class:`RandomVariable`
that access the next value in the substream.::
/**
* \brief Returns a random double from the underlying distribution
* \return A floating point random value
*/
double GetValue (void) const;
/**
* \brief Returns a random integer integer from the underlying distribution
* \return Integer cast of ::GetValue()
*/
uint32_t GetInteger (void) const;
We have already described the seeding configuration above. Different
RandomVariable subclasses may have additional API.
Types of RandomVariables
************************
The following types of random variables are provided, and are documented in the
|ns3| Doxygen or by reading ``src/core/model/random-variable.h``. Users can also
create their own custom random variables by deriving from class
:cpp:class:`RandomVariable`.
* class :cpp:class:`UniformVariable`
* class :cpp:class:`ConstantVariable`
* class :cpp:class:`SequentialVariable`
* class :cpp:class:`ExponentialVariable`
* class :cpp:class:`ParetoVariable`
* class :cpp:class:`WeibullVariable`
* class :cpp:class:`NormalVariable`
* class :cpp:class:`EmpiricalVariable`
* class :cpp:class:`IntEmpiricalVariable`
* class :cpp:class:`DeterministicVariable`
* class :cpp:class:`LogNormalVariable`
* class :cpp:class:`TriangularVariable`
* class :cpp:class:`GammaVariable`
* class :cpp:class:`ErlangVariable`
* class :cpp:class:`ZipfVariable`
Semantics of RandomVariable objects
***********************************
RandomVariable objects have value semantics. This means that they can be passed
by value to functions. The can also be passed by reference to const.
RandomVariables do not derive from :cpp:class:`ns3::Object` and we do not use
smart pointers to manage them; they are either allocated on the stack or else
users explicitly manage any heap-allocated RandomVariables.
RandomVariable objects can also be used in |ns3| attributes, which means
that values can be set for them through the |ns3| attribute system.
An example is in the propagation models for WifiNetDevice:::
TypeId
RandomPropagationDelayModel::GetTypeId (void)
{
static TypeId tid = TypeId ("ns3::RandomPropagationDelayModel")
.SetParent<PropagationDelayModel> ()
.AddConstructor<RandomPropagationDelayModel> ()
.AddAttribute ("Variable",
"The random variable which generates random delays (s).",
RandomVariableValue (UniformVariable (0.0, 1.0)),
MakeRandomVariableAccessor (&RandomPropagationDelayModel::m_variable),
MakeRandomVariableChecker ())
;
return tid;
}
Here, the |ns3| user can change the default random variable for this
delay model (which is a UniformVariable ranging from 0 to 1) through
the attribute system.
Using other PRNG
****************
There is presently no support for substituting a different underlying
random number generator (e.g., the GNU Scientific Library or the Akaroa
package). Patches are welcome.
More advanced usage
*******************
*To be completed.*
Publishing your results
***********************
When you publish simulation results, a key piece of configuration
information that you should always state is how you used the
the random number generator.
* what seeds you used,
* what RNG you used if not the default,
* how were independent runs performed,
* for large simulations, how did you check that you did not cycle.
It is incumbent on the researcher publishing results to include enough
information to allow others to reproduce his or her results. It is also
incumbent on the researcher to convince oneself that the random numbers used
were statistically valid, and to state in the paper why such confidence is
assumed.
Summary
*******
Let's review what things you should do when creating a simulation.
* Decide whether you are running with a fixed seed or random seed; a fixed seed
is the default,
* Decide how you are going to manage independent replications, if applicable,
* Convince yourself that you are not drawing more random values than the cycle
length, if you are running a very long simulation, and
* When you publish, follow the guidelines above about documenting your use of
the random number generator.
+93
View File
@@ -0,0 +1,93 @@
.. include:: replace.txt
RealTime
--------
|ns3| has been designed for integration into testbed and virtual machine
environments. To integrate with real network stacks and emit/consume packets, a
real-time scheduler is needed to try to lock the simulation clock with the
hardware clock. We describe here a component of this: the RealTime scheduler.
The purpose of the realtime scheduler is to cause the progression of the
simulation clock to occur synchronously with respect to some external time base.
Without the presence of an external time base (wall clock), simulation time
jumps instantly from one simulated time to the next.
Behavior
********
When using a non-realtime scheduler (the default in |ns3|), the simulator
advances the simulation time to the next scheduled event. During event
execution, simulation time is frozen. With the realtime scheduler, the behavior
is similar from the perspective of simulation models (i.e., simulation time is
frozen during event execution), but between events, the simulator will attempt
to keep the simulation clock aligned with the machine clock.
When an event is finished executing, and the scheduler moves to the next event,
the scheduler compares the next event execution time with the machine clock. If
the next event is scheduled for a future time, the simulator sleeps until that
realtime is reached and then executes the next event.
It may happen that, due to the processing inherent in the execution of
simulation events, that the simulator cannot keep up with realtime. In such a
case, it is up to the user configuration what to do. There are two |ns3|
attributes that govern the behavior. The first is
``ns3::RealTimeSimulatorImpl::SynchronizationMode``. The two entries possible
for this attribute are ``BestEffort`` (the default) or ``HardLimit``. In
"BestEffort" mode, the simulator will just try to catch up to realtime by
executing events until it reaches a point where the next event is in the
(realtime) future, or else the simulation ends. In BestEffort mode, then, it is
possible for the simulation to consume more time than the wall clock time. The
other option "HardLimit" will cause the simulation to abort if the tolerance
threshold is exceeded. This attribute is
``ns3::RealTimeSimulatorImpl::HardLimit`` and the default is 0.1 seconds.
A different mode of operation is one in which simulated time is **not** frozen
during an event execution. This mode of realtime simulation was implemented but
removed from the |ns3| tree because of questions of whether it would be useful.
If users are interested in a realtime simulator for which simulation time does
not freeze during event execution (i.e., every call to ``Simulator::Now()``
returns the current wall clock time, not the time at which the event started
executing), please contact the ns-developers mailing list.
Usage
*****
The usage of the realtime simulator is straightforward, from a scripting
perspective. Users just need to set the attribute
``SimulatorImplementationType`` to the Realtime simulator, such as follows: ::
GlobalValue::Bind ("SimulatorImplementationType",
StringValue ("ns3::RealtimeSimulatorImpl"));
There is a script in ``examples/realtime/realtime-udp-echo.cc`` that
has an example of how to configure the realtime behavior. Try: ::
./waf --run realtime-udp-echo
Whether the simulator will work in a best effort or hard limit policy fashion is
governed by the attributes explained in the previous section.
Implementation
**************
The implementation is contained in the following files:
* ``src/core/model/realtime-simulator-impl.{cc,h}``
* ``src/core/model/wall-clock-synchronizer.{cc,h}``
In order to create a realtime scheduler, to a first approximation you just want
to cause simulation time jumps to consume real time. We propose doing this using
a combination of sleep- and busy- waits. Sleep-waits cause the calling process
(thread) to yield the processor for some amount of time. Even though this
specified amount of time can be passed to nanosecond resolution, it is actually
converted to an OS-specific granularity. In Linux, the granularity is called a
Jiffy. Typically this resolution is insufficient for our needs (on the order of
a ten milliseconds), so we round down and sleep for some smaller number of
Jiffies. The process is then awakened after the specified number of Jiffies has
passed. At this time, we have some residual time to wait. This time is generally
smaller than the minimum sleep time, so we busy-wait for the remainder of the
time. This means that the thread just sits in a for loop consuming cycles until
the desired time arrives. After the combination of sleep- and busy-waits, the
elapsed realtime (wall) clock should agree with the simulation time of the next
event and the simulation proceeds.
+3
View File
@@ -0,0 +1,3 @@
.. |ns3| replace:: *ns-3*
.. |ns2| replace:: *ns-2*
+10
View File
@@ -0,0 +1,10 @@
Support
-------
.. toctree::
new-models
new-modules
enable-modules
enable-tests
troubleshoot
+219
View File
@@ -0,0 +1,219 @@
.. include:: replace.txt
Background
----------
**This chapter may be skipped by readers familiar with the basics of
software testing.**
Writing defect-free software is a difficult proposition. There are many
dimensions to the problem and there is much confusion regarding what is
meant by different terms in different contexts. We have found it worthwhile
to spend a little time reviewing the subject and defining some terms.
Software testing may be loosely defined as the process of executing a program
with the intent of finding errors. When one enters a discussion regarding
software testing, it quickly becomes apparent that there are many distinct
mind-sets with which one can approach the subject.
For example, one could break the process into broad functional categories
like ''correctness testing,'' ''performance testing,'' ''robustness testing''
and ''security testing.'' Another way to look at the problem is by life-cycle:
''requirements testing,'' ''design testing,'' ''acceptance testing,'' and
''maintenance testing.'' Yet another view is by the scope of the tested system.
In this case one may speak of ''unit testing,'' ''component testing,''
''integration testing,'' and ''system testing.'' These terms are also not
standardized in any way, and so ''maintenance testing'' and ''regression
testing'' may be heard interchangeably. Additionally, these terms are often
misused.
There are also a number of different philosophical approaches to software
testing. For example, some organizations advocate writing test programs
before actually implementing the desired software, yielding ''test-driven
development.'' Some organizations advocate testing from a customer perspective
as soon as possible, following a parallel with the agile development process:
''test early and test often.'' This is sometimes called ''agile testing.'' It
seems that there is at least one approach to testing for every development
methodology.
The |ns3| project is not in the business of advocating for any one of
these processes, but the project as a whole has requirements that help inform
the test process.
Like all major software products, |ns3| has a number of qualities that
must be present for the product to succeed. From a testing perspective, some
of these qualities that must be addressed are that |ns3| must be
''correct,'' ''robust,'' ''performant'' and ''maintainable.'' Ideally there
should be metrics for each of these dimensions that are checked by the tests
to identify when the product fails to meet its expectations / requirements.
Correctness
***********
The essential purpose of testing is to determine that a piece of software
behaves ''correctly.'' For |ns3| this means that if we simulate
something, the simulation should faithfully represent some physical entity or
process to a specified accuracy and precision.
It turns out that there are two perspectives from which one can view
correctness. Verifying that a particular model is implemented according
to its specification is generically called *verification*. The process of
deciding that the model is correct for its intended use is generically called
*validation*.
Validation and Verification
***************************
A computer model is a mathematical or logical representation of something. It
can represent a vehicle, an elephant (see
`David Harel's talk about modeling an elephant at SIMUTools 2009 <http://simutools.org/2009/>`_, or a networking card. Models can also represent
processes such as global warming, freeway traffic flow or a specification of a
networking protocol. Models can be completely faithful representations of a
logical process specification, but they necessarily can never completely
simulate a physical object or process. In most cases, a number of
simplifications are made to the model to make simulation computationally
tractable.
Every model has a *target system* that it is attempting to simulate. The
first step in creating a simulation model is to identify this target system and
the level of detail and accuracy that the simulation is desired to reproduce.
In the case of a logical process, the target system may be identified as ''TCP
as defined by RFC 793.'' In this case, it will probably be desirable to create
a model that completely and faithfully reproduces RFC 793. In the case of a
physical process this will not be possible. If, for example, you would like to
simulate a wireless networking card, you may determine that you need, ''an
accurate MAC-level implementation of the 802.11 specification and [...] a
not-so-slow PHY-level model of the 802.11a specification.''
Once this is done, one can develop an abstract model of the target system. This
is typically an exercise in managing the tradeoffs between complexity, resource
requirements and accuracy. The process of developing an abstract model has been
called *model qualification* in the literature. In the case of a TCP
protocol, this process results in a design for a collection of objects,
interactions and behaviors that will fully implement RFC 793 in |ns3|.
In the case of the wireless card, this process results in a number of tradeoffs
to allow the physical layer to be simulated and the design of a network device
and channel for ns-3, along with the desired objects, interactions and behaviors.
This abstract model is then developed into an |ns3| model that
implements the abstract model as a computer program. The process of getting the
implementation to agree with the abstract model is called *model
verification* in the literature.
The process so far is open loop. What remains is to make a determination that a
given ns-3 model has some connection to some reality -- that a model is an
accurate representation of a real system, whether a logical process or a physical
entity.
If one is going to use a simulation model to try and predict how some real
system is going to behave, there must be some reason to believe your results --
i.e., can one trust that an inference made from the model translates into a
correct prediction for the real system. The process of getting the ns-3 model
behavior to agree with the desired target system behavior as defined by the model
qualification process is called *model validation* in the literature. In the
case of a TCP implementation, you may want to compare the behavior of your ns-3
TCP model to some reference implementation in order to validate your model. In
the case of a wireless physical layer simulation, you may want to compare the
behavior of your model to that of real hardware in a controlled setting,
The |ns3| testing environment provides tools to allow for both model
validation and testing, and encourages the publication of validation results.
Robustness
**********
Robustness is the quality of being able to withstand stresses, or changes in
environments, inputs or calculations, etc. A system or design is ''robust''
if it can deal with such changes with minimal loss of functionality.
This kind of testing is usually done with a particular focus. For example, the
system as a whole can be run on many different system configurations to
demonstrate that it can perform correctly in a large number of environments.
The system can be also be stressed by operating close to or beyond capacity by
generating or simulating resource exhaustion of various kinds. This genre of
testing is called ''stress testing.''
The system and its components may be exposed to so-called ''clean tests'' that
demonstrate a positive result -- that is that the system operates correctly in
response to a large variation of expected configurations.
The system and its components may also be exposed to ''dirty tests'' which
provide inputs outside the expected range. For example, if a module expects a
zero-terminated string representation of an integer, a dirty test might provide
an unterminated string of random characters to verify that the system does not
crash as a result of this unexpected input. Unfortunately, detecting such
''dirty'' input and taking preventive measures to ensure the system does not
fail catastrophically can require a huge amount of development overhead. In
order to reduce development time, a decision was taken early on in the project
to minimize the amount of parameter validation and error handling in the
|ns3| codebase. For this reason, we do not spend much time on dirty
testing -- it would just uncover the results of the design decision we know
we took.
We do want to demonstrate that |ns3| software does work across some set
of conditions. We borrow a couple of definitions to narrow this down a bit.
The *domain of applicability* is a set of prescribed conditions for which
the model has been tested, compared against reality to the extent possible, and
judged suitable for use. The *range of accuracy* is an agreement between
the computerized model and reality within a domain of applicability.
The |ns3| testing environment provides tools to allow for setting up
and running test environments over multiple systems (buildbot) and provides
classes to encourage clean tests to verify the operation of the system over the
expected ''domain of applicability'' and ''range of accuracy.''
Performant
**********
Okay, ''performant'' isn't a real English word. It is, however, a very concise
neologism that is quite often used to describe what we want |ns3| to
be: powerful and fast enough to get the job done.
This is really about the broad subject of software performance testing. One of
the key things that is done is to compare two systems to find which performs
better (cf benchmarks). This is used to demonstrate that, for example,
|ns3| can perform a basic kind of simulation at least as fast as a
competing tool, or can be used to identify parts of the system that perform
badly.
In the |ns3| test framework, we provide support for timing various kinds
of tests.
Maintainability
***************
A software product must be maintainable. This is, again, a very broad
statement, but a testing framework can help with the task. Once a model has
been developed, validated and verified, we can repeatedly execute the suite
of tests for the entire system to ensure that it remains valid and verified
over its lifetime.
When a feature stops functioning as intended after some kind of change to the
system is integrated, it is called generically a *regression*.
Originally the
term regression referred to a change that caused a previously fixed bug to
reappear, but the term has evolved to describe any kind of change that breaks
existing functionality. There are many kinds of regressions that may occur
in practice.
A *local regression* is one in which a change affects the changed component
directly. For example, if a component is modified to allocate and free memory
but stale pointers are used, the component itself fails.
A *remote regression* is one in which a change to one component breaks
functionality in another component. This reflects violation of an implied but
possibly unrecognized contract between components.
An *unmasked regression* is one that creates a situation where a previously
existing bug that had no affect is suddenly exposed in the system. This may
be as simple as exercising a code path for the first time.
A *performance regression* is one that causes the performance requirements
of the system to be violated. For example, doing some work in a low level
function that may be repeated large numbers of times may suddenly render the
system unusable from certain perspectives.
The |ns3| testing framework provides tools for automating the process
used to validate and verify the code in nightly test suites to help quickly
identify possible regressions.
+750
View File
@@ -0,0 +1,750 @@
.. include:: replace.txt
Testing framework
-----------------
ns-3 consists of a simulation core engine, a set of models, example programs,
and tests. Over time, new contributors contribute models, tests, and
examples. A Python test program ``test.py`` serves as the test
execution manager; ``test.py`` can run test code and examples to
look for regressions, can output the results into a number of forms, and
can manage code coverage analysis tools. On top of this, we layer
*Buildbots* that are automated build robots that perform
robustness testing by running the test framework on different systems
and with different configuration options.
BuildBots
*********
At the highest level of ns-3 testing are the buildbots (build robots).
If you are unfamiliar with
this system look at `<http://djmitche.github.com/buildbot/docs/0.7.11/>`_.
This is an open-source automated system that allows |ns3| to be rebuilt
and tested each time something has changed. By running the buildbots on a number
of different systems we can ensure that |ns3| builds and executes
properly on all of its supported systems.
Users (and developers) typically will not interact with the buildbot system other
than to read its messages regarding test results. If a failure is detected in
one of the automated build and test jobs, the buildbot will send an email to the
*ns-developers* mailing list. This email will look something like::
The Buildbot has detected a new failure of osx-ppc-g++-4.2 on NsNam.
Full details are available at:
http://ns-regression.ee.washington.edu:8010/builders/osx-ppc-g%2B%2B-4.2/builds/0
Buildbot URL: http://ns-regression.ee.washington.edu:8010/
Buildslave for this Build: darwin-ppc
Build Reason: The web-page 'force build' button was pressed by 'ww': ww
Build Source Stamp: HEAD
Blamelist:
BUILD FAILED: failed shell_5 shell_6 shell_7 shell_8 shell_9 shell_10 shell_11 shell_12
sincerely,
-The Buildbot
In the full details URL shown in the email, one can search for the keyword
``failed`` and select the ``stdio`` link for the corresponding step to see
the reason for the failure.
The buildbot will do its job quietly if there are no errors, and the system will
undergo build and test cycles every day to verify that all is well.
Test.py
*******
The buildbots use a Python program, ``test.py``, that is responsible for
running all of the tests and collecting the resulting reports into a human-
readable form. This program is also available for use by users and developers
as well.
``test.py`` is very flexible in allowing the user to specify the number
and kind of tests to run; and also the amount and kind of output to generate.
Before running ``test.py``, make sure that ns3's examples and tests
have been built by doing the following
::
./waf configure --enable-examples --enable-tests
./waf
By default, ``test.py`` will run all available tests and report status
back in a very concise form. Running the command
::
./test.py
will result in a number of ``PASS``, ``FAIL``, ``CRASH`` or ``SKIP``
indications followed by the kind of test that was run and its display name.
::
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
'build' finished successfully (0.939s)
FAIL: TestSuite ns3-wifi-propagation-loss-models
PASS: TestSuite object-name-service
PASS: TestSuite pcap-file-object
PASS: TestSuite ns3-tcp-cwnd
...
PASS: TestSuite ns3-tcp-interoperability
PASS: Example csma-broadcast
PASS: Example csma-multicast
This mode is intended to be used by users who are interested in determining if
their distribution is working correctly, and by developers who are interested
in determining if changes they have made have caused any regressions.
There are a number of options available to control the behavior of ``test.py``.
if you run ``test.py --help`` you should see a command summary like:
::
Usage: test.py [options]
Options:
-h, --help show this help message and exit
-b BUILDPATH, --buildpath=BUILDPATH
specify the path where ns-3 was built (defaults to the
build directory for the current variant)
-c KIND, --constrain=KIND
constrain the test-runner by kind of test
-e EXAMPLE, --example=EXAMPLE
specify a single example to run (with relative path)
-g, --grind run the test suites and examples using valgrind
-k, --kinds print the kinds of tests available
-l, --list print the list of known tests
-m, --multiple report multiple failures from test suites and test
cases
-n, --nowaf do not run waf before starting testing
-p PYEXAMPLE, --pyexample=PYEXAMPLE
specify a single python example to run (with relative
path)
-r, --retain retain all temporary files (which are normally
deleted)
-s TEST-SUITE, --suite=TEST-SUITE
specify a single test suite to run
-t TEXT-FILE, --text=TEXT-FILE
write detailed test results into TEXT-FILE.txt
-v, --verbose print progress and informational messages
-w HTML-FILE, --web=HTML-FILE, --html=HTML-FILE
write detailed test results into HTML-FILE.html
-x XML-FILE, --xml=XML-FILE
write detailed test results into XML-FILE.xml
If one specifies an optional output style, one can generate detailed descriptions
of the tests and status. Available styles are ``text`` and ``HTML``.
The buildbots will select the HTML option to generate HTML test reports for the
nightly builds using
::
./test.py --html=nightly.html
In this case, an HTML file named ''nightly.html'' would be created with a pretty
summary of the testing done. A ''human readable'' format is available for users
interested in the details.
::
./test.py --text=results.txt
In the example above, the test suite checking the |ns3| wireless
device propagation loss models failed. By default no further information is
provided.
To further explore the failure, ``test.py`` allows a single test suite
to be specified. Running the command
::
./test.py --suite=ns3-wifi-propagation-loss-models
results in that single test suite being run.
::
FAIL: TestSuite ns3-wifi-propagation-loss-models
To find detailed information regarding the failure, one must specify the kind
of output desired. For example, most people will probably be interested in
a text file::
./test.py --suite=ns3-wifi-propagation-loss-models --text=results.txt
This will result in that single test suite being run with the test status written to
the file ''results.txt''.
You should find something similar to the following in that file::
FAIL: Test Suite ''ns3-wifi-propagation-loss-models'' (real 0.02 user 0.01 system 0.00)
PASS: Test Case "Check ... Friis ... model ..." (real 0.01 user 0.00 system 0.00)
FAIL: Test Case "Check ... Log Distance ... model" (real 0.01 user 0.01 system 0.00)
Details:
Message: Got unexpected SNR value
Condition: [long description of what actually failed]
Actual: 176.395
Limit: 176.407 +- 0.0005
File: ../src/test/ns3wifi/propagation-loss-models-test-suite.cc
Line: 360
Notice that the Test Suite is composed of two Test Cases. The first test case
checked the Friis propagation loss model and passed. The second test case
failed checking the Log Distance propagation model. In this case, an SNR of
176.395 was found, and the test expected a value of 176.407 correct to three
decimal places. The file which implemented the failing test is listed as well
as the line of code which triggered the failure.
If you desire, you could just as easily have written an HTML file using the
``--html`` option as described above.
Typically a user will run all tests at least once after downloading
|ns3| to ensure that his or her environment has been built correctly
and is generating correct results according to the test suites. Developers
will typically run the test suites before and after making a change to ensure
that they have not introduced a regression with their changes. In this case,
developers may not want to run all tests, but only a subset. For example,
the developer might only want to run the unit tests periodically while making
changes to a repository. In this case, ``test.py`` can be told to constrain
the types of tests being run to a particular class of tests. The following
command will result in only the unit tests being run::
./test.py --constrain=unit
Similarly, the following command will result in only the example smoke tests
being run::
./test.py --constrain=unit
To see a quick list of the legal kinds of constraints, you can ask for them
to be listed. The following command
::
./test.py --kinds
will result in the following list being displayed::
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
'build' finished successfully (0.939s)Waf: Entering directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
bvt: Build Verification Tests (to see if build completed successfully)
core: Run all TestSuite-based tests (exclude examples)
example: Examples (to see if example programs run successfully)
performance: Performance Tests (check to see if the system is as fast as expected)
system: System Tests (spans modules to check integration of modules)
unit: Unit Tests (within modules to check basic functionality)
Any of these kinds of test can be provided as a constraint using the ``--constraint``
option.
To see a quick list of all of the test suites available, you can ask for them
to be listed. The following command,
::
./test.py --list
will result in a list of the test suite being displayed, similar to::
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
'build' finished successfully (0.939s)
histogram
ns3-wifi-interference
ns3-tcp-cwnd
ns3-tcp-interoperability
sample
devices-mesh-flame
devices-mesh-dot11s
devices-mesh
...
object-name-service
callback
attributes
config
global-value
command-line
basic-random-number
object
Any of these listed suites can be selected to be run by itself using the
``--suite`` option as shown above.
Similarly to test suites, one can run a single C++ example program
using the ``--example`` option. Note that the relative path for the
example must be included and that the executables built for C++
examples do not have extensions. Entering
::
./test.py --example=examples/udp/udp-echo
results in that single example being run.
::
PASS: Example examples/udp/udp-echo
You can specify the directory where ns-3 was built using the
``--buildpath`` option as follows.
::
./test.py --buildpath=/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build/debug --example=examples/wireless/wifi-simple-adhoc
One can run a single Python example program using the ``--pyexample``
option. Note that the relative path for the example must be included
and that Python examples do need their extensions. Entering
::
./test.py --pyexample=examples/tutorial/first.py
results in that single example being run.
::
PASS: Example examples/tutorial/first.py
Because Python examples are not built, you do not need to specify the
directory where ns-3 was built to run them.
Normally when example programs are executed, they write a large amount of trace
file data. This is normally saved to the base directory of the distribution
(e.g., /home/user/ns-3-dev). When ``test.py`` runs an example, it really
is completely unconcerned with the trace files. It just wants to to determine
if the example can be built and run without error. Since this is the case, the
trace files are written into a ``/tmp/unchecked-traces`` directory. If you
run the above example, you should be able to find the associated
``udp-echo.tr`` and ``udp-echo-n-1.pcap`` files there.
The list of available examples is defined by the contents of the ''examples''
directory in the distribution. If you select an example for execution using
the ``--example`` option, ``test.py`` will not make any attempt to decide
if the example has been configured or not, it will just try to run it and
report the result of the attempt.
When ``test.py`` runs, by default it will first ensure that the system has
been completely built. This can be defeated by selecting the ``--nowaf``
option.
::
./test.py --list --nowaf
will result in a list of the currently built test suites being displayed, similar to::
ns3-wifi-propagation-loss-models
ns3-tcp-cwnd
ns3-tcp-interoperability
pcap-file-object
object-name-service
random-number-generators
Note the absence of the ``Waf`` build messages.
``test.py`` also supports running the test suites and examples under valgrind.
Valgrind is a flexible program for debugging and profiling Linux executables. By
default, valgrind runs a tool called memcheck, which performs a range of memory-
checking functions, including detecting accesses to uninitialised memory, misuse
of allocated memory (double frees, access after free, etc.) and detecting memory
leaks. This can be selected by using the ``--grind`` option.
::
./test.py --grind
As it runs, ``test.py`` and the programs that it runs indirectly, generate large
numbers of temporary files. Usually, the content of these files is not interesting,
however in some cases it can be useful (for debugging purposes) to view these files.
``test.py`` provides a ``--retain`` option which will cause these temporary
files to be kept after the run is completed. The files are saved in a directory
named ``testpy-output`` under a subdirectory named according to the current Coordinated
Universal Time (also known as Greenwich Mean Time).
::
./test.py --retain
Finally, ``test.py`` provides a ``--verbose`` option which will print
large amounts of information about its progress. It is not expected that this
will be terribly useful unless there is an error. In this case, you can get
access to the standard output and standard error reported by running test suites
and examples. Select verbose in the following way::
./test.py --verbose
All of these options can be mixed and matched. For example, to run all of the
ns-3 core test suites under valgrind, in verbose mode, while generating an HTML
output file, one would do::
./test.py --verbose --grind --constrain=core --html=results.html
TestTaxonomy
************
As mentioned above, tests are grouped into a number of broadly defined
classifications to allow users to selectively run tests to address the different
kinds of testing that need to be done.
* Build Verification Tests
* Unit Tests
* System Tests
* Examples
* Performance Tests
BuildVerificationTests
++++++++++++++++++++++
These are relatively simple tests that are built along with the distribution
and are used to make sure that the build is pretty much working. Our
current unit tests live in the source files of the code they test and are
built into the ns-3 modules; and so fit the description of BVTs. BVTs live
in the same source code that is built into the ns-3 code. Our current tests
are examples of this kind of test.
Unit Tests
++++++++++
Unit tests are more involved tests that go into detail to make sure that a
piece of code works as advertised in isolation. There is really no reason
for this kind of test to be built into an ns-3 module. It turns out, for
example, that the unit tests for the object name service are about the same
size as the object name service code itself. Unit tests are tests that
check a single bit of functionality that are not built into the ns-3 code,
but live in the same directory as the code it tests. It is possible that
these tests check integration of multiple implementation files in a module
as well. The file src/core/test/names-test-suite.cc is an example of this kind
of test. The file src/network/test/pcap-file-test-suite.cc is another example
that uses a known good pcap file as a test vector file. This file is stored
locally in the src/network directory.
System Tests
++++++++++++
System tests are those that involve more than one module in the system. We
have lots of this kind of test running in our current regression framework,
but they are typically overloaded examples. We provide a new place
for this kind of test in the directory ``src/test``. The file
src/test/ns3tcp/ns3-interop-test-suite.cc is an example of this kind of
test. It uses NSC TCP to test the ns-3 TCP implementation. Often there
will be test vectors required for this kind of test, and they are stored in
the directory where the test lives. For example,
ns3tcp-interop-response-vectors.pcap is a file consisting of a number of TCP
headers that are used as the expected responses of the ns-3 TCP under test
to a stimulus generated by the NSC TCP which is used as a ''known good''
implementation.
Examples
++++++++
The examples are tested by the framework to make sure they built and will
run. Nothing is checked, and currently the pcap files are just written off
into /tmp to be discarded. If the examples run (don't crash) they pass this
smoke test.
Performance Tests
+++++++++++++++++
Performance tests are those which exercise a particular part of the system
and determine if the tests have executed to completion in a reasonable time.
Running Tests
+++++++++++++
Tests are typically run using the high level ``test.py`` program. To get a list of the available command-line options, run ``test.py --help``
Debugging Tests
***************
The debugging of the test programs is best performed running the low-level test-runner program. The test-runner is the bridge from generic Python code to |ns3| code. It is written in C++ and uses the automatic test discovery process in the
|ns3| code to find and allow execution of all of the various tests.
The main reason why ``test.py`` is not suitable for debugging is that it is not allowed for logging to be turned on using the ``NS_LOG`` environmental variable when test.py runs. This limitation does not apply to the test-runner executable. Hence, if you want to see logging output from your tests, you have to run them using the test-runner directly.
In order to execute the test-runner, you run it like any other ns-3 executable
-- using ``waf``. To get a list of available options, you can type::
./waf --run "test-runner --help"
You should see something like the following::
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
'build' finished successfully (0.353s)
--assert: Tell tests to segfault (like assert) if an error is detected
--basedir=dir: Set the base directory (where to find src) to ''dir''
--tempdir=dir: Set the temporary directory (where to find data files) to ''dir''
--constrain=test-type: Constrain checks to test suites of type ''test-type''
--help: Print this message
--kinds: List all of the available kinds of tests
--list: List all of the test suites (optionally constrained by test-type)
--out=file-name: Set the test status output file to ''file-name''
--suite=suite-name: Run the test suite named ''suite-name''
--verbose: Turn on messages in the run test suites
There are a number of things available to you which will be familiar to you if
you have looked at ``test.py``. This should be expected since the test-
runner is just an interface between ``test.py`` and |ns3|. You
may notice that example-related commands are missing here. That is because
the examples are really not |ns3| tests. ``test.py`` runs them
as if they were to present a unified testing environment, but they are really
completely different and not to be found here.
The first new option that appears here, but not in test.py is the ``--assert``
option. This option is useful when debugging a test case when running under a
debugger like ``gdb``. When selected, this option tells the underlying
test case to cause a segmentation violation if an error is detected. This has
the nice side-effect of causing program execution to stop (break into the
debugger) when an error is detected. If you are using gdb, you could use this
option something like,
::
./waf shell
cd build/debug/utils
gdb test-runner
run --suite=global-value --assert
If an error is then found in the global-value test suite, a segfault would be
generated and the (source level) debugger would stop at the ``NS_TEST_ASSERT_MSG``
that detected the error.
Another new option that appears here is the ``--basedir`` option. It turns out
that some tests may need to reference the source directory of the |ns3|
distribution to find local data, so a base directory is always required to run
a test.
If you run a test from test.py, the Python program will provide the basedir
option for you. To run one of the tests directly from the test-runner
using ``waf``, you will need to specify the test suite to run along with
the base directory. So you could use the shell and do::
./waf --run "test-runner --basedir=`pwd` --suite=pcap-file-object"
Note the ''backward'' quotation marks on the ``pwd`` command.
If you are running the test suite out of a debugger, it can be quite painful
to remember and constantly type the absolute path of the distribution base
directory.
Because of this, if you omit the basedir, the test-runner will try to figure one
out for you. It begins in the current working directory and walks up the
directory tree looking for a directory file with files named ``VERSION`` and
``LICENSE.`` If it finds one, it assumes that must be the basedir and provides
it for you.
Similarly, many test suites need to write temporary files (such as pcap files)
in the process of running the tests. The tests then need a temporary directory
to write to. The Python test utility (test.py) will provide a temporary file
automatically, but if run stand-alone this temporary directory must be provided.
Just as in the basedir case, it can be annoying to continually have to provide
a ``--tempdir``, so the test runner will figure one out for you if you don't
provide one. It first looks for environment variables named ``TMP`` and
``TEMP`` and uses those. If neither ``TMP`` nor ``TEMP`` are defined
it picks ``/tmp``. The code then tacks on an identifier indicating what
created the directory (ns-3) then the time (hh.mm.ss) followed by a large random
number. The test runner creates a directory of that name to be used as the
temporary directory. Temporary files then go into a directory that will be
named something like
::
/tmp/ns-3.10.25.37.61537845
The time is provided as a hint so that you can relatively easily reconstruct
what directory was used if you need to go back and look at the files that were
placed in that directory.
When you run a test suite using the test-runner it will run the test quietly
by default. The only indication that you will get that the test passed is
the *absence* of a message from ``waf`` saying that the program
returned something other than a zero exit code. To get some output from the
test, you need to specify an output file to which the tests will write their
XML status using the ``--out`` option. You need to be careful interpreting
the results because the test suites will *append* results onto this file.
Try,
::
./waf --run "test-runner --basedir=`pwd` --suite=pcap-file-object --out=myfile.xml"
If you look at the file ``myfile.xml`` you should see something like,
::
<TestSuite>
<SuiteName>pcap-file-object</SuiteName>
<TestCase>
<CaseName>Check to see that PcapFile::Open with mode ''w'' works</CaseName>
<CaseResult>PASS</CaseResult>
<CaseTime>real 0.00 user 0.00 system 0.00</CaseTime>
</TestCase>
<TestCase>
<CaseName>Check to see that PcapFile::Open with mode ''r'' works</CaseName>
<CaseResult>PASS</CaseResult>
<CaseTime>real 0.00 user 0.00 system 0.00</CaseTime>
</TestCase>
<TestCase>
<CaseName>Check to see that PcapFile::Open with mode ''a'' works</CaseName>
<CaseResult>PASS</CaseResult>
<CaseTime>real 0.00 user 0.00 system 0.00</CaseTime>
</TestCase>
<TestCase>
<CaseName>Check to see that PcapFileHeader is managed correctly</CaseName>
<CaseResult>PASS</CaseResult>
<CaseTime>real 0.00 user 0.00 system 0.00</CaseTime>
</TestCase>
<TestCase>
<CaseName>Check to see that PcapRecordHeader is managed correctly</CaseName>
<CaseResult>PASS</CaseResult>
<CaseTime>real 0.00 user 0.00 system 0.00</CaseTime>
</TestCase>
<TestCase>
<CaseName>Check to see that PcapFile can read out a known good pcap file</CaseName>
<CaseResult>PASS</CaseResult>
<CaseTime>real 0.00 user 0.00 system 0.00</CaseTime>
</TestCase>
<SuiteResult>PASS</SuiteResult>
<SuiteTime>real 0.00 user 0.00 system 0.00</SuiteTime>
</TestSuite>
If you are familiar with XML this should be fairly self-explanatory. It is
also not a complete XML file since test suites are designed to have their
output appended to a master XML status file as described in the ``test.py``
section.
Class TestRunner
****************
The executables that run dedicated test programs use a TestRunner class. This
class provides for automatic test registration and listing, as well as a way to
execute the individual tests. Individual test suites use C++ global
constructors
to add themselves to a collection of test suites managed by the test runner.
The test runner is used to list all of the available tests and to select a test
to be run. This is a quite simple class that provides three static methods to
provide or Adding and Getting test suites to a collection of tests. See the
doxygen for class ``ns3::TestRunner`` for details.
Test Suite
**********
All |ns3| tests are classified into Test Suites and Test Cases. A
test suite is a collection of test cases that completely exercise a given kind
of functionality. As described above, test suites can be classified as,
* Build Verification Tests
* Unit Tests
* System Tests
* Examples
* Performance Tests
This classification is exported from the TestSuite class. This class is quite
simple, existing only as a place to export this type and to accumulate test
cases. From a user perspective, in order to create a new TestSuite in the
system one only has to define a new class that inherits from class ``TestSuite``
and perform these two duties.
The following code will define a new class that can be run by ``test.py``
as a ''unit'' test with the display name, ``my-test-suite-name``.
::
class MySuite : public TestSuite
{
public:
MyTestSuite ();
};
MyTestSuite::MyTestSuite ()
: TestSuite ("my-test-suite-name", UNIT)
{
AddTestCase (new MyTestCase);
}
MyTestSuite myTestSuite;
The base class takes care of all of the registration and reporting required to
be a good citizen in the test framework.
Test Case
*********
Individual tests are created using a TestCase class. Common models for the use
of a test case include "one test case per feature", and "one test case per method."
Mixtures of these models may be used.
In order to create a new test case in the system, all one has to do is to inherit
from the ``TestCase`` base class, override the constructor to give the test
case a name and override the ``DoRun`` method to run the test.
::
class MyTestCase : public TestCase
{
MyTestCase ();
virtual void DoRun (void);
};
MyTestCase::MyTestCase ()
: TestCase ("Check some bit of functionality")
{
}
void
MyTestCase::DoRun (void)
{
NS_TEST_ASSERT_MSG_EQ (true, true, "Some failure message");
}
Utilities
+++++++++
There are a number of utilities of various kinds that are also part of the
testing framework. Examples include a generalized pcap file useful for
storing test vectors; a generic container useful for transient storage of
test vectors during test execution; and tools for generating presentations
based on validation and verification testing results.
Debugging test suite failures
+++++++++++++++++++++++++++++
To debug test crashes, such as::
CRASH: TestSuite ns3-wifi-interference
You can access the underlying test-runner program via gdb as follows, and
then pass the "--basedir=`pwd`" argument to run (you can also pass other
arguments as needed, but basedir is the minimum needed)::
./waf --command-template="gdb %s" --run "test-runner"
Waf: Entering directory `/home/tomh/hg/sep09/ns-3-allinone/ns-3-dev-678/build'
Waf: Leaving directory `/home/tomh/hg/sep09/ns-3-allinone/ns-3-dev-678/build'
'build' finished successfully (0.380s)
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
L cense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...
(gdb) r --basedir=`pwd`
Starting program: <..>/build/debug/utils/test-runner --basedir=`pwd`
[Thread debugging using libthread_db enabled]
assert failed. file=../src/core/model/type-id.cc, line=138, cond="uid <= m_information.size () && uid != 0"
...
Here is another example of how to use valgrind to debug a memory problem
such as::
VALGR: TestSuite devices-mesh-dot11s-regression
./waf --command-template="valgrind %s --basedir=`pwd` --suite=devices-mesh-dot11s-regression" --run test-runner
+18
View File
@@ -0,0 +1,18 @@
.. include:: replace.txt
Overview
--------
This document is concerned with the testing and validation of |ns3| software.
This document provides
* background about terminology and software testing (Chapter 2);
* a description of the ns-3 testing framework (Chapter 3);
* a guide to model developers or new model contributors for how to write tests (Chapter 4);
In brief, the first three chapters should be read by ns developers and
contributors who need to understand how to contribute test code and
validated programs, and
the remainder of the document provides space for people to report on what
aspects of selected models have been validated.
+9
View File
@@ -0,0 +1,9 @@
Tests
-----
.. toctree::
test-overview
test-background
test-framework
how-to-write-tests
File diff suppressed because it is too large Load Diff
+82
View File
@@ -0,0 +1,82 @@
.. include:: replace.txt
Troubleshooting
---------------
This chapter posts some information about possibly common errors in building
or running |ns3| programs.
Please note that the wiki
(`<http://www.nsnam.org/wiki/index.php/Troubleshooting>`_) may have contributed
items.
Build errors
************
Run-time errors
***************
Sometimes, errors can occur with a program after a successful build. These are
run-time errors, and can commonly occur when memory is corrupted or pointer
values are unexpectedly null.
Here is an example of what might occur:::
ns-old:~/ns-3-nsc$ ./waf --run tcp-point-to-point
Entering directory `/home/tomh/ns-3-nsc/build'
Compilation finished successfully
Command ['/home/tomh/ns-3-nsc/build/debug/examples/tcp-point-to-point'] exited with code -11
The error message says that the program terminated unsuccessfully, but it is
not clear from this information what might be wrong. To examine more
closely, try running it under the `gdb debugger
<http://sources.redhat.com/gdb/>`_:::
ns-old:~/ns-3-nsc$ ./waf --run tcp-point-to-point --command-template="gdb %s"
Entering directory `/home/tomh/ns-3-nsc/build'
Compilation finished successfully
GNU gdb Red Hat Linux (6.3.0.0-1.134.fc5rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db
library "/lib/libthread_db.so.1".
(gdb) run
Starting program: /home/tomh/ns-3-nsc/build/debug/examples/tcp-point-to-point
Reading symbols from shared object read from target memory...done.
Loaded system supplied DSO at 0xf5c000
Program received signal SIGSEGV, Segmentation fault.
0x0804aa12 in main (argc=1, argv=0xbfdfefa4)
at ../examples/tcp-point-to-point.cc:136
136 Ptr<Socket> localSocket = socketFactory->CreateSocket ();
(gdb) p localSocket
$1 = {m_ptr = 0x3c5d65}
(gdb) p socketFactory
$2 = {m_ptr = 0x0}
(gdb) quit
The program is running. Exit anyway? (y or n) y
Note first the way the program was invoked-- pass the command to run as an
argument to the command template "gdb %s".
This tells us that there was an attempt to dereference a null pointer
socketFactory.
Let's look around line 136 of tcp-point-to-point, as gdb suggests:::
Ptr<SocketFactory> socketFactory = n2->GetObject<SocketFactory> (Tcp::iid);
Ptr<Socket> localSocket = socketFactory->CreateSocket ();
localSocket->Bind ();
The culprit here is that the return value of GetObject is not being checked and
may be null.
Sometimes you may need to use the `valgrind memory checker
<http://valgrind.org>`_ for more subtle errors. Again, you invoke the use of
valgrind similarly:::
ns-old:~/ns-3-nsc$ ./waf --run tcp-point-to-point --command-template="valgrind %s"
+264
View File
@@ -0,0 +1,264 @@
EPSTOPDF = epstopdf
DIA = dia
CONVERT = convert
SRC = ../../src
# Temporary source directory, for build
SOURCETEMP = source-temp
FIGURES = $(SOURCETEMP)/figures
# list all model library .rst files that need to be copied to $SOURCETEMP
SOURCES = \
source/conf.py \
source/_static \
source/index.rst \
source/replace.txt \
source/organization.rst \
source/internet-models.rst \
source/network.rst \
source/emulation-overview.rst \
$(SRC)/aodv/doc/aodv.rst \
$(SRC)/applications/doc/applications.rst \
$(SRC)/bridge/doc/bridge.rst \
$(SRC)/click/doc/click.rst \
$(SRC)/csma/doc/csma.rst \
$(SRC)/dsdv/doc/dsdv.rst \
$(SRC)/mpi/doc/distributed.rst \
$(SRC)/energy/doc/energy.rst \
$(SRC)/emu/doc/emu.rst \
$(SRC)/tap-bridge/doc/tap.rst \
$(SRC)/mesh/doc/mesh.rst \
$(SRC)/lte/doc/lte.rst \
$(SRC)/propagation/doc/propagation.rst \
$(SRC)/network/doc/network-overview.rst \
$(SRC)/network/doc/packets.rst \
$(SRC)/network/doc/sockets-api.rst \
$(SRC)/network/doc/simple.rst \
$(SRC)/internet/doc/internet-stack.rst \
$(SRC)/internet/doc/ipv4.rst \
$(SRC)/internet/doc/ipv6.rst \
$(SRC)/internet/doc/routing-overview.rst \
$(SRC)/internet/doc/tcp.rst \
$(SRC)/olsr/doc/olsr.rst \
$(SRC)/openflow/doc/openflow-switch.rst \
$(SRC)/point-to-point/doc/point-to-point.rst \
$(SRC)/wifi/doc/wifi.rst \
$(SRC)/wimax/doc/wimax.rst \
$(SRC)/uan/doc/uan.rst \
$(SRC)/stats/doc/statistics.rst \
$(SRC)/netanim/doc/animation.rst \
$(SRC)/flow-monitor/doc/flow-monitor.rst \
# list all model library figure files that need to be copied to
# $SOURCETEMP/figures. For each figure to be included in all
# documentation formats (html, latex...) the following formats are supported:
# 1) a single .dia file (preferred option, because it can be edited)
# 2) a single .eps file
# 3) both a .pdf and .png file
SOURCEFIGS = \
figures/testbed.dia \
figures/emulated-channel.dia \
$(SRC)/network/doc/packet.dia \
$(SRC)/network/doc/node.dia \
$(SRC)/network/doc/buffer.dia \
$(SRC)/network/doc/sockets-overview.dia \
$(SRC)/internet/doc/internet-node-send.dia \
$(SRC)/internet/doc/internet-node-recv.dia \
$(SRC)/internet/doc/routing.dia \
$(SRC)/internet/doc/routing-specialization.dia \
$(SRC)/wifi/doc/WifiArchitecture.dia \
$(SRC)/wifi/doc/snir.dia \
$(SRC)/wimax/doc/WimaxArchitecture.dia \
$(SRC)/lte/doc/lte-transmission.png \
$(SRC)/lte/doc/lte-transmission.pdf \
$(SRC)/uan/doc/auvmobility-classes.dia \
$(SRC)/stats/doc/Stat-framework-arch.png \
$(SRC)/stats/doc/Wifi-default.png \
$(SRC)/netanim/doc/animation-dumbbell.png \
$(SRC)/netanim/doc/animation-dumbbell.pdf \
# specify figures from which .png and .pdf figures need to be
# generated (all dia and eps figures)
IMAGES_EPS = \
$(FIGURES)/testbed.eps \
$(FIGURES)/emulated-channel.eps \
$(FIGURES)/packet.eps \
$(FIGURES)/node.eps \
$(FIGURES)/buffer.eps \
$(FIGURES)/sockets-overview.eps \
$(FIGURES)/internet-node-send.eps \
$(FIGURES)/internet-node-recv.eps \
$(FIGURES)/routing.eps \
$(FIGURES)/routing-specialization.eps \
$(FIGURES)/WifiArchitecture.eps \
$(FIGURES)/snir.eps \
$(FIGURES)/WimaxArchitecture.eps \
$(FIGURES)/auvmobility-classes.eps \
# rescale pdf figures as necessary
$(FIGURES)/testbed.pdf_width = 5in
$(FIGURES)/emulated-channel.pdf_width = 6in
$(FIGURES)/node.pdf_width = 5in
$(FIGURES)/packet.pdf_width = 4in
$(FIGURES)/buffer.pdf_width = 15cm
$(FIGURES)/sockets-overview.pdf_width = 10cm
$(FIGURES)/internet-node-send.pdf_width = 5in
$(FIGURES)/internet-node-recv.pdf_width = 5in
$(FIGURES)/routing.pdf_width = 6in
$(FIGURES)/routing-specialization.pdf_width = 5in
$(FIGURES)/snir.pdf_width = 3in
$(FIGURES)/lte-transmission.pdf_width = 3in
$(FIGURES)/auvmobility-classes.pdf_width = 10cm
IMAGES_PNG = ${IMAGES_EPS:.eps=.png}
IMAGES_PDF = ${IMAGES_EPS:.eps=.pdf}
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
%.eps : %.dia; $(DIA) -t eps $< -e $@
%.png : %.dia; $(DIA) -t png $< -e $@
%.png : %.eps; $(CONVERT) $< $@
%.pdf : %.eps; $(EPSTOPDF) $< -o=$@; if test x$($@_width) != x; then TMPFILE=`mktemp`; ./rescale-pdf.sh $($@_width) $@ $${TMPFILE} && mv $${TMPFILE} $@; fi
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SOURCETEMP)
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
copy-sources: $(SOURCES)
@rm -rf $(SOURCETEMP)
@mkdir -p $(SOURCETEMP)
@mkdir -p $(FIGURES)
@cp -r $(SOURCES) $(SOURCETEMP)
@cp -r $(SOURCEFIGS) $(FIGURES)
clean:
-rm -rf $(BUILDDIR)/*
-rm -rf $(SOURCETEMP)
frag: pickle
@if test ! -d $(BUILDDIR)/frag; then mkdir $(BUILDDIR)/frag; fi
pushd $(BUILDDIR)/frag && ../../pickle-to-xml.py ../pickle/index.fpickle > navigation.xml && popd
cp -r $(BUILDDIR)/pickle/_images $(BUILDDIR)/frag
html: copy-sources $(IMAGES)
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml: copy-sources $(IMAGES)
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml: copy-sources $(IMAGES)
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle: copy-sources $(IMAGES)
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json: copy-sources $(IMAGES)
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp: copy-sources $(IMAGES)
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp: copy-sources $(IMAGES)
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ns-3.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ns-3.qhc"
devhelp: copy-sources $(IMAGES)
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/ns-3"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/ns-3"
@echo "# devhelp"
epub: copy-sources $(IMAGES)
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex: copy-sources $(IMAGES)
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf: copy-sources $(IMAGES)
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
make -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text: copy-sources $(IMAGES)
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man: copy-sources $(IMAGES)
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
changes: copy-sources $(IMAGES)
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck: copy-sources $(IMAGEs)
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest: copy-sources $(IMAGES)
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
Binary file not shown.
Binary file not shown.
+12
View File
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
TMPFILE=`mktemp`
echo "\documentclass{book}
\usepackage{pdfpages}
\begin{document}
\includepdf[width=${1},fitpaper]{${2}}
\end{document}" >${TMPFILE}.tex
pdflatex -output-directory /tmp ${TMPFILE}.tex >/dev/null 2>/dev/null
cp ${TMPFILE}.pdf ${3}
+2
View File
@@ -0,0 +1,2 @@
This directory stores .rst files that are used to build the model library
documentation but that are not stored with a particular module.
View File
+216
View File
@@ -0,0 +1,216 @@
# -*- coding: utf-8 -*-
#
# ns-3 documentation build configuration file, created by
# sphinx-quickstart on Tue Dec 14 09:00:39 2010.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.pngmath']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'ns-3'
copyright = u'2011, ns-3 project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = 'ns-3-dev'
# The full version, including alpha/beta/rc tags.
release = 'ns-3-dev'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = []
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'default'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'ns-3doc'
# -- Options for LaTeX output --------------------------------------------------
# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'
# The font size ('10pt', '11pt' or '12pt').
#latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'ns-3-model-library.tex', u'ns-3 Model Library',
u'ns-3 project', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output --------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'ns-3-model-library', u'ns-3 Model Library',
[u'ns-3 project'], 1)
]
+76
View File
@@ -0,0 +1,76 @@
.. include:: replace.txt
Emulation Overview
------------------
|ns3| has been designed for integration into testbed and virtual machine
environments. We have addressed this need by providing two kinds of net devices.
The first kind, which we call an ``Emu`` ``NetDevice`` allows |ns3| simulations
to send data on a "real" network. The second kind, called a ``Tap``
``NetDevice`` allows a "real" host to participate in an |ns3| simulation as if
it were one of the simulated nodes. An |ns3| simulation may be constructed with
any combination of simulated, ``Emu``, or ``Tap`` devices.
One of the use-cases we want to support is that of a testbed. A concrete example
of an environment of this kind is the ORBIT testbed. ORBIT is a laboratory
emulator/field trial network arranged as a two dimensional grid of 400 802.11
radio nodes. We integrate with ORBIT by using their "imaging" process to load
and run |ns3| simulations on the ORBIT array. We use our ``Emu`` ``NetDevice``
to drive the hardware in the testbed and we can accumulate results either using
the |ns3| tracing and logging functions, or the native ORBIT data gathering
techniques. See `<http://www.orbit-lab.org/>`_ for details on the ORBIT
testbed.
A simulation of this kind is shown in the following figure:
.. _testbed:
.. figure:: figures/testbed.*
Example Implementation of Testbed Emulation.
You can see that there are separate hosts, each running a subset of a "global"
simulation. Instead of an |ns3| channel connecting the hosts, we use real
hardware provided by the testbed. This allows |ns3| applications and protocol
stacks attached to a simulation node to communicate over real hardware.
We expect the primary use for this configuration will be to generate repeatable
experimental results in a real-world network environment that includes all of
the |ns3| tracing, logging, visualization and statistics gathering tools.
In what can be viewed as essentially an inverse configuration, we allow "real"
machines running native applications and protocol stacks to integrate with an
|ns3| simulation. This allows for the simulation of large networks connected to
a real machine, and also enables virtualization. A simulation of this kind is
shown in the following figure:
.. _emulated-channel:
.. figure:: figures/emulated-channel.*
Implementation overview of emulated channel.
Here, you will see that there is a single host with a number of virtual machines
running on it. An |ns3| simulation is shown running in the virtual machine shown
in the center of the figure. This simulation has a number of nodes with
associated |ns3| applications and protocol stacks that are talking to an |ns3|
channel through native simulated |ns3| net devices.
There are also two virtual machines shown at the far left and far right of the
figure. These VMs are running native (Linux) applications and protocol stacks.
The VM is connected into the simulation by a Linux Tap net device. The user-mode
handler for the Tap device is instantiated in the simulation and attached to a
proxy node that represents the native VM in the simulation. These handlers allow
the Tap devices on the native VMs to behave as if they were |ns3| net devices in
the simulation VM. This, in turn, allows the native software and protocol suites
in the native VMs to believe that they are connected to the simulated |ns3|
channel.
We expect the typical use case for this environment will be to analyze the
behavior of native applications and protocol suites in the presence of large
simulated |ns3| networks.
.. toctree::
emu
tap
+44
View File
@@ -0,0 +1,44 @@
.. only:: html or latex
ns-3 Model Library
==================
This is the *ns-3 Model Library* documentation. Primary documentation for the ns-3 project is
available in five forms:
* `ns-3 Doxygen <http://www.nsnam.org/doxygen/index.html>`_: Documentation of the public APIs of the simulator
* Tutorial, Manual, and Model Library *(this document)* for the `latest release <http://www.nsnam.org/documentation/latest/>`_ and `development tree <http://www.nsnam.org/ns-3-dev/documentation/>`_
* `ns-3 wiki <http://www.nsnam.org/wiki/index.php/Main_Page>`_
This document is written in `reStructuredText <http://docutils.sourceforge.net/rst.html>`_ for `Sphinx <http://sphinx.pocoo.org/>`_ and is maintained in the
``doc/models`` directory of ns-3's source code.
.. toctree::
:maxdepth: 2
organization
animation
aodv
applications
bridge
click
csma
dsdv
emulation-overview
energy
flow-monitor
internet-models
lte
mesh
distributed
network
olsr
openflow-switch
point-to-point
propagation
simple
statistics
topology
uan
wifi
wimax
+10
View File
@@ -0,0 +1,10 @@
Internet Models
---------------
.. toctree::
internet-stack
ipv4
ipv6
routing-overview
tcp
+9
View File
@@ -0,0 +1,9 @@
Network Module
--------------
.. toctree::
packets
network-overview
sockets-api
simple
+47
View File
@@ -0,0 +1,47 @@
.. include:: replace.txt
Organization
------------
This manual compiles documentation for |ns3| models and supporting
software that enable users to construct network simulations.
It is important to distinguish between **modules** and **models**:
* |ns3| software is organized into separate *modules* that are each
built as a separate software library. Individual ns-3 programs can link
the modules (libraries) they need to conduct their simulation.
* |ns3| *models* are abstract representations of real-world objects,
protocols, devices, etc.
An |ns3| module may consist of more than one model (for instance, the
:mod:`internet` module contains models for both TCP and UDP). In general,
ns-3 models do not span multiple software modules, however.
This manual provides documentation about the models of |ns3|. It
complements two other sources of documentation concerning models:
* the model APIs are documented, from a programming perspective, using
`Doxygen <http://www.doxygen.org>`_. Doxygen for ns-3 models is available
`on the project web server <http://www.nsnam.org/docs/doxygen/index.html>`_.
* the |ns3| core is documented in the developer's manual. |ns3| models make
use of the facilities of the core, such as attributes, default values,
random numbers, test frameworks, etc. Consult the
`main web site <http://www.nsnam.org>`_ to find copies of the manual.
Finally, additional documentation about various aspects of |ns3| may
exist on the `project wiki <http://www.nsnam.org/wiki>`_.
A sample outline of how to write model library documentation can be
found in :mod:`src/template/doc`.
The remainder of this document is organized alphabetically by module name.
If you are new to |ns3|, you might first want to read below about the network
module, which contains some fundamental models for the simulator.
The packet model, models for different address formats, and abstract
base classes for objects such as nodes, net devices, channels, sockets, and
applications are discussed there.
+3
View File
@@ -0,0 +1,3 @@
.. |ns3| replace:: *ns-3*
.. |ns2| replace:: *ns-2*
+33
View File
@@ -0,0 +1,33 @@
/**
* @anchor modules_anchor
*
* @defgroup constructs C++ Constructs Used by All Modules
* \brief These are C++ constructs defined by the modules.
*
* @defgroup constants Constants
* @brief Constants you can change
*
* @defgroup utils Utils
* @brief The utils directory is for various programs and scripts related
* to code coverage, test suites, style checking, and benchmarking.
*
* @defgroup core Core
* \brief The "core" module contains:
* - a time management class to hold a time and convert between various time units: ns3::Time
* - a scheduler base class used to implement new simulation event schedulers:
* ns3::Scheduler and ns3::SchedulerFactory
* - a simulator class used to create, schedule and cancel events: ns3::Simulator
* - a Functor class: ns3::Callback
* - an os-independent interface to get access to the elapsed wall clock time: ns3::SystemWallClockMs
* - a class to register regression tests with the test manager: ns3::Test and ns3::TestManager
* - debugging facilities: \ref logging, \ref assert
* - \ref randomvariable
* - a base class for objects which need to support per-instance "attributes" and
* trace sources: ns3::ObjectBase
* - a base class for objects which need to support reference counting
* and dynamic object aggregation: ns3::Object
* - a smart-pointer class ns3::Ptr designed to work together with ns3::Object
* - a configuration class used to set and control all attributes and trace sources
* in a simulation: ns3::Config.
*
*/
+195 -30
View File
@@ -1,34 +1,199 @@
Steps in doing an ns-3 release
0. check out a clean ns-3-dev somewhere
1. prepare the source files
ns-3-dev preparation
--------------------
1. check out a clean ns-3-dev somewhere using ns-3-allinone (you will need it)
- hg clone http://code.nsnam.org/ns-3-allinone
- ./download.py
- ./build.py --enable-examples --enable-tests
- try building static, optimized, and debug versions
- try Python visualizer (not tested by buildbots)
-- ./waf --pyrun src/flow-monitor/examples/wifi-olsr-flowmon.py --vis
- cd ns-3-dev
- ensure that tests pass (./test.py -g) and make sure that the buildbots
are reporting greens based on the tip of the repository
2. prepare the source files
- revise and check in AUTHORS, if needed
- revise and check in RELEASE_NOTES
- update and check in VERSION to the latest release number
- confirm that Doxygen builds cleanly and without warnings
(./waf --doxygen), and check in any necessary changes
2. make a new "architecture.pdf" document and place it in the doc/ directory
of the ns-3-dev working directory
3. ./waf configure; ./waf dist
- this will create a ns-3.0.x.tar.bz2 tarball
4. test tarball on release platforms (waf check and maybe some other scripts)
5. once you are happy with the tarball, tag ns-3-dev with "release ns-3.0.X"
- hg tag "release ns-3.0.x"
- hg push
6. clone the tagged ns-3-dev and place it on the repository
- ssh code.nsnam.org; sudo; su code;
- cp -r /home/code/repos/ns-3-dev /home/code/repos/ns-3.0.x
- cd /home/code/repos/ns-3.0.x/.hg and edit the hgrc appropriately
7. upload "ns-3.0.x.tar.bz2" to the /var/www/html/releases/ directory on
- revise and check in RELEASE_NOTES. Make sure to edit the Availability
section if this is a final release.
- DO NOT change VERSION at this time
- confirm that Doxygen builds cleanly (./waf doxygen),
and check in any necessary changes. Currently, doxygen does not build
cleanly, we need to fix this over time.
At this point, the ns-3-dev should be ready, except for changing the
name of this repo from "3-dev" to the numbered release. That will come
in subsequent steps.
ns-allinone-3.X.tar.bz2 dry run
-------------------------------
This phase is optional to dry-run a tarball before tagging. You may skip
to the next phase if you are ready to just make the release or release
candidate.
1. check out a clean ns-3-allinone again
- change into the allinone directory
- ./download.py
- cd ns-3-dev
- change VERSION to the appropriate string, either "3.X" (for a release) or
"3.X.RC1" Do not commit this VERSION change to ns-3-dev. It is used
by dist.py script to name the directory properly.
- cd into allinone directory and type "./dist.py"; you should see something
like this:
NS-3 version: '3.12'
Adding ns-3-dev as ns-allinone-3.12/ns-3.12
Adding pybindgen as ns-allinone-3.12/pybindgen-0.15.0.795
Adding nsc as ns-allinone-3.12/nsc-0.5.2
Adding the build script files
This will create an ns-allinone-3.X.tar.bz2 tarball
2. test tarball on release platforms
- optimized, debug, and static builds
- ./test.py -g
- make latexpdf in the doc/manual, doc/models, and doc/tutorial directories
- ./waf --doxygen
At this point, you are ready for final packaging and repository/site work
tagging ns-3-dev and creating ns-3.X repositories
-------------------------------------------------
The steps here involve tagging ns-3-dev, copying over ns-3-dev to ns-3.X
on code.nsnam.org, cloning it locally, making changes from "3-dev" to "3.X"
in various places, and checking in those changes to the new ns-3.X repository.
1. once you are happy with the tarball, tag ns-3-dev
- cd into ns-3-dev
- if release candidate
-- hg tag "ns-3.x-RCy"
-- hg push ssh://code@code.nsnam.org//home/code/repos/ns-3-dev
- else if final release
-- hg tag "ns-3.x"
-- hg push ssh://code@code.nsnam.org//home/code/repos/ns-3-dev
2. copy the tagged ns-3-dev and place it on the repository
- ssh code.nsnam.org; sudo bash; su code;
- if release candidate
-- cp -r /home/code/repos/ns-3-dev /home/code/repos/ns-3.x-RCy
-- cd /home/code/repos/ns-3.x-RCy/.hg and edit the hgrc appropriately:
[paths]
default = /home/code/repos/ns-3.x-RCy
[web]
description = ns-3.x-RCy release
name = ns-3.x-RCy
contact = <ns-developers@isi.edu>
- else if final release
-- cp -r /home/code/repos/ns-3-dev /home/code/repos/ns-3.x
-- cd /home/code/repos/ns-3.x/.hg and edit the hgrc appropriately:
[paths]
default = /home/code/repos/ns-3.x
[web]
description = ns-3.x release
name = ns-3.x
contact = <ns-developers@isi.edu>
3. If this is a final release (not RC)
- move (mv) ns-3.x RCs in /home/code/archived-repos
4. check out a clean version of the new release (ns-3.x) or (ns-3.x-RCy)
to your local machine
- hg clone http://code.nsnam.org/ns-3.x or (-RCy)
5. Update the VERSION for this new release
- change the string 3-dev in the VERSION file to the real version
(e.g. 3.7 or 3.7-RC1) This must agree with the version name you chose in the clone.
- change the version and release string for the documentation in
doc/manual/source, doc/tutorial/source, and doc/models/source conf.py files
This should hopefully be updated in the future to simply pull from the
VERSION file.
- hg commit -m "update VERSION to ns-3.x" or (-RCy), you get the point
- hg push ssh://code@code.nsnam.org//home/code/repos/ns-3.x
creating the distribution tarball
---------------------------------
1. Create final tarballs
You need to work with a clean ns-3-allinone-3.x directory
- hg clone http://code.nsnam.org/ns-3-allinone
- cd ns-3-allinone
- ./download.py -n ns-3.x
- ./dist.py (notice we did not build here)
- this will create an ns-allinone-3.x.tar.bz2 tarball
- sanity check this tarball just to make sure everything went ok
2. upload "ns-allinone-3.x.tar.bz2" to the /var/www/html/releases/ directory on
the www.nsnam.org server
8. update web page
- add link to news.html
- update getting_started.html
- update documents.html
- update roadmap on wiki
- build and update Doxygen directory on the server
-- ssh www.nsnam.org; sudo tcsh; su nsnam;
-- ~/bin/update-doxygen-release
- update and upload software architecture document (PDF, HTML)
-- note: HTML image generation is not currently automatic
9. announce to ns-developers, with summary of release notes
- scp ns-allinone-3.x.tar.bz2 www.nsnam.org:~
- ssh www.nsnam.org
- sudo cp ns-allinone-3.x.tar.bz2 /var/www/html/releases
- cd !$
3. give it 644 file permissions, and user/group = apache if it is not already
- sudo chown apache:apache ns-allinone-3.x.tar.bz2
- sudo chmod 644 ns-allinone-3.x.tar.bz2
4. if this is a final release (not RC)
- delete RC releases from /var/www/html/releases
preparing the documentation
----------------------------
1. If final release, build release documentation
- sudo bash; su nsnam; cd /home/nsnam/bin
./update-doxygen-release ns-3.x
./update-manual-release ns-3.x
./update-tutorial-release ns-3.x
2. Check if these new files are available on the website
preparing the Wordpress-based main website
------------------------------------------
1. create a new ns-3.x page which should be visible from
http://www.nsnam.org/ns-3.x
- New Features
- Download
- Bugs Fixed
- Documentation
2. Repoint http://www.nsnam.org/releases/latest to the new page
3. Update the Older Releases page to create an entry for the previous
release (there are two such pages, one under Releases and one under
Documentation)
4. The main page http://www.nsnam.org should point to
ns-3.x in the "Download" and "Documentation" boxes
5. Create blog entry to announce release
ns-3 wiki edits
---------------
1. Create ns-3.(X+1) wiki page if not done already.
2. edit front page and Roadmap
Bugzilla
--------
1. Add a product version "ns-3.x" to the available versions.
Announcing
----------
1. Final checks
- check manual, tutorial, model, and doxygen documentation links
- download tarball from web, build and run tests for as many
targets as you can
- download release from mercurial, build and run tests for as
many targets as you can
- test and verify until you're confident the release is solid.
2. announce to ns-developers and ns-3-users, with summary of release notes
-582
View File
@@ -1,582 +0,0 @@
/**
* \defgroup TraceSourceList List of trace sources
*/
/**
* \defgroup tracing Tracing
*
* The flexibility of the ns-3 tracing system comes at the cost of quite
* a bit of complexity so, before trying to use the low-level aspects
* of the tracing API, it is important to focus on some basic definitions:
*
* - A trace source is an object instance which can report trace events
* to a set of listening trace sinks.
*
* - A trace sink is a user-provided callback (a function) which can
* be connected to a set of trace sources to receive the events generated
* by each trace source.
*
* - A trace resolver is an object which allows users to establish
* connections between a set of trace sources and a set of trace sinks.
*
* \section TraceSource Generating Trace Events
*
* So, what does it look like in practice ? First, let's look at trace
* sources. We have two types of trace sources: numeric, and, normal
* trace sources. Numeric trace sources behave as normal c++ integers
* or c++ floating point numbers except that they report as trace events
* each change of their value. For example:
* \code
* class MyModel
* {
* public:
* void DoSomething (void)
* {
* // use the "int" trace source just
* // like any other "int" variable.
* m_cwnd *= 2;
* m_cwnd += 4;
* if (m_cwnd > 100)
* {
* // do something.
* }
* }
* private:
* // declare an instance of a "int" trace source
* SVTraceSource<int> m_cwnd;
* };
* \endcode
* Normal trace sources, on the other hand, allow you to trace the
* call of arbitrary functions and methods, as shown below. They are
* typically used to track "rx", "tx", or "drop" events but could
* also be used to track route change events, or position change
* events:
* \code
* class MyModel
* {
* public:
* void DoSomething (Packet packet)
* {
* // report this event on packet
* m_doSomething (packet);
* // do something
* }
* private:
* // report every "something" function call.
* CallbackTraceSource<Packet> m_doSomething;
* };
* \endcode
* Every type of trace source derives from the ns3::TraceSource base class.
* As of today, the set of concrete subclasses is relatively short:
* ns3::CallbackTraceSource, ns3::SvTraceSource, ns3::UvTraceSource, and,
* ns3::FvTraceSource.
*
* \section TraceSink Receiving Trace Events
*
* To receive these trace events, a user should specify a set of trace sinks.
* For example, to receive the "int" and the "something" events shown in the
* examples above, a user would declare the following functions:
* \code
* // oldValue and newValue contain the previous and new values of
* // the connected SVTraceSource<int> trace source.
* void
* CwndTraceSink (const TraceContext &context, int64_t oldValue, int64_t newValue)
* {
* // for example, print the new value:
* std::cout << "cwnd=" << newValue << std::endl;
* }
* void
* DoSomethingTraceSink (const TraceContext &context, Packet packet)
* {
* // for example, print the arguments
* std::cout << "packet " << packet << std::endl;
* }
* \endcode
* Each of these sink function takes, as a first argument, a reference to a
* const TraceContext object. This context object contains information which
* describes the instance of the connected trace source: that information is
* setup during the connection process and does not change afterwards
* The type and the number of the other arguments to each trace sink depends
* on the type of the connected trace source: it conveys per-event information
* from the trace source to the trace sink. For example, UVTraceSource and
* SVTraceSource trace sources require two extra arguments. The former requires
* two unsigned 64 bit integers while the latter requires two signed 64 bit
* integers. More generally, users can consult the \ref TraceSourceList
* to figure out the arguments which a trace sink is required to receive
* for each trace source: a signature of the user trace sink must match
* _exactly_ the signature documented in the \ref TraceSourceList.
*
*
* \section TraceSourceSimpleExport A simple way to connect Trace Sources with Trace Sinks
*
* The crux of the complexity of the ns-3 tracing system comes from its
* flexible system used to connect trace sources to trace sinks but what is really
* nice about it is that it is not necessary to use it to setup simple traces.
*
* The simplest way to export a set of trace sources to a user, for example,
* during the early prototyping phases of a system, is to add a set of public methods
* to give to your users access to the trace source object instances you use to generate
* trace events:
* \code
* class MyModel
* {
* public:
* void DoSomething (Packet packet)
* {
* // report this event on packet
* m_doSomething (packet);
* // do something
* }
* CallbackTraceSource<Packet> *PeekSomethingTraceSource (void) const
* {
* return &m_doSomething
* }
* private:
* // report every "something" function call.
* CallbackTraceSource<Packet> m_doSomething;
* };
* \endcode
* If your users hold a pointer to an instance of MyModel, and if they want to connect
* a MySomethingSink, they can simply do the following which invokes the
* TraceSource::AddCallback method and creates a Callback object from the user's
* sink with the MakeCallback function.
* \code
* void
* MySomethingSink (const TraceContext &context, Packet packet)
* {
* // do whatever you want.
* }
* MyModel *model = ...;
* CallbackTraceSource<Packet> *source = model->PeekSomethingTraceSource ();
* source->AddCallback (MakeCallback (&MySomethingSink));
* \endcode
*
* The full power of the tracing system comes however from its ns3::NodeList::Connect
* method which is described in the following sections.
*
* \section TraceConnection Connecting Trace Sources to Trace Sinks
*
* If a trace source is integrated in the ns-3 trace connection facility, a user
* should call the ns3::NodeList::Connect method to establish a connection between
* a trace sink and a set of matching trace sources. The second argument to that
* method is a callback to the user's trace sink.
* That callback is easy to construct: call ns3::MakeCallback and you are done. The
* first argument is a string whose format is similar to a unix path and which is
* used to uniquely identify the set of trace sources you want to connect to.
* The set of acceptable path strings is also documented in the \ref TraceSourceList.
*
* So, what does this look like from the perspective of a user ? If we wanted to
* connect to a trace source defined somewhere deep into the a set of NetDevice objects
* located in some nodes of the system, we could write the following:
* \code
* void
* DoSomethingTraceSink (const TraceContext &context, Packet packet)
* {
* // for example, print the arguments
* std::cout << "packet: " << packet << std::endl;
* }
* // connect the above sink to a matching trace source
* NodeList::Connect ("/nodes/* /devices/* /rx", MakeCallback &DoSomethingTraceSink);
* \endcode
*
* The connection path string "/nodes/* /devices/* /rx" matches the "rx" trace source
* located in every netdevice located in every node. The syntax of that path string
* is loosely based on regular expressions so, a user could conceivably connect
* to the trace sources present in only one node identified by node index:
* "/nodex/3/devices/* /rx".
*
* The matching algorithm used here is very useful since it allows you to connect
* at once a large set of trace sources to a single sink but it introduces another
* problem: it becomes impossible when you receive an event in your trace sink to
* know from _which_ trace source the event is coming from. In our example, the
* trace source might be coming from the NetDevice number 2 of Node 10 or Netdevice
* number 0 of Node 5. In both cases, you might need to know which of these NetDevice
* is generating this event, if only to generate some ascii trace dump. Another
* similar use-case is that you might have connected the same trace sink to
* multiple types of events which have the same signature: it is quite common
* to receive all tx, rx, and drop events in the same trace sink and that would be
* quite trivial to achieve with a string such as: "/nodes/* /devices/* /*"
*
* The source of a trace event can be retrieved from a trace sink using
* different means: the simplest
* way to get this information is to use the builtin printing facility of
* the TraceContext object:
* \code
* void
* DoSomethingTraceSink (const TraceContext &context, Packet packet)
* {
* // for example, print the arguments
* std::cout << "context=\"" << context << "\" packet: " << packet << std::endl;
* }
* \endcode
* The above code is going to generate output which looks like the following:
* \code
* context="nodeid=2 device=0 dev-rx" packet: IPV4(tos 0x0 ttl 64 id 0 offset ...
* context="nodeid=1 device=0 dev-rx" packet: IPV4(tos 0x0 ttl 64 id 0 offset ...
* ...
* \endcode
*
* Another more advanced way to get information out of a TraceContext is to call its
* ns3::TraceContext::GetElement method. This method takes as its first and only
* argument an instance of the object we want to read and the list of available
* object instances we can read from a TraceContext is documented, once again,
* in the \ref TraceSourceList. For example, we could write the following to
* generate adhoc trace output:
* \code
* void DeviceRxSink (const TraceContext &context, const Packet &packet)
* {
* NodeListIndex nodeIndex;
* NodeNetDeviceIndex deviceIndex;
* context.GetElement (nodeIndex);
* context.GetElement (deviceIndex);
* std::cout << "node-index=" << nodeIndex.Get ();
* std::cout << ", device-index=" << deviceIndex.Get ();
* std::cout << ", packet: " << packet;
* std::cout << std::endl;
* }
* \endcode
*
* \section ExportingTraceSources Exporting new Trace Sources
*
* Using existing trace sources to connect them to a set of adhoc trace sinks
* is not really complicated but, setting up new trace sources which can hook
* in this automatic connection system is a bit more complicated.
*
* So far, we know that a model author can generate trace events really easily:
* \code
* class MyModel
* {
* public:
* void DoSomething (Packet packet)
* {
* // report this event on packet with value
* m_doSomething (packet);
* // do something
* }
* private:
* // report every "something" function call.
* CallbackTraceSource<Packet> m_doSomething;
* };
* \endcode
*
* To make these new trace sources available to the rest of the connection system,
* the first step is to make sure that your model object derives from the ns3::Object
* base class either directly (as shown below) or indirectly through another base class:
* \code
* class MyModel : public Object {...};
* // or:
* class SomeOtherObject : public Object {...};
* class MyModel : public SomeOtherObject {...};
* \endcode
*
* This is pretty trivial and lays the ground for the second step: overriding the
* ns3::Object::GetTraceResolver method:
* \code
* class MyModel : public MyParent
* {
* public:
* // declare overriden method
* virtual Ptr<TraceResolver> GetTraceResolver (void) const;
* private:
* // the new trace source to export.
* CallbackTraceSource<Packet> m_rxSource;
* };
* \endcode
*
* To implement this method, you could attempt to implement a new subclass of
* the ns3::TraceResolver base class and return an instance from this method but
* this would be very hard. Instead, you should use the helper class
* ns3::CompositeTraceResolver to register your trace sources and chain up to
* your parent:
* \code
* Ptr<TraceResolver>
* MyModel::GetTraceResolver (void) const
* {
* // create an empty trace resolver
* Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
* // register m_rxSource
* resolver->AddSource ("rx", // the name of the trace source in the path string
* TraceDoc ("some help text to explain the purpose of this trace source",
* "Packet", // the type of the first argument to the trace source
* "the purpose of the first argument",
* "type-of-second-argument", "purpose-of-second-argument"),
* m_rxSource // the trace source itself is registered
* );
* // make sure we include the trace sources implemented in the parent.
* resolver->SetParentResolver (MyParent::GetTraceResolver ());
* return resolver;
* }
* \endcode
*
* Once you have written that code, you must make sure that this new method GetTraceResolver
* is going to be called at some point by the tracing system. If your model is located somewhere
* deep in MAC or PHY layer, that is, it is part of a NetDevice implementation, all you
* have to do is to make sure that your model is registered as a "composite" of your NetDevice
* subclass:
* \code
* class MyNetDevice : public NetDevice
* {
* public:
* Ptr<TraceResolver> GetTraceResolver (void) const;
* private:
* Ptr<MyModel> m_model;
* };
*
* Ptr<TraceResolver>
* MyNetDevice::GetTraceResolver (void) const
* {
* Ptr<CompositeTraceResolver> resolver = ...;
* // register other trace source
* ...
* // register now your model as a "composite"
* resolver->AddComposite ("my-model", m_model);
* // chain up to parent.
* resolver->SetParentResolver (NetDevice::GetTraceResolver ());
* return resolver;
* }
* \endcode
*
* The code above will make your "rx" trace source appear under the
* /nodes/xx/devices/xx/my-model/rx namespace path.
*
* If you have implemented a new layer 3 or 4 protocol object, the process to
* export your trace sources is quite similar. You need to subclass from
* ns3::Object, override the ns3::Object::GetTraceResolver method, make
* sure you chain up to your parent's GetTraceResolver method, and, finally,
* make sure that someone calls your new GetTraceResolver method. How to accomplish
* the latter should be documented in the node's API documentation which describes
* how to implement a new layer 3 or 4 protocol object.
*
* \section AdvancedTraceContext Creating new Trace Context Elements
*
* The last important feature which model developers need to understand
* is how to provide extra context information to trace sinks. For example,
* if your model exports both rx and tx trace sources which share the same
* signature, it is quite natural for a user to connect to a single trace sink
* to both of them with a trace path string such as "/nodes/* /devices/* /(rx|tx)".
* In this case, it becomes necessary to be able, from the trace sink function,
* to tell which event triggered the call to the trace sink: a rx or a tx event.
*
* That example is detailed below with a TX, a RX, and a DROP source:
* \code
* class MyModel
* {
* private:
* CallbackTraceSource<Packet> m_rxSource;
* CallbackTraceSource<Packet> m_txSource;
* CallbackTraceSource<Packet> m_dropSource;
* };
* \endcode
* When a single sink is connected to all 3 sources here, one might want
* to write code like the following:
* \code
* void DeviceRxSink (const TraceContext &context, const Packet &packet)
* {
* switch (type) {
* case RX:
* std::cout << "rx" << std::endl;
* break;
* case TX:
* std::cout << "tx" << std::endl;
* break;
* case DROP:
* std::cout << "drop" << std::endl;
* break;
* }
* \endcode
*
* \subsection AdvancedTraceContextSimpleSolution The simple solution
*
* The simplest way to do achieve the result shown above is to include
* in the trace source an extra explicit argument which describes the source event:
* - define a small enum with 3 values
* - change the signature of m_rxSource, m_txSource, and m_dropSource to include
* the enum
* - pass the enum value in each event
*
* The resulting code is shown below:
* \code
* class MyModel
* {
* public:
* // define the trace type enum.
* enum TraceType {
* RX,
* TX,
* DROP
* };
* private:
* // generate events
* void NotifyRxPacket (Packet p) {
* m_rxSource (p, MyModel::RX);
* }
* void NotifyTxPacket (Packet p) {
* m_rxSource (p, MyModel::TX);
* }
* void NotifyDropPacket (Packet p) {
* m_rxSource (p, MyModel::DROP);
* }
* CallbackTraceSource<Packet,enum TraceType> m_rxSource;
* CallbackTraceSource<Packet,enum TraceType> m_txSource;
* CallbackTraceSource<Packet,enum TraceType> m_dropSource;
* };
* \endcode
* These 3 new sources can be connected easily to a new trace sink:
* \code
* void ASimpleTraceSink (const TraceContext &context, const Packet &packet, enum MyModel::TraceType type)
* {
* // here, read the "type" argument
* }
* \endcode
*
* This solution works but it makes it impossible to connect a single trace sink to a set
* of trace sources which represent "rx" events in different NetDevice objects since
* each of them will define a different enum type with different values: since the
* trace sink signature must match exactly the trace source signature, it is impossible
* to connect at the same time to all "rx" events of different NetDevice.
*
* \subsection AdvancedTraceContextFancySolution The more complex and generic solution
*
* There is, hopefully, a way to get the best of both worlds, that is, to allow a
* user to connect to a lot of trace source events of the same kind but coming from different
* implementations and to allow the user to differentiate between these different
* implementations.
*
* Rather than define an adhoc enum type with a list of trace sources, you can also
* define a new ns3::TraceContextElement for your source sources. For example, if you
* define a new MyModelTraceType class which contains the type of trace, your users can
* then write trace sink code which looks like this:
* \code
* void AFancyTraceSink (const TraceContext &context, const Packet &packet)
* {
* MyModelTraceType type;
* if (context.GetElement (type))
* {
* switch (type.Get ())
* {
* case MyModelTraceType::RX:
* std::cout << "rx" << std::endl;
* break;
* case MyModelTraceType::TX:
* std::cout << "tx" << std::endl;
* break;
* case MyModelTraceType::DROP:
* std::cout << "drop" << std::endl;
* break;
* }
* }
* }
* \endcode
*
* Of course, since the type of trace is stored in the TraceContext, your users can
* also take the shortcut which uses the printing functionality of the TraceContext:
* \code
* void ALessFancyTraceSink (const TraceContext &context, const Packet &packet)
* {
* std::cout << "context=\"" << context << "\" packet: " << packet << std::endl;
* }
* \endcode
* which will generate something like the following when the trace source comes
* from MyModel:
* \code
* context="my-model-rx" packet: ...
* \endcode
*
* The first step to achieve this is to define and implement a new
* subclass of the ns3::TraceContextElement base class. The exact list of
* public methods which must be implemented is described in the API
* documentation of the ns3::TraceContextElement class.
* \code
* class MyModelTraceType : public TraceContextElement
* {
* public:
* enum Type {
* RX,
* TX,
* DROP
* };
* // called from MyModel::GetTraceResolver
* MyModelTraceType (enum Type type);
* // needed for by the tracing subsystem.
* MyModelTraceType ();
* // called from trace sink
* enum Type Get (void) const;
* // needed by the tracing subsystem
* static uint16_t GetUid (void);
* // needed by the tracing subsystem to
* // print the content of a TraceContext
* void Print (std::ostream &os) const;
* // needed by the tracing subsystem to
* // generate the doxygen documentation.
* std::string GetTypeName (void) const;
* private:
* enum Type m_type;
* };
* \endcode
* The implementation does not require much thinking:
* \code
* MyModelTraceType::MyModelTraceType ()
* : m_type (RX)
* {// an arbitrary default value.
* }
* MyModelTraceType::MyModelTraceType (enum Type type)
* : m_type (type)
* {}
* enum MyModelTraceType::Type
* MyModelTraceType::Get (void) const
* {
* return m_type;
* }
* uint16_t
* MyModelTraceType::GetUid (void)
* {
* // use protected TraceContextElement::AllocateUid method
* // the input string is used to uniquely identify this new subclass
* static uint16_t uid = AllocateUid<MyModelTraceType> ("ns3::MyModelTraceType");
* return uid;
* }
* void
* MyModelTraceType::Print (std::ostream &os) const
* {
* // this method is invoked by the print function of a TraceContext
* // if it contains an instance of this TraceContextElement.
* switch (m_type) {
* case RX: os << "rx"; break;
* // ...
* }
* }
* std::string
* MyModelTraceType::GetTypeName (void) const
* {
* // This method should return a fully-qualified c++ typename
* // This method is used only for documentation purposes to
* // generate the content of the Trace Source List.
* return "ns3::MyModelTraceType";
* }
* \endcode
*
* Once this subclass is implemented, the work is almost completed: you
* just need to pass an instance of that class as the last argument of
* the ns3::CompositeTraceResolver::AddSource method as shown below:
* \code
* Ptr<TraceResolver>
* MyModel::GetTraceResolver (void) const
* {
* // create an empty trace resolver
* Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
* // register m_rxSource
* resolver->AddSource ("rx", // the name of the trace source in the path string
* TraceDoc ("some help text to explain the purpose of this trace source",
* "Packet", // the type of the first argument to the trace source
* "the purpose of the first argument",
* "type-of-second-argument", "purpose-of-second-argument"),
* m_rxSource, // the trace source itself is registered
* // the TraceContextElement associated to this trace source.
* MyModelTraceType (MyModelTraceType::RX)
* );
* // make sure we include the trace sources implemented in the parent.
* resolver->SetParentResolver (MyParent::GetTraceResolver ());
* return resolver;
* }
* \endcode
*/
+150
View File
@@ -0,0 +1,150 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
# Additional variables for figures, not sphinx default:
DIA = dia
EPSTOPDF = epstopdf
FIGURES = source/figures
IMAGES_EPS = \
IMAGES_PNG = ${IMAGES_EPS:.eps=.png}
IMAGES_PDF = ${IMAGES_EPS:.eps=.pdf}
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
%.eps : %.dia; $(DIA) -t eps $< -e $@
%.png : %.dia; $(DIA) -t png $< -e $@
%.pdf : %.eps; $(EPSTOPDF) $< -o=$@
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
-rm -rf $(BUILDDIR)/*
frag: pickle
@if test ! -d $(BUILDDIR)/frag; then mkdir $(BUILDDIR)/frag; fi
pushd $(BUILDDIR)/frag && ../../pickle-to-xml.py ../pickle/index.fpickle > navigation.xml && popd
cp -r $(BUILDDIR)/pickle/_images $(BUILDDIR)/frag
html: $(IMAGES)
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml: $(IMAGES)
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml: $(IMAGES)
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle: $(IMAGES)
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json: $(IMAGES)
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp: $(IMAGES)
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp: $(IMAGES)
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ns-3.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ns-3.qhc"
devhelp: $(IMAGES)
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/ns-3"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/ns-3"
@echo "# devhelp"
epub: $(IMAGES)
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex: $(IMAGES)
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf: $(IMAGES)
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
make -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text: $(IMAGES)
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man: $(IMAGES)
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
changes: $(IMAGES)
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck: $(IMAGEs)
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest: $(IMAGES)
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

+18
View File
@@ -0,0 +1,18 @@
Please write image files in a vector graphics format, when possible, and
generate the .png and .pdf versions on the fly (see ../Makefile).
The currently supported tool is dia. xfig could be added similarly
if someone wants to add it. The main requirement for adding another format
is that the tool to edit it is freely available and that a cron script can
autogenerate the pdf and png from the figure source. Tgif (.obj) files
were once used but the file conversions require a valid X display to
be running, and are therefore to be avoided since our code server
does not run such a server. Tgif pdf conversions were also cumbersome.
Store the .dia versions in mercurial, but not the .png or .pdfs.
If the figure is not available in a vector graphics format, store both
a .png and a .pdf version in this directory.
If you add a source (.dia) file here, remember to add it to
the list of figure sources in the Makefile in the directory above
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

+42
View File
@@ -0,0 +1,42 @@
#!/usr/bin/python
# output xml format:
# <pages>
# <page url="xx"><prev url="yyy">zzz</prev><next url="hhh">lll</next><fragment>file.frag</fragment></page>
# ...
# </pages>
import pickle
import os
import codecs
def dump_pickles(out, dirname, filename, path):
f = open(os.path.join(dirname, filename), 'r')
data = pickle.load(f)
fragment_file = codecs.open(data['current_page_name'] + '.frag', mode='w', encoding='utf-8')
fragment_file.write(data['body'])
fragment_file.close()
out.write(' <page url="%s">\n' % path)
out.write(' <fragment>%s.frag</fragment>\n' % data['current_page_name'])
if data['prev'] is not None:
out.write(' <prev url="%s">%s</prev>\n' %
(os.path.normpath(os.path.join(path, data['prev']['link'])),
data['prev']['title']))
if data['next'] is not None:
out.write(' <next url="%s">%s</next>\n' %
(os.path.normpath(os.path.join(path, data['next']['link'])),
data['next']['title']))
out.write(' </page>\n')
f.close()
if data['next'] is not None:
next_path = os.path.normpath(os.path.join(path, data['next']['link']))
next_filename = os.path.basename(next_path) + '.fpickle'
dump_pickles(out, dirname, next_filename, next_path)
return
import sys
sys.stdout.write('<pages>\n')
dump_pickles(sys.stdout, os.path.dirname(sys.argv[1]), os.path.basename(sys.argv[1]), '/')
sys.stdout.write('</pages>')
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File
File diff suppressed because it is too large Load Diff
+842
View File
@@ -0,0 +1,842 @@
.. include:: replace.txt
Conceptual Overview
-------------------
The first thing we need to do before actually starting to look at or write
|ns3| code is to explain a few core concepts and abstractions in the
system. Much of this may appear transparently obvious to some, but we
recommend taking the time to read through this section just to ensure you
are starting on a firm foundation.
Key Abstractions
****************
In this section, we'll review some terms that are commonly used in
networking, but have a specific meaning in |ns3|.
Node
++++
In Internet jargon, a computing device that connects to a network is called
a *host* or sometimes an *end system*. Because |ns3| is a
*network* simulator, not specifically an *Internet* simulator, we
intentionally do not use the term host since it is closely associated with
the Internet and its protocols. Instead, we use a more generic term also
used by other simulators that originates in Graph Theory --- the *node*.
In |ns3| the basic computing device abstraction is called the
node. This abstraction is represented in C++ by the class ``Node``. The
``Node`` class provides methods for managing the representations of
computing devices in simulations.
You should think of a ``Node`` as a computer to which you will add
functionality. One adds things like applications, protocol stacks and
peripheral cards with their associated drivers to enable the computer to do
useful work. We use the same basic model in |ns3|.
Application
+++++++++++
Typically, computer software is divided into two broad classes. *System
Software* organizes various computer resources such as memory, processor
cycles, disk, network, etc., according to some computing model. System
software usually does not use those resources to complete tasks that directly
benefit a user. A user would typically run an *application* that acquires
and uses the resources controlled by the system software to accomplish some
goal.
Often, the line of separation between system and application software is made
at the privilege level change that happens in operating system traps.
In |ns3| there is no real concept of operating system and especially
no concept of privilege levels or system calls. We do, however, have the
idea of an application. Just as software applications run on computers to
perform tasks in the "real world," |ns3| applications run on
|ns3| ``Nodes`` to drive simulations in the simulated world.
In |ns3| the basic abstraction for a user program that generates some
activity to be simulated is the application. This abstraction is represented
in C++ by the class ``Application``. The ``Application`` class provides
methods for managing the representations of our version of user-level
applications in simulations. Developers are expected to specialize the
``Application`` class in the object-oriented programming sense to create new
applications. In this tutorial, we will use specializations of class
``Application`` called ``UdpEchoClientApplication`` and
``UdpEchoServerApplication``. As you might expect, these applications
compose a client/server application set used to generate and echo simulated
network packets
Channel
+++++++
In the real world, one can connect a computer to a network. Often the media
over which data flows in these networks are called *channels*. When
you connect your Ethernet cable to the plug in the wall, you are connecting
your computer to an Ethernet communication channel. In the simulated world
of |ns3|, one connects a ``Node`` to an object representing a
communication channel. Here the basic communication subnetwork abstraction
is called the channel and is represented in C++ by the class ``Channel``.
The ``Channel`` class provides methods for managing communication
subnetwork objects and connecting nodes to them. ``Channels`` may also be
specialized by developers in the object oriented programming sense. A
``Channel`` specialization may model something as simple as a wire. The
specialized ``Channel`` can also model things as complicated as a large
Ethernet switch, or three-dimensional space full of obstructions in the case
of wireless networks.
We will use specialized versions of the ``Channel`` called
``CsmaChannel``, ``PointToPointChannel`` and ``WifiChannel`` in this
tutorial. The ``CsmaChannel``, for example, models a version of a
communication subnetwork that implements a *carrier sense multiple
access* communication medium. This gives us Ethernet-like functionality.
Net Device
++++++++++
It used to be the case that if you wanted to connect a computers to a network,
you had to buy a specific kind of network cable and a hardware device called
(in PC terminology) a *peripheral card* that needed to be installed in
your computer. If the peripheral card implemented some networking function,
they were called Network Interface Cards, or *NICs*. Today most
computers come with the network interface hardware built in and users don't
see these building blocks.
A NIC will not work without a software driver to control the hardware. In
Unix (or Linux), a piece of peripheral hardware is classified as a
*device*. Devices are controlled using *device drivers*, and network
devices (NICs) are controlled using *network device drivers*
collectively known as *net devices*. In Unix and Linux you refer
to these net devices by names such as *eth0*.
In |ns3| the *net device* abstraction covers both the software
driver and the simulated hardware. A net device is "installed" in a
``Node`` in order to enable the ``Node`` to communicate with other
``Nodes`` in the simulation via ``Channels``. Just as in a real
computer, a ``Node`` may be connected to more than one ``Channel`` via
multiple ``NetDevices``.
The net device abstraction is represented in C++ by the class ``NetDevice``.
The ``NetDevice`` class provides methods for managing connections to
``Node`` and ``Channel`` objects; and may be specialized by developers
in the object-oriented programming sense. We will use the several specialized
versions of the ``NetDevice`` called ``CsmaNetDevice``,
``PointToPointNetDevice``, and ``WifiNetDevice`` in this tutorial.
Just as an Ethernet NIC is designed to work with an Ethernet network, the
``CsmaNetDevice`` is designed to work with a ``CsmaChannel``; the
``PointToPointNetDevice`` is designed to work with a
``PointToPointChannel`` and a ``WifiNetNevice`` is designed to work with
a ``WifiChannel``.
Topology Helpers
++++++++++++++++
In a real network, you will find host computers with added (or built-in)
NICs. In |ns3| we would say that you will find ``Nodes`` with
attached ``NetDevices``. In a large simulated network you will need to
arrange many connections between ``Nodes``, ``NetDevices`` and
``Channels``.
Since connecting ``NetDevices`` to ``Nodes``, ``NetDevices``
to ``Channels``, assigning IP addresses, etc., are such common tasks
in |ns3|, we provide what we call *topology helpers* to make
this as easy as possible. For example, it may take many distinct
|ns3| core operations to create a NetDevice, add a MAC address,
install that net device on a ``Node``, configure the node's protocol stack,
and then connect the ``NetDevice`` to a ``Channel``. Even more
operations would be required to connect multiple devices onto multipoint
channels and then to connect individual networks together into internetworks.
We provide topology helper objects that combine those many distinct operations
into an easy to use model for your convenience.
A First ns-3 Script
*******************
If you downloaded the system as was suggested above, you will have a release
of |ns3| in a directory called ``repos`` under your home
directory. Change into that release directory, and you should find a
directory structure something like the following:
::
AUTHORS examples scratch utils waf.bat*
bindings LICENSE src utils.py waf-tools
build ns3 test.py* utils.pyc wscript
CHANGES.html README testpy-output VERSION wutils.py
doc RELEASE_NOTES testpy.supp waf* wutils.pyc
Change into the ``examples/tutorial`` directory. You should see a file named
``first.cc`` located there. This is a script that will create a simple
point-to-point link between two nodes and echo a single packet between the
nodes. Let's take a look at that script line by line, so go ahead and open
``first.cc`` in your favorite editor.
Boilerplate
+++++++++++
The first line in the file is an emacs mode line. This tells emacs about the
formatting conventions (coding style) we use in our source code.
::
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
This is always a somewhat controversial subject, so we might as well get it
out of the way immediately. The |ns3| project, like most large
projects, has adopted a coding style to which all contributed code must
adhere. If you want to contribute your code to the project, you will
eventually have to conform to the |ns3| coding standard as described
in the file ``doc/codingstd.txt`` or shown on the project web page
`here
<http://www.nsnam.org/codingstyle.html>`_.
We recommend that you, well, just get used to the look and feel of |ns3|
code and adopt this standard whenever you are working with our code. All of
the development team and contributors have done so with various amounts of
grumbling. The emacs mode line above makes it easier to get the formatting
correct if you use the emacs editor.
The |ns3| simulator is licensed using the GNU General Public
License. You will see the appropriate GNU legalese at the head of every file
in the |ns3| distribution. Often you will see a copyright notice for
one of the institutions involved in the |ns3| project above the GPL
text and an author listed below.
::
/*
* 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
*/
Module Includes
+++++++++++++++
The code proper starts with a number of include statements.
::
#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"
To help our high-level script users deal with the large number of include
files present in the system, we group includes according to relatively large
modules. We provide a single include file that will recursively load all of
the include files used in each module. Rather than having to look up exactly
what header you need, and possibly have to get a number of dependencies right,
we give you the ability to load a group of files at a large granularity. This
is not the most efficient approach but it certainly makes writing scripts much
easier.
Each of the |ns3| include files is placed in a directory called
``ns3`` (under the build directory) during the build process to help avoid
include file name collisions. The ``ns3/core-module.h`` file corresponds
to the ns-3 module you will find in the directory ``src/core`` in your
downloaded release distribution. If you list this directory you will find a
large number of header files. When you do a build, Waf will place public
header files in an ``ns3`` directory under the appropriate
``build/debug`` or ``build/optimized`` directory depending on your
configuration. Waf will also automatically generate a module include file to
load all of the public header files.
Since you are, of course, following this tutorial religiously, you will
already have done a
::
./waf -d debug --enable-examples --enable-tests configure
in order to configure the project to perform debug builds that include
examples and tests. You will also have done a
::
./waf
to build the project. So now if you look in the directory
``../../build/debug/ns3`` you will find the four module include files shown
above. You can take a look at the contents of these files and find that they
do include all of the public include files in their respective modules.
Ns3 Namespace
+++++++++++++
The next line in the ``first.cc`` script is a namespace declaration.
::
using namespace ns3;
The |ns3| project is implemented in a C++ namespace called
``ns3``. This groups all |ns3|-related declarations in a scope
outside the global namespace, which we hope will help with integration with
other code. The C++ ``using`` statement introduces the |ns3|
namespace into the current (global) declarative region. This is a fancy way
of saying that after this declaration, you will not have to type ``ns3::``
scope resolution operator before all of the |ns3| code in order to use
it. If you are unfamiliar with namespaces, please consult almost any C++
tutorial and compare the ``ns3`` namespace and usage here with instances of
the ``std`` namespace and the ``using namespace std;`` statements you
will often find in discussions of ``cout`` and streams.
Logging
+++++++
The next line of the script is the following,
::
NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");
We will use this statement as a convenient place to talk about our Doxygen
documentation system. If you look at the project web site,
`ns-3 project
<http://www.nsnam.org>`_, you will find a link to "Documentation" in the navigation bar. If you select this link, you will be
taken to our documentation page. There
is a link to "Latest Release" that will take you to the documentation
for the latest stable release of |ns3|.
If you select the "API Documentation" link, you will be
taken to the |ns3| API documentation page.
Along the left side, you will find a graphical representation of the structure
of the documentation. A good place to start is the ``NS-3 Modules``
"book" in the |ns3| navigation tree. If you expand ``Modules``
you will see a list of |ns3| module documentation. The concept of
module here ties directly into the module include files discussed above. The |ns3| logging subsystem is discussed in the ``C++ Constructs Used by All Modules``
section, so go ahead and expand that documentation node. Now, expand the
``Debugging`` book and then select the ``Logging`` page.
You should now be looking at the Doxygen documentation for the Logging module.
In the list of ``#define``s at the top of the page you will see the entry
for ``NS_LOG_COMPONENT_DEFINE``. Before jumping in, it would probably be
good to look for the "Detailed Description" of the logging module to get a
feel for the overall operation. You can either scroll down or select the
"More..." link under the collaboration diagram to do this.
Once you have a general idea of what is going on, go ahead and take a look at
the specific ``NS_LOG_COMPONENT_DEFINE`` documentation. I won't duplicate
the documentation here, but to summarize, this line declares a logging
component called ``FirstScriptExample`` that allows you to enable and
disable console message logging by reference to the name.
Main Function
+++++++++++++
The next lines of the script you will find are,
::
int
main (int argc, char *argv[])
{
This is just the declaration of the main function of your program (script).
Just as in any C++ program, you need to define a main function that will be
the first function run. There is nothing at all special here. Your
|ns3| script is just a C++ program.
The next two lines of the script are used to enable two logging components that
are built into the Echo Client and Echo Server applications:
::
LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);
LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);
If you have read over the Logging component documentation you will have seen
that there are a number of levels of logging verbosity/detail that you can
enable on each component. These two lines of code enable debug logging at the
INFO level for echo clients and servers. This will result in the application
printing out messages as packets are sent and received during the simulation.
Now we will get directly to the business of creating a topology and running
a simulation. We use the topology helper objects to make this job as
easy as possible.
Topology Helpers
++++++++++++++++
NodeContainer
~~~~~~~~~~~~~
The next two lines of code in our script will actually create the
|ns3| ``Node`` objects that will represent the computers in the
simulation.
::
NodeContainer nodes;
nodes.Create (2);
Let's find the documentation for the ``NodeContainer`` class before we
continue. Another way to get into the documentation for a given class is via
the ``Classes`` tab in the Doxygen pages. If you still have the Doxygen
handy, just scroll up to the top of the page and select the ``Classes``
tab. You should see a new set of tabs appear, one of which is
``Class List``. Under that tab you will see a list of all of the
|ns3| classes. Scroll down, looking for ``ns3::NodeContainer``.
When you find the class, go ahead and select it to go to the documentation for
the class.
You may recall that one of our key abstractions is the ``Node``. This
represents a computer to which we are going to add things like protocol stacks,
applications and peripheral cards. The ``NodeContainer`` topology helper
provides a convenient way to create, manage and access any ``Node`` objects
that we create in order to run a simulation. The first line above just
declares a NodeContainer which we call ``nodes``. The second line calls the
``Create`` method on the ``nodes`` object and asks the container to
create two nodes. As described in the Doxygen, the container calls down into
the |ns3| system proper to create two ``Node`` objects and stores
pointers to those objects internally.
The nodes as they stand in the script do nothing. The next step in
constructing a topology is to connect our nodes together into a network.
The simplest form of network we support is a single point-to-point link
between two nodes. We'll construct one of those links here.
PointToPointHelper
~~~~~~~~~~~~~~~~~~
We are constructing a point to point link, and, in a pattern which will become
quite familiar to you, we use a topology helper object to do the low-level
work required to put the link together. Recall that two of our key
abstractions are the ``NetDevice`` and the ``Channel``. In the real
world, these terms correspond roughly to peripheral cards and network cables.
Typically these two things are intimately tied together and one cannot expect
to interchange, for example, Ethernet devices and wireless channels. Our
Topology Helpers follow this intimate coupling and therefore you will use a
single ``PointToPointHelper`` to configure and connect |ns3|
``PointToPointNetDevice`` and ``PointToPointChannel`` objects in this
script.
The next three lines in the script are,
::
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
The first line,
::
PointToPointHelper pointToPoint;
instantiates a ``PointToPointHelper`` object on the stack. From a
high-level perspective the next line,
::
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
tells the ``PointToPointHelper`` object to use the value "5Mbps"
(five megabits per second) as the "DataRate" when it creates a
``PointToPointNetDevice`` object.
From a more detailed perspective, the string "DataRate" corresponds
to what we call an ``Attribute`` of the ``PointToPointNetDevice``.
If you look at the Doxygen for class ``ns3::PointToPointNetDevice`` and
find the documentation for the ``GetTypeId`` method, you will find a list
of ``Attributes`` defined for the device. Among these is the "DataRate"
``Attribute``. Most user-visible |ns3| objects have similar lists of
``Attributes``. We use this mechanism to easily configure simulations without
recompiling as you will see in a following section.
Similar to the "DataRate" on the ``PointToPointNetDevice`` you will find a
"Delay" ``Attribute`` associated with the ``PointToPointChannel``. The
final line,
::
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
tells the ``PointToPointHelper`` to use the value "2ms" (two milliseconds)
as the value of the transmission delay of every point to point channel it
subsequently creates.
NetDeviceContainer
~~~~~~~~~~~~~~~~~~
At this point in the script, we have a ``NodeContainer`` that contains
two nodes. We have a ``PointToPointHelper`` that is primed and ready to
make ``PointToPointNetDevices`` and wire ``PointToPointChannel`` objects
between them. Just as we used the ``NodeContainer`` topology helper object
to create the ``Nodes`` for our simulation, we will ask the
``PointToPointHelper`` to do the work involved in creating, configuring and
installing our devices for us. We will need to have a list of all of the
NetDevice objects that are created, so we use a NetDeviceContainer to hold
them just as we used a NodeContainer to hold the nodes we created. The
following two lines of code,
::
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
will finish configuring the devices and channel. The first line declares the
device container mentioned above and the second does the heavy lifting. The
``Install`` method of the ``PointToPointHelper`` takes a
``NodeContainer`` as a parameter. Internally, a ``NetDeviceContainer``
is created. For each node in the ``NodeContainer`` (there must be exactly
two for a point-to-point link) a ``PointToPointNetDevice`` is created and
saved in the device container. A ``PointToPointChannel`` is created and
the two ``PointToPointNetDevices`` are attached. When objects are created
by the ``PointToPointHelper``, the ``Attributes`` previously set in the
helper are used to initialize the corresponding ``Attributes`` in the
created objects.
After executing the ``pointToPoint.Install (nodes)`` call we will have
two nodes, each with an installed point-to-point net device and a single
point-to-point channel between them. Both devices will be configured to
transmit data at five megabits per second over the channel which has a two
millisecond transmission delay.
InternetStackHelper
~~~~~~~~~~~~~~~~~~~
We now have nodes and devices configured, but we don't have any protocol stacks
installed on our nodes. The next two lines of code will take care of that.
::
InternetStackHelper stack;
stack.Install (nodes);
The ``InternetStackHelper`` is a topology helper that is to internet stacks
what the ``PointToPointHelper`` is to point-to-point net devices. The
``Install`` method takes a ``NodeContainer`` as a parameter. When it is
executed, it will install an Internet Stack (TCP, UDP, IP, etc.) on each of
the nodes in the node container.
Ipv4AddressHelper
~~~~~~~~~~~~~~~~~
Next we need to associate the devices on our nodes with IP addresses. We
provide a topology helper to manage the allocation of IP addresses. The only
user-visible API is to set the base IP address and network mask to use when
performing the actual address allocation (which is done at a lower level
inside the helper).
The next two lines of code in our example script, ``first.cc``,
::
Ipv4AddressHelper address;
address.SetBase ("10.1.1.0", "255.255.255.0");
declare an address helper object and tell it that it should begin allocating IP
addresses from the network 10.1.1.0 using the mask 255.255.255.0 to define
the allocatable bits. By default the addresses allocated will start at one
and increase monotonically, so the first address allocated from this base will
be 10.1.1.1, followed by 10.1.1.2, etc. The low level |ns3| system
actually remembers all of the IP addresses allocated and will generate a
fatal error if you accidentally cause the same address to be generated twice
(which is a very hard to debug error, by the way).
The next line of code,
::
Ipv4InterfaceContainer interfaces = address.Assign (devices);
performs the actual address assignment. In |ns3| we make the
association between an IP address and a device using an ``Ipv4Interface``
object. Just as we sometimes need a list of net devices created by a helper
for future reference we sometimes need a list of ``Ipv4Interface`` objects.
The ``Ipv4InterfaceContainer`` provides this functionality.
Now we have a point-to-point network built, with stacks installed and IP
addresses assigned. What we need at this point are applications to generate
traffic.
Applications
++++++++++++
Another one of the core abstractions of the ns-3 system is the
``Application``. In this script we use two specializations of the core
|ns3| class ``Application`` called ``UdpEchoServerApplication``
and ``UdpEchoClientApplication``. Just as we have in our previous
explanations, we use helper objects to help configure and manage the
underlying objects. Here, we use ``UdpEchoServerHelper`` and
``UdpEchoClientHelper`` objects to make our lives easier.
UdpEchoServerHelper
~~~~~~~~~~~~~~~~~~~
The following lines of code in our example script, ``first.cc``, are used
to set up a UDP echo server application on one of the nodes we have previously
created.
::
UdpEchoServerHelper echoServer (9);
ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));
The first line of code in the above snippet declares the
``UdpEchoServerHelper``. As usual, this isn't the application itself, it
is an object used to help us create the actual applications. One of our
conventions is to place *required* ``Attributes`` in the helper constructor.
In this case, the helper can't do anything useful unless it is provided with
a port number that the client also knows about. Rather than just picking one
and hoping it all works out, we require the port number as a parameter to the
constructor. The constructor, in turn, simply does a ``SetAttribute``
with the passed value. If you want, you can set the "Port" ``Attribute``
to another value later using ``SetAttribute``.
Similar to many other helper objects, the ``UdpEchoServerHelper`` object
has an ``Install`` method. It is the execution of this method that actually
causes the underlying echo server application to be instantiated and attached
to a node. Interestingly, the ``Install`` method takes a
``NodeContainter`` as a parameter just as the other ``Install`` methods
we have seen. This is actually what is passed to the method even though it
doesn't look so in this case. There is a C++ *implicit conversion* at
work here that takes the result of ``nodes.Get (1)`` (which returns a smart
pointer to a node object --- ``Ptr<Node>``) and uses that in a constructor
for an unnamed ``NodeContainer`` that is then passed to ``Install``.
If you are ever at a loss to find a particular method signature in C++ code
that compiles and runs just fine, look for these kinds of implicit conversions.
We now see that ``echoServer.Install`` is going to install a
``UdpEchoServerApplication`` on the node found at index number one of the
``NodeContainer`` we used to manage our nodes. ``Install`` will return
a container that holds pointers to all of the applications (one in this case
since we passed a ``NodeContainer`` containing one node) created by the
helper.
Applications require a time to "start" generating traffic and may take an
optional time to "stop". We provide both. These times are set using the
``ApplicationContainer`` methods ``Start`` and ``Stop``. These
methods take ``Time`` parameters. In this case, we use an *explicit*
C++ conversion sequence to take the C++ double 1.0 and convert it to an
|ns3| ``Time`` object using a ``Seconds`` cast. Be aware that
the conversion rules may be controlled by the model author, and C++ has its
own rules, so you can't always just assume that parameters will be happily
converted for you. The two lines,
::
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));
will cause the echo server application to ``Start`` (enable itself) at one
second into the simulation and to ``Stop`` (disable itself) at ten seconds
into the simulation. By virtue of the fact that we have declared a simulation
event (the application stop event) to be executed at ten seconds, the simulation
will last *at least* ten seconds.
UdpEchoClientHelper
~~~~~~~~~~~~~~~~~~~
The echo client application is set up in a method substantially similar to
that for the server. There is an underlying ``UdpEchoClientApplication``
that is managed by an ``UdpEchoClientHelper``.
::
UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);
echoClient.SetAttribute ("MaxPackets", UintegerValue (1));
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.)));
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));
ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));
clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));
For the echo client, however, we need to set five different ``Attributes``.
The first two ``Attributes`` are set during construction of the
``UdpEchoClientHelper``. We pass parameters that are used (internally to
the helper) to set the "RemoteAddress" and "RemotePort" ``Attributes``
in accordance with our convention to make required ``Attributes`` parameters
in the helper constructors.
Recall that we used an ``Ipv4InterfaceContainer`` to keep track of the IP
addresses we assigned to our devices. The zeroth interface in the
``interfaces`` container is going to correspond to the IP address of the
zeroth node in the ``nodes`` container. The first interface in the
``interfaces`` container corresponds to the IP address of the first node
in the ``nodes`` container. So, in the first line of code (from above), we
are creating the helper and telling it so set the remote address of the client
to be the IP address assigned to the node on which the server resides. We
also tell it to arrange to send packets to port nine.
The "MaxPackets" ``Attribute`` tells the client the maximum number of
packets we allow it to send during the simulation. The "Interval"
``Attribute`` tells the client how long to wait between packets, and the
"PacketSize" ``Attribute`` tells the client how large its packet payloads
should be. With this particular combination of ``Attributes``, we are
telling the client to send one 1024-byte packet.
Just as in the case of the echo server, we tell the echo client to ``Start``
and ``Stop``, but here we start the client one second after the server is
enabled (at two seconds into the simulation).
Simulator
+++++++++
What we need to do at this point is to actually run the simulation. This is
done using the global function ``Simulator::Run``.
::
Simulator::Run ();
When we previously called the methods,
::
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));
...
clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));
we actually scheduled events in the simulator at 1.0 seconds, 2.0 seconds and
two events at 10.0 seconds. When ``Simulator::Run`` is called, the system
will begin looking through the list of scheduled events and executing them.
First it will run the event at 1.0 seconds, which will enable the echo server
application (this event may, in turn, schedule many other events). Then it
will run the event scheduled for t=2.0 seconds which will start the echo client
application. Again, this event may schedule many more events. The start event
implementation in the echo client application will begin the data transfer phase
of the simulation by sending a packet to the server.
The act of sending the packet to the server will trigger a chain of events
that will be automatically scheduled behind the scenes and which will perform
the mechanics of the packet echo according to the various timing parameters
that we have set in the script.
Eventually, since we only send one packet (recall the ``MaxPackets``
``Attribute`` was set to one), the chain of events triggered by
that single client echo request will taper off and the simulation will go
idle. Once this happens, the remaining events will be the ``Stop`` events
for the server and the client. When these events are executed, there are
no further events to process and ``Simulator::Run`` returns. The simulation
is then complete.
All that remains is to clean up. This is done by calling the global function
``Simulator::Destroy``. As the helper functions (or low level
|ns3| code) executed, they arranged it so that hooks were inserted in
the simulator to destroy all of the objects that were created. You did not
have to keep track of any of these objects yourself --- all you had to do
was to call ``Simulator::Destroy`` and exit. The |ns3| system
took care of the hard part for you. The remaining lines of our first
|ns3| script, ``first.cc``, do just that:
::
Simulator::Destroy ();
return 0;
}
Building Your Script
++++++++++++++++++++
We have made it trivial to build your simple scripts. All you have to do is
to drop your script into the scratch directory and it will automatically be
built if you run Waf. Let's try it. Copy ``examples/tutorial/first.cc`` into
the ``scratch`` directory after changing back into the top level directory.
::
cd ../..
cp examples/tutorial/first.cc scratch/myfirst.cc
Now build your first example script using waf:
::
./waf
You should see messages reporting that your ``myfirst`` example was built
successfully.
::
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
[614/708] cxx: scratch/myfirst.cc -> build/debug/scratch/myfirst_3.o
[706/708] cxx_link: build/debug/scratch/myfirst_3.o -> build/debug/scratch/myfirst
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (2.357s)
You can now run the example (note that if you build your program in the scratch
directory you must run it out of the scratch directory):
::
./waf --run scratch/myfirst
You should see some output:
::
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.418s)
Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
Received 1024 bytes from 10.1.1.2
Here you see that the build system checks to make sure that the file has been
build and then runs it. You see the logging component on the echo client
indicate that it has sent one 1024 byte packet to the Echo Server on
10.1.1.2. You also see the logging component on the echo server say that
it has received the 1024 bytes from 10.1.1.1. The echo server silently
echoes the packet and you see the echo client log that it has received its
packet back from the server.
Ns-3 Source Code
****************
Now that you have used some of the |ns3| helpers you may want to
have a look at some of the source code that implements that functionality.
The most recent code can be browsed on our web server at the following link:
http://code.nsnam.org/ns-3-dev. There, you will see the Mercurial
summary page for our |ns3| development tree.
At the top of the page, you will see a number of links,
::
summary | shortlog | changelog | graph | tags | files
Go ahead and select the ``files`` link. This is what the top-level of
most of our *repositories* will look:
::
drwxr-xr-x [up]
drwxr-xr-x bindings python files
drwxr-xr-x doc files
drwxr-xr-x examples files
drwxr-xr-x ns3 files
drwxr-xr-x scratch files
drwxr-xr-x src files
drwxr-xr-x utils files
-rw-r--r-- 2009-07-01 12:47 +0200 560 .hgignore file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 1886 .hgtags file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 1276 AUTHORS file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 30961 CHANGES.html file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 17987 LICENSE file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 3742 README file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 16171 RELEASE_NOTES file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 6 VERSION file | revisions | annotate
-rwxr-xr-x 2009-07-01 12:47 +0200 88110 waf file | revisions | annotate
-rwxr-xr-x 2009-07-01 12:47 +0200 28 waf.bat file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 35395 wscript file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 7673 wutils.py file | revisions | annotate
Our example scripts are in the ``examples`` directory. If you click on ``examples``
you will see a list of subdirectories. One of the files in ``tutorial`` subdirectory is ``first.cc``. If
you click on ``first.cc`` you will find the code you just walked through.
The source code is mainly in the ``src`` directory. You can view source
code either by clicking on the directory name or by clicking on the ``files``
link to the right of the directory name. If you click on the ``src``
directory, you will be taken to the listing of the ``src`` subdirectories. If you
then click on ``core`` subdirectory, you will find a list of files. The first file
you will find (as of this writing) is ``abort.h``. If you click on the
``abort.h`` link, you will be sent to the source file for ``abort.h`` which
contains useful macros for exiting scripts if abnormal conditions are detected.
The source code for the helpers we have used in this chapter can be found in the
``src/applications/helper`` directory. Feel free to poke around in the directory tree to
get a feel for what is there and the style of |ns3| programs.
+31
View File
@@ -0,0 +1,31 @@
.. include:: replace.txt
Conclusion
----------
Futures
*******
This document is intended as a living document. We hope and expect it to
grow over time to cover more and more of the nuts and bolts of |ns3|.
Writing manual and tutorial chapters is not something we all get excited about,
but it is very important to the project. If you are an expert in one of these
areas, please consider contributing to |ns3| by providing one of these
chapters; or any other chapter you may think is important.
Closing
*******
|ns3| is a large and complicated system. It is impossible to cover all
of the things you will need to know in one small tutorial. Readers
who want to learn more are encouraged to read the following additional
documentation:
* The |ns3| manual
* The |ns3| model library documentatio
* The |ns3| Doxygen (API documentation)
* The |ns3| wiki
-- The |ns3| development team.
+216
View File
@@ -0,0 +1,216 @@
# -*- coding: utf-8 -*-
#
# ns-3 documentation build configuration file, created by
# sphinx-quickstart on Tue Dec 14 09:00:39 2010.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.pngmath']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'ns-3'
copyright = u'2010, ns-3 project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = 'ns-3-dev'
# The full version, including alpha/beta/rc tags.
release = 'ns-3-dev'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = []
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'default'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'ns-3doc'
# -- Options for LaTeX output --------------------------------------------------
# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'
# The font size ('10pt', '11pt' or '12pt').
#latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'ns-3-tutorial.tex', u'ns-3 Tutorial',
u'ns-3 project', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output --------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'ns-3-tutorial', u'ns-3 Tutorial',
[u'ns-3 project'], 1)
]
+1
View File
@@ -0,0 +1 @@
../figures
+547
View File
@@ -0,0 +1,547 @@
.. include:: replace.txt
Getting Started
---------------
Downloading ns-3
****************
The |ns3| system as a whole is a fairly complex system and has a
number of dependencies on other components. Along with the systems you will
most likely deal with every day (the GNU toolchain, Mercurial, you programmer
editor) you will need to ensure that a number of additional libraries are
present on your system before proceeding. |ns3| provides a wiki
for your reading pleasure that includes pages with many useful hints and tips.
One such page is the "Installation" page,
http://www.nsnam.org/wiki/index.php/Installation.
The "Prerequisites" section of this wiki page explains which packages are
required to support common |ns3| options, and also provides the
commands used to install them for common Linux variants. Cygwin users will
have to use the Cygwin installer (if you are a Cygwin user, you used it to
install Cygwin).
You may want to take this opportunity to explore the |ns3| wiki
a bit since there really is a wealth of information there.
From this point forward, we are going to assume that the reader is working in
Linux or a Linux emulation environment (Linux, Cygwin, etc.) and has the GNU
toolchain installed and verified along with the prerequisites mentioned
above. We are also going to assume that you have Mercurial and Waf installed
and running on the target system.
The |ns3| code is available in Mercurial repositories on the server
http://code.nsnam.org. You can also download a tarball release at
http://www.nsnam.org/releases/, or you can work with repositories
using Mercurial. We recommend using Mercurial unless there's a good reason
not to. See the end of this section for instructions on how to get a tarball
release.
The simplest way to get started using Mercurial repositories is to use the
``ns-3-allinone`` environment. This is a set of scripts that manages the
downloading and building of various subsystems of |ns3| for you. We
recommend that you begin your |ns3| adventures in this environment
as it can really simplify your life at this point.
Downloading ns-3 Using Mercurial
++++++++++++++++++++++++++++++++
One practice is to create a directory called ``repos`` in one's home
directory under which one can keep local Mercurial repositories.
*Hint: we will assume you do this later in the tutorial.* If you adopt
that approach, you can get a copy of ``ns-3-allinone`` by typing the
following into your Linux shell (assuming you have installed Mercurial):
::
cd
mkdir repos
cd repos
hg clone http://code.nsnam.org/ns-3-allinone
As the hg (Mercurial) command executes, you should see something like the
following displayed,
::
destination directory: ns-3-allinone
requesting all changes
adding changesets
adding manifests
adding file changes
added 47 changesets with 67 changes to 7 files
updating to branch default
7 files updated, 0 files merged, 0 files removed, 0 files unresolved
After the clone command completes, you should have a directory called
``ns-3-allinone``, the contents of which should
look something like the following:
::
build.py* constants.py dist.py* download.py* README util.py
Notice that you really just downloaded some Python scripts. The next step
will be to use those scripts to download and build the |ns3|
distribution of your choice.
If you go to the following link: http://code.nsnam.org/,
you will see a number of repositories. Many are the private repositories of
the |ns3| development team. The repositories of interest to you will
be prefixed with "ns-3". Official releases of |ns3| will be
numbered as ``ns-3.<release>.<hotfix>``. For example, a second hotfix to a
still hypothetical release forty two of |ns3| would be numbered as
``ns-3.42.2``.
The current development snapshot (unreleased) of |ns3| may be found
at http://code.nsnam.org/ns-3-dev/. The
developers attempt to keep these repository in consistent, working states but
they are in a development area with unreleased code present, so you may want
to consider staying with an official release if you do not need newly-
introduced features.
Since the release numbers are going to be changing, I will stick with
the more constant ns-3-dev here in the tutorial, but you can replace the
string "ns-3-dev" with your choice of release (e.g., ns-3.10) in the
text below. You can find the latest version of the
code either by inspection of the repository list or by going to the
`"ns-3 Releases"
<http://www.nsnam.org/releases>`_
web page and clicking on the latest release link.
Go ahead and change into the ``ns-3-allinone`` directory you created when
you cloned that repository. We are now going to use the ``download.py``
script to pull down the various pieces of |ns3| you will be using.
Go ahead and type the following into your shell (remember you can substitute
the name of your chosen release number instead of ``ns-3-dev`` -- like
``"ns-3.10"`` if you want to work with a
stable release).
::
./download.py -n ns-3-dev
Note that the default for the ``-n`` option is ``ns-3-dev`` and so the
above is actually redundant. We provide this example to illustrate how to
specify alternate repositories. In order to download ``ns-3-dev`` you
can actually use the defaults and simply type,
::
./download.py
As the hg (Mercurial) command executes, you should see something like the
following,
::
#
# Get NS-3
#
Cloning ns-3 branch
=> hg clone http://code.nsnam.org/ns-3-dev ns-3-dev
requesting all changes
adding changesets
adding manifests
adding file changes
added 4634 changesets with 16500 changes to 1762 files
870 files updated, 0 files merged, 0 files removed, 0 files unresolved
This is output by the download script as it fetches the actual ``ns-3``
code from the repository.
The download script is smart enough to know that on some platforms various
pieces of ns-3 are not supported. On your platform you may not see some
of these pieces come down. However, on most platforms, the process should
continue with something like,
::
#
# Get PyBindGen
#
Required pybindgen version: 0.10.0.640
Trying to fetch pybindgen; this will fail if no network connection is available. Hit Ctrl-C to skip.
=> bzr checkout -rrevno:640 https://launchpad.net/pybindgen pybindgen
Fetch was successful.
This was the download script getting the Python bindings generator for you.
Note that you will need bazaar (bzr), a version control system, to download
PyBindGen. Next you should see (modulo platform variations) something along
the lines of,
::
#
# Get NSC
#
Required NSC version: nsc-0.5.0
Retrieving nsc from https://secure.wand.net.nz/mercurial/nsc
=> hg clone https://secure.wand.net.nz/mercurial/nsc nsc
requesting all changes
adding changesets
adding manifests
adding file changes
added 273 changesets with 17565 changes to 15175 files
10622 files updated, 0 files merged, 0 files removed, 0 files unresolved
This part of the process is the script downloading the Network Simulation
Cradle for you. Note that NSC is not supported on OSX or Cygwin and works
best with gcc-3.4 or gcc-4.2 or greater series.
After the download.py script completes, you should have several new directories
under ``~/repos/ns-3-allinone``:
::
build.py* constants.pyc download.py* nsc/ README util.pyc
constants.py dist.py* ns-3-dev/ pybindgen/ util.py
Go ahead and change into ``ns-3-dev`` under your ``~/repos/ns-3-allinone``
directory. You should see something like the following there:
::
AUTHORS doc ns3 scratch testpy.supp VERSION waf-tools
bindings examples README src utils waf* wscript
CHANGES.html LICENSE RELEASE_NOTES test.py* utils.py waf.bat* wutils.py
You are now ready to build the |ns3| distribution.
Downloading ns-3 Using a Tarball
++++++++++++++++++++++++++++++++
The process for downloading |ns3| via tarball is simpler than the
Mercurial process since all of the pieces are pre-packaged for you. You just
have to pick a release, download it and decompress it.
As mentioned above, one practice is to create a directory called ``repos``
in one's home directory under which one can keep local Mercurial repositories.
One could also keep a ``tarballs`` directory. *Hint: the tutorial
will assume you downloaded into a ``repos`` directory, so remember the
placekeeper.* If you adopt the ``tarballs`` directory approach, you can
get a copy of a release by typing the following into your Linux shell
(substitute the appropriate version numbers, of course):
::
cd
mkdir tarballs
cd tarballs
wget http://www.nsnam.org/releases/ns-allinone-3.13.tar.bz2
tar xjf ns-allinone-3.13.tar.bz2
If you change into the directory ``ns-allinone-3.13`` you should see a
number of files:
::
build.py ns-3.13/ pybindgen-0.15.0.795/ util.py
constants.py nsc-0.5.2/ README
You are now ready to build the |ns3| distribution.
Building ns-3
*************
Building with build.py
++++++++++++++++++++++
The first time you build the |ns3| project you should build using the
``allinone`` environment. This will get the project configured for you
in the most commonly useful way.
Change into the directory you created in the download section above. If you
downloaded using Mercurial you should have a directory called
``ns-3-allinone`` under your ``~/repos`` directory. If you downloaded
using a tarball you should have a directory called something like
``ns-allinone-3.13`` under your ``~/tarballs`` directory. Take a deep
breath and type the following:
::
./build.py --enable-examples --enable-tests
Because we are working with examples and tests in this tutorial, and
because they are not built by default in |ns3|, the arguments for
build.py tells it to build them for us. In the future you can build
|ns3| without examples and tests if you wish.
You will see lots of typical compiler output messages displayed as the build
script builds the various pieces you downloaded. Eventually you should see the
following magic words:
::
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3.13/build'
'build' finished successfully (2m30.586s)
Modules built:
aodv applications bridge
click config-store core
csma csma-layout dsdv
emu energy flow-monitor
internet lte mesh
mobility mpi netanim
network nix-vector-routing ns3tcp
ns3wifi olsr openflow
point-to-point point-to-point-layout propagation
spectrum stats tap-bridge
template test tools
topology-read uan virtual-net-device
visualizer wifi wimax
Once the project has built, you can stop working with the
``ns-3-allinone`` scripts. You got what you needed from them and will now
interact directly with Waf and we do it in the |ns3| directory,
not in the ``ns-3-allinone`` directory. Go ahead and change into the
|ns3| directory (or the directory for the appropriate release or
development snapshot that you downloaded; e.g.
::
cd ns-3-dev
Building with Waf
+++++++++++++++++
We use Waf to configure and build the |ns3| project. It's not
strictly required at this point, but it will be valuable to take a slight
detour and look at how to make changes to the configuration of the project.
Probably the most useful configuration change you can make will be to
build the optimized version of the code. By default you have configured
your project to build the debug version. Let's tell the project to
make an optimized build. To explain to Waf that it should do optimized
builds that include the examples and tests, you will need to execute the
following command,
::
./waf -d optimized --enable-examples --enable-tests configure
This runs Waf out of the local directory (which is provided as a convenience
for you). As the build system checks for various dependencies you should see
output that looks similar to the following,
::
Checking for program g++ : ok /usr/bin/g++
Checking for program cpp : ok /usr/bin/cpp
Checking for program ar : ok /usr/bin/ar
Checking for program ranlib : ok /usr/bin/ranlib
Checking for g++ : ok
Checking for program pkg-config : ok /usr/bin/pkg-config
Checking for -Wno-error=deprecated-declarations support : yes
Checking for -Wl,--soname=foo support : yes
Checking for header stdlib.h : ok
Checking for header signal.h : ok
Checking for header pthread.h : ok
Checking for high precision time implementation : 128-bit integer
Checking for header stdint.h : ok
Checking for header inttypes.h : ok
Checking for header sys/inttypes.h : not found
Checking for library rt : ok
Checking for header netpacket/packet.h : ok
Checking for pkg-config flags for GSL : ok
Checking for header linux/if_tun.h : ok
Checking for pkg-config flags for GTK_CONFIG_STORE : ok
Checking for pkg-config flags for LIBXML2 : ok
Checking for library sqlite3 : ok
Checking for NSC location : ok ../nsc (guessed)
Checking for library dl : ok
Checking for NSC supported architecture x86_64 : ok
Checking for program python : ok /usr/bin/python
Checking for Python version >= 2.3 : ok 2.5.2
Checking for library python2.5 : ok
Checking for program python2.5-config : ok /usr/bin/python2.5-config
Checking for header Python.h : ok
Checking for -fvisibility=hidden support : yes
Checking for pybindgen location : ok ../pybindgen (guessed)
Checking for Python module pybindgen : ok
Checking for pybindgen version : ok 0.10.0.640
Checking for Python module pygccxml : ok
Checking for pygccxml version : ok 0.9.5
Checking for program gccxml : ok /usr/local/bin/gccxml
Checking for gccxml version : ok 0.9.0
Checking for program sudo : ok /usr/bin/sudo
Checking for program hg : ok /usr/bin/hg
Checking for program valgrind : ok /usr/bin/valgrind
---- Summary of optional NS-3 features:
Threading Primitives : enabled
Real Time Simulator : enabled
Emulated Net Device : enabled
GNU Scientific Library (GSL) : enabled
Tap Bridge : enabled
GtkConfigStore : enabled
XmlIo : enabled
SQlite stats data output : enabled
Network Simulation Cradle : enabled
Python Bindings : enabled
Python API Scanning Support : enabled
Use sudo to set suid bit : not enabled (option --enable-sudo not selected)
Build tests : enabled
Build examples : enabled
Static build : not enabled (option --enable-static not selected)
'configure' finished successfully (2.870s)
Note the last part of the above output. Some ns-3 options are not enabled by
default or require support from the underlying system to work properly.
For instance, to enable XmlTo, the library libxml-2.0 must be found on the
system. If this library were not found, the corresponding |ns3| feature
would not be enabled and a message would be displayed. Note further that there is
a feature to use the program ``sudo`` to set the suid bit of certain programs.
This is not enabled by default and so this feature is reported as "not enabled."
Now go ahead and switch back to the debug build that includes the examples and tests.
::
./waf -d debug --enable-examples --enable-tests configure
The build system is now configured and you can build the debug versions of
the |ns3| programs by simply typing
::
./waf
Some waf commands are meaningful during the build phase and some commands are valid
in the configuration phase. For example, if you wanted to use the emulation
features of |ns3|, you might want to enable setting the suid bit using
sudo as described above. This turns out to be a configuration-time command, and so
you could reconfigure using the following command that also includes the examples and tests
::
./waf -d debug --enable-sudo --enable-examples --enable-tests configure
If you do this, waf will have run sudo to change the socket creator programs of the
emulation code to run as root. There are many other configure- and build-time options
available in waf. To explore these options, type:
::
./waf --help
We'll use some of the testing-related commands in the next section.
Okay, sorry, I made you build the |ns3| part of the system twice,
but now you know how to change the configuration and build optimized code.
Testing ns-3
************
You can run the unit tests of the |ns3| distribution by running the
"./test.py -c core" script,
::
./test.py -c core
These tests are run in parallel by waf. You should eventually
see a report saying that,
::
92 of 92 tests passed (92 passed, 0 failed, 0 crashed, 0 valgrind errors)
This is the important message.
You will also see output from the test runner and the output will actually look something like,
::
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (1.799s)
Modules built:
aodv applications bridge
click config-store core
csma csma-layout dsdv
emu energy flow-monitor
internet lte mesh
mobility mpi netanim
network nix-vector-routing ns3tcp
ns3wifi olsr openflow
point-to-point point-to-point-layout propagation
spectrum stats tap-bridge
template test tools
topology-read uan virtual-net-device
visualizer wifi wimax
PASS: TestSuite ns3-wifi-interference
PASS: TestSuite histogram
PASS: TestSuite sample
PASS: TestSuite ipv4-address-helper
PASS: TestSuite devices-wifi
PASS: TestSuite propagation-loss-model
...
PASS: TestSuite attributes
PASS: TestSuite config
PASS: TestSuite global-value
PASS: TestSuite command-line
PASS: TestSuite basic-random-number
PASS: TestSuite object
PASS: TestSuite random-number-generators
92 of 92 tests passed (92 passed, 0 failed, 0 crashed, 0 valgrind errors)
This command is typically run by users to quickly verify that an
|ns3| distribution has built correctly.
Running a Script
****************
We typically run scripts under the control of Waf. This allows the build
system to ensure that the shared library paths are set correctly and that
the libraries are available at run time. To run a program, simply use the
``--run`` option in Waf. Let's run the |ns3| equivalent of the
ubiquitous hello world program by typing the following:
::
./waf --run hello-simulator
Waf first checks to make sure that the program is built correctly and
executes a build if required. Waf then executes the program, which
produces the following output.
::
Hello Simulator
*Congratulations. You are now an ns-3 user.*
*What do I do if I don't see the output?*
If you don't see ``waf`` messages indicating that the build was
completed successfully, but do not see the "Hello Simulator" output,
chances are that you have switched your build mode to "optimized" in
the "Building with Waf" section, but have missed the change back to
"debug" mode. All of the console output used in this tutorial uses a
special |ns3| logging component that is useful for printing
user messages to the console. Output from this component is
automatically disabled when you compile optimized code -- it is
"optimized out." If you don't see the "Hello Simulator" output,
type the following,
::
./waf -d debug --enable-examples --enable-tests configure
to tell ``waf`` to build the debug versions of the |ns3|
programs that includes the examples and tests. You must still build
the actual debug version of the code by typing,
::
./waf
Now, if you run the ``hello-simulator`` program, you should see the
expected output.
If you want to run programs under another tool such as gdb or valgrind,
see this `wiki entry
<http://www.nsnam.org/wiki/index.php/User_FAQ#How_to_run_NS-3_programs_under_another_tool>`_.

Some files were not shown because too many files have changed in this diff Show More