diff -r f860e2eac903 src/nepi/testbeds/ns3/connection_metadata.py --- a/src/nepi/testbeds/ns3/connection_metadata.py Wed Aug 15 18:22:33 2012 +0200 +++ b/src/nepi/testbeds/ns3/connection_metadata.py Thu Aug 16 19:02:36 2012 +0200 @@ -121,7 +121,34 @@ (fd, msg) = passfd.recvfd(sock) # Store a reference to the endpoint to keep the socket alive fdnd.SetFileDescriptor(fd) - + + try: + import fcntl + import struct + TUNGETIFF = 0x800454d2 + IFF_NO_PI = 0x00001000 + IFF_TUN = 0x00000001 + IFF_TAP = 0x00000002 + struct_ifreq = "x"*16+"H"+"x"*22 + + (flags, ) = struct.unpack(struct_ifreq, + fcntl.ioctl(fd, TUNGETIFF, struct.pack(struct_ifreq, 0))) + + with_pi = (0 == (flags & IFF_NO_PI)) + is_tap = (0 == (flags & IFF_TUN)) + + if is_tap and with_pi: + fdnd.SetEncapsulationMode(fdnd.DIXPI) + elif not is_tap and with_pi: + fdnd.SetEncapsulationMode(fdnd.PI) + except: + # maybe the kernel doesn't support the IOCTL, + # in which case, we assume it uses PI headers (as is usual) + pass + + #import traceback + #err = traceback.format_exc() + import threading import passfd import socket diff -r f860e2eac903 src/nepi/testbeds/ns3/ns3_bindings_import.py --- a/src/nepi/testbeds/ns3/ns3_bindings_import.py Wed Aug 15 18:22:33 2012 +0200 +++ b/src/nepi/testbeds/ns3/ns3_bindings_import.py Thu Aug 16 19:02:36 2012 +0200 @@ -16,7 +16,7 @@ #from ns.click import * from ns.mobility import * from ns.wifi import * -from ns.netanim import * +#from ns.netanim import * from ns.stats import * from ns.uan import * from ns.spectrum import * diff -r f860e2eac903 src/nepi/testbeds/planetlab/application.py --- a/src/nepi/testbeds/planetlab/application.py Wed Aug 15 18:22:33 2012 +0200 +++ b/src/nepi/testbeds/planetlab/application.py Thu Aug 16 19:02:36 2012 +0200 @@ -907,10 +907,12 @@ # We have to download the sources, untar, build... #pygccxml_source_url = "http://leaseweb.dl.sourceforge.net/project/pygccxml/pygccxml/pygccxml-1.0/pygccxml-1.0.0.zip" pygccxml_source_url = "http://yans.pl.sophia.inria.fr/libs/pygccxml-1.0.0.zip" - ns3_source_url = "http://nepi.inria.fr/code/nepi-ns3.13/archive/tip.tar.gz" + #ns3_source_url = "http://nepi.inria.fr/code/nepi-ns3.13/archive/tip.tar.gz" + ns3_source_url = "http://nepi.inria.fr/code/nepi-ns3.fdnetdev/archive/tip.tar.gz" passfd_source_url = "http://nepi.inria.fr/code/python-passfd/archive/tip.tar.gz" - pybindgen_version = "797" + #pybindgen_version = "797" + pybindgen_version = "809" self.build =( " ( " @@ -927,21 +929,21 @@ "echo '7158877faff2254e6c094bf18e6b4283cac19137 pygccxml-1.0.0.zip' > archive_sums.txt && " " ( " # check existing files " sha1sum -c archive_sums.txt && " - " test -f passfd-src.tar.gz && " + " test -f passfd.tar.gz && " " test -f ns3-src.tar.gz " " ) || ( " # nope? re-download - " rm -rf pybindgen pygccxml-1.0.0.zip passfd-src.tar.gz ns3-src.tar.gz && " + " rm -rf pybindgen pygccxml-1.0.0.zip passfd.tar.gz ns3-src.tar.gz && " " bzr checkout lp:pybindgen -r %(pybindgen_version)s && " # continue, to exploit the case when it has already been dl'ed " wget -q -c -O pygccxml-1.0.0.zip %(pygccxml_source_url)s && " - " wget -q -c -O passfd-src.tar.gz %(passfd_source_url)s && " + " wget -q -c -O passfd.tar.gz %(passfd_source_url)s && " " wget -q -c -O ns3-src.tar.gz %(ns3_source_url)s && " " sha1sum -c archive_sums.txt " # Check SHA1 sums when applicable " ) && " "unzip -n pygccxml-1.0.0.zip && " "mkdir -p ns3-src && " - "mkdir -p passfd-src && " + "mkdir -p passfd && " "tar xzf ns3-src.tar.gz --strip-components=1 -C ns3-src && " - "tar xzf passfd-src.tar.gz --strip-components=1 -C passfd-src && " + "tar xzf passfd.tar.gz --strip-components=1 -C passfd && " "rm -rf target && " # mv doesn't like unclean targets "mkdir -p target && " "cd pygccxml-1.0.0 && " @@ -957,12 +959,12 @@ "./waf clean && " "mv -f ${BUILD}/target/lib/python*/site-packages/pybindgen ${BUILD}/target/. && " "rm -rf ${BUILD}/target/lib && " - "cd ../passfd-src && " + "cd ../passfd && " "python setup.py build && " "python setup.py install --install-lib ${BUILD}/target && " "python setup.py clean && " "cd ../ns3-src && " - "./waf configure --prefix=${BUILD}/target --with-pybindgen=../pybindgen-src -d release --disable-examples --disable-tests && " + "./waf configure --prefix=${BUILD}/target --with-pybindgen=../pybindgen -d release --disable-examples --disable-tests && " "./waf &&" "./waf install && " "rm -f ${BUILD}/target/lib/*.so && "