wgengine/filter: remove the Matches type.

It only served to obscure the underlying slice type without
adding much value.

Signed-off-by: David Anderson <danderson@tailscale.com>
pull/910/head
David Anderson 4 years ago committed by Dave Anderson
parent b950bd60bf
commit 76d99cf01a

@ -9,9 +9,9 @@ import (
"tailscale.com/wgengine/filter" "tailscale.com/wgengine/filter"
) )
// Parse a backward-compatible FilterRule used by control's wire format, // Parse a backward-compatible FilterRule used by control's wire
// producing the most current filter.Matches format. // format, producing the most current filter format.
func (c *Direct) parsePacketFilter(pf []tailcfg.FilterRule) filter.Matches { func (c *Direct) parsePacketFilter(pf []tailcfg.FilterRule) []filter.Match {
mm, err := filter.MatchesFromFilterRules(pf) mm, err := filter.MatchesFromFilterRules(pf)
if err != nil { if err != nil {
c.logf("parsePacketFilter: %s\n", err) c.logf("parsePacketFilter: %s\n", err)

@ -34,7 +34,7 @@ type NetworkMap struct {
Peers []*tailcfg.Node // sorted by Node.ID Peers []*tailcfg.Node // sorted by Node.ID
DNS tailcfg.DNSConfig DNS tailcfg.DNSConfig
Hostinfo tailcfg.Hostinfo Hostinfo tailcfg.Hostinfo
PacketFilter filter.Matches PacketFilter []filter.Match
// DERPMap is the last DERP server map received. It's reused // DERPMap is the last DERP server map received. It's reused
// between updates and should not be modified. // between updates and should not be modified.

@ -523,7 +523,7 @@ func (b *LocalBackend) updateFilter(netMap *controlclient.NetworkMap, prefs *Pre
var ( var (
haveNetmap = netMap != nil haveNetmap = netMap != nil
addrs []wgcfg.CIDR addrs []wgcfg.CIDR
packetFilter filter.Matches packetFilter []filter.Match
advRoutes []wgcfg.CIDR advRoutes []wgcfg.CIDR
shieldsUp = prefs == nil || prefs.ShieldsUp // Be conservative when not ready shieldsUp = prefs == nil || prefs.ShieldsUp // Be conservative when not ready
) )
@ -551,7 +551,7 @@ func (b *LocalBackend) updateFilter(netMap *controlclient.NetworkMap, prefs *Pre
if shieldsUp { if shieldsUp {
b.logf("netmap packet filter: (shields up)") b.logf("netmap packet filter: (shields up)")
var prevFilter *filter.Filter // don't reuse old filter state var prevFilter *filter.Filter // don't reuse old filter state
b.e.SetFilter(filter.New(filter.Matches{}, localNets, prevFilter, b.logf)) b.e.SetFilter(filter.New(nil, localNets, prevFilter, b.logf))
} else { } else {
b.logf("netmap packet filter: %v", packetFilter) b.logf("netmap packet filter: %v", packetFilter)
b.e.SetFilter(filter.New(packetFilter, localNets, b.e.GetFilter(), b.logf)) b.e.SetFilter(filter.New(packetFilter, localNets, b.e.GetFilter(), b.logf))

@ -92,7 +92,7 @@ const (
// NewAllowAll returns a packet filter that accepts everything to and // NewAllowAll returns a packet filter that accepts everything to and
// from localNets. // from localNets.
func NewAllowAll(localNets []netaddr.IPPrefix, logf logger.Logf) *Filter { func NewAllowAll(localNets []netaddr.IPPrefix, logf logger.Logf) *Filter {
return New(Matches{Match{NetPortRangeAny, NetAny}}, localNets, nil, logf) return New([]Match{Match{NetPortRangeAny, NetAny}}, localNets, nil, logf)
} }
// NewAllowNone returns a packet filter that rejects everything. // NewAllowNone returns a packet filter that rejects everything.
@ -105,7 +105,7 @@ func NewAllowNone(logf logger.Logf) *Filter {
// by matches. If shareStateWith is non-nil, the returned filter // by matches. If shareStateWith is non-nil, the returned filter
// shares state with the previous one, to enable changing rules at // shares state with the previous one, to enable changing rules at
// runtime without breaking existing stateful flows. // runtime without breaking existing stateful flows.
func New(matches Matches, localNets []netaddr.IPPrefix, shareStateWith *Filter, logf logger.Logf) *Filter { func New(matches []Match, localNets []netaddr.IPPrefix, shareStateWith *Filter, logf logger.Logf) *Filter {
var state *filterState var state *filterState
if shareStateWith != nil { if shareStateWith != nil {
state = shareStateWith.state state = shareStateWith.state

@ -97,7 +97,7 @@ func netports(netPorts ...string) (ret []NetPortRange) {
return ret return ret
} }
var matches = Matches{ var matches = []Match{
{Srcs: nets("8.1.1.1", "8.2.2.2"), Dsts: netports("1.2.3.4:22", "5.6.7.8:23-24")}, {Srcs: nets("8.1.1.1", "8.2.2.2"), Dsts: netports("1.2.3.4:22", "5.6.7.8:23-24")},
{Srcs: nets("8.1.1.1", "8.2.2.2"), Dsts: netports("5.6.7.8:27-28")}, {Srcs: nets("8.1.1.1", "8.2.2.2"), Dsts: netports("5.6.7.8:27-28")},
{Srcs: nets("2.2.2.2"), Dsts: netports("8.1.1.1:22")}, {Srcs: nets("2.2.2.2"), Dsts: netports("8.1.1.1:22")},
@ -115,13 +115,13 @@ func newFilter(logf logger.Logf) *Filter {
} }
func TestMarshal(t *testing.T) { func TestMarshal(t *testing.T) {
for _, ent := range []Matches{Matches{matches[0]}, matches} { for _, ent := range [][]Match{[]Match{matches[0]}, matches} {
b, err := json.Marshal(ent) b, err := json.Marshal(ent)
if err != nil { if err != nil {
t.Fatalf("marshal: %v", err) t.Fatalf("marshal: %v", err)
} }
mm2 := Matches{} mm2 := []Match{}
if err := json.Unmarshal(b, &mm2); err != nil { if err := json.Unmarshal(b, &mm2); err != nil {
t.Fatalf("unmarshal: %v (%v)", err, string(b)) t.Fatalf("unmarshal: %v (%v)", err, string(b))
} }

@ -81,6 +81,3 @@ func (m Match) String() string {
} }
return fmt.Sprintf("%v=>%v", ss, ds) return fmt.Sprintf("%v=>%v", ss, ds)
} }
// Matches is a list of packet matchers.
type Matches []Match

@ -80,7 +80,7 @@ func (ms matches4) String() string {
return b.String() return b.String()
} }
func newMatches4(ms Matches) (ret matches4) { func newMatches4(ms []Match) (ret matches4) {
for _, m := range ms { for _, m := range ms {
var m4 match4 var m4 match4
for _, src := range m.Srcs { for _, src := range m.Srcs {

@ -14,7 +14,7 @@ import (
// MatchesFromFilterRules converts tailcfg FilterRules into Matches. // MatchesFromFilterRules converts tailcfg FilterRules into Matches.
// If an error is returned, the Matches result is still valid, // If an error is returned, the Matches result is still valid,
// containing the rules that were successfully converted. // containing the rules that were successfully converted.
func MatchesFromFilterRules(pf []tailcfg.FilterRule) (Matches, error) { func MatchesFromFilterRules(pf []tailcfg.FilterRule) ([]Match, error) {
mm := make([]Match, 0, len(pf)) mm := make([]Match, 0, len(pf))
var erracc error var erracc error

@ -98,7 +98,7 @@ func netports(netPorts ...string) (ret []filter.NetPortRange) {
} }
func setfilter(logf logger.Logf, tun *TUN) { func setfilter(logf logger.Logf, tun *TUN) {
matches := filter.Matches{ matches := []filter.Match{
{Srcs: nets("5.6.7.8"), Dsts: netports("1.2.3.4:89-90")}, {Srcs: nets("5.6.7.8"), Dsts: netports("1.2.3.4:89-90")},
{Srcs: nets("1.2.3.4"), Dsts: netports("5.6.7.8:98")}, {Srcs: nets("1.2.3.4"), Dsts: netports("5.6.7.8:98")},
} }

Loading…
Cancel
Save