TCP_KEEPIDLE vs TCPTV_KEEP_IDLE

Gleb Smirnoff glebius at FreeBSD.org
Mon May 6 08:22:37 UTC 2013


On Sun, May 05, 2013 at 09:40:42AM -0700, Richard Sharpe wrote:
R> Samba currently has a way to set socket parameters from the smb.conf.
R> 
R> This works fine for things like SO_SNDBUF etc, but not so well for the
R> TCP KeepAlive parameters.
R> 
R> In this area Samba has a Linux bias.
R> 
R> I am looking at adding support for this under FreeBSD.
R> 
R> The simplest way, it seems to me, is to enhance configure to find the
R> appropriate symbols under FreeBSD (and it might be extendable to
R> NetBSD etc) and then map them to the Linux symbols:
R> 
R> #ifdef THIS_IS_SOME_SORT_OF_BSD
R> #define TCP_KEEPIDLE TCPTV_KEEP_IDLE
R> #endif
R> 
R> However, that does mean that *BSD types would have to know that this
R> happening because the names you would use in the smb.conf file would
R> be Linux-specific, and documentation is often woefully incomplete.
R> 
R> Is there a better method?

I don't see the problem you are describing. AFAIK, these socket options
have same names in FreeBSD and Linux.

For example in Samba 3.6.14 sources it just checks for value defined
and if defined compiles support in. See source3/lib/util_sock.c:

#ifdef TCP_KEEPCNT
  {"TCP_KEEPCNT", IPPROTO_TCP, TCP_KEEPCNT, 0, OPT_INT},
#endif
#ifdef TCP_KEEPIDLE
  {"TCP_KEEPIDLE", IPPROTO_TCP, TCP_KEEPIDLE, 0, OPT_INT},
#endif
#ifdef TCP_KEEPINTVL
  {"TCP_KEEPINTVL", IPPROTO_TCP, TCP_KEEPINTVL, 0, OPT_INT},
#endif

P.S.
Since you mention TCPTV_KEEP_IDLE, I've tried to grep samba sources
for this definition getting zero results.

-- 
Totus tuus, Glebius.


More information about the freebsd-net mailing list