Added listen_addr config param for daemon (Stefan de Konink)

This commit is contained in:
Daniel P. Berrange 2008-05-14 20:57:20 +00:00
parent 1d73398e8f
commit f7fe78dc82
5 changed files with 27 additions and 10 deletions

View File

@ -43,6 +43,7 @@ Patches have also been contributed by:
Mads Chr. Olesen <shiyee@shiyee.dk> Mads Chr. Olesen <shiyee@shiyee.dk>
Cole Robinson <crobinso@redhat.com> Cole Robinson <crobinso@redhat.com>
Anton Protopopov <aspsk2@gmail.com> Anton Protopopov <aspsk2@gmail.com>
Stefan de Konink <skinkie@xs4all.nl>
[....send patches to get your name here....] [....send patches to get your name here....]

View File

@ -1,3 +1,10 @@
Wed May 14 15:34:43 EST 2008 Daniel P. Berrange <berrange@redhat.com>
* qemud/qemud.c: Add 'listen_addr' config param to control
the IP address the daemon listens on (Stefan de Konink)
* qemud/libvirtd.conf: Added example listen_addr config param
* src/remote_internal.h: #define constant for default IP addr
Wed May 14 15:34:43 EST 2008 Daniel P. Berrange <berrange@redhat.com> Wed May 14 15:34:43 EST 2008 Daniel P. Berrange <berrange@redhat.com>
* proxy/libvirt_proxy.c, src/conf.c, src/hash.c, * proxy/libvirt_proxy.c, src/conf.c, src/hash.c,

View File

@ -42,6 +42,11 @@
#tcp_port = "16509" #tcp_port = "16509"
# Override the default configuration which binds to all network
# interfaces. This can be a numeric IPv4/6 address, or hostname
#
# ip_addr = "192.168.0.1"
# Flag toggling mDNS advertizement of the libvirt service. # Flag toggling mDNS advertizement of the libvirt service.
# #

View File

@ -69,6 +69,7 @@ static int ipsock = 0; /* -l Listen for TCP/IP */
/* Defaults for configuration file elements */ /* Defaults for configuration file elements */
static int listen_tls = 1; static int listen_tls = 1;
static int listen_tcp = 0; static int listen_tcp = 0;
static char *listen_addr = (char *) LIBVIRTD_LISTEN_ADDR;
static char *tls_port = (char *) LIBVIRTD_TLS_PORT; static char *tls_port = (char *) LIBVIRTD_TLS_PORT;
static char *tcp_port = (char *) LIBVIRTD_TCP_PORT; static char *tcp_port = (char *) LIBVIRTD_TCP_PORT;
@ -541,7 +542,7 @@ static int qemudListenUnix(struct qemud_server *server,
// See: http://people.redhat.com/drepper/userapi-ipv6.html // See: http://people.redhat.com/drepper/userapi-ipv6.html
static int static int
remoteMakeSockets (int *fds, int max_fds, int *nfds_r, const char *service) remoteMakeSockets (int *fds, int max_fds, int *nfds_r, const char *node, const char *service)
{ {
struct addrinfo *ai; struct addrinfo *ai;
struct addrinfo hints; struct addrinfo hints;
@ -549,7 +550,7 @@ remoteMakeSockets (int *fds, int max_fds, int *nfds_r, const char *service)
hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG; hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG;
hints.ai_socktype = SOCK_STREAM; hints.ai_socktype = SOCK_STREAM;
int e = getaddrinfo (NULL, service, &hints, &ai); int e = getaddrinfo (node, service, &hints, &ai);
if (e != 0) { if (e != 0) {
qemudLog (QEMUD_ERR, _("getaddrinfo: %s\n"), gai_strerror (e)); qemudLog (QEMUD_ERR, _("getaddrinfo: %s\n"), gai_strerror (e));
return -1; return -1;
@ -593,6 +594,7 @@ remoteMakeSockets (int *fds, int max_fds, int *nfds_r, const char *service)
*/ */
static int static int
remoteListenTCP (struct qemud_server *server, remoteListenTCP (struct qemud_server *server,
const char *addr,
const char *port, const char *port,
int type, int type,
int auth) int auth)
@ -602,7 +604,7 @@ remoteListenTCP (struct qemud_server *server,
int i; int i;
struct qemud_socket *sock; struct qemud_socket *sock;
if (remoteMakeSockets (fds, 2, &nfds, port) == -1) if (remoteMakeSockets (fds, 2, &nfds, addr, port) == -1)
return -1; return -1;
for (i = 0; i < nfds; ++i) { for (i = 0; i < nfds; ++i) {
@ -779,14 +781,14 @@ static struct qemud_server *qemudNetworkInit(struct qemud_server *server) {
#endif #endif
if (ipsock) { if (ipsock) {
if (listen_tcp && remoteListenTCP (server, tcp_port, QEMUD_SOCK_TYPE_TCP, auth_tcp) < 0) if (listen_tcp && remoteListenTCP (server, listen_addr, tcp_port, QEMUD_SOCK_TYPE_TCP, auth_tcp) < 0)
goto cleanup; goto cleanup;
if (listen_tls) { if (listen_tls) {
if (remoteInitializeGnuTLS () < 0) if (remoteInitializeGnuTLS () < 0)
goto cleanup; goto cleanup;
if (remoteListenTCP (server, tls_port, QEMUD_SOCK_TYPE_TLS, auth_tls) < 0) if (remoteListenTCP (server, listen_addr, tls_port, QEMUD_SOCK_TYPE_TLS, auth_tls) < 0)
goto cleanup; goto cleanup;
} }
} }
@ -1921,7 +1923,8 @@ remoteReadConfigFile (struct qemud_server *server, const char *filename)
GET_CONF_INT (conf, filename, listen_tls); GET_CONF_INT (conf, filename, listen_tls);
GET_CONF_STR (conf, filename, tls_port); GET_CONF_STR (conf, filename, tls_port);
GET_CONF_STR (conf, filename, tcp_port); GET_CONF_STR (conf, filename, tcp_port);
GET_CONF_STR (conf, filename, listen_addr);
if (remoteConfigGetAuth(conf, "auth_unix_rw", &auth_unix_rw, filename) < 0) if (remoteConfigGetAuth(conf, "auth_unix_rw", &auth_unix_rw, filename) < 0)
goto free_and_fail; goto free_and_fail;
#if HAVE_POLKIT #if HAVE_POLKIT
@ -2006,10 +2009,10 @@ remoteReadConfigFile (struct qemud_server *server, const char *filename)
free (unix_sock_rw_perms); free (unix_sock_rw_perms);
free (unix_sock_group); free (unix_sock_group);
/* Don't bother trying to free tcp_port, tls_port, key_file, cert_file, /* Don't bother trying to free listen_addr, tcp_port, tls_port, key_file,
ca_file, or crl_file, since they are initialized to non-malloc'd cert_file, ca_file, or crl_file, since they are initialized to
strings. Besides, these are static variables, and callers are non-malloc'd strings. Besides, these are static variables, and callers
unlikely to call this function more than once, so there wouldn't are unlikely to call this function more than once, so there wouldn't
even be a real leak. */ even be a real leak. */
if (tls_allowed_dn_list) { if (tls_allowed_dn_list) {

View File

@ -32,6 +32,7 @@ extern "C" {
int remoteRegister (void); int remoteRegister (void);
#define LIBVIRTD_LISTEN_ADDR NULL
#define LIBVIRTD_TLS_PORT "16514" #define LIBVIRTD_TLS_PORT "16514"
#define LIBVIRTD_TCP_PORT "16509" #define LIBVIRTD_TCP_PORT "16509"
#define LIBVIRTD_PRIV_UNIX_SOCKET LOCAL_STATE_DIR "/run/libvirt/libvirt-sock" #define LIBVIRTD_PRIV_UNIX_SOCKET LOCAL_STATE_DIR "/run/libvirt/libvirt-sock"