Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adapt to multi-ip shift in API networkservicemesh/api#47 #156

Merged
merged 1 commit into from
May 2, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,16 @@ require (
github.com/edwarnicke/vpphelper v0.0.0-20210225052320-b4f1f1aff45d
github.com/golang/protobuf v1.4.3
github.com/kelseyhightower/envconfig v1.4.0
github.com/networkservicemesh/api v0.0.0-20210417193417-dd329f8d6b7a
github.com/networkservicemesh/sdk v0.0.0-20210430112713-a9edf1f61b2d
github.com/networkservicemesh/sdk-vpp v0.0.0-20210430113301-b7f51d667e73
github.com/networkservicemesh/api v0.0.0-20210502014900-961930476ee1
github.com/networkservicemesh/sdk v0.0.0-20210502020015-89486603aedb
github.com/networkservicemesh/sdk-vpp v0.0.0-20210502021929-dc52d239cb94
github.com/pkg/errors v0.9.1
github.com/sirupsen/logrus v1.7.0
github.com/spiffe/go-spiffe/v2 v2.0.0-beta.2
github.com/stretchr/testify v1.7.0
github.com/thanhpk/randstr v1.0.4
github.com/vishvananda/netlink v1.1.0
github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae
golang.org/x/tools v0.0.0-20200812195022-5ae4c3c160a0 // indirect
google.golang.org/grpc v1.35.0
)
12 changes: 6 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -141,12 +141,12 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi
github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
github.com/nats-io/stan.go v0.6.0/go.mod h1:eIcD5bi3pqbHT/xIIvXMwvzXYElgouBvaVRftaE+eac=
github.com/networkservicemesh/api v0.0.0-20210417193417-dd329f8d6b7a h1:BakXE3Zu+KLMYEgwcfL3zsff5J1DxCt/rI60x6KU5Q4=
github.com/networkservicemesh/api v0.0.0-20210417193417-dd329f8d6b7a/go.mod h1:B6meq/SWjWR6bGXZdXPfbOeaBK+T1JayLdtEJQCsXKU=
github.com/networkservicemesh/sdk v0.0.0-20210430112713-a9edf1f61b2d h1:A3T9UA26EgAz2XzQHQXSLr5B1bZqpmkUweDymkgwmB8=
github.com/networkservicemesh/sdk v0.0.0-20210430112713-a9edf1f61b2d/go.mod h1:wV3wbgR7d7BaHJ8yPHtkXEj9jZ0WvZWsfHJMarV4VQ0=
github.com/networkservicemesh/sdk-vpp v0.0.0-20210430113301-b7f51d667e73 h1:T46SAFiRXSGjyAQ+cNeU8O5Y2xCmOTqYX1P1QQnqaz0=
github.com/networkservicemesh/sdk-vpp v0.0.0-20210430113301-b7f51d667e73/go.mod h1:rOOjhhKzKuqc5YZygsmfDMtyGb5OJKq9dHTxYAes6ow=
github.com/networkservicemesh/api v0.0.0-20210502014900-961930476ee1 h1:HNm4SS79Bx14cAXoLkIs/GB2KSJI+zT19ttDIu6Ofuc=
github.com/networkservicemesh/api v0.0.0-20210502014900-961930476ee1/go.mod h1:B6meq/SWjWR6bGXZdXPfbOeaBK+T1JayLdtEJQCsXKU=
github.com/networkservicemesh/sdk v0.0.0-20210502020015-89486603aedb h1:JH9vbQvQtaEZnmuZpxYKbcQ8uC9llznPn0DnmFEaENc=
github.com/networkservicemesh/sdk v0.0.0-20210502020015-89486603aedb/go.mod h1:uKeG+m5riQr0jllVp/vyeYJP2ruu1kyM8ejLWAKJwUo=
github.com/networkservicemesh/sdk-vpp v0.0.0-20210502021929-dc52d239cb94 h1:WmW/CAfGGOybCnvS1GHeHnxT8q2BQS+Wpkcb436Sm9I=
github.com/networkservicemesh/sdk-vpp v0.0.0-20210502021929-dc52d239cb94/go.mod h1:OPHtYzjDgR5/7JwGXeINwF8OoU04uwIV2Rr8WKw+TTs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
Expand Down
33 changes: 22 additions & 11 deletions internal/tests/suite_kernel_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,11 +118,13 @@ func (k *kernelVerifiableEndpoint) VerifyConnection(conn *networkservice.Connect
Cls: cls.LOCAL,
Type: kernel.MECHANISM,
}
if err := checkKernelInterface(namingConn, conn.GetContext().GetIpContext().GetDstIPNet(), k.endpointNSHandle); err != nil {
if err := checkKernelInterface(namingConn, conn.GetContext().GetIpContext().GetDstIPNets(), k.endpointNSHandle); err != nil {
return err
}
if err := pingKernel(conn.GetContext().GetIpContext().GetSrcIPNet(), k.endpointNSHandle); err != nil {
return err
for _, ip := range conn.GetContext().GetIpContext().GetSrcIPNets() {
if err := pingKernel(ip, k.endpointNSHandle); err != nil {
return err
}
}
return nil
}
Expand Down Expand Up @@ -171,11 +173,13 @@ func newKernelVerifiableClient(ctx context.Context, sutCC grpc.ClientConnInterfa
}

func (k *kernelVerifiableClient) VerifyConnection(conn *networkservice.Connection) error {
if err := checkKernelInterface(conn, conn.GetContext().GetIpContext().GetSrcIPNet(), k.clientNSHandle); err != nil {
if err := checkKernelInterface(conn, conn.GetContext().GetIpContext().GetSrcIPNets(), k.clientNSHandle); err != nil {
return err
}
if err := pingKernel(conn.GetContext().GetIpContext().GetDstIPNet(), k.clientNSHandle); err != nil {
return err
for _, ip := range conn.GetContext().GetIpContext().GetDstIPNets() {
if err := pingKernel(ip, k.clientNSHandle); err != nil {
return err
}
}
return nil
}
Expand All @@ -184,7 +188,7 @@ func (k *kernelVerifiableClient) VerifyClose(conn *networkservice.Connection) er
return checkNoKernelInterface(conn, k.clientNSHandle)
}

func checkKernelInterface(conn *networkservice.Connection, ipnet *net.IPNet, nsHandle netns.NsHandle) error {
func checkKernelInterface(conn *networkservice.Connection, ipNets []*net.IPNet, nsHandle netns.NsHandle) error {
if mechanism := kernel.ToMechanism(conn.GetMechanism()); mechanism != nil {
curNetNS, err := netns.Get()
if err != nil {
Expand All @@ -203,12 +207,19 @@ func checkKernelInterface(conn *networkservice.Connection, ipnet *net.IPNet, nsH
if err != nil {
return errors.Wrapf(err, "unable to list addresses for interface %q", ifaceName)
}
for _, addr := range addrs {
if addr.IP.Equal(ipnet.IP) && addr.Mask.String() == ipnet.Mask.String() {
return nil
for _, ipNet := range ipNets {
found := false
for _, addr := range addrs {
if addr.IP.Equal(ipNet.IP) && addr.Mask.String() == ipNet.Mask.String() {
found = true
break
}
}
if !found {
return errors.Errorf("Did not find expected addr %q on interface %q", ipNet, ifaceName)
}
}
return errors.Errorf("Did not find expected addr %q on interface %q", ipnet, ifaceName)
return nil
}
return errors.New("not a kernel mechanism")
}
Expand Down
14 changes: 12 additions & 2 deletions internal/tests/suite_memif_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,12 @@ func newMemifVerifiableEndpoint(ctx context.Context,
}

func (k *memifVerifiableEndpoint) VerifyConnection(conn *networkservice.Connection) error {
return pingVpp(k.ctx, k.vppConn, conn.GetContext().GetIpContext().GetSrcIpAddr())
for _, ip := range conn.GetContext().GetIpContext().GetSrcIpAddrs() {
if err := pingVpp(k.ctx, k.vppConn, ip); err != nil {
return err
}
}
return nil
}

func (k *memifVerifiableEndpoint) VerifyClose(conn *networkservice.Connection) error {
Expand Down Expand Up @@ -125,7 +130,12 @@ func newMemifVerifiableClient(ctx context.Context, sutCC grpc.ClientConnInterfac
}

func (m *memifVerifiableClient) VerifyConnection(conn *networkservice.Connection) error {
return pingVpp(m.ctx, m.vppConn, conn.GetContext().GetIpContext().GetDstIpAddr())
for _, ip := range conn.GetContext().GetIpContext().GetDstIpAddrs() {
if err := pingVpp(m.ctx, m.vppConn, ip); err != nil {
return err
}
}
return nil
}

func (m *memifVerifiableClient) VerifyClose(conn *networkservice.Connection) error {
Expand Down
14 changes: 12 additions & 2 deletions internal/tests/suite_vxlan_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,12 @@ func newVxlanVerifiableEndpoint(ctx context.Context,
}

func (v *vxlanVerifiableEndpoint) VerifyConnection(conn *networkservice.Connection) error {
return pingVpp(v.ctx, v.vppConn, conn.GetContext().GetIpContext().GetSrcIpAddr())
for _, ip := range conn.GetContext().GetIpContext().GetSrcIpAddrs() {
if err := pingVpp(v.ctx, v.vppConn, ip); err != nil {
return err
}
}
return nil
}

func (v *vxlanVerifiableEndpoint) VerifyClose(conn *networkservice.Connection) error {
Expand Down Expand Up @@ -103,7 +108,12 @@ func newVxlanVerifiableClient(
}

func (v *vxlanVerifiableClient) VerifyConnection(conn *networkservice.Connection) error {
return pingVpp(v.ctx, v.vppConn, conn.GetContext().GetIpContext().GetDstIpAddr())
for _, ip := range conn.GetContext().GetIpContext().GetDstIpAddrs() {
if err := pingVpp(v.ctx, v.vppConn, ip); err != nil {
return err
}
}
return nil
}

func (v *vxlanVerifiableClient) VerifyClose(conn *networkservice.Connection) error {
Expand Down