@ -106,13 +106,9 @@ func (r *linuxRouter) Up() error {
if err := r . delLegacyNetfilter ( ) ; err != nil {
if err := r . delLegacyNetfilter ( ) ; err != nil {
return err
return err
}
}
if err := r . delNetfilterHooks ( ) ; err != nil {
if err := r . setNetfilterMode ( NetfilterOff ) ; err != nil {
return err
}
if err := r . delNetfilterBase ( ) ; err != nil {
return err
return err
}
}
if err := r . addBypassRule ( ) ; err != nil {
if err := r . addBypassRule ( ) ; err != nil {
return err
return err
}
}
@ -130,10 +126,7 @@ func (r *linuxRouter) down() error {
if err := r . delBypassRule ( ) ; err != nil {
if err := r . delBypassRule ( ) ; err != nil {
return err
return err
}
}
if err := r . delNetfilterHooks ( ) ; err != nil {
if err := r . setNetfilterMode ( NetfilterOff ) ; err != nil {
return err
}
if err := r . delNetfilterBase ( ) ; err != nil {
return err
return err
}
}
@ -229,12 +222,19 @@ func (r *linuxRouter) setNetfilterMode(mode NetfilterMode) error {
switch mode {
switch mode {
case NetfilterOff :
case NetfilterOff :
switch r . netfilterMode {
case NetfilterNoDivert :
if err := r . delNetfilterBase ( ) ; err != nil {
return err
}
case NetfilterOn :
if err := r . delNetfilterHooks ( ) ; err != nil {
if err := r . delNetfilterHooks ( ) ; err != nil {
return err
return err
}
}
if err := r . delNetfilterBase ( ) ; err != nil {
if err := r . delNetfilterBase ( ) ; err != nil {
return err
return err
}
}
}
r . snatSubnetRoutes = false
r . snatSubnetRoutes = false
case NetfilterNoDivert :
case NetfilterNoDivert :
switch r . netfilterMode {
switch r . netfilterMode {