mirror of
https://github.com/facebook/sapling.git
synced 2024-10-05 14:28:17 +03:00
4ee4fa5e6b
Summary: The msft client can't be pointed at an NFS server on a particular port, so we have to register our RPC servers (mountd and nfsd) with the port mapper service. There is no portmapper service running on Windows by default. There is a port mapper implementation from msft that can be installed on Windows Server, but not on Windows desktop. There are some third-party implementations of the portmapper for Windows. Most of them are part of an NFS Server implementation. But none that I have found both run on modern Windows versions, are a general purpose port mapper, and support port mapper v2. General purpose means they allow processes to set a port mapping. Most the port mappers I found must register their NFS server in process, because they don't support calling the set mapping endpoint. The rest only run on Windows versions from before I was born or only run v4. I tried porting the linux gnu implementation of port mapper to Windows. But despite a few hours of trying I could not even get it to build even on Linux. Writing our own port mapper is faster. This is the skeleton of the server. In the next diffs I will register our RPC servers and support telling the msft NFS client about our servers. Reviewed By: chadaustin Differential Revision: D44987863 fbshipit-source-id: bff065795a9f4b7b6c13ef3e3ce603646e1ce364
123 lines
1.9 KiB
CMake
123 lines
1.9 KiB
CMake
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
#
|
|
# This software may be used and distributed according to the terms of the
|
|
# GNU General Public License version 2.
|
|
|
|
add_library(
|
|
eden_nfs_mountd STATIC
|
|
"Mountd.cpp" "Mountd.h"
|
|
)
|
|
|
|
target_link_libraries(
|
|
eden_nfs_mountd
|
|
PUBLIC
|
|
eden_inodes_inodenumber
|
|
eden_nfs_rpc_server
|
|
eden_utils
|
|
PRIVATE
|
|
eden_nfs_mountd_rpc
|
|
Folly::folly
|
|
)
|
|
|
|
add_library(
|
|
eden_nfs_mountd_rpc STATIC
|
|
"MountdRpc.cpp" "MountdRpc.h"
|
|
)
|
|
|
|
target_link_libraries(
|
|
eden_nfs_mountd_rpc
|
|
PUBLIC
|
|
eden_nfs_nfsd_rpc
|
|
eden_nfs_rpc
|
|
)
|
|
|
|
add_library(
|
|
eden_nfs_nfsd_rpc STATIC
|
|
"NfsdRpc.cpp" "NfsdRpc.h"
|
|
)
|
|
|
|
target_link_libraries(
|
|
eden_nfs_nfsd_rpc
|
|
PUBLIC
|
|
eden_inodes_inodenumber
|
|
eden_nfs_rpc
|
|
)
|
|
|
|
add_library(
|
|
eden_nfs_utils STATIC
|
|
"NfsUtils.cpp" "NfsUtils.h"
|
|
)
|
|
|
|
|
|
target_link_libraries(
|
|
eden_nfs_utils
|
|
PRIVATE
|
|
eden_nfs_nfsd_rpc
|
|
Folly::folly
|
|
)
|
|
|
|
|
|
add_library(
|
|
eden_nfs_nfsd3 STATIC
|
|
"Nfsd3.cpp" "Nfsd3.h" "NfsRequestContext.cpp" "NfsRequestContext.h"
|
|
)
|
|
|
|
target_link_libraries(
|
|
eden_nfs_nfsd3
|
|
PUBLIC
|
|
eden_nfs_dispatcher
|
|
eden_nfs_rpc_server
|
|
PRIVATE
|
|
eden_nfs_nfsd_rpc
|
|
eden_nfs_utils
|
|
Folly::folly
|
|
)
|
|
|
|
add_library(
|
|
eden_nfs_server STATIC
|
|
"NfsServer.cpp" "NfsServer.h"
|
|
)
|
|
|
|
target_link_libraries(
|
|
eden_nfs_server
|
|
PUBLIC
|
|
eden_nfs_mountd
|
|
eden_nfs_nfsd3
|
|
eden_nfs_portmap_server
|
|
PRIVATE
|
|
Folly::folly
|
|
)
|
|
|
|
add_library(
|
|
eden_nfs_dispatcher STATIC
|
|
"NfsDispatcher.cpp" "NfsDispatcher.h"
|
|
)
|
|
|
|
target_link_libraries(
|
|
eden_nfs_dispatcher
|
|
PUBLIC
|
|
eden_inodes_inodenumber
|
|
eden_inode_metadata
|
|
eden_nfs_dirlist
|
|
eden_store
|
|
eden_utils
|
|
)
|
|
|
|
add_library(
|
|
eden_nfs_dirlist STATIC
|
|
"NfsDirList.cpp" "NfsDirList.h"
|
|
)
|
|
|
|
target_link_libraries(
|
|
eden_nfs_dirlist
|
|
PUBLIC
|
|
eden_nfs_nfsd_rpc
|
|
eden_inodes_inodenumber
|
|
)
|
|
|
|
add_subdirectory(portmap)
|
|
add_subdirectory(rpc)
|
|
add_subdirectory(xdr)
|
|
add_subdirectory(test)
|
|
add_subdirectory(testharness)
|