github.com/aporeto-inc/trireme-lib@v10.358.0+incompatible/controller/pkg/ipsetmanager/helpers.go (about)

     1  package ipsetmanager
     2  
     3  import (
     4  	"strings"
     5  )
     6  
     7  func addToIPset(set Ipset, data string) error {
     8  
     9  	// ipset can not program this rule
    10  	if data == IPv4DefaultIP {
    11  		if err := addToIPset(set, "0.0.0.0/1"); err != nil {
    12  			return err
    13  		}
    14  
    15  		return addToIPset(set, "128.0.0.0/1")
    16  	}
    17  
    18  	// ipset can not program this rule
    19  	if data == IPv6DefaultIP {
    20  		if err := addToIPset(set, "::/1"); err != nil {
    21  			return err
    22  		}
    23  
    24  		return addToIPset(set, "8000::/1")
    25  	}
    26  
    27  	if strings.HasPrefix(data, "!") {
    28  		return set.AddOption(data[1:], "nomatch", 0)
    29  	}
    30  
    31  	return set.Add(data, 0)
    32  }
    33  
    34  func delFromIPset(set Ipset, data string) error {
    35  
    36  	if data == IPv4DefaultIP {
    37  		if err := delFromIPset(set, "0.0.0.0/1"); err != nil {
    38  			return err
    39  		}
    40  
    41  		return delFromIPset(set, "128.0.0.0/1")
    42  	}
    43  
    44  	if data == IPv6DefaultIP {
    45  		if err := delFromIPset(set, "::/1"); err != nil {
    46  			return err
    47  		}
    48  
    49  		return delFromIPset(set, "8000::/1")
    50  	}
    51  
    52  	return set.Del(strings.TrimPrefix(data, "!"))
    53  }