FIx error on ip6tables not available (#999)

* adding check operation to confirm if ip*tables is available

* linter

* linter
This commit is contained in:
pascal-fischer
2023-07-14 20:44:35 +02:00
committed by GitHub
parent 5cb9a126f1
commit c6af1037d9
3 changed files with 132 additions and 94 deletions

View File

@@ -35,7 +35,15 @@ func NewFirewall(parentCTX context.Context) firewallManager {
if isIptablesSupported() {
log.Debugf("iptables is supported")
ipv4Client, _ := iptables.NewWithProtocol(iptables.ProtocolIPv4)
if !isIptablesClientAvailable(ipv4Client) {
log.Infof("iptables is missing for ipv4")
ipv4Client = nil
}
ipv6Client, _ := iptables.NewWithProtocol(iptables.ProtocolIPv6)
if !isIptablesClientAvailable(ipv6Client) {
log.Infof("iptables is missing for ipv6")
ipv6Client = nil
}
return &iptablesManager{
ctx: ctx,
@@ -59,6 +67,11 @@ func NewFirewall(parentCTX context.Context) firewallManager {
return manager
}
func isIptablesClientAvailable(client *iptables.IPTables) bool {
_, err := client.ListChains("filter")
return err == nil
}
func getInPair(pair routerPair) routerPair {
return routerPair{
ID: pair.ID,