mirror of
https://github.com/juanfont/headscale.git
synced 2025-08-24 13:46:53 +02:00
policy: add tests to validate fix for 2181
Fixes #2181 Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
parent
06c5390d89
commit
fbd3049e89
@ -2,10 +2,11 @@ package policy
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/juanfont/headscale/hscontrol/policy/matcher"
|
|
||||||
"net/netip"
|
"net/netip"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/juanfont/headscale/hscontrol/policy/matcher"
|
||||||
|
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
"github.com/juanfont/headscale/hscontrol/types"
|
"github.com/juanfont/headscale/hscontrol/types"
|
||||||
"github.com/juanfont/headscale/hscontrol/util"
|
"github.com/juanfont/headscale/hscontrol/util"
|
||||||
@ -1370,7 +1371,6 @@ func TestFilterNodesByACL(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
name: "subnet-router-with-only-route",
|
name: "subnet-router-with-only-route",
|
||||||
args: args{
|
args: args{
|
||||||
@ -1422,6 +1422,108 @@ func TestFilterNodesByACL(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "subnet-router-with-only-route-smaller-mask-2181",
|
||||||
|
args: args{
|
||||||
|
nodes: []*types.Node{
|
||||||
|
{
|
||||||
|
ID: 1,
|
||||||
|
IPv4: ap("100.64.0.1"),
|
||||||
|
Hostname: "router",
|
||||||
|
User: types.User{Name: "router"},
|
||||||
|
Hostinfo: &tailcfg.Hostinfo{
|
||||||
|
RoutableIPs: []netip.Prefix{netip.MustParsePrefix("10.99.0.0/16")},
|
||||||
|
},
|
||||||
|
ApprovedRoutes: []netip.Prefix{netip.MustParsePrefix("10.99.0.0/16")},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 2,
|
||||||
|
IPv4: ap("100.64.0.2"),
|
||||||
|
Hostname: "node",
|
||||||
|
User: types.User{Name: "node"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rules: []tailcfg.FilterRule{
|
||||||
|
{
|
||||||
|
SrcIPs: []string{
|
||||||
|
"100.64.0.2/32",
|
||||||
|
},
|
||||||
|
DstPorts: []tailcfg.NetPortRange{
|
||||||
|
{IP: "10.99.0.2/32", Ports: tailcfg.PortRangeAny},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
node: &types.Node{
|
||||||
|
ID: 1,
|
||||||
|
IPv4: ap("100.64.0.1"),
|
||||||
|
Hostname: "router",
|
||||||
|
User: types.User{Name: "router"},
|
||||||
|
Hostinfo: &tailcfg.Hostinfo{
|
||||||
|
RoutableIPs: []netip.Prefix{netip.MustParsePrefix("10.99.0.0/16")},
|
||||||
|
},
|
||||||
|
ApprovedRoutes: []netip.Prefix{netip.MustParsePrefix("10.99.0.0/16")},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: []*types.Node{
|
||||||
|
{
|
||||||
|
ID: 2,
|
||||||
|
IPv4: ap("100.64.0.2"),
|
||||||
|
Hostname: "node",
|
||||||
|
User: types.User{Name: "node"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "node-to-subnet-router-with-only-route-smaller-mask-2181",
|
||||||
|
args: args{
|
||||||
|
nodes: []*types.Node{
|
||||||
|
{
|
||||||
|
ID: 1,
|
||||||
|
IPv4: ap("100.64.0.1"),
|
||||||
|
Hostname: "router",
|
||||||
|
User: types.User{Name: "router"},
|
||||||
|
Hostinfo: &tailcfg.Hostinfo{
|
||||||
|
RoutableIPs: []netip.Prefix{netip.MustParsePrefix("10.99.0.0/16")},
|
||||||
|
},
|
||||||
|
ApprovedRoutes: []netip.Prefix{netip.MustParsePrefix("10.99.0.0/16")},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 2,
|
||||||
|
IPv4: ap("100.64.0.2"),
|
||||||
|
Hostname: "node",
|
||||||
|
User: types.User{Name: "node"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rules: []tailcfg.FilterRule{
|
||||||
|
{
|
||||||
|
SrcIPs: []string{
|
||||||
|
"100.64.0.2/32",
|
||||||
|
},
|
||||||
|
DstPorts: []tailcfg.NetPortRange{
|
||||||
|
{IP: "10.99.0.2/32", Ports: tailcfg.PortRangeAny},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
node: &types.Node{
|
||||||
|
ID: 2,
|
||||||
|
IPv4: ap("100.64.0.2"),
|
||||||
|
Hostname: "node",
|
||||||
|
User: types.User{Name: "node"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: []*types.Node{
|
||||||
|
{
|
||||||
|
ID: 1,
|
||||||
|
IPv4: ap("100.64.0.1"),
|
||||||
|
Hostname: "router",
|
||||||
|
User: types.User{Name: "router"},
|
||||||
|
Hostinfo: &tailcfg.Hostinfo{
|
||||||
|
RoutableIPs: []netip.Prefix{netip.MustParsePrefix("10.99.0.0/16")},
|
||||||
|
},
|
||||||
|
ApprovedRoutes: []netip.Prefix{netip.MustParsePrefix("10.99.0.0/16")},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
|
Loading…
Reference in New Issue
Block a user