sapling/eden/fs/nfs/CMakeLists.txt
Katie Mancini 4ee4fa5e6b skeleton of portmapper server
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
2023-04-18 17:50:02 -07:00

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)