summaryrefslogtreecommitdiff
path: root/source3/lib
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>1999-12-04 19:14:37 +0000
committerLuke Leighton <lkcl@samba.org>1999-12-04 19:14:37 +0000
commitf521205cb3d188fdcadcbd205dcfda4a7dcb89a0 (patch)
tree19135ba0b36cd2108543a462c3b9ec47d4e1dd18 /source3/lib
parent8a8a7da5186596ee86b0b188156bca7d5e664784 (diff)
downloadsamba-f521205cb3d188fdcadcbd205dcfda4a7dcb89a0.tar.gz
samba-f521205cb3d188fdcadcbd205dcfda4a7dcb89a0.tar.bz2
samba-f521205cb3d188fdcadcbd205dcfda4a7dcb89a0.zip
jeremy is going to hate me for this.
created an "nmb-agent" utility that, yes: it connects to the 137 socket and accepts unix socket connections which it redirects onto port 137. it uses the name_trn_id field to filter requests to the correct location. name_query() and name_status() are the first victims to use this feature (by specifying a file descriptor of -1). (This used to be commit d923bc8da2cf996408194d98381409191dd81a16)
Diffstat (limited to 'source3/lib')
-rw-r--r--source3/lib/util_sock.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c
index fc5c2958e4..c0ca723e38 100644
--- a/source3/lib/util_sock.c
+++ b/source3/lib/util_sock.c
@@ -862,3 +862,35 @@ char *client_addr(int fd)
global_client_addr_done = True;
return addr_buf;
}
+
+/*******************************************************************
+ opens and connects to a unix pipe socket
+ ******************************************************************/
+int open_pipe_sock(char *path)
+{
+ int sock;
+ struct sockaddr_un sa;
+
+ sock = socket(AF_UNIX, SOCK_STREAM, 0);
+
+ if (sock < 0)
+ {
+ DEBUG(0, ("unix socket open failed\n"));
+ return sock;
+ }
+
+ ZERO_STRUCT(sa);
+ sa.sun_family = AF_UNIX;
+ safe_strcpy(sa.sun_path, path, sizeof(sa.sun_path)-1);
+
+ DEBUG(10, ("socket open succeeded. file name: %s\n", sa.sun_path));
+
+ if (connect(sock, (struct sockaddr*) &sa, sizeof(sa)) < 0)
+ {
+ DEBUG(0,("socket connect to %s failed\n", sa.sun_path));
+ close(sock);
+ return -1;
+ }
+
+ return sock;
+}