Skip to content

Commit 1a32dcc

Browse files
swordqiuQiu Jian
andauthored
fix: network filter by ipv6 address (#23222)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
1 parent c1b204a commit 1a32dcc

30 files changed

+993
-252
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,14 @@ require (
9696
k8s.io/cri-api v0.22.17
9797
k8s.io/klog/v2 v2.20.0
9898
moul.io/http2curl/v2 v2.3.0
99-
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250821083203-8bb4481c5631
99+
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250902085702-cb118fc37e8a
100100
yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0
101101
yunion.io/x/jsonutils v1.0.1-0.20250507052344-1abcf4f443b1
102102
yunion.io/x/log v1.0.1-0.20240305175729-7cf2d6cd5a91
103103
yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900
104104
yunion.io/x/pkg v1.10.4-0.20250820035218-6008459eb4f0
105105
yunion.io/x/s3cli v0.0.0-20241221171442-1c11599d28e1
106-
yunion.io/x/sqlchemy v1.1.3-0.20250806073422-e37f5197cec0
106+
yunion.io/x/sqlchemy v1.1.3-0.20250902120005-3b18bc6371c7
107107
yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c
108108
)
109109

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1409,8 +1409,8 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK
14091409
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
14101410
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
14111411
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
1412-
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250821083203-8bb4481c5631 h1:wap9k4T3ftYp2u8Lh/eaTRz+9v3lAwM6/2WM+Qz88IU=
1413-
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250821083203-8bb4481c5631/go.mod h1:FXxAEbdNfWXX9gjME3K2nJhkydHY5EKEUZb+RLEzVwQ=
1412+
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250902085702-cb118fc37e8a h1:v2TsC0peqfQv993Gc6YOVU1rzyZkr48RiNzIShFmXa8=
1413+
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250902085702-cb118fc37e8a/go.mod h1:FXxAEbdNfWXX9gjME3K2nJhkydHY5EKEUZb+RLEzVwQ=
14141414
yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0 h1:msG4SiDSVU7CrXH06WuHlNEZXIooTcmNbfrIGHuIHBU=
14151415
yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws=
14161416
yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634=
@@ -1428,7 +1428,7 @@ yunion.io/x/pkg v1.10.4-0.20250820035218-6008459eb4f0 h1:/vHcYqzQInxqR1jjS+e7A0o
14281428
yunion.io/x/pkg v1.10.4-0.20250820035218-6008459eb4f0/go.mod h1:0Bwxqd9MA3ACi119/l02FprY/o9gHahmYC2bsSbnVpM=
14291429
yunion.io/x/s3cli v0.0.0-20241221171442-1c11599d28e1 h1:1KJ3YYinydPHpDEQRXdr/T8SYcKZ5Er+m489H+PnaQ4=
14301430
yunion.io/x/s3cli v0.0.0-20241221171442-1c11599d28e1/go.mod h1:0iFKpOs1y4lbCxeOmq3Xx/0AcQoewVPwj62eRluioEo=
1431-
yunion.io/x/sqlchemy v1.1.3-0.20250806073422-e37f5197cec0 h1:Eha/ywh4foMJm7VJ8ibFOi+WPHacuTWtosAGpOld5vo=
1432-
yunion.io/x/sqlchemy v1.1.3-0.20250806073422-e37f5197cec0/go.mod h1:vCIZpqhZ5Jzaq3tFyrti/vv8BijQKtkzSgNT/uH4H5A=
1431+
yunion.io/x/sqlchemy v1.1.3-0.20250902120005-3b18bc6371c7 h1:0OccQYkey6OsNUZNxd6CpCB/espBPnwlLT/gjl9YbXM=
1432+
yunion.io/x/sqlchemy v1.1.3-0.20250902120005-3b18bc6371c7/go.mod h1:vCIZpqhZ5Jzaq3tFyrti/vv8BijQKtkzSgNT/uH4H5A=
14331433
yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c h1:QuLab2kSRECZRxo4Lo2KcYn6XjQFDGaZ1+x0pYDVVwQ=
14341434
yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c/go.mod h1:EP6NSv2C0zzqBDTKumv8hPWLb3XvgMZDHQRfyuOrQng=

pkg/compute/models/networks.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2738,9 +2738,11 @@ func (manager *SNetworkManager) ListItemFilter(
27382738
ipStart := sqlchemy.INET_ATON(q.Field("guest_ip_start"))
27392739
ipEnd := sqlchemy.INET_ATON(q.Field("guest_ip_end"))
27402740

2741+
ipConst := sqlchemy.INET_ATON(q.StringField(ip4Addr.String()))
2742+
27412743
ipCondtion = sqlchemy.AND(
2742-
sqlchemy.GE(ipEnd, uint32(ip4Addr)),
2743-
sqlchemy.LE(ipStart, uint32(ip4Addr)),
2744+
sqlchemy.GE(ipEnd, ipConst),
2745+
sqlchemy.LE(ipStart, ipConst),
27442746
)
27452747
if !exactIpMatch {
27462748
ipCondtion = sqlchemy.OR(
@@ -2751,18 +2753,20 @@ func (manager *SNetworkManager) ListItemFilter(
27512753
}
27522754
} else if ip6Addr, err := netutils.NewIPV6Addr(ipstr); err == nil {
27532755
// ipv6 address, exactly
2754-
ipStart := q.Field("guest_ip6_start")
2755-
ipEnd := q.Field("guest_ip6_end")
2756+
ipStart := sqlchemy.INET6_ATON(q.Field("guest_ip6_start"))
2757+
ipEnd := sqlchemy.INET6_ATON(q.Field("guest_ip6_end"))
2758+
2759+
ipConst := sqlchemy.INET6_ATON(q.StringField(ip6Addr.String()))
27562760

27572761
ipCondtion = sqlchemy.AND(
2758-
sqlchemy.GE(ipEnd, ip6Addr.String()),
2759-
sqlchemy.LE(ipStart, ip6Addr.String()),
2762+
sqlchemy.GE(ipEnd, ipConst),
2763+
sqlchemy.LE(ipStart, ipConst),
27602764
)
27612765
if !exactIpMatch {
27622766
ipCondtion = sqlchemy.OR(
27632767
ipCondtion,
2764-
sqlchemy.Contains(q.Field("guest_ip6_start"), ipstr),
2765-
sqlchemy.Contains(q.Field("guest_ip6_end"), ipstr),
2768+
sqlchemy.Contains(q.Field("guest_ip6_start"), ip6Addr.String()),
2769+
sqlchemy.Contains(q.Field("guest_ip6_end"), ip6Addr.String()),
27662770
)
27672771
}
27682772
} else {
@@ -2884,6 +2888,8 @@ func (manager *SNetworkManager) ListItemFilter(
28842888
q = q.In("wire_id", subq.SubQuery())
28852889
}
28862890

2891+
q.DebugQuery()
2892+
28872893
return q, nil
28882894
}
28892895

vendor/modules.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1852,7 +1852,7 @@ sigs.k8s.io/structured-merge-diff/v4/value
18521852
# sigs.k8s.io/yaml v1.2.0
18531853
## explicit; go 1.12
18541854
sigs.k8s.io/yaml
1855-
# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250821083203-8bb4481c5631
1855+
# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250902085702-cb118fc37e8a
18561856
## explicit; go 1.21
18571857
yunion.io/x/cloudmux/pkg/apis
18581858
yunion.io/x/cloudmux/pkg/apis/billing
@@ -2003,7 +2003,7 @@ yunion.io/x/pkg/utils
20032003
# yunion.io/x/s3cli v0.0.0-20241221171442-1c11599d28e1
20042004
## explicit; go 1.12
20052005
yunion.io/x/s3cli
2006-
# yunion.io/x/sqlchemy v1.1.3-0.20250806073422-e37f5197cec0
2006+
# yunion.io/x/sqlchemy v1.1.3-0.20250902120005-3b18bc6371c7
20072007
## explicit; go 1.17
20082008
yunion.io/x/sqlchemy
20092009
yunion.io/x/sqlchemy/backends

vendor/yunion.io/x/cloudmux/pkg/apis/compute/cloudregions_const.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/yunion.io/x/cloudmux/pkg/apis/compute/dbinstance_const.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/yunion.io/x/cloudmux/pkg/apis/compute/regiondata.go

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/yunion.io/x/cloudmux/pkg/cloudprovider/metric.md

Lines changed: 148 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)