modlib_LTLIBRARIES += \
module-cli.la \
module-cli-protocol-tcp.la \
- module-cli-protocol-tcp6.la \
module-simple-protocol-tcp.la \
- module-simple-protocol-tcp6.la \
module-esound-protocol-tcp.la \
- module-esound-protocol-tcp6.la \
module-native-protocol-tcp.la \
- module-native-protocol-tcp6.la \
module-native-protocol-fd.la \
module-sine.la \
module-combine.la \
module-null-sink.la \
module-esound-sink.la \
module-http-protocol-tcp.la \
- module-http-protocol-tcp6.la \
module-detect.la
if HAVE_AF_UNIX
SYMDEF_FILES = \
modules/module-cli-symdef.h \
modules/module-cli-protocol-tcp-symdef.h \
- modules/module-cli-protocol-tcp6-symdef.h \
modules/module-cli-protocol-unix-symdef.h \
modules/module-pipe-sink-symdef.h \
modules/module-pipe-source-symdef.h \
modules/module-simple-protocol-tcp-symdef.h \
- modules/module-simple-protocol-tcp6-symdef.h \
modules/module-simple-protocol-unix-symdef.h \
modules/module-esound-protocol-tcp-symdef.h \
- modules/module-esound-protocol-tcp6-symdef.h \
modules/module-esound-protocol-unix-symdef.h \
modules/module-native-protocol-tcp-symdef.h \
- modules/module-native-protocol-tcp6-symdef.h \
modules/module-native-protocol-unix-symdef.h \
modules/module-native-protocol-fd-symdef.h \
modules/module-sine-symdef.h \
modules/module-lirc-symdef.h \
modules/module-mmkbd-evdev-symdef.h \
modules/module-http-protocol-tcp-symdef.h \
- modules/module-http-protocol-tcp6-symdef.h \
modules/module-http-protocol-unix-symdef.h \
modules/module-x11-bell-symdef.h \
modules/module-x11-publish-symdef.h \
module_simple_protocol_tcp_la_LDFLAGS = -module -avoid-version
module_simple_protocol_tcp_la_LIBADD = $(AM_LIBADD) libpolypcore.la libprotocol-simple.la libsocket-server.la
-module_simple_protocol_tcp6_la_SOURCES = modules/module-protocol-stub.c
-module_simple_protocol_tcp6_la_CFLAGS = -DUSE_TCP6_SOCKETS -DUSE_PROTOCOL_SIMPLE $(AM_CFLAGS)
-module_simple_protocol_tcp6_la_LDFLAGS = -module -avoid-version
-module_simple_protocol_tcp6_la_LIBADD = $(AM_LIBADD) libpolypcore.la libprotocol-simple.la libsocket-server.la
-
module_simple_protocol_unix_la_SOURCES = modules/module-protocol-stub.c
module_simple_protocol_unix_la_CFLAGS = -DUSE_UNIX_SOCKETS -DUSE_PROTOCOL_SIMPLE $(AM_CFLAGS)
module_simple_protocol_unix_la_LDFLAGS = -module -avoid-version
module_cli_protocol_tcp_la_LDFLAGS = -module -avoid-version
module_cli_protocol_tcp_la_LIBADD = $(AM_LIBADD) libpolypcore.la libprotocol-cli.la libsocket-server.la
-module_cli_protocol_tcp6_la_SOURCES = modules/module-protocol-stub.c
-module_cli_protocol_tcp6_la_CFLAGS = -DUSE_TCP6_SOCKETS -DUSE_PROTOCOL_CLI $(AM_CFLAGS)
-module_cli_protocol_tcp6_la_LDFLAGS = -module -avoid-version
-module_cli_protocol_tcp6_la_LIBADD = $(AM_LIBADD) libpolypcore.la libprotocol-cli.la libsocket-server.la
-
module_cli_protocol_unix_la_SOURCES = modules/module-protocol-stub.c
module_cli_protocol_unix_la_CFLAGS = -DUSE_UNIX_SOCKETS -DUSE_PROTOCOL_CLI $(AM_CFLAGS)
module_cli_protocol_unix_la_LDFLAGS = -module -avoid-version
module_http_protocol_tcp_la_LDFLAGS = -module -avoid-version
module_http_protocol_tcp_la_LIBADD = $(AM_LIBADD) libpolypcore.la libprotocol-http.la libsocket-server.la
-module_http_protocol_tcp6_la_SOURCES = modules/module-protocol-stub.c
-module_http_protocol_tcp6_la_CFLAGS = -DUSE_TCP6_SOCKETS -DUSE_PROTOCOL_HTTP $(AM_CFLAGS)
-module_http_protocol_tcp6_la_LDFLAGS = -module -avoid-version
-module_http_protocol_tcp6_la_LIBADD = $(AM_LIBADD) libpolypcore.la libprotocol-http.la libsocket-server.la
-
module_http_protocol_unix_la_SOURCES = modules/module-protocol-stub.c
module_http_protocol_unix_la_CFLAGS = -DUSE_UNIX_SOCKETS -DUSE_PROTOCOL_HTTP $(AM_CFLAGS)
module_http_protocol_unix_la_LDFLAGS = -module -avoid-version
module_native_protocol_tcp_la_LDFLAGS = -module -avoid-version
module_native_protocol_tcp_la_LIBADD = $(AM_LIBADD) libpolypcore.la libprotocol-native.la libsocket-server.la
-module_native_protocol_tcp6_la_SOURCES = modules/module-protocol-stub.c
-module_native_protocol_tcp6_la_CFLAGS = -DUSE_TCP6_SOCKETS -DUSE_PROTOCOL_NATIVE $(AM_CFLAGS)
-module_native_protocol_tcp6_la_LDFLAGS = -module -avoid-version
-module_native_protocol_tcp6_la_LIBADD = $(AM_LIBADD) libpolypcore.la libprotocol-native.la libsocket-server.la
-
module_native_protocol_unix_la_SOURCES = modules/module-protocol-stub.c
module_native_protocol_unix_la_CFLAGS = -DUSE_UNIX_SOCKETS -DUSE_PROTOCOL_NATIVE $(AM_CFLAGS)
module_native_protocol_unix_la_LDFLAGS = -module -avoid-version
module_esound_protocol_tcp_la_LDFLAGS = -module -avoid-version
module_esound_protocol_tcp_la_LIBADD = $(AM_LIBADD) libpolypcore.la libprotocol-esound.la libsocket-server.la
-module_esound_protocol_tcp6_la_SOURCES = modules/module-protocol-stub.c
-module_esound_protocol_tcp6_la_CFLAGS = -DUSE_TCP6_SOCKETS -DUSE_PROTOCOL_ESOUND $(AM_CFLAGS)
-module_esound_protocol_tcp6_la_LDFLAGS = -module -avoid-version
-module_esound_protocol_tcp6_la_LIBADD = $(AM_LIBADD) libpolypcore.la libprotocol-esound.la libsocket-server.la
-
module_esound_protocol_unix_la_SOURCES = modules/module-protocol-stub.c
module_esound_protocol_unix_la_CFLAGS = -DUSE_UNIX_SOCKETS -DUSE_PROTOCOL_ESOUND $(AM_CFLAGS)
module_esound_protocol_unix_la_LDFLAGS = -module -avoid-version
#ifdef USE_TCP_SOCKETS
#define SOCKET_DESCRIPTION "(TCP sockets)"
#define SOCKET_USAGE "port=<TCP port number> loopback=<listen on loopback device only?>"
-#elif defined(USE_TCP6_SOCKETS)
-#define SOCKET_DESCRIPTION "(TCP/IPv6 sockets)"
-#define SOCKET_USAGE "port=<TCP port number> loopback=<listen on loopback device only?>"
#else
#define SOCKET_DESCRIPTION "(UNIX sockets)"
#define SOCKET_USAGE "socket=<path to UNIX socket>"
#define MODULE_ARGUMENTS "rate", "format", "channels", "sink", "source", "playback", "record",
#if defined(USE_TCP_SOCKETS)
#include "module-simple-protocol-tcp-symdef.h"
- #elif defined(USE_TCP6_SOCKETS)
- #include "module-simple-protocol-tcp6-symdef.h"
#else
#include "module-simple-protocol-unix-symdef.h"
#endif
#define MODULE_ARGUMENTS
#ifdef USE_TCP_SOCKETS
#include "module-cli-protocol-tcp-symdef.h"
- #elif defined(USE_TCP6_SOCKETS)
- #include "module-cli-protocol-tcp6-symdef.h"
#else
#include "module-cli-protocol-unix-symdef.h"
#endif
#define MODULE_ARGUMENTS
#ifdef USE_TCP_SOCKETS
#include "module-http-protocol-tcp-symdef.h"
- #elif defined(USE_TCP6_SOCKETS)
- #include "module-http-protocol-tcp6-symdef.h"
#else
#include "module-http-protocol-unix-symdef.h"
#endif
#define MODULE_ARGUMENTS "public", "cookie",
#ifdef USE_TCP_SOCKETS
#include "module-native-protocol-tcp-symdef.h"
- #elif defined(USE_TCP6_SOCKETS)
- #include "module-native-protocol-tcp6-symdef.h"
#else
#include "module-native-protocol-unix-symdef.h"
#endif
#define MODULE_ARGUMENTS "sink", "source", "public", "cookie",
#ifdef USE_TCP_SOCKETS
#include "module-esound-protocol-tcp-symdef.h"
- #elif defined(USE_TCP6_SOCKETS)
- #include "module-esound-protocol-tcp6-symdef.h"
#else
#include "module-esound-protocol-unix-symdef.h"
#endif
static const char* const valid_modargs[] = {
MODULE_ARGUMENTS
-#if defined(USE_TCP_SOCKETS) || defined(USE_TCP6_SOCKETS)
+#if defined(USE_TCP_SOCKETS)
"port",
"loopback",
#else
static pa_socket_server *create_socket_server(pa_core *c, pa_modargs *ma) {
pa_socket_server *s;
-#if defined(USE_TCP_SOCKETS) || defined(USE_TCP6_SOCKETS)
+#if defined(USE_TCP_SOCKETS)
int loopback = 1;
uint32_t port = IPV4_PORT;
return NULL;
}
-#ifdef USE_TCP6_SOCKETS
- if (!(s = pa_socket_server_new_ipv6(c->mainloop, loopback ? (const uint8_t*) &in6addr_loopback : (const uint8_t*) &in6addr_any, port)))
- return NULL;
-#else
- if (!(s = pa_socket_server_new_ipv4(c->mainloop, loopback ? INADDR_LOOPBACK : INADDR_ANY, port, TCPWRAP_SERVICE)))
- return NULL;
-#endif
+
+ if (loopback) {
+ if (!(s = pa_socket_server_new_ip_loopback(c->mainloop, port, TCPWRAP_SERVICE)))
+ return NULL;
+ } else {
+ if (!(s = pa_socket_server_new_ip_any(c->mainloop, port, TCPWRAP_SERVICE)))
+ return NULL;
+ }
#else
int r;
void pa__done(pa_core *c, pa_module*m) {
assert(c && m);
-#if defined(USE_PROTOCOL_ESOUND)
- if (remove (ESD_UNIX_SOCKET_NAME) != 0)
+#if defined(USE_PROTOCOL_ESOUND) && !defined(USE_TCP_SOCKETS)
+ if (remove(ESD_UNIX_SOCKET_NAME) != 0)
pa_log("%s: Failed to remove %s : %s.\n", __FILE__, ESD_UNIX_SOCKET_NAME, strerror (errno));
- if (remove (ESD_UNIX_SOCKET_DIR) != 0)
+ if (remove(ESD_UNIX_SOCKET_DIR) != 0)
pa_log("%s: Failed to remove %s : %s.\n", __FILE__, ESD_UNIX_SOCKET_DIR, strerror (errno));
#endif
#ifdef HAVE_LIBWRAP
- if (s->type == SOCKET_SERVER_IPV4 && s->tcpwrap_service) {
+ if (s->tcpwrap_service) {
struct request_info req;
request_init(&req, RQ_DAEMON, s->tcpwrap_service, RQ_FILE, nfd, NULL);
fromhost(&req);
if (!hosts_access(&req)) {
- pa_log(__FILE__": TCP connection refused by tcpwrap.\n");
+ pa_log_warn(__FILE__": TCP connection refused by tcpwrap.\n");
close(nfd);
goto finish;
}
- pa_log(__FILE__": TCP connection accepted by tcpwrap.\n");
+ pa_log_info(__FILE__": TCP connection accepted by tcpwrap.\n");
}
#endif
assert(m && port);
if ((fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
- pa_log(__FILE__": socket(): %s\n", strerror(errno));
+ pa_log(__FILE__": socket(PF_INET): %s\n", strerror(errno));
goto fail;
}
return NULL;
}
-pa_socket_server* pa_socket_server_new_ipv6(pa_mainloop_api *m, const uint8_t address[16], uint16_t port) {
+pa_socket_server* pa_socket_server_new_ipv6(pa_mainloop_api *m, const uint8_t address[16], uint16_t port, const char *tcpwrap_service) {
pa_socket_server *ss;
int fd = -1;
struct sockaddr_in6 sa;
assert(m && port);
if ((fd = socket(PF_INET6, SOCK_STREAM, 0)) < 0) {
- pa_log(__FILE__": socket(): %s\n", strerror(errno));
+ pa_log(__FILE__": socket(PF_INET6): %s\n", strerror(errno));
goto fail;
}
goto fail;
}
- if ((ss = pa_socket_server_new(m, fd)))
+ if ((ss = pa_socket_server_new(m, fd))) {
ss->type = SOCKET_SERVER_IPV6;
-
+ ss->tcpwrap_service = pa_xstrdup(tcpwrap_service);
+ }
+
return ss;
fail:
return NULL;
}
+pa_socket_server* pa_socket_server_new_ip_loopback(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service) {
+ pa_socket_server *s;
+
+ assert(m);
+ assert(port > 0);
+
+ if (!(s = pa_socket_server_new_ipv6(m, in6addr_loopback.s6_addr, port, tcpwrap_service)))
+ s = pa_socket_server_new_ipv4(m, INADDR_LOOPBACK, port, tcpwrap_service);
+
+ return s;
+}
+
+pa_socket_server* pa_socket_server_new_ip_any(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service) {
+ pa_socket_server *s;
+
+ assert(m);
+ assert(port > 0);
+
+ if (!(s = pa_socket_server_new_ipv6(m, in6addr_any.s6_addr, port, tcpwrap_service)))
+ s = pa_socket_server_new_ipv4(m, INADDR_ANY, port, tcpwrap_service);
+
+ return s;
+}
+
+
static void socket_server_free(pa_socket_server*s) {
assert(s);
close(s->fd);
pa_socket_server* pa_socket_server_new(pa_mainloop_api *m, int fd);
pa_socket_server* pa_socket_server_new_unix(pa_mainloop_api *m, const char *filename);
pa_socket_server* pa_socket_server_new_ipv4(pa_mainloop_api *m, uint32_t address, uint16_t port, const char *tcpwrap_service);
-pa_socket_server* pa_socket_server_new_ipv6(pa_mainloop_api *m, const uint8_t address[16], uint16_t port);
+pa_socket_server* pa_socket_server_new_ipv6(pa_mainloop_api *m, const uint8_t address[16], uint16_t port, const char *tcpwrap_service);
+pa_socket_server* pa_socket_server_new_ip_loopback(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service);
+pa_socket_server* pa_socket_server_new_ip_any(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service);
void pa_socket_server_unref(pa_socket_server*s);
pa_socket_server* pa_socket_server_ref(pa_socket_server *s);