func (mss MatcherSets) AnyMatch(cx *Connection) (matched bool, err error) {
	for _, m := range mss {
		matched, err = m.Match(cx)
		if matched || err != nil {
			return
		}
	}
	matched = len(mss) == 0
	return
}
AnyMatch returns true if the connection matches any of the matcher sets
in mss or if there are no matchers, in which case the request always
matches. Any error terminates matching.
package layer4
import (
	"fmt"
	"net"
	"strings"
	"github.com/caddyserver/caddy/v2"
)
func init() {
	caddy.RegisterModule(MatchIP{})
}
type ConnMatcher interface {
	Match(*Connection) (bool, error)
}
type MatcherSet []ConnMatcher
func (mset MatcherSet) Match(cx *Connection) (matched bool, err error) {
	for _, m := range mset {
		cx.record()
		matched, err = m.Match(cx)
		cx.rewind()
		if !matched || err != nil {
			return
		}
	}
	matched = true
	return
}
type RawMatcherSets []caddy.ModuleMap
type MatcherSets []MatcherSet