Commit 86d6ba07 authored by Max Kellermann's avatar Max Kellermann Committed by Eric Wong

provide switches for TCP and unix sockets

autoconf flags for enabling and disabling TCP and unix domain socket support. Embedded machines without a TCP stack may be better off without TCP support. git-svn-id: https://svn.musicpd.org/mpd/trunk@7236 09075e82-0dd4-0310-85a5-a0d7c8717e4f
parent d4f319de
......@@ -65,6 +65,8 @@ AC_ARG_ENABLE(ao,[ --enable-ao enable support for libao (default: d
AC_ARG_ENABLE(shout,[ --disable-shout disable support for streaming through shout (default: enable)],[enable_shout=$enableval],[enable_shout=yes])
AC_ARG_ENABLE(iconv,[ --disable-iconv disable iconv support (default: enable)],[enable_iconv=$enableval],[enable_iconv=yes])
AC_ARG_ENABLE(ipv6,[ --disable-ipv6 disable IPv6 support (default: enable)],[enable_ipv6=$enableval],[enable_ipv6=yes])
AC_ARG_ENABLE(tcp,[ --disable-tcp disable support for clients connecting via TCP (default: enable)],[enable_tcp=$enableval],[enable_tcp=yes])
AC_ARG_ENABLE(un,[ --enable-un enable support for clients connecting via unix domain sockets (default: disable)],[enable_un=$enableval],[enable_un=no])
AC_ARG_ENABLE(oss,[ --disable-oss disable OSS support (default: enable)],[enable_oss=$enableval],[enable_oss=yes])
AC_ARG_ENABLE(alsa,[ --disable-alsa disable ALSA support (default: enable)],[enable_alsa=$enableval],[enable_alsa=yes])
AC_ARG_ENABLE(jack,[ --disable-jack disable jack support (default: enable)],[enable_jack=$enableval],[enable_jack=yes])
......@@ -132,6 +134,11 @@ dnl AC_CHECK_HEADER(langinfo.h,[enable_langinfo=yes;AC_DEFINE(HAVE_LANGINFO,1,[D
AM_LANGINFO_CODESET
AC_CHECK_HEADER(locale.h,[enable_locale=yes;AC_DEFINE(HAVE_LOCALE,1,[Define if locale.h is present])],enable_locale=no)
if test x$enable_tcp = xno; then
# if we don't support TCP, we don't need IPv6 either
enable_ipv6=no
fi
if test x$enable_ipv6 = xyes; then
AC_MSG_CHECKING(for ipv6)
AC_EGREP_CPP([AP_maGiC_VALUE],
......@@ -151,6 +158,14 @@ AP_maGiC_VALUE
)
fi
if test x$enable_tcp = xyes; then
AC_DEFINE(HAVE_TCP, 1, [Define if TCP socket support is enabled])
fi
if test x$enable_un = xyes; then
AC_DEFINE(HAVE_UN, 1, [Define if unix domain socket support is enabled])
fi
enable_osx=no
case $host in
*-darwin*)
......@@ -638,6 +653,27 @@ echo ""
echo "########### MPD CONFIGURATION ############"
echo ""
echo " Client Support:"
if test x$enable_tcp = xyes; then
echo " TCP support ...................enabled"
else
echo " TCP support ...................disabled"
fi
if test x$enable_un = xyes; then
echo " Unix domain socket support ....enabled"
else
echo " Unix domain socket support ....disabled"
fi
echo ""
if
test x$enable_tcp = xno &&
test x$enable_un = xno; then
AC_MSG_ERROR([No client interfaces configured!])
fi
echo " Playback Support:"
if test x$enable_ao = xyes; then
echo " libao support .................enabled"
......
......@@ -245,6 +245,7 @@ void openAInterface(int fd, struct sockaddr *addr)
} else {
const char *hostname;
switch (addr->sa_family) {
#ifdef HAVE_TCP
case AF_INET:
hostname = (const char *)inet_ntoa(((struct sockaddr_in *)
addr)->sin_addr);
......@@ -267,9 +268,12 @@ void openAInterface(int fd, struct sockaddr *addr)
}
break;
#endif
#endif /* HAVE_TCP */
#ifdef HAVE_UN
case AF_UNIX:
hostname = "local connection";
break;
#endif /* HAVE_UN */
default:
hostname = "unknown";
}
......
......@@ -74,6 +74,7 @@ static int establishListen(const struct sockaddr *addrp, socklen_t addrlen)
int allowReuse = ALLOW_REUSE;
switch (addrp->sa_family) {
#ifdef HAVE_TCP
case AF_INET:
pf = PF_INET;
break;
......@@ -82,9 +83,12 @@ static int establishListen(const struct sockaddr *addrp, socklen_t addrlen)
pf = PF_INET6;
break;
#endif
#endif /* HAVE_TCP */
#ifdef HAVE_UN
case AF_UNIX:
pf = PF_UNIX;
break;
#endif /* HAVE_UN */
default:
FATAL("unknown address family: %i\n", addrp->sa_family);
}
......@@ -123,6 +127,7 @@ static void parseListenConfigParam(unsigned int port, ConfigParam * param)
{
const struct sockaddr *addrp;
socklen_t addrlen;
#ifdef HAVE_TCP
struct sockaddr_in sin4;
#ifdef HAVE_IPV6
struct sockaddr_in6 sin6;
......@@ -135,8 +140,10 @@ static void parseListenConfigParam(unsigned int port, ConfigParam * param)
memset(&sin4, 0, sizeof(struct sockaddr_in));
sin4.sin_port = htons(port);
sin4.sin_family = AF_INET;
#endif /* HAVE_TCP */
if (!param || 0 == strcmp(param->value, "any")) {
#ifdef HAVE_TCP
DEBUG("binding to any address\n");
#ifdef HAVE_IPV6
if (useIpv6) {
......@@ -157,6 +164,10 @@ static void parseListenConfigParam(unsigned int port, ConfigParam * param)
#endif
BINDERROR();
}
#else /* HAVE_TCP */
FATAL("TCP support is disabled\n");
#endif /* HAVE_TCP */
#ifdef HAVE_UN
} else if (param->value[0] == '/') {
size_t path_length;
struct sockaddr_un sun;
......@@ -173,7 +184,9 @@ static void parseListenConfigParam(unsigned int port, ConfigParam * param)
if (establishListen(addrp, addrlen) < 0)
BINDERROR();
#endif /* HAVE_UN */
} else {
#ifdef HAVE_TCP
struct hostent *he;
DEBUG("binding to address for %s\n", param->value);
if (!(he = gethostbyname(param->value))) {
......@@ -207,6 +220,9 @@ static void parseListenConfigParam(unsigned int port, ConfigParam * param)
if (establishListen(addrp, addrlen) < 0)
BINDERROR();
#else /* HAVE_TCP */
FATAL("TCP support is disabled\n");
#endif /* HAVE_TCP */
}
}
......
......@@ -64,7 +64,6 @@
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/un.h>
#include <pwd.h>
#include <grp.h>
#include <limits.h>
......@@ -75,4 +74,8 @@
#include <sys/ipc.h>
#include <sys/shm.h>
#ifdef HAVE_UN
#include <sys/un.h>
#endif
#endif /* OS_COMPAT_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment