summaryrefslogtreecommitdiff
path: root/source4/lib/socket/socket_ipv4.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-06-03 13:20:08 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:17:28 -0500
commit1692bbf2e267eabd7099f0b6153da0c7cf209d1d (patch)
treeb3a223d81b78e980c7a4c764485d2a1312601f93 /source4/lib/socket/socket_ipv4.c
parentff27722fea7fb1727ffeadd3efffb15965a754ed (diff)
downloadsamba-1692bbf2e267eabd7099f0b6153da0c7cf209d1d.tar.gz
samba-1692bbf2e267eabd7099f0b6153da0c7cf209d1d.tar.bz2
samba-1692bbf2e267eabd7099f0b6153da0c7cf209d1d.zip
r7227: added a socket_pending() call to abstract away the FIONREAD ioctl. It
will be interesting to see if this causes any portability problems, as it is a less commonly used call. (This used to be commit f6993db31d93059c70b44a23005ba444e205870f)
Diffstat (limited to 'source4/lib/socket/socket_ipv4.c')
-rw-r--r--source4/lib/socket/socket_ipv4.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/source4/lib/socket/socket_ipv4.c b/source4/lib/socket/socket_ipv4.c
index 93ddf68046..0fc65698c4 100644
--- a/source4/lib/socket/socket_ipv4.c
+++ b/source4/lib/socket/socket_ipv4.c
@@ -435,6 +435,16 @@ static int ipv4_get_fd(struct socket_context *sock)
return sock->fd;
}
+static NTSTATUS ipv4_pending(struct socket_context *sock, size_t *npending)
+{
+ int value = 0;
+ if (ioctl(sock->fd, FIONREAD, &value) == 0) {
+ *npending = value;
+ return NT_STATUS_OK;
+ }
+ return map_nt_error_from_unix(errno);
+}
+
static const struct socket_ops ipv4_ops = {
.name = "ipv4",
.fn_init = ipv4_init,
@@ -446,6 +456,7 @@ static const struct socket_ops ipv4_ops = {
.fn_recvfrom = ipv4_recvfrom,
.fn_send = ipv4_send,
.fn_sendto = ipv4_sendto,
+ .fn_pending = ipv4_pending,
.fn_close = ipv4_close,
.fn_set_option = ipv4_set_option,