in pkg/config/config.go [184:208]
func (c IPTablesChainSpec) ensure(enabled bool) error {
var err error
if enabled {
if err = c.IPT.NewChain(c.TableName, c.ChainName); err != nil {
if eerr, eok := err.(*iptables.Error); !eok || eerr.ExitStatus() != 1 {
return err
}
}
} else {
if !c.IsDefaultChain {
err = c.IPT.ClearChain(c.TableName, c.ChainName)
if err != nil {
glog.Errorf("failed to clean chain %s in table %s: %v", c.TableName, c.ChainName, err)
return err
}
if err = c.IPT.DeleteChain(c.TableName, c.ChainName); err != nil {
if eerr, eok := err.(*iptables.Error); !eok || eerr.ExitStatus() != 1 {
glog.Errorf("failed to delete chain %s in table %s: %v", c.TableName, c.ChainName, err)
return err
}
}
}
}
return nil
}