Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit f4b1caf6 authored by Lorenzo Colitti's avatar Lorenzo Colitti
Browse files

Remove superfluous quota rule delete commands.

When setting shared or interface quota, BandwidthController will
delete rules in bw_{FORWARD,INPUT,OUTPUT} before re-adding them.
These deletes are guaranteed to fail because the rules being
deleted only exist when bandwidth control is enabled and the
applicable interface is in mQuotaIfaces. Specifically, as long
as no intermediate iptables commands fail:

1. When bandwidth control is enabled or disabled, all the
   bw_{FORWARD,INPUT,OUTPUT} chains are cleared by
   flushCleanTables.
2. The rules that were being deleted are only added when
   bandwidth control is enabled and an interface is added to
   mQuotaIfaces.
3. Adding a quota is a no-op if the interface is already in
   mQuotaIfaces (or mSharedQuotaIfaces for shared quotas).
4. When an interface is removed from mQuotaIfaces (or
   mSharedQuotaIfaces), the rules are always deleted.

In the presence of intermediate iptables command failures this
change could make things worse, but an upcoming change will move
the quota commands to iptables-restore, which will ensure that
iptables commands in a quota operation either all succeed or all
fail.

In addition to removing the superfluous deletes, also change the
order of the commands that create a chain from "-F then -N" to
"-N then -F". This simplifies the code and the tests a bit.

Bug: 28362720
Test: bullhead builds, boots
Test: netd_{unit,integration}_test pass
Test: quota rules are added and removed when quotas are enabled/disabled
Change-Id: I64a0a2aa16066163c71f6d3ead36839b51c34620
Merged-In: I2b68d17d7c7640e3956ae010f9882d34bf24d9fc
parent 5a9a090e
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment