Go to file
David Ahern dad6af7eb7 docs: Update mgmt vrf example
Change mgmt vrf name to just 'mgmt'
Add loopback address
Change table from 252 to auto

Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
2016-03-16 17:33:40 -06:00
addons addons: vrf: avoids ifupdown2 error when VRF defined but not used 2016-03-16 14:07:28 -07:00
completion Fix bash completion for sudo users (mostly cosmetic) + man page and 2014-06-10 19:31:50 -07:00
config ifupdownmain: squash multiple iface stanzas for the same interface 2016-03-09 13:20:51 -08:00
debian Don't timeout networking start 2016-03-02 15:03:30 -08:00
docs docs: Update mgmt vrf example 2016-03-16 17:33:40 -06:00
ifupdown addons: vrf: fix typo in vrf default attribute name get at init 2016-03-13 18:04:23 -07:00
ifupdownaddons modulebase: add ifaceobj.set_status calls in log_error and log_warn 2016-03-10 11:10:50 -08:00
init.d Introduce a lock file in non-persistent storage /run/network/ifstatelock 2015-10-02 12:31:51 -07:00
man.rst ifupdown2: syntax-check: exit with 1 if syntax errors 2015-12-09 13:53:55 -05:00
packages/ifupdown2/ifupdown ifupdown2: address: squash addr config and process them on the youngest sibling 2015-12-09 13:53:20 -05:00
sbin start-networking: bring back support for SKIP_DOWN_AT_SYSRESET in /etc/default/networking 2016-03-03 21:29:53 -08:00
scripts Fix build failure 2014-02-14 11:13:09 -08:00
tests state manager test 2014-03-27 16:53:32 -07:00
build.sh Documentation cleanup 2014-07-22 11:15:56 -07:00
KNOWN_ISSUES Doc updates + cleanup 2014-07-17 11:44:36 -07:00
LICENSE Documentation cleanup 2014-07-22 11:15:56 -07:00
setup.py addons: support for new addon module for vrf 2016-01-28 22:01:59 -08:00
stdeb.cfg python-ifupdown initial checkin 2013-11-04 06:06:11 -08:00
TODO Doc updates + cleanup 2014-07-17 11:44:36 -07:00
TODO.addons Move ifupdown2addons into ifupdown2 pacakge 2014-10-09 16:02:46 -07:00

python-ifupdown2
================

This package is a replacement for the debian ifupdown package.
It is ifupdown re-written in python. It maintains the original ifupdown
pluggable architecture and extends it further.

The python-ifupdown2 package provides the infrastructure for
parsing /etc/network/interfaces file, loading, scheduling and state
management of interfaces.

It dynamically loads python modules from /usr/share/ifupdownmodules (provided
 by the python-ifupdown2-addons package). To remain compatible with other
packages that depend on ifupdown, it also executes scripts under /etc/network/.
To make the transition smoother, a python module under
/usr/share/ifupdownmodules will override a script by the same name under
/etc/network/.

It publishes an interface object which is passed to all loadble python
modules. For more details on adding a addon module, see the section on
adding python modules.


pluggable python modules:
=========================
Unlike original ifupdown, all interface configuration is moved to external
python modules. That includes inet, inet6 and dhcp configurations.

A set of default modules are provided by the python-ifupdown2-addons deb.

python-ifupdown2 expects a few things from the pluggable modules:
- the module should implement a class by the same name
- the interface object (class iface) and the operation to be performed is
  passed to the modules
- the python addon class should provide a few methods:
	- run() : method to configure the interface.
	- get_ops() : must return a list of operations it supports.
		eg: 'pre-up', 'post-down'
	- get_dependent_ifacenames() : must return a list of interfaces the
	  interface is dependent on. This is used to build the dependency list
	  for sorting and executing interfaces in dependency order.
	- if the module supports -r option to ifquery, ie ability to construct the
      ifaceobj from running state, it can optionally implement the
      get_dependent_ifacenames_running() method, to return the list of
      dependent interfaces derived from running state of the interface.
      This is different from get_dependent_ifacenames() where the dependent
      interfaces are derived from the interfaces config file (provided by the
      user).

Example: Address handling module /usr/share/ifupdownaddons/address.py


build
=====
- get source

- install build dependencies:
    apt-get install python-stdeb
    apt-get install python-docutils

- cd <python-ifupdown2 sourcedir> && ./build.sh

  (generates python-ifupdown2-<ver>.deb)

install
=======

- remove existing ifupdown package
  dpkg -r ifupdown

- install python-ifupdown2 using `dpkg -i`

- or install from deb
    dpkg -i python-ifupdown2-<ver>.deb

- note that python-ifupdown2 requires python-ifupdown2-addons package to
  function. And python-ifupdown2-addons deb has an install dependency on
  python-ifupdown2