FAQ
===

Boost libraries
---------------

.. note::
    **My ubuntu/redhat/freebsd have an old version of boost libraries.  How can I get the latest one?**

.. _Installing boost libraries:

Installing boost libraries to ``/usr/local``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. role:: red

.. note::
    **The following instructions are for those who want to install latest version of boost libraries** :red:`and has root access`.

The following commands would install the latest version of boost libraries (at the time of
writing, version 1.62) ot ``/usr/local``, assuming you have a root access to your machine.  If
you don't have root access, please refer to section :ref:`Installing boost libraries to a
non-privileged location`.

.. note::
    If you are using Ubuntu, make sure that you have installed ``libbz2-dev``, otherwise not
    all libraries required by ndnSIM will be installed (see :ref:`Common pitfalls`)

.. code-block:: bash
   :linenos:

    wget http://downloads.sourceforge.net/project/boost/boost/1.62.0/boost_1_62_0.tar.bz2
    tar jxf boost_1_62_0.tar.bz2
    cd boost_1_62_0
    ./bootstrap.sh
    sudo ./b2 --prefix=/usr/local install


The following commands should allow compilation and run of NS-3 simulations with custom install
of boost libraries:

.. code-block:: bash
   :linenos:

    cd <ns-3>
    ./waf configure --boost-includes=/usr/local/include --boost-libs=/usr/local/lib --enable-examples
    ./waf
    LD_LIBRARY_PATH=/usr/local/lib NS_LOG=ndn.Face:ndn.Consumer ./waf --run=ndn-simple

.. note::
    ``LD_LIBRARY_PATH=/usr/local/lib`` is necessary on Linux platform in order for the dynamic
    linker to find libraries installed in a location different from one of the folders
    specified in ``/etc/ld.so.conf``.

.. _Installing boost libraries to a non-privileged location:

Installing boost libraries to a non-privileged location
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. note::
    **Follow these general instructions if you are trying to installboost libraries to a
    non-privileged location** :red:`(i.e., you do not have root access),` **but something is
    going wrong.**

Normally, to compile and install boost libraries in non-privileged mode, you would need to
issue following commands (e.g., for boost version 1.62.0):

.. code-block:: bash
   :linenos:

    export BOOSTDIR=/home/non-privileged-user/boost
    wget http://downloads.sourceforge.net/project/boost/boost/1.62.0/boost_1_62_0.tar.bz2
    tar jxf boost_1_62_0.tar.bz2
    cd boost_1_62_0
    ./bootstrap.sh
    ./b2 --prefix=$BOOSTDIR install

However, after the following steps you may still not able to use ndnSIM.

.. _Common pitfalls:

Common pitfalls
^^^^^^^^^^^^^^^

The common pitfalls is with the **boost iostreams** library, which is required by ndnSIM, but
failed to build because of the missing bzip2 library.  This problem can be easily fixed by
downloading and installing bzip2 library, e.g., using the following steps:

.. code-block:: bash
   :linenos:

    wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
    tar zxf bzip2-1.0.6.tar.gz
    cd bzip2-1.0.6
    make PREFIX=$BOOSTDIR CFLAGS="-fPIC -O2 -g" install

Afte bzip2 library is installed, you may recompile and reinstall boost libraries using custom
compilation flags::

    ./b2 --prefix=$BOOSTDIR cxxflags=-I$BOOSTDIR/include linkflags=-L$BOOSTDIR/lib install

Alternatively, you can solve this particular problem by installing development package for
bzip2 library (:red:`if you have root access`).  For example, on Ubuntu 12.04 it would be the
following command::

    sudo apt-get install libbz2-dev

And then compiling and installing boost without custom compilation flags::

    ./b2 --prefix=$BOOSTDIR


The following commands should allow compilation and run of NS-3 simulations with custom install
of boost libraries::

    cd <ns-3>
    ./waf configure --boost-includes=$BOOSTDIR/include --boost-libs=$BOOSTDIR/lib --enable-examples --enable-ndn-plugins=topology,mobility
    ./waf
    LD_LIBRARY_PATH=$BOOSTDIR/lib NS_LOG=ndn.Face:ndn.Consumer ./waf --run=ndn-simple

.. note::
    ``LD_LIBRARY_PATH=$BOOSTDIR/lib`` is necessary on Linux platform in order for the dynamic
    linker to find libraries installed in a location different from one of the folders
    specified in /etc/ld.so.conf.



Visualizer problems
-------------------

.. topic:: Visualizer module is not working

    Every time I'm trying to run visualizer, I get the following error::

        Waf: Entering directory `/ndnSIM/ns-3/build'
        Could not find a task generator for the name 'ns3-visualizer'..

Something is wrong with your python bindings and python bindings dependencies.  Please follow
the :ref:`requirements` section that lists what should be installed in order to run visualizer.

.. _Problems with the gtk python module on macOS:

Problems with the gtk python module on macOS
--------------------------------------------

.. topic:: ./waf configure got stuck during the gtk module check

    When running ``./waf configure``, the process freezes at the stage of detecting gtk module::

      ...
      Checking for 'sqlite3'                                         : yes
      Checking for header linux/if_tun.h                             : not found
      Checking for python module 'gtk'                               :

If ``./waf configure`` on OSX got stuck during the gtk python module check, it most likely
means that something is wrong with X11 required by this module.  You can try to reinstall X11
(`XQuartz <http://xquartz.macosforge.org>`_) or configure NS-3 without python bindings (``./waf
configure --disable-python``).  Note that disabling python bindings will also disable the
visualizer module.

Code questions
--------------

.. topic:: Failing a link between nodes

    How can I fail a link between to NDN nodes?

Refer to :ref:`Link Control Helper`.

.. topic:: Network-level NACKs

    How the current version of ndnSIM handles network-level NACKs?

ndnSIM 2.3 includes full support of NDNLPv2 and, thus, can be
used to simulate network-level NACKs across simulation nodes.

General questions
-----------------

.. topic:: Errors/bugs reporting

    I found an error in the documentation / bug in the code. What should I do?

Please submit a bug report on `redmine <http://redmine.named-data.net/projects/ndnsim?jump=welcome>`_,
or tell us about the error on `our mailing list <http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>`_ .
