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.53) 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.57.0/boost_1_57_0.tar.bz2
    tar jxf boost_1_57_0.tar.bz2
    cd boost_1_57_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.57.0):

.. code-block:: bash
   :linenos:

    export BOOSTDIR=/home/non-privileged-user/boost
    wget http://downloads.sourceforge.net/project/boost/boost/1.57.0/boost_1_57_0.tar.bz2
    tar jxf boost_1_57_0.tar.bz2
    cd boost_1_57_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.

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

.. topic:: Failing a link between nodes

    How can I fail a link between to NDN nodes?

Refer to :ref:`Link Control Helper`.

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>`_ .
