stdlize the IP version global vars to IPvx

This commit is contained in:
lion 2025-09-05 14:12:54 +08:00
parent aade8810ba
commit d3ef2dcc28
2 changed files with 19 additions and 14 deletions

View File

@ -283,13 +283,13 @@ func testSearch() {
versionNo := binary.LittleEndian.Uint16(header[0:]) versionNo := binary.LittleEndian.Uint16(header[0:])
if versionNo == 2 { if versionNo == 2 {
// old xdb file // old xdb file
version = xdb.V4 version = xdb.IPv4
} else if versionNo == 3 { } else if versionNo == 3 {
ipNo := int(binary.LittleEndian.Uint16(header[16:])) ipNo := int(binary.LittleEndian.Uint16(header[16:]))
if ipNo == xdb.V4.Id { if ipNo == xdb.IPv4.Id {
version = xdb.V4 version = xdb.IPv4
} else if ipNo == xdb.V6.Id { } else if ipNo == xdb.IPv6.Id {
version = xdb.V6 version = xdb.IPv6
} else { } else {
slog.Error("invalid ip version", "id", ipNo) slog.Error("invalid ip version", "id", ipNo)
return return

View File

@ -9,6 +9,11 @@ import (
"strings" "strings"
) )
const (
IPv4VersionNo = 4
IPv6VersionNo = 6
)
type Version struct { type Version struct {
Id int Id int
Name string Name string
@ -17,14 +22,14 @@ type Version struct {
} }
var ( var (
VX = &Version{} IPvx = &Version{}
V4 = &Version{ IPv4 = &Version{
Id: 4, Id: 4,
Name: "IPv4", Name: "IPv4",
Bytes: 4, Bytes: 4,
SegmentIndexSize: 14, // 4 + 4 + 2 + 4 SegmentIndexSize: 14, // 4 + 4 + 2 + 4
} }
V6 = &Version{ IPv6 = &Version{
Id: 6, Id: 6,
Name: "IPv6", Name: "IPv6",
Bytes: 16, Bytes: 16,
@ -35,23 +40,23 @@ var (
func VersionFromIP(ip string) (*Version, error) { func VersionFromIP(ip string) (*Version, error) {
bytes, err := ParseIP(ip) bytes, err := ParseIP(ip)
if err != nil { if err != nil {
return VX, fmt.Errorf("parse ip fail: %w", err) return IPvx, fmt.Errorf("parse ip fail: %w", err)
} }
if len(bytes) == 4 { if len(bytes) == 4 {
return V4, nil return IPv4, nil
} }
return V6, nil return IPv6, nil
} }
func VersionFromName(name string) (*Version, error) { func VersionFromName(name string) (*Version, error) {
switch strings.ToUpper(name) { switch strings.ToUpper(name) {
case "V4", "IPV4": case "V4", "IPV4":
return V4, nil return IPv4, nil
case "V6", "IPV6": case "V6", "IPV6":
return V6, nil return IPv6, nil
default: default:
return VX, fmt.Errorf("invalid version name `%s`", name) return IPvx, fmt.Errorf("invalid version name `%s`", name)
} }
} }