0e96f602fa
matcher: fix IPv6 normalization via netip.ParseAddr, port-range overwrite by switching to []*PortRange map, case-insensitive domain/host matching, glob.MustCompile→Compile to avoid panic on invalid patterns. plugin: guard nil *Options in NewGRPCConn and NewHTTPClient; add HTTPClientTransport helper for idle-connection cleanup. net/*: add doc comments for all exported symbols (no code changes). Add 30 tests (matcher_test.go 22, plugin_test.go 8) covering all matcher types, nil safety, case insensitivity, IPv6 normalization, port ranges, and plugin option composition.
28 lines
611 B
Go
28 lines
611 B
Go
package ip
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/songgao/water/waterutil"
|
|
)
|
|
|
|
var prots = map[waterutil.IPProtocol]string{
|
|
waterutil.HOPOPT: "HOPOPT",
|
|
waterutil.ICMP: "ICMP",
|
|
waterutil.IGMP: "IGMP",
|
|
waterutil.GGP: "GGP",
|
|
waterutil.TCP: "TCP",
|
|
waterutil.UDP: "UDP",
|
|
waterutil.IPv6_Route: "IPv6-Route",
|
|
waterutil.IPv6_Frag: "IPv6-Frag",
|
|
waterutil.IPv6_ICMP: "IPv6-ICMP",
|
|
}
|
|
|
|
// Protocol returns the string name for the given IP protocol number.
|
|
func Protocol(p waterutil.IPProtocol) string {
|
|
if v, ok := prots[p]; ok {
|
|
return v
|
|
}
|
|
return fmt.Sprintf("unknown(%d)", p)
|
|
}
|