diff --git a/tools/l2cap-tester.c b/tools/l2cap-tester.c
index b377651..6b7d11e 100644
--- a/tools/l2cap-tester.c
+++ b/tools/l2cap-tester.c
const void *read_data;
const void *write_data;
bool enable_ssp;
+ int sec_level;
};
struct l2cap_server_data {
const void *read_data;
const void *write_data;
bool enable_ssp;
+ int sec_level;
};
static void mgmt_debug(const char *str, void *user_data)
return FALSE;
}
-static int create_l2cap_sock(struct test_data *data, uint16_t psm)
+static int create_l2cap_sock(struct test_data *data, uint16_t psm,
+ int sec_level)
{
const uint8_t *master_bdaddr;
struct sockaddr_l2 addr;
return err;
}
+ if (sec_level) {
+ struct bt_security sec;
+
+ memset(&sec, 0, sizeof(sec));
+ sec.level = sec_level;
+
+ if (setsockopt(sk, SOL_BLUETOOTH, BT_SECURITY, &sec,
+ sizeof(sec)) < 0) {
+ err = -errno;
+ tester_warn("Can't bind socket: %s (%d)",
+ strerror(errno), errno);
+ close(sk);
+ return err;
+ }
+ }
+
return sk;
}
client_l2cap_connect_cb, data);
}
- sk = create_l2cap_sock(data, 0);
+ sk = create_l2cap_sock(data, 0, l2data->sec_level);
if (sk < 0) {
tester_test_failed();
return;
int sk;
if (l2data->server_psm) {
- sk = create_l2cap_sock(data, l2data->server_psm);
+ sk = create_l2cap_sock(data, l2data->server_psm,
+ l2data->sec_level);
if (sk < 0) {
tester_test_failed();
return;