mirror of
https://github.com/CumulusNetworks/ifupdown2.git
synced 2024-05-06 15:54:50 +00:00
37888438db54bfd62c2f831e0f5851ecbc79c90c
when it is non-vlan filtering bridge Ticket: CM-10083 Reviewed By: nikhil, julien Testing Done: Tested ifreload testcase with CM-10083 Without this patch a bridge port could enslave itself to the bridge when it finds that the bridge is around. This is a required feature for vlan filtering bridge because vlan filtering bridge port attributes are specified under the bridge port and the bridge port needs the power to enslave to the bridge and apply bridge port attrs. For the non-vlan filtering bridge, a few bridge port combinations are not allowed by default (eg, mixing different vlans under the same bridge). The bridge has the understanding of which ports are allowed. so only it should have the power to enslave bridge ports. This patch enforces that power. With this patch the sequence of deleting and enslaving bridge ports is done at the bridge with deletes followed by adds. example verbose snippent from ifreload output: ip -force -batch - [link set dev swp49s0 nomaster link set dev swp49s1 nomaster link set dev swp49s0.300 master Oldbr addr flush dev swp49s0.300 link set dev sidelink.300 master Oldbr addr flush dev sidelink.300 link set dev swp49s1.300 master Oldbr addr flush dev swp49s1.300 link set dev swp4 master Oldbr addr flush dev swp4] Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
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
Description
Languages
Python
99.2%
Shell
0.6%
Makefile
0.2%