From c70883b1911d6801565f325656c8ca263a2c0903 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 10 Jan 2014 15:24:42 -0800 Subject: [PATCH] shared: Use a union for sockaddr for mgmt socket --- src/shared/mgmt.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/shared/mgmt.c b/src/shared/mgmt.c index 82e785a80..a391ab587 100644 --- a/src/shared/mgmt.c +++ b/src/shared/mgmt.c @@ -450,7 +450,10 @@ struct mgmt *mgmt_new(int fd) struct mgmt *mgmt_new_default(void) { struct mgmt *mgmt; - struct sockaddr_hci addr; + union { + struct sockaddr common; + struct sockaddr_hci hci; + } addr; int fd; fd = socket(PF_BLUETOOTH, SOCK_RAW | SOCK_CLOEXEC | SOCK_NONBLOCK, @@ -459,11 +462,11 @@ struct mgmt *mgmt_new_default(void) return NULL; memset(&addr, 0, sizeof(addr)); - addr.hci_family = AF_BLUETOOTH; - addr.hci_dev = HCI_DEV_NONE; - addr.hci_channel = HCI_CHANNEL_CONTROL; + addr.hci.hci_family = AF_BLUETOOTH; + addr.hci.hci_dev = HCI_DEV_NONE; + addr.hci.hci_channel = HCI_CHANNEL_CONTROL; - if (bind(fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) { + if (bind(fd, &addr.common, sizeof(addr.hci)) < 0) { close(fd); return NULL; } -- 2.11.0