From f53f81337213a01710efa004107003a1e252574a Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Wed, 18 Feb 2009 14:31:49 +0200 Subject: Move BT_SECURITY handling to their own functions --- common/btio.c | 78 ++++++++++++++++++++++++++++------------------------------- 1 file changed, 37 insertions(+), 41 deletions(-) (limited to 'common/btio.c') diff --git a/common/btio.c b/common/btio.c index 24b0755d..4cfffdaf 100644 --- a/common/btio.c +++ b/common/btio.c @@ -262,6 +262,39 @@ static int l2cap_connect(int sock, const bdaddr_t *dst, uint16_t psm) return 0; } +static gboolean set_sec_level(int sock, int level, GError **err) +{ + struct bt_security sec; + + memset(&sec, 0, sizeof(sec)); + sec.level = level; + + if (setsockopt(sock, SOL_BLUETOOTH, BT_SECURITY, &sec, + sizeof(sec)) < 0) { + ERROR_FAILED(err, "setsockopt(BT_SECURITY)", errno); + return FALSE; + } + + return TRUE; +} + +static gboolean get_sec_level(int sock, int *level, GError **err) +{ + struct bt_security sec; + socklen_t len; + + memset(&sec, 0, sizeof(sec)); + len = sizeof(sec); + if (getsockopt(sock, SOL_BLUETOOTH, BT_SECURITY, &sec, &len) < 0) { + ERROR_FAILED(err, "getsockopt(BT_SECURITY)", errno); + return FALSE; + } + + *level = sec.level; + + return TRUE; +} + static gboolean l2cap_set(int sock, int sec_level, uint16_t imtu, uint16_t omtu, GError **err) { @@ -289,18 +322,8 @@ static gboolean l2cap_set(int sock, int sec_level, uint16_t imtu, } } - if (sec_level) { - struct bt_security sec; - - memset(&sec, 0, sizeof(sec)); - sec.level = sec_level; - - if (setsockopt(sock, SOL_BLUETOOTH, BT_SECURITY, &sec, - sizeof(sec)) < 0) { - ERROR_FAILED(err, "setsockopt(BT_SECURITY)", errno); - return FALSE; - } - } + if (sec_level && !set_sec_level(sock, sec_level, err)) + return FALSE; return TRUE; } @@ -336,18 +359,8 @@ static int rfcomm_connect(int sock, const bdaddr_t *dst, uint8_t channel) static gboolean rfcomm_set(int sock, int sec_level, GError **err) { - if (sec_level) { - struct bt_security sec; - - memset(&sec, 0, sizeof(sec)); - sec.level = sec_level; - - if (setsockopt(sock, SOL_BLUETOOTH, BT_SECURITY, &sec, - sizeof(sec)) < 0) { - ERROR_FAILED(err, "getsockopt(BT_SECURITY)", errno); - return FALSE; - } - } + if (sec_level && !set_sec_level(sock, sec_level, err)) + return FALSE; return TRUE; } @@ -467,23 +480,6 @@ static gboolean set_valist(GIOChannel *io, struct set_opts *opts, return TRUE; } -static gboolean get_sec_level(int sock, int *level, GError **err) -{ - struct bt_security sec; - socklen_t len; - - memset(&sec, 0, sizeof(sec)); - len = sizeof(sec); - if (getsockopt(sock, SOL_BLUETOOTH, BT_SECURITY, &sec, &len) < 0) { - ERROR_FAILED(err, "getsockopt(BT_SECURITY)", errno); - return FALSE; - } - - *level = sec.level; - - return TRUE; -} - static gboolean get_peers(int sock, struct sockaddr *src, struct sockaddr *dst, socklen_t len, GError **err) { -- cgit