Commit 9752cee3 authored by Joakim Andersson's avatar Joakim Andersson Committed by Anas Nashif
Browse files

Bluetooth: host: Refactor smp handling of conn pointer



Refactor SMP to have a conn pointer where this pointer is used
multiple times.

Signed-off-by: default avatarJoakim Andersson <joakim.andersson@nordicsemi.no>
parent fcdb2eef
Loading
Loading
Loading
Loading
+13 −14
Original line number Diff line number Diff line
@@ -1812,6 +1812,8 @@ static void smp_reset(struct bt_smp *smp)
 */
static void smp_pairing_complete(struct bt_smp *smp, uint8_t status)
{
	struct bt_conn *conn = smp->chan.chan.conn;

	BT_DBG("status 0x%x", status);

	if (!status) {
@@ -1829,12 +1831,11 @@ static void smp_pairing_complete(struct bt_smp *smp, uint8_t status)
		bool bond_flag = atomic_test_bit(smp->flags, SMP_FLAG_BOND);

		if (bond_flag) {
			bt_keys_store(smp->chan.chan.conn->le.keys);
			bt_keys_store(conn->le.keys);
		}

		if (bt_auth && bt_auth->pairing_complete) {
			bt_auth->pairing_complete(smp->chan.chan.conn,
						  bond_flag);
			bt_auth->pairing_complete(conn, bond_flag);
		}
	} else {
		uint8_t auth_err = auth_err_get(status);
@@ -1843,20 +1844,19 @@ static void smp_pairing_complete(struct bt_smp *smp, uint8_t status)
		 * keys already existed before the pairing procedure or the
		 * pairing failed during key distribution.
		 */
		if (smp->chan.chan.conn->le.keys &&
		    (!smp->chan.chan.conn->le.keys->enc_size ||
		if (conn->le.keys &&
		    (!conn->le.keys->enc_size ||
		     atomic_test_bit(smp->flags, SMP_FLAG_KEYS_DISTR))) {
			bt_keys_clear(smp->chan.chan.conn->le.keys);
			smp->chan.chan.conn->le.keys = NULL;
			bt_keys_clear(conn->le.keys);
			conn->le.keys = NULL;
		}

		if (!atomic_test_bit(smp->flags, SMP_FLAG_KEYS_DISTR)) {
			bt_conn_security_changed(smp->chan.chan.conn, status,
						 auth_err);
			bt_conn_security_changed(conn, status, auth_err);
		}

		if (bt_auth && bt_auth->pairing_failed) {
			bt_auth->pairing_failed(smp->chan.chan.conn, auth_err);
			bt_auth->pairing_failed(conn, auth_err);
		}
	}

@@ -3173,8 +3173,7 @@ static uint8_t smp_pairing_rsp(struct bt_smp *smp, struct net_buf *buf)
		if (IS_ENABLED(CONFIG_BT_SMP_APP_PAIRING_ACCEPT)) {
			uint8_t err;

			err = smp_pairing_accept_query(smp->chan.chan.conn,
						       rsp);
			err = smp_pairing_accept_query(conn, rsp);
			if (err) {
				return err;
			}
@@ -3202,7 +3201,7 @@ static uint8_t smp_pairing_rsp(struct bt_smp *smp, struct net_buf *buf)
	if (IS_ENABLED(CONFIG_BT_SMP_APP_PAIRING_ACCEPT)) {
		uint8_t err;

		err = smp_pairing_accept_query(smp->chan.chan.conn, rsp);
		err = smp_pairing_accept_query(conn, rsp);
		if (err) {
			return err;
		}
@@ -3212,7 +3211,7 @@ static uint8_t smp_pairing_rsp(struct bt_smp *smp, struct net_buf *buf)
	    atomic_test_bit(smp->flags, SMP_FLAG_SEC_REQ) &&
	    bt_auth && bt_auth->pairing_confirm) {
		atomic_set_bit(smp->flags, SMP_FLAG_USER);
		bt_auth->pairing_confirm(smp->chan.chan.conn);
		bt_auth->pairing_confirm(conn);
		return 0;
	}