From: Sepherosa Ziehau Date: Fri, 5 Aug 2011 05:53:17 +0000 (+0800) Subject: getsockopt: Add SO_SNDSPACE X-Git-Tag: v2.12.0~240 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/755c519ce0fab5471f3b9f206fe894f352ab42c5 getsockopt: Add SO_SNDSPACE This SOL_SOCKET get-only option is used to get the approximate free space of send buffer. --- diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index ff5236a992..204ff48a49 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -1549,6 +1549,7 @@ int sogetopt(struct socket *so, struct sockopt *sopt) { int error, optval; + long optval_l; struct linger l; struct timeval tv; #ifdef INET @@ -1635,6 +1636,11 @@ integer: error = sooptcopyout(sopt, &tv, sizeof tv); break; + case SO_SNDSPACE: + optval_l = ssb_space(&so->so_snd); + error = sooptcopyout(sopt, &optval_l, sizeof(optval_l)); + break; + default: error = ENOPROTOOPT; break; diff --git a/sys/sys/socket.h b/sys/sys/socket.h index 65a0745bc7..593c4237f6 100644 --- a/sys/sys/socket.h +++ b/sys/sys/socket.h @@ -101,6 +101,7 @@ typedef __socklen_t socklen_t; #define SO_ERROR 0x1007 /* get error status and clear */ #define SO_TYPE 0x1008 /* get socket type */ /*efine SO_PRIVSTATE 0x1009 get/deny privileged state */ +#define SO_SNDSPACE 0x100a /* get appr. send buffer free space */ /* * Structure used for manipulating linger option.