OSDN Git Service

Have TCP connections attempt to auto-reconnect
[android-x86/system-core.git] / adb / sysdeps.h
index 186643d..552ea3d 100644 (file)
@@ -82,6 +82,7 @@ static __inline__ void  close_on_exec(int  fd)
 }
 
 extern void  disable_tcp_nagle(int  fd);
+extern void enable_keepalive(int fd);
 
 #define  lstat    stat   /* no symlinks on Win32 */
 
@@ -448,6 +449,22 @@ static __inline__ void  disable_tcp_nagle(int fd)
     setsockopt( fd, IPPROTO_TCP, TCP_NODELAY, (void*)&on, sizeof(on) );
 }
 
+static __inline__ void  enable_keepalive(int fd)
+{
+   int optval;
+   socklen_t optlen = sizeof(optval);
+
+   /* Set the option active */
+   optval = 1;
+   optlen = sizeof(optval);
+   setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &optval, optlen);
+   optval = 2;
+   setsockopt(fd, SOL_TCP, TCP_KEEPCNT, &optval, optlen);
+   optval = 2;
+   setsockopt(fd, SOL_TCP, TCP_KEEPIDLE, &optval, optlen);
+   optval = 2;
+   setsockopt(fd, SOL_TCP, TCP_KEEPINTVL, &optval, optlen);
+}
 
 static __inline__ int  unix_socketpair( int  d, int  type, int  protocol, int sv[2] )
 {