[[PageOutline]] = Overview = NOX is "an open-source OpenFlow controller. Its purpose is to provide a simplified platform for writing network control software in C++ or Python." That second clause is important: "NOX itself" isn't really an OpenFlow controller per se; you always run NOX with one or more modules, and those modules are, more precisely, the OpenFlow controllers. NOX comes with some example controllers, including a C++ learning-switch controller called 'switch'. (Not to be confused with the Python learning-switch controller called 'pyswitch'.) = Building NOX = This is known to work on Ubuntu 10.04. These steps are based on the docs at http://noxrepo.org/noxwiki/index.php/NOX_Installation. Update the version number below before you start building (in the version and description strings in the Debian manifest). == Install depended-upon packages == {{{ cd /etc/apt/sources.list.d sudo wget http://openflowswitch.org/downloads/debian/nox.list sudo apt-get update sudo apt-get install nox-dependencies git-core subversion sudo rm nox.list }}} == Build NOX == {{{ mkdir -p ~/src cd ~/src rm -rf nox git clone git://noxrepo.org/nox cd nox ./boot.sh mkdir build cd build ../configure --prefix=/usr --with-python=yes make -j 5 make check }}} == Package it up == {{{ sudo rm -rf ~/pkgbuild/root mkdir -p ~/pkgbuild/root/etc/init.d ~/pkgbuild/root/usr make INSTALL='/usr/bin/install -C' prefix=~/pkgbuild/root/usr install cd ~/pkgbuild/root/etc/init.d (obtain the noxctl script, and install it as ~/pkgbuild/root/etc/init.d/nox) chmod 544 nox mkdir ~/pkgbuild/root/DEBIAN cd ~/pkgbuild/root/DEBIAN echo "Package: nox" > control echo "Version: 0.9.0.20101110-0ubuntu1" >> control echo "Architecture: i386" >> control echo "Maintainer: GPO Ops " >> control echo "Section: misc" >> control echo "Priority: optional" >> control echo "Description: NOX Zaku 0.9.0 as of 2010-11-10." >> control echo "Depends: libboost-filesystem1.40.0,libboost-test1.40.0" >> control cd .. sudo chown -Rh root . sudo chgrp -Rh root . sudo find . \( -type f -o -type d \) -exec chmod ugo-w {} \; sudo chmod u+w DEBIAN cd .. ctlfile="root/DEBIAN/control" pkgname=$(grep "^Package:" ${ctlfile} | awk '{print $2}') version=$(grep "^Version:" ${ctlfile} | awk '{print $2}') arch=$(grep "^Architecture:" ${ctlfile} | awk '{print $2}') tgtfile="${pkgname}_${version}_${arch}.deb" dpkg -b root $tgtfile }}}