Refactor: metadata use netip.Addr

This commit is contained in:
yaling888
2022-04-20 01:52:51 +08:00
parent 29c775331a
commit cd62daccb0
45 changed files with 369 additions and 360 deletions

View File

@@ -2,7 +2,7 @@ package rules
import (
"errors"
"net"
"net/netip"
"strings"
C "github.com/Dreamacro/clash/constant"
@@ -50,17 +50,17 @@ func findNetwork(params []string) C.NetWork {
return C.ALLNet
}
func findSourceIPs(params []string) []*net.IPNet {
var ips []*net.IPNet
func findSourceIPs(params []string) []*netip.Prefix {
var ips []*netip.Prefix
for _, p := range params {
if p == noResolve || len(p) < 7 {
continue
}
_, ipnet, err := net.ParseCIDR(p)
ipnet, err := netip.ParsePrefix(p)
if err != nil {
continue
}
ips = append(ips, ipnet)
ips = append(ips, &ipnet)
}
if len(ips) > 0 {

View File

@@ -21,7 +21,7 @@ func (g *GEOIP) RuleType() C.RuleType {
func (g *GEOIP) Match(metadata *C.Metadata) bool {
ip := metadata.DstIP
if ip == nil {
if !ip.IsValid() {
return false
}
@@ -34,7 +34,7 @@ func (g *GEOIP) Match(metadata *C.Metadata) bool {
resolver.IsFakeBroadcastIP(ip)
}
record, _ := mmdb.Instance().Country(ip)
record, _ := mmdb.Instance().Country(ip.AsSlice())
return strings.EqualFold(record.Country.IsoCode, g.country)
}

View File

@@ -1,7 +1,7 @@
package rules
import (
"net"
"net/netip"
C "github.com/Dreamacro/clash/constant"
)
@@ -22,7 +22,7 @@ func WithIPCIDRNoResolve(noResolve bool) IPCIDROption {
type IPCIDR struct {
*Base
ipnet *net.IPNet
ipnet *netip.Prefix
adapter string
isSourceIP bool
noResolveIP bool
@@ -40,7 +40,7 @@ func (i *IPCIDR) Match(metadata *C.Metadata) bool {
if i.isSourceIP {
ip = metadata.SrcIP
}
return ip != nil && i.ipnet.Contains(ip)
return ip.IsValid() && i.ipnet.Contains(ip)
}
func (i *IPCIDR) Adapter() string {
@@ -56,14 +56,14 @@ func (i *IPCIDR) ShouldResolveIP() bool {
}
func NewIPCIDR(s string, adapter string, opts ...IPCIDROption) (*IPCIDR, error) {
_, ipnet, err := net.ParseCIDR(s)
ipnet, err := netip.ParsePrefix(s)
if err != nil {
return nil, errPayload
}
ipcidr := &IPCIDR{
Base: &Base{},
ipnet: ipnet,
ipnet: &ipnet,
adapter: adapter,
}