summaryrefslogtreecommitdiff
path: root/source4/lib/socket/socket.h
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-01-19 03:20:20 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:08:59 -0500
commit8783aa8ea57c3a6989e0722d5184e98d543352d4 (patch)
tree93df839740cf04b88ec6ff9f81fcde5c99e77951 /source4/lib/socket/socket.h
parent6c310003d21fe832da46bbfeb078f716d87be04f (diff)
downloadsamba-8783aa8ea57c3a6989e0722d5184e98d543352d4.tar.gz
samba-8783aa8ea57c3a6989e0722d5184e98d543352d4.tar.bz2
samba-8783aa8ea57c3a6989e0722d5184e98d543352d4.zip
r4831: added udp support to our generic sockets library.
I decided to incorporate the udp support into the socket_ipv4.c backend (and later in socket_ipv6.c) rather than doing a separate backend, as so much of the code is shareable. Basically this adds a socket_sendto() and a socket_recvfrom() call and not much all. For udp servers, I decided to keep the call as socket_listen(), even though dgram servers don't actually call listen(). This keeps the API consistent. I also added a simple local sockets testsuite in smbtorture, LOCAL-SOCKET (This used to be commit 9f12a45a05c5c447fb4ec18c8dd28f70e90e32a5)
Diffstat (limited to 'source4/lib/socket/socket.h')
-rw-r--r--source4/lib/socket/socket.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/source4/lib/socket/socket.h b/source4/lib/socket/socket.h
index 7dd8c0ae17..162a05cb40 100644
--- a/source4/lib/socket/socket.h
+++ b/source4/lib/socket/socket.h
@@ -24,12 +24,12 @@
struct socket_context;
enum socket_type {
- SOCKET_TYPE_STREAM
+ SOCKET_TYPE_STREAM,
+ SOCKET_TYPE_DGRAM
};
struct socket_ops {
const char *name;
- enum socket_type type;
NTSTATUS (*fn_init)(struct socket_context *sock);
@@ -50,9 +50,16 @@ struct socket_ops {
/* general ops */
NTSTATUS (*fn_recv)(struct socket_context *sock, void *buf,
- size_t wantlen, size_t *nread, uint32_t flags);
+ size_t wantlen, size_t *nread, uint32_t flags);
NTSTATUS (*fn_send)(struct socket_context *sock,
- const DATA_BLOB *blob, size_t *sendlen, uint32_t flags);
+ const DATA_BLOB *blob, size_t *sendlen, uint32_t flags);
+
+ NTSTATUS (*fn_sendto)(struct socket_context *sock,
+ const DATA_BLOB *blob, size_t *sendlen, uint32_t flags,
+ const char *dest_addr, int dest_port);
+ NTSTATUS (*fn_recvfrom)(struct socket_context *sock,
+ void *buf, size_t wantlen, size_t *nread, uint32_t flags,
+ const char **src_addr, int *src_port);
void (*fn_close)(struct socket_context *sock);