3ee0369cb9
Closes #2611. Squashed commit of the following: commit f72577757e5cd0299863ccc01780ad9307adc6ea Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Fri Jun 18 17:32:41 2021 +0300 dnsforward: imp err msgs commit ed8d6dd4b5d7171dfbd57742b53bf96be6cbec29 Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Fri Jun 18 17:00:49 2021 +0300 all: imp ipset code commit 887b3268bae496f4ad616b277f5e28d3ee24a370 Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Fri Jun 18 16:09:08 2021 +0300 dnsforward: imp ipset, add tests
27 lines
748 B
Go
27 lines
748 B
Go
package aghnet
|
|
|
|
import (
|
|
"net"
|
|
)
|
|
|
|
// IpsetManager is the ipset manager interface.
|
|
//
|
|
// TODO(a.garipov): Perhaps generalize this into some kind of a NetFilter type,
|
|
// since ipset is exclusive to Linux?
|
|
type IpsetManager interface {
|
|
Add(host string, ip4s, ip6s []net.IP) (n int, err error)
|
|
Close() (err error)
|
|
}
|
|
|
|
// NewIpsetManager returns a new ipset. IPv4 addresses are added to an ipset
|
|
// with an ipv4 family; IPv6 addresses, to an ipv6 ipset. ipset must exist.
|
|
//
|
|
// The syntax of the ipsetConf is:
|
|
//
|
|
// DOMAIN[,DOMAIN].../IPSET_NAME[,IPSET_NAME]...
|
|
//
|
|
// The error is of type *aghos.UnsupportedError if the OS is not supported.
|
|
func NewIpsetManager(ipsetConf []string) (mgr IpsetManager, err error) {
|
|
return newIpsetMgr(ipsetConf)
|
|
}
|