From patchwork Thu Jan 17 14:59:29 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hannes Reinecke X-Patchwork-Id: 1996881 Return-Path: X-Original-To: patchwork-dm-devel@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by patchwork2.kernel.org (Postfix) with ESMTP id F1AA2DF2E1 for ; Thu, 17 Jan 2013 15:03:42 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r0HF0hHd029584; Thu, 17 Jan 2013 10:00:43 -0500 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r0HExdpJ004834 for ; Thu, 17 Jan 2013 09:59:39 -0500 Received: from mx1.redhat.com (ext-mx13.extmail.prod.ext.phx2.redhat.com [10.5.110.18]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r0HExdlb024344 for ; Thu, 17 Jan 2013 09:59:39 -0500 Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r0HExbt7025359 for ; Thu, 17 Jan 2013 09:59:38 -0500 Received: from relay2.suse.de (unknown [195.135.220.254]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id EAA34A51CB; Thu, 17 Jan 2013 15:59:36 +0100 (CET) From: Hannes Reinecke To: Christophe Varoqui Date: Thu, 17 Jan 2013 15:59:29 +0100 Message-Id: <1358434773-2002-8-git-send-email-hare@suse.de> In-Reply-To: <1358434773-2002-1-git-send-email-hare@suse.de> References: <1358434773-2002-1-git-send-email-hare@suse.de> X-RedHat-Spam-Score: -7.301 (BAYES_00, DCC_REPUT_00_12, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Scanned-By: MIMEDefang 2.68 on 10.5.110.18 X-loop: dm-devel@redhat.com Cc: dm-devel@redhat.com Subject: [dm-devel] [PATCH 07/11] multipathd: switch to abstract sockets for CLI commands X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk Reply-To: device-mapper development List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com Instead of using file-based sockets we should be switching to abstract sockets. Otherwise multipathd won't be able to start if the directory is not available. Signed-off-by: Hannes Reinecke --- libmultipath/defaults.h | 2 +- libmultipath/uxsock.c | 27 ++++++++++++++------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h index 32948d8..b83d9fb 100644 --- a/libmultipath/defaults.h +++ b/libmultipath/defaults.h @@ -24,7 +24,7 @@ #define MAX_DEV_LOSS_TMO 0x7FFFFFFF #define DEFAULT_PIDFILE "/var/run/multipathd.pid" -#define DEFAULT_SOCKET "/var/run/multipathd.sock" +#define DEFAULT_SOCKET "/org/kernel/linux/storage/multipathd" #define DEFAULT_CONFIGFILE "/etc/multipath.conf" #define DEFAULT_BINDINGS_FILE "/etc/multipath/bindings" #define DEFAULT_WWIDS_FILE "/etc/multipath/wwids" diff --git a/libmultipath/uxsock.c b/libmultipath/uxsock.c index e786899..f3e8dec 100644 --- a/libmultipath/uxsock.c +++ b/libmultipath/uxsock.c @@ -25,19 +25,21 @@ */ int ux_socket_connect(const char *name) { - int fd; + int fd, len; struct sockaddr_un addr; memset(&addr, 0, sizeof(addr)); - addr.sun_family = AF_UNIX; - strncpy(addr.sun_path, name, sizeof(addr.sun_path)); + addr.sun_family = AF_LOCAL; + addr.sun_path[0] = '\0'; + len = strlen(name) + 1; + strncpy(&addr.sun_path[1], name, len); - fd = socket(AF_UNIX, SOCK_STREAM, 0); + fd = socket(AF_LOCAL, SOCK_STREAM, 0); if (fd == -1) { return -1; } - if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) == -1) { + if (connect(fd, (struct sockaddr *)&addr, len) == -1) { close(fd); return -1; } @@ -51,20 +53,19 @@ int ux_socket_connect(const char *name) */ int ux_socket_listen(const char *name) { - int fd; + int fd, len; struct sockaddr_un addr; - /* get rid of any old socket */ - unlink(name); - - fd = socket(AF_UNIX, SOCK_STREAM, 0); + fd = socket(AF_LOCAL, SOCK_STREAM, 0); if (fd == -1) return -1; memset(&addr, 0, sizeof(addr)); - addr.sun_family = AF_UNIX; - strncpy(addr.sun_path, name, sizeof(addr.sun_path)); + addr.sun_family = AF_LOCAL; + addr.sun_path[0] = '\0'; + len = strlen(name) + 1; + strncpy(&addr.sun_path[1], name, len); - if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)) == -1) { + if (bind(fd, (struct sockaddr *)&addr, len) == -1) { close(fd); return -1; }