HOWTOs
Main Page - Roadmap - Summer Projects - Project Ideas - Developer FAQ - Tools - Related Projects
HOWTOs - Installation - Troubleshooting - User FAQ - Samples - Models - Education - Contributed Code - Papers
Getting started on Mac OS X
(Notes courtesy of Craig Dowell) For a new Mac (OS X 10.5.2 Intel), here are the (quite painless) steps I used to get an ns-3 development environment up and running, clone, compile, and unit and regression test ns-3-dev.
1. Join Apple Developer Connection (for free internet user);
a. Go to http://developer.apple.com/products/ b. Select Join ADC Online Membership c. Log in with Apple ID d. Fill out Become an ADC Member form e. Tell them what kind of code you develop f. You are redirected to Developer Connection | Member Site
2. Download XCode for your OS (3.0 for Leopard at writing) Disk Image;
a. From Developer Connection | Member Site select Downloads, get directed to What¹s New b. Select Developer Tools from Downloads list c. Scroll down to XCode releases and select a Disk Image d. Be prepared for over 1GB download ~1/2 hour on 6mbps cable
3. Install the Xcode Tools
a. Double-clock on XcodeTools.mpkg b. Perform Standard Install c. Open a terminal d. Type gcc and see something like Bash 3.2$ gcc i686-apple-darwin9-gcc-4.0.1: no input files bash-3.2$
4. Install Mercurial
a. Go to http://www.selenic.com/mercurial/wiki/index.cgi/Download b. Select the Binary Package option c. Select Mac OS X d. Select Mercurial 1.0 for OS X 10.5 (if appropriate) e. Double-click on package and follow instructions. f. Execute command which hg in terminal or xterm g. If no hg listed, you may have to add /usr/local/bin to your path, e.g. export PATH=$PATH:/usr/local/bin
5. Clone ns-3-dev
a. mkdir repos;cd !$ b. hg clone http://code.nsnam.org/ns-3-dev
6. Build ns-3-dev
a. cd ns-3-dev b. ./waf configure d debug c. ./waf
7. Run Unit Tests
a. ./waf check
8. Run Regression Tests
a. ./waf --regression
Extracting IP src/dst header
Q. What is the appropriate way to extract the ip src/dst address from a packet?
A.
// copy packet to avoid modifying the original packet Ptr<Packet> copy = p->Copy (); Ipv4Header iph; copy->RemoveHeader (iph); // copy will disappear when you are done with it.