Page MenuHomeFreeBSD

add syscall for the nfs-over-tls daemons to use
ClosedPublic

Authored by rmacklem on May 21 2020, 11:45 PM.

Details

Summary

For nfs-over-tls, there are two daemons that handle the parts of
TLS not done by the ktls, such as the handshake.
(One daemon for the server and one for the client.)
These daemons need a system call to set up the upcall
socket so that the kernel rpc code can communicate
with them. The syscall is also used to associate a socket
with a file descriptor for the daemon.

This syscall is private to the krpc and rpctls daemons.

Putting this syscall in head now will allow testers to
install a recent current from a snapshot without having
to buildworld/installworld from sources.

I understand that the syscall.master updates get committed
first and then the generated files in a separate commit.
Is that correct?

Test Plan

The nfs-over-tls code has been tested using the gssd
syscall, but it needs its own syscall so that the gssd
daemon can run concurrently with the rpctls daemons.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

The key things I watch for in syscalls.master changes look fine.

sys/compat/freebsd32/syscalls.master
1168 ↗(On Diff #72099)

Given the signature there's no reason not to copy the definition here and it would keep the files closer in sync. It will work fine with compat shims even if the result isn't useful due to a general lack of 32-bit compat in NFS (this is not a complaint). I have an eventual plan to eliminate compat/freebsd32/syscalls.master so keeping differences to a minimum is helpful

sys/kern/syscalls.master
3237 ↗(On Diff #72099)

No blank line here.

Removed the blank line from syscalls.master and
added the definition to compat/freebsd32/syscalls.master,
as suggested by brooks@.

Oops, forgot to "make sysent" before testing the last one.
Since the entry on compat/freebsd32/syscalls.master is NOSTD,
I needed to prepend "freebsd_" to the prototype name to
avoid a conflict.

Oops, forgot to "make sysent" before testing the last one.
Since the entry on compat/freebsd32/syscalls.master is NOSTD,
I needed to prepend "freebsd_" to the prototype name to
avoid a conflict.

I think the correct fix is to mark it NOSTD|NOPROTO

Modified compat/freebsd32/syscalls.master entry
as suggested by brooks@.
It worked and did not create a proto entry.

This revision is now accepted and ready to land.May 28 2020, 6:16 PM