int bt_conn_auth_cancel(struct bt_conn *conn) { if (!bt_auth) { return -EINVAL; } #if defined(CONFIG_BLUETOOTH_SMP) if (conn->type == BT_CONN_TYPE_LE) { return bt_smp_auth_cancel(conn); } #endif /* CONFIG_BLUETOOTH_SMP */ #if defined(CONFIG_BLUETOOTH_BREDR) if (conn->type == BT_CONN_TYPE_BR) { /* Allow user cancel authentication, then reset user state. */ if (!atomic_test_and_clear_bit(conn->flags, BT_CONN_USER)) { return -EPERM; } switch (conn->br.pairing_method) { case JUST_WORKS: case PASSKEY_CONFIRM: return ssp_confirm_neg_reply(conn); case PASSKEY_INPUT: return ssp_passkey_neg_reply(conn); case PASSKEY_DISPLAY: return bt_conn_disconnect(conn, BT_HCI_ERR_AUTHENTICATION_FAIL); case LEGACY: return pin_code_neg_reply(&conn->br.dst); default: break; } } #endif /* CONFIG_BLUETOOTH_BREDR */ return -EINVAL; }
int bt_conn_auth_cancel(struct bt_conn *conn) { BT_DBG(""); return bt_smp_auth_cancel(conn); }