Ticket: CM-3208
Reviewed By:
Testing Done: Tested with testcase listed in the bug
This patch does the following:
- moves the interface error exit check to before upperifaces are brought
up
- changes errors to warns on upperiface error (this is because
upperiface 'up' is done as best effort to reconfigure the interface in
question as slave device to the upper device. But if the upper device
is not in a right state config steps can fail. And we should just
warn).
- Implicitly bringing up the upperifaces helps in most of the cases. especially
when a bond is brought down and up. The upperiface handling code adds
the bond back into bridges it was part of. or creates the vlan devices
on the bond that got deleted. But there can be cases where upperifaces are
not in the right state and this results in warnings.
To disable the implicit upperiface handling, this patch also supports
'skip_upperifaces=1' in /etc/network/ifupdown2/ifupdown2.conf
in future, i am thinking of an option --skip-upperifaces to ifup
errors to warns
Ticket: CM-3159
Reviewed By: briefly ran this by jtoppins and andy (sfeldma is on
vacation this week).
Testing Done: tested ifupdown2 with ethtool config during boot (sam will
also be adding the testcase mentioned in the bug to ifupdown2 smoke)
The kernel timeout increase helps right now.
we should revisit this again in 2.3 to close all corner cases.
ifupdown2 will now warn on ethtool errors and will also return
non-zero exit status
Ticket: CM-3007
Reviewed By: shm + patch was pasted in the bug for review
Testing Done: ran precommit + maliks test + malik ran his test on his
box
When -a is specified ifupdown2 works on all interfaces and since the the
upperiface check is a bit expensive i had a "skip" on that.
And so far all the user commands i have seen only work on the $IFACE and
not its dependents. So, never hit this case.
Ticket: CM-1438
Reviewed By:
Testing Done: Tested ifupdown2 sanity + multiple iface sections for an
interface
- This patch fixes a few shortcomings in the multiple iface sections
for same interface (partly because i was only covering
backward compatibility cases earlier)
- Since this is a very common configuration pattern, this patch cleans
it up
- also restructures some code
- main change is:
before:
for iface in ifaces:
for op in ops:
run op on iface
after:
for op in ops:
for iface in ifaces:
run op on iface
warnings on ifupdown)
Ticket: CM-1438
Reviewed By:
Testing Done: Tested ifupdown2 sanity
Some of the above mentioned configurable items can be specified in
ifupdown2.conf
a logical interface comes up
Ticket: CM-2493
Reviewed By:
Testing Done: Tested ifup, ifdown in bond bridge setup
Also, implicitly pick up the upperifaces (even when user has not
specified --with-depends) for logical interfaces.
This is because when a logical interface goes down/deleted, kernel
impilicity deletes its upperifaces. so its better to implicitly bring
up upperifaces.
example
bridge name bridge id STP enabled interfaces
br0 8000.7072cf8c2fca yes bond1
bond2
br2000 8000.7072cf8c2fca yes bond1.2000
bond2.2000
br2001 8000.7072cf8c2fca yes bond1.2001
bond2.2001
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 yes
br2000 8000.000000000000 yes
br2001 8000.000000000000 yes
bridge name bridge id STP enabled interfaces
br0 8000.7072cf8c2fca yes bond1
bond2
br2000 8000.7072cf8c2fca yes bond1.2000
bond2.2000
br2001 8000.7072cf8c2fca yes bond1.2001
bond2.2001
Ticket: CM-1438
Reviewed By: review pending
Testing Done: Tested ifup/ifdown
Before this patch, `ifup --with-depends <iface>` only brought up
lowerdevices. Because those were enough for iface to function.
And if ifaces above it (upperdevices) needed fixing, user could just
execute `ifup --with-depends <ifaceupper>`.
But in a recent, bond under a bridge bug in 2.0, got me thinking that
its probably better to up the upperdevices which might be impacted as
well. and this patch does just that.
The patch includes changes to make ifupdown generate dependency
information for all interfaces even if the user requested to operate
on a single interface. This is to get a full view of the interfaces file.
This might add some overhead. Should not change anything during boot.
Still looking at ways to optimize.
single port expression + cleanup
Ticket: CM-1438
Reviewed By:
Testing Done:
This has left some dead code in. cleanup comming in subsequent patches.
ip batch support is not complete. It currently works only for mstpctl
bridges. more coming ..
overhead
Ticket: CM-1438
Reviewed By:
Testing Done:
These are executed with shell=True and python subprocess performance
with shell=True sucks. This seems to have improved in python3. Will try
that out next. And also plan to make this controllable via an option.
This reduces time to ifup by half.
Ticket: CM-1438
Reviewed By:
Testing Done:
- Moved link config to base ifupdown. I had been debating about this,
this is need to support manual and also the --no-scripts option.
- helps executing only link up/down operations if needed on an interface
- While at it, i also moved the scheduler methods to be classmethods
instead of instance methods (which again was a pending cleanup task)
Ticket: CM-1438
Reviewed By:
Testing Done: l3 lag test with help from purna
- THe down sequence in the new ifupdown was causing switchd some grief
(wilson is looking at it). readded the topological sort which i had
removed in favor of only walking the tree. With the fix,i dont see the
switchd problem anymore.
- And another down bug was causing the bond to go away prematurely (only
with the all depends option). Added a upperdevice list to track upperdev references
Ticket: CM-1438
Reviewed By:
Testing Done: unit tested with all kinds of interfaces
some high level changes
- moved ipv4/ipv6 address handling in a single module. dhcp
into a separate module.
- new link 'up' module
- igmp fixes
- many other fixes
added a --with-depends option)
Ticket: CM-1438
Reviewed By:
Testing Done:
still debating on the default behaviour for following dependents.
for now not following dependents might be better.
When all interfaces are selected, it always follows dependents
Ticket: CM-1438
Reviewed By: TBD
Testing Done:
- Will checkin build files after some more testing and performance
numbers. It will go into the testing repo for 2.0
- All TODO items are part of the checked in TODO file