mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-01 14:32:21 +00:00
This is a major refactoring of the handling of the cryptographic material of both the network and transport layers. The aim is to encapsulate the key object manipulation, and improve overall modularity. Pulls Applications and Subnets out of the bt_mesh and into separate modules, with static storage types on the data. This has several side-effects: - The Config Server no longer operates directly on the bt_mesh.subs and bt_mesh.apps lists, but goes through a public configuration interface, following the pattern set in #27908. - All iteration through the keys is done through iteration APIs - Key resolution on RX and TX is centralized. - Changes to the keys triggers events the other modules can register handlers for. - Friendship credentials are stored in the lpn and friend structures. Part of #27842. Signed-off-by: Trond Einar Snekvik <Trond.Einar.Snekvik@nordicsemi.no>
50 lines
1.7 KiB
C
50 lines
1.7 KiB
C
/* Bluetooth Mesh */
|
|
|
|
/*
|
|
* Copyright (c) 2017 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
enum bt_mesh_friend_pdu_type {
|
|
BT_MESH_FRIEND_PDU_SINGLE,
|
|
BT_MESH_FRIEND_PDU_PARTIAL,
|
|
BT_MESH_FRIEND_PDU_COMPLETE,
|
|
};
|
|
|
|
bool bt_mesh_friend_match(uint16_t net_idx, uint16_t addr);
|
|
|
|
struct bt_mesh_friend *bt_mesh_friend_find(uint16_t net_idx, uint16_t lpn_addr,
|
|
bool valid, bool established);
|
|
|
|
bool bt_mesh_friend_queue_has_space(uint16_t net_idx, uint16_t src, uint16_t dst,
|
|
uint64_t *seq_auth, uint8_t seg_count);
|
|
|
|
void bt_mesh_friend_enqueue_rx(struct bt_mesh_net_rx *rx,
|
|
enum bt_mesh_friend_pdu_type type,
|
|
const uint64_t *seq_auth, uint8_t seg_count,
|
|
struct net_buf_simple *sbuf);
|
|
bool bt_mesh_friend_enqueue_tx(struct bt_mesh_net_tx *tx,
|
|
enum bt_mesh_friend_pdu_type type,
|
|
const uint64_t *seq_auth, uint8_t seg_count,
|
|
struct net_buf_simple *sbuf);
|
|
|
|
void bt_mesh_friend_clear_incomplete(struct bt_mesh_subnet *sub, uint16_t src,
|
|
uint16_t dst, uint64_t *seq_auth);
|
|
|
|
void bt_mesh_friend_sec_update(uint16_t net_idx);
|
|
|
|
void bt_mesh_friends_clear(void);
|
|
|
|
int bt_mesh_friend_poll(struct bt_mesh_net_rx *rx, struct net_buf_simple *buf);
|
|
int bt_mesh_friend_req(struct bt_mesh_net_rx *rx, struct net_buf_simple *buf);
|
|
int bt_mesh_friend_clear(struct bt_mesh_net_rx *rx, struct net_buf_simple *buf);
|
|
int bt_mesh_friend_clear_cfm(struct bt_mesh_net_rx *rx,
|
|
struct net_buf_simple *buf);
|
|
int bt_mesh_friend_sub_add(struct bt_mesh_net_rx *rx,
|
|
struct net_buf_simple *buf);
|
|
int bt_mesh_friend_sub_rem(struct bt_mesh_net_rx *rx,
|
|
struct net_buf_simple *buf);
|
|
|
|
int bt_mesh_friend_init(void);
|