func()

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
}