2 Star 0 Fork 0

carlmax_my/go-iptables

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
util_port.go 1.48 KB
一键复制 编辑 原始数据 按行查看 历史
carlmax_my 提交于 2025-11-13 13:47 +08:00 . fix equal func issue
package core
import "fmt"
type PortRange struct {
Min uint16
Max uint16
}
// Port and Ports, PortRange, 只能取其一(可以支持,但是感觉不必要)
type PortOption struct {
Port uint16 // single port mode
Range *PortRange //
List []uint16 //
}
func (a *PortOption) IsEmpty() bool {
return a.Port == 0 && a.Range == nil && len(a.List) == 0
}
// both a,b not nil
func (a *PortOption) Equal(b *PortOption) bool {
if a.Port != b.Port {
return false
}
if !EqualPortRange(a.Range, b.Range) {
return false
}
if !EqualSlice(a.List, b.List) {
return false
}
// 全空配置
// if a.Port == 0 && b.Port == 0 &&
// a.Range == nil && b.Range == nil &&
// len(a.List) == 0 && len(b.List) == 0 {
// return true
// }
return true
}
// both a,b not nil
func (a *PortRange) Equal(b *PortRange) bool {
return a.Min == b.Min && a.Max == b.Max
}
func EqualPortRange(a, b *PortRange) bool {
if a == nil && b == nil {
return true
}
return a != nil && b != nil && a.Equal(b)
}
func EqualPortOption(a, b *PortOption) bool {
if a == nil && b == nil {
return true
}
if a != nil && b != nil {
return a.Equal(b)
}
if a != nil {
return a.IsEmpty()
} else {
return b.IsEmpty()
}
}
// 10000:20000
func PortRangeToStr(portRange *PortRange) string {
return fmt.Sprintf("%d:%d", portRange.Min, portRange.Max)
}
// 10000X20000
func PortRangeToStrW(portRange *PortRange, splitter string) string {
return fmt.Sprintf("%d%s%d", portRange.Min, splitter, portRange.Max)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/carlmax_my/go-iptables.git
git@gitee.com:carlmax_my/go-iptables.git
carlmax_my
go-iptables
go-iptables
v0.1.21

搜索帮助