Skip to content

Commit

Permalink
Fix NSMgr arounf sendfd/recvfd
Browse files Browse the repository at this point in the history
Signed-off-by: Ed Warnicke <hagbard@gmail.com>
  • Loading branch information
edwarnicke committed Jan 26, 2021
1 parent e38ac72 commit 4f472c0
Show file tree
Hide file tree
Showing 10 changed files with 94 additions and 73 deletions.
8 changes: 8 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -254,3 +254,11 @@ issues:
linters:
- funlen
text: "Function 'TestConnectServer_Request'"
- path: pkg/registry/common/recvfd/gen.go
linters:
- structcheck
text: "is unused"
- path: pkg/networkservice/common/mechanisms/recvfd/gen.go
linters:
- structcheck
text: "is unused"
44 changes: 0 additions & 44 deletions pkg/networkservice/chains/nsmgr/fd_chains_linux.go

This file was deleted.

15 changes: 10 additions & 5 deletions pkg/networkservice/chains/nsmgr/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ import (
"time"

"github.com/networkservicemesh/sdk/pkg/networkservice/chains/client"
"github.com/networkservicemesh/sdk/pkg/networkservice/common/mechanisms/recvfd"
"github.com/networkservicemesh/sdk/pkg/networkservice/common/mechanisms/sendfd"
"github.com/networkservicemesh/sdk/pkg/registry/common/expire"
"github.com/networkservicemesh/sdk/pkg/registry/common/querycache"
"github.com/networkservicemesh/sdk/pkg/registry/core/next"
Expand All @@ -41,6 +43,7 @@ import (
"github.com/networkservicemesh/sdk/pkg/tools/grpcutils"

"github.com/networkservicemesh/sdk/pkg/registry/common/memory"
registry_recvfd "github.com/networkservicemesh/sdk/pkg/registry/common/recvfd"
"github.com/networkservicemesh/sdk/pkg/registry/common/setid"
"github.com/networkservicemesh/sdk/pkg/registry/common/seturl"
chain_registry "github.com/networkservicemesh/sdk/pkg/registry/core/chain"
Expand Down Expand Up @@ -113,28 +116,30 @@ func NewServer(ctx context.Context, nsmRegistration *registryapi.NetworkServiceE
roundrobin.NewServer(),
localbypass.NewServer(&localbypassRegistryServer),
excludedprefixes.NewServer(ctx),
newRecvFD(), // Receive any files passed
recvfd.NewServer(), // Receive any files passed
interpose.NewServer(&interposeRegistry),
filtermechanisms.NewServer(&urlsRegistryServer),
connect.NewServer(ctx,
client.NewClientFactory(
nsmRegistration.Name,
addressof.NetworkServiceClient(adapters.NewServerToClient(rv)),
tokenGenerator,
newSendFDClient(), // Send passed files.
recvfd.NewClient(),
sendfd.NewClient(), // Send passed files.
),
clientDialOptions...),
sendfd.NewServer(),
)

nsChain := chain_registry.NewNamedNetworkServiceRegistryServer(nsmRegistration.Name+".NetworkServiceRegistry", nsRegistry)

nseChain := chain_registry.NewNamedNetworkServiceEndpointRegistryServer(
nsmRegistration.Name+".NetworkServiceEndpointRegistry",
expire.NewNetworkServiceEndpointRegistryServer(time.Minute),
newRecvFDEndpointRegistry(), // Allow to receive a passed files
registry_recvfd.NewNetworkServiceEndpointRegistryServer(), // Allow to receive a passed files
urlsRegistryServer,
interposeRegistry, // Store cross connect NSEs
localbypassRegistryServer, // Store endpoint Id to EndpointURL for local access.
interposeRegistry, // Store cross connect NSEs
localbypassRegistryServer, // Store endpoint Id to EndpointURL for local access.
seturl.NewNetworkServiceEndpointRegistryServer(nsmRegistration.Url), // Remember endpoint URL
nseRegistry, // Register NSE inside Remote registry with ID assigned
)
Expand Down
4 changes: 2 additions & 2 deletions pkg/networkservice/common/mechanisms/recvfd/client.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2020 Cisco and/or its affiliates.
// Copyright (c) 2020-2021 Cisco and/or its affiliates.
//
// Copyright (c) 2021 Doc.ai and/or its affiliates.
//
Expand All @@ -16,7 +16,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

// +build !windows
// +build linux

package recvfd

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2020 Doc.ai and/or its affiliates.
// Copyright (c) 2021 Cisco and/or its affiliates.
//
// SPDX-License-Identifier: Apache-2.0
//
Expand All @@ -16,27 +16,16 @@

// +build !linux

package nsmgr
package recvfd

import (
"github.com/networkservicemesh/api/pkg/api/networkservice"
"github.com/networkservicemesh/api/pkg/api/registry"

"github.com/networkservicemesh/sdk/pkg/networkservice/common/null"
null_registry "github.com/networkservicemesh/sdk/pkg/registry/common/null"
)

// newRecvFD - construct a recvfd server
func newRecvFD() networkservice.NetworkServiceServer {
return null.NewServer()
}

// newSendFDClient - construct a sendfd server
func newSendFDClient() networkservice.NetworkServiceClient {
// NewClient - returns client chain element to recv FDs over the connection (if possible) for any Mechanism.Parameters[common.InodeURL]
// url of scheme 'inode'.
func NewClient() networkservice.NetworkServiceClient {
return null.NewClient()
}

// newRecvFDEndpointRegistry - construct a registry server
func newRecvFDEndpointRegistry() registry.NetworkServiceEndpointRegistryServer {
return null_registry.NewNetworkServiceEndpointRegistryServer()
}
4 changes: 2 additions & 2 deletions pkg/networkservice/common/mechanisms/recvfd/common.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2020 Cisco and/or its affiliates.
// Copyright (c) 2020-2021 Cisco and/or its affiliates.
//
// SPDX-License-Identifier: Apache-2.0
//
Expand All @@ -14,7 +14,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

// +build !windows
// +build linux

package recvfd

Expand Down
4 changes: 2 additions & 2 deletions pkg/networkservice/common/mechanisms/recvfd/server.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2020 Cisco and/or its affiliates.
// Copyright (c) 2020-2021 Cisco and/or its affiliates.
//
// SPDX-License-Identifier: Apache-2.0
//
Expand All @@ -14,7 +14,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

// +build !windows
// +build linux

package recvfd

Expand Down
31 changes: 31 additions & 0 deletions pkg/networkservice/common/mechanisms/recvfd/server_notlinux.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Copyright (c) 2021 Cisco and/or its affiliates.
//
// SPDX-License-Identifier: Apache-2.0
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at:
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// +build !linux

package recvfd

import (
"github.com/networkservicemesh/api/pkg/api/networkservice"

"github.com/networkservicemesh/sdk/pkg/networkservice/common/null"
)

// NewServer - returns server chain element to recv FDs over the connection (if possible) for any Mechanism.Parameters[common.InodeURL]
// url of scheme 'inode'.
func NewServer() networkservice.NetworkServiceServer {
return null.NewServer()
}
4 changes: 2 additions & 2 deletions pkg/registry/common/recvfd/server.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2020 Cisco and/or its affiliates.
// Copyright (c) 2020-2021 Cisco and/or its affiliates.
//
// SPDX-License-Identifier: Apache-2.0
//
Expand All @@ -14,7 +14,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

// +build !windows
// +build linux

// Package recvfd provides an NSE registry server chain element that:
// 1. Receives and fd over a unix file socket if the nse.URL is an inode://${dev}/${inode} url
Expand Down
32 changes: 32 additions & 0 deletions pkg/registry/common/recvfd/server_notlinux.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Copyright (c) 2021 Cisco and/or its affiliates.
//
// SPDX-License-Identifier: Apache-2.0
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at:
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// +build !linux

package recvfd

import (
"github.com/networkservicemesh/api/pkg/api/registry"

"github.com/networkservicemesh/sdk/pkg/registry/common/null"
)

// NewNetworkServiceEndpointRegistryServer - creates new NSE registry chain element that will:
// 1. Receive and fd over a unix file socket if the nse.URL is an inode://${dev}/${inode} url
// 2. Rewrite the nse.URL to unix:///proc/${pid}/fd/${fd} so it can be used by a normal dialer
func NewNetworkServiceEndpointRegistryServer() registry.NetworkServiceEndpointRegistryServer {
return null.NewNetworkServiceEndpointRegistryServer()
}

0 comments on commit 4f472c0

Please sign in to comment.