mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-11-15 16:24:28 +08:00
mesh: Clean up style in net.c
This commit is contained in:
parent
c0013ccdb1
commit
962a759e9d
253
mesh/net.c
253
mesh/net.c
@ -520,7 +520,8 @@ uint32_t mesh_net_next_seq_num(struct mesh_net *net)
|
||||
{
|
||||
uint32_t seq = net->seq_num++;
|
||||
|
||||
/* Cap out-of-range seq_num max value to +1. Out of range
|
||||
/*
|
||||
* Cap out-of-range seq_num max value to +1. Out of range
|
||||
* seq_nums will not be sent as they would violate spec.
|
||||
* This condition signals a runaway seq_num condition, and
|
||||
* the node must wait for a completed IV Index update procedure
|
||||
@ -539,9 +540,7 @@ static struct mesh_sar *mesh_sar_new(size_t len)
|
||||
struct mesh_sar *sar;
|
||||
|
||||
sar = l_malloc(size);
|
||||
|
||||
memset(sar, 0, size);
|
||||
|
||||
return sar;
|
||||
}
|
||||
|
||||
@ -1372,20 +1371,18 @@ enqueue:
|
||||
void *old = l_queue_remove_if(frnd->pkt_cache,
|
||||
match_ack, rx);
|
||||
|
||||
if (old) {
|
||||
if (old_head == old) {
|
||||
/*
|
||||
* If we are discarding head for any
|
||||
* reason, reset FRND SEQ
|
||||
*/
|
||||
frnd->u.active.last =
|
||||
frnd->u.active.seq;
|
||||
}
|
||||
|
||||
l_free(old);
|
||||
} else
|
||||
if (!old)
|
||||
break;
|
||||
|
||||
if (old_head == old)
|
||||
/*
|
||||
* If we are discarding head for any
|
||||
* reason, reset FRND SEQ
|
||||
*/
|
||||
frnd->u.active.last = frnd->u.active.seq;
|
||||
|
||||
l_free(old);
|
||||
|
||||
} while (true);
|
||||
}
|
||||
|
||||
@ -1465,6 +1462,7 @@ static bool friend_packet_queue(struct mesh_net *net,
|
||||
data += 12;
|
||||
hdr += (1 << SEGO_HDR_SHIFT);
|
||||
}
|
||||
|
||||
frnd_msg->u.s12[seg_max].seq = seq;
|
||||
frnd_msg->cnt_in = seg_max;
|
||||
frnd_msg->last_len = size % 12;
|
||||
@ -1488,6 +1486,7 @@ static bool friend_packet_queue(struct mesh_net *net,
|
||||
memcpy(frnd_msg->u.one[0].data, data, size);
|
||||
frnd_msg->last_len = size;
|
||||
}
|
||||
|
||||
frnd_msg->u.one[0].hdr = hdr;
|
||||
frnd_msg->u.one[0].seq = seq;
|
||||
}
|
||||
@ -1640,7 +1639,6 @@ static void inmsg_to(struct l_timeout *msg_timeout, void *user_data)
|
||||
return;
|
||||
|
||||
sar->msg_timeout = NULL;
|
||||
|
||||
mesh_sar_free(sar);
|
||||
}
|
||||
|
||||
@ -2034,10 +2032,8 @@ static bool seg_rxed(struct mesh_net *net, bool frnd, uint32_t iv_index,
|
||||
send_net_ack(net, sar_in, expected);
|
||||
|
||||
msg_rxed(net, frnd, iv_index, ttl, seq, net_idx,
|
||||
sar_in->remote, dst,
|
||||
key_aid, true, szmic,
|
||||
sar_in->seqZero,
|
||||
sar_in->buf, sar_in->len);
|
||||
sar_in->remote, dst, key_aid, true, szmic,
|
||||
sar_in->seqZero, sar_in->buf, sar_in->len);
|
||||
|
||||
/* Kill Inter-Seg timeout */
|
||||
l_timeout_remove(sar_in->seg_timeout);
|
||||
@ -2080,12 +2076,8 @@ static bool ctl_received(struct mesh_net *net, uint16_t key_id,
|
||||
uint32_t hdr = opcode << OPCODE_HDR_SHIFT;
|
||||
uint8_t frnd_ttl = ttl - 1;
|
||||
|
||||
if (friend_packet_queue(net, iv_index,
|
||||
true, frnd_ttl,
|
||||
seq,
|
||||
src, dst,
|
||||
hdr,
|
||||
pkt, len))
|
||||
if (friend_packet_queue(net, iv_index, true, frnd_ttl, seq,
|
||||
src, dst, hdr, pkt, len))
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -2103,10 +2095,8 @@ static bool ctl_received(struct mesh_net *net, uint16_t key_id,
|
||||
return false;
|
||||
|
||||
print_packet("Rx-NET_OP_FRND_POLL", pkt, len);
|
||||
friend_poll(net, src, !!(pkt[0]),
|
||||
l_queue_find(net->friends,
|
||||
match_by_friend,
|
||||
L_UINT_TO_PTR(src)));
|
||||
friend_poll(net, src, !!(pkt[0]), l_queue_find(net->friends,
|
||||
match_by_friend, L_UINT_TO_PTR(src)));
|
||||
break;
|
||||
|
||||
case NET_OP_FRND_REQUEST:
|
||||
@ -2142,8 +2132,7 @@ static bool ctl_received(struct mesh_net *net, uint16_t key_id,
|
||||
|
||||
print_packet("Rx-NET_OP_FRND_CLEAR", pkt, len);
|
||||
friend_clear(net, src, l_get_be16(pkt), l_get_be16(pkt + 2),
|
||||
l_queue_find(net->friends,
|
||||
match_by_friend,
|
||||
l_queue_find(net->friends, match_by_friend,
|
||||
L_UINT_TO_PTR(l_get_be16(pkt))));
|
||||
l_debug("Remaining Friends: %d", l_queue_length(net->friends));
|
||||
break;
|
||||
@ -2163,9 +2152,8 @@ static bool ctl_received(struct mesh_net *net, uint16_t key_id,
|
||||
return false;
|
||||
|
||||
print_packet("Rx-NET_OP_PROXY_SUB_REMOVE", pkt, len);
|
||||
friend_sub_del(net, l_queue_find(net->friends,
|
||||
match_by_friend, L_UINT_TO_PTR(src)),
|
||||
pkt, len);
|
||||
friend_sub_del(net, l_queue_find(net->friends, match_by_friend,
|
||||
L_UINT_TO_PTR(src)), pkt, len);
|
||||
break;
|
||||
|
||||
case NET_OP_PROXY_SUB_CONFIRM:
|
||||
@ -2199,12 +2187,10 @@ static bool ctl_received(struct mesh_net *net, uint16_t key_id,
|
||||
break;
|
||||
}
|
||||
|
||||
if (n) {
|
||||
mesh_net_transport_send(net, 0, 0,
|
||||
mesh_net_get_iv_index(net), rsp_ttl,
|
||||
0, dst & 0x8000 ? 0 : dst, src,
|
||||
msg, n);
|
||||
}
|
||||
if (n)
|
||||
mesh_net_transport_send(net, 0, 0, mesh_net_get_iv_index(net),
|
||||
rsp_ttl, 0, dst & 0x8000 ? 0 : dst,
|
||||
src, msg, n);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -2335,17 +2321,12 @@ static enum _relay_advice packet_received(void *user_data,
|
||||
|
||||
print_packet("RX: Network [clr] :", packet + 2, size);
|
||||
|
||||
if (!mesh_crypto_packet_parse(packet + 2, size,
|
||||
&net_ctl, &net_ttl,
|
||||
&net_seq,
|
||||
&net_src, &net_dst,
|
||||
&cache_cookie,
|
||||
&net_opcode,
|
||||
&net_segmented,
|
||||
&net_key_id,
|
||||
&net_szmic, &net_relay, &net_seqZero,
|
||||
&net_segO, &net_segN,
|
||||
&msg, &app_msg_len)) {
|
||||
if (!mesh_crypto_packet_parse(packet + 2, size, &net_ctl, &net_ttl,
|
||||
&net_seq, &net_src, &net_dst,
|
||||
&cache_cookie, &net_opcode,
|
||||
&net_segmented, &net_key_id, &net_szmic,
|
||||
&net_relay, &net_seqZero, &net_segO,
|
||||
&net_segN, &msg, &app_msg_len)) {
|
||||
l_error("Failed to parse packet content");
|
||||
return RELAY_NONE;
|
||||
}
|
||||
@ -2360,8 +2341,10 @@ static enum _relay_advice packet_received(void *user_data,
|
||||
if (is_us(net, net_src, true))
|
||||
return RELAY_NONE;
|
||||
|
||||
/* As a Relay, suppress repeats of last N packets that pass through */
|
||||
/* The "cache_cookie" should be unique part of App message */
|
||||
/*
|
||||
* As a Relay, suppress repeats of last N packets that pass through
|
||||
* The "cache_cookie" should be unique part of App message.
|
||||
*/
|
||||
if (msg_in_cache(net, net_src, net_seq, cache_cookie))
|
||||
return RELAY_NONE;
|
||||
|
||||
@ -2388,57 +2371,48 @@ static enum _relay_advice packet_received(void *user_data,
|
||||
/* If this is an ACK to our friend queue-only */
|
||||
if (is_lpn_friend(net, net_dst))
|
||||
friend_ack_rxed(net, iv_index, net_seq,
|
||||
net_src, net_dst,
|
||||
msg);
|
||||
net_src, net_dst, msg);
|
||||
else
|
||||
ack_received(net, false,
|
||||
net_src, net_dst,
|
||||
net_seqZero,
|
||||
l_get_be32(msg + 3));
|
||||
} else {
|
||||
ctl_received(net, key_id,
|
||||
iv_index,
|
||||
net_ttl, net_seq, net_src,
|
||||
net_dst, net_opcode, rssi,
|
||||
msg, app_msg_len);
|
||||
ctl_received(net, key_id, iv_index, net_ttl,
|
||||
net_seq, net_src, net_dst,
|
||||
net_opcode, rssi, msg,
|
||||
app_msg_len);
|
||||
}
|
||||
} else if (net_segmented) {
|
||||
/* If we accept SAR packets to non-Unicast, then
|
||||
/*
|
||||
* If we accept SAR packets to non-Unicast, then
|
||||
* Friend Sar at least needs to be Unicast Only
|
||||
*/
|
||||
if (is_lpn_friend(net, net_dst) &&
|
||||
!(net_dst & 0x8000)) {
|
||||
/* Check TTL >= 2 before accepting segments
|
||||
/*
|
||||
* Check TTL >= 2 before accepting segments
|
||||
* for Friends
|
||||
*/
|
||||
if (net_ttl >= 2) {
|
||||
friend_seg_rxed(net, iv_index,
|
||||
net_ttl, net_seq,
|
||||
net_src, net_dst,
|
||||
friend_seg_rxed(net, iv_index, net_ttl,
|
||||
net_seq, net_src, net_dst,
|
||||
l_get_be32(packet + 2 + 9),
|
||||
msg, app_msg_len);
|
||||
}
|
||||
} else {
|
||||
seg_rxed(net, NULL, iv_index, net_ttl,
|
||||
net_seq, net_idx,
|
||||
net_src, net_dst,
|
||||
net_key_id,
|
||||
net_szmic, net_seqZero,
|
||||
net_segO, net_segN,
|
||||
net_seq, net_idx, net_src,
|
||||
net_dst, net_key_id, net_szmic,
|
||||
net_seqZero, net_segO, net_segN,
|
||||
msg, app_msg_len);
|
||||
}
|
||||
|
||||
} else {
|
||||
msg_rxed(net, NULL,
|
||||
iv_index,
|
||||
net_ttl,
|
||||
net_seq,
|
||||
net_idx,
|
||||
net_src, net_dst,
|
||||
net_key_id,
|
||||
false, false,
|
||||
net_seq & SEQ_ZERO_MASK,
|
||||
msg, app_msg_len);
|
||||
msg_rxed(net, NULL, iv_index, net_ttl, net_seq, net_idx,
|
||||
net_src, net_dst, net_key_id, false,
|
||||
false, net_seq & SEQ_ZERO_MASK, msg,
|
||||
app_msg_len);
|
||||
}
|
||||
|
||||
/* If this is one of our Unicast addresses, disallow relay */
|
||||
@ -2495,8 +2469,8 @@ static void net_rx(void *net_ptr, void *user_data)
|
||||
rssi = data->info->rssi;
|
||||
}
|
||||
|
||||
relay_advice = packet_received(net, key_id, iv_index,
|
||||
out, out_size, rssi);
|
||||
relay_advice = packet_received(net, key_id, iv_index, out, out_size,
|
||||
rssi);
|
||||
if (relay_advice > data->relay_advice) {
|
||||
data->iv_index = iv_index;
|
||||
data->relay_advice = relay_advice;
|
||||
@ -2560,6 +2534,7 @@ static void iv_upd_to(struct l_timeout *upd_timeout, void *user_data)
|
||||
l_debug("iv_upd_state = IV_UPD_NORMAL_HOLD");
|
||||
net->iv_upd_state = IV_UPD_NORMAL_HOLD;
|
||||
l_timeout_modify(net->iv_update_timeout, IV_IDX_UPD_MIN);
|
||||
|
||||
if (net->iv_update)
|
||||
mesh_net_set_seq_num(net, 0);
|
||||
|
||||
@ -2578,10 +2553,12 @@ static void iv_upd_to(struct l_timeout *upd_timeout, void *user_data)
|
||||
net->iv_update_timeout = NULL;
|
||||
l_debug("iv_upd_state = IV_UPD_NORMAL");
|
||||
net->iv_upd_state = IV_UPD_NORMAL;
|
||||
|
||||
if (net->iv_update)
|
||||
mesh_net_set_seq_num(net, 0);
|
||||
|
||||
net->iv_update = false;
|
||||
|
||||
if (net->seq_num > IV_UPDATE_SEQ_TRIGGER)
|
||||
mesh_net_iv_index_update(net);
|
||||
break;
|
||||
@ -2605,7 +2582,8 @@ static int key_refresh_phase_two(struct mesh_net *net, uint16_t idx)
|
||||
l_debug("Key refresh procedure phase 2: start using new net TX keys");
|
||||
subnet->key_refresh = 1;
|
||||
subnet->net_key_tx = subnet->net_key_upd;
|
||||
/* TODO: Provisioner may need to stay in phase three until
|
||||
/*
|
||||
* TODO: Provisioner may need to stay in phase three until
|
||||
* it hears beacons from all the nodes
|
||||
*/
|
||||
subnet->kr_phase = KEY_REFRESH_PHASE_TWO;
|
||||
@ -2686,7 +2664,8 @@ static void update_iv_ivu_state(struct mesh_net *net, uint32_t iv_index,
|
||||
if (iv_index == net->iv_index && !net->iv_update)
|
||||
return;
|
||||
|
||||
/* Other devices will be accepting old or new iv_index,
|
||||
/*
|
||||
* Other devices will be accepting old or new iv_index,
|
||||
* but we don't know how far through update they are.
|
||||
* Starting permissive state will allow us maximum
|
||||
* (96 hours) to resync
|
||||
@ -2694,7 +2673,7 @@ static void update_iv_ivu_state(struct mesh_net *net, uint32_t iv_index,
|
||||
l_debug("iv_upd_state = IV_UPD_UPDATING");
|
||||
net->iv_upd_state = IV_UPD_UPDATING;
|
||||
net->iv_update_timeout = l_timeout_create(
|
||||
IV_IDX_UPD_MIN, iv_upd_to, net, NULL);
|
||||
IV_IDX_UPD_MIN, iv_upd_to, net, NULL);
|
||||
} else {
|
||||
l_debug("iv_upd_state = IV_UPD_NORMAL");
|
||||
net->iv_upd_state = IV_UPD_NORMAL;
|
||||
@ -2771,8 +2750,8 @@ static void process_beacon(void *net_ptr, void *user_data)
|
||||
* Ignore the beacon if it doesn't change anything, unless we're
|
||||
* doing IV Recovery
|
||||
*/
|
||||
if (net->iv_upd_state == IV_UPD_INIT ||
|
||||
ivi != net->iv_index || ivu != net->iv_update)
|
||||
if (net->iv_upd_state == IV_UPD_INIT || ivi != net->iv_index ||
|
||||
ivu != net->iv_update)
|
||||
update_iv_ivu_state(net, ivi, ivu);
|
||||
|
||||
if (kr != local_kr)
|
||||
@ -2879,6 +2858,7 @@ bool mesh_net_set_key(struct mesh_net *net, uint16_t idx, const uint8_t *key,
|
||||
if (phase == KEY_REFRESH_PHASE_TWO) {
|
||||
subnet->key_refresh = 1;
|
||||
subnet->net_key_tx = subnet->net_key_upd;
|
||||
|
||||
if (net->beacon_enable) {
|
||||
/* Switch beaconing key */
|
||||
net_key_beacon_disable(subnet->net_key_cur);
|
||||
@ -2958,6 +2938,7 @@ bool mesh_net_iv_index_update(struct mesh_net *net)
|
||||
|
||||
l_debug("iv_upd_state = IV_UPD_UPDATING");
|
||||
mesh_net_flush_msg_queues(net);
|
||||
|
||||
if (!mesh_config_write_iv_index(node_config_get(net->node),
|
||||
net->iv_index + 1, true))
|
||||
return false;
|
||||
@ -3077,7 +3058,7 @@ static bool send_seg(struct mesh_net *net, struct mesh_sar *msg, uint8_t segO)
|
||||
return false;
|
||||
|
||||
if (!net_key_encrypt(subnet->net_key_tx, msg->iv_index, packet + 1,
|
||||
packet_len)) {
|
||||
packet_len)) {
|
||||
l_error("Failed to encode packet");
|
||||
return false;
|
||||
}
|
||||
@ -3090,12 +3071,9 @@ static bool send_seg(struct mesh_net *net, struct mesh_sar *msg, uint8_t segO)
|
||||
}
|
||||
|
||||
void mesh_net_send_seg(struct mesh_net *net, uint32_t net_key_id,
|
||||
uint32_t iv_index,
|
||||
uint8_t ttl,
|
||||
uint32_t seq,
|
||||
uint16_t src, uint16_t dst,
|
||||
uint32_t hdr,
|
||||
const void *seg, uint16_t seg_len)
|
||||
uint32_t iv_index, uint8_t ttl, uint32_t seq,
|
||||
uint16_t src, uint16_t dst, uint32_t hdr,
|
||||
const void *seg, uint16_t seg_len)
|
||||
{
|
||||
uint8_t packet[30];
|
||||
uint8_t packet_len;
|
||||
@ -3112,15 +3090,10 @@ void mesh_net_send_seg(struct mesh_net *net, uint32_t net_key_id,
|
||||
l_debug("SEQ0: %6.6x", seq);
|
||||
l_debug("segO: %d", segO);
|
||||
|
||||
if (!mesh_crypto_packet_build(false, ttl,
|
||||
seq,
|
||||
src, dst,
|
||||
0,
|
||||
segmented, app_key_id,
|
||||
szmic, false, seqZero,
|
||||
segO, segN,
|
||||
seg, seg_len,
|
||||
packet + 1, &packet_len)) {
|
||||
if (!mesh_crypto_packet_build(false, ttl, seq, src, dst, 0,
|
||||
segmented, app_key_id, szmic, false,
|
||||
seqZero, segO, segN, seg, seg_len,
|
||||
packet + 1, &packet_len)) {
|
||||
l_error("Failed to build packet");
|
||||
return;
|
||||
}
|
||||
@ -3166,12 +3139,8 @@ bool mesh_net_app_send(struct mesh_net *net, bool frnd_cred, uint16_t src,
|
||||
segmented |= !!(seg_max);
|
||||
|
||||
/* First enqueue to any Friends and internal models */
|
||||
result = msg_rxed(net, false, iv_index, ttl,
|
||||
seq,
|
||||
net_idx,
|
||||
src, dst,
|
||||
key_aid, segmented,
|
||||
szmic, seq & SEQ_ZERO_MASK,
|
||||
result = msg_rxed(net, false, iv_index, ttl, seq, net_idx, src, dst,
|
||||
key_aid, segmented, szmic, seq & SEQ_ZERO_MASK,
|
||||
msg, msg_len);
|
||||
|
||||
/*
|
||||
@ -3203,7 +3172,7 @@ bool mesh_net_app_send(struct mesh_net *net, bool frnd_cred, uint16_t src,
|
||||
payload->id = ++net->sar_id_next;
|
||||
|
||||
/* Single thread SAR messages to same Unicast DST */
|
||||
if (NULL != l_queue_find(net->sar_out, match_sar_remote,
|
||||
if (l_queue_find(net->sar_out, match_sar_remote,
|
||||
L_UINT_TO_PTR(dst))) {
|
||||
/* Delay sending Outbound SAR unless prior
|
||||
* SAR to same DST has completed */
|
||||
@ -3242,13 +3211,9 @@ bool mesh_net_app_send(struct mesh_net *net, bool frnd_cred, uint16_t src,
|
||||
return result;
|
||||
}
|
||||
|
||||
void mesh_net_ack_send(struct mesh_net *net, uint32_t key_id,
|
||||
uint32_t iv_index,
|
||||
uint8_t ttl,
|
||||
uint32_t seq,
|
||||
uint16_t src, uint16_t dst,
|
||||
bool rly, uint16_t seqZero,
|
||||
uint32_t ack_flags)
|
||||
void mesh_net_ack_send(struct mesh_net *net, uint32_t key_id, uint32_t iv_index,
|
||||
uint8_t ttl, uint32_t seq, uint16_t src, uint16_t dst,
|
||||
bool rly, uint16_t seqZero, uint32_t ack_flags)
|
||||
{
|
||||
uint32_t hdr;
|
||||
uint8_t data[7];
|
||||
@ -3260,18 +3225,13 @@ void mesh_net_ack_send(struct mesh_net *net, uint32_t key_id,
|
||||
hdr |= (seqZero & SEQ_ZERO_MASK) << SEQ_ZERO_HDR_SHIFT;
|
||||
l_put_be32(hdr, data);
|
||||
l_put_be32(ack_flags, data + 3);
|
||||
if (!mesh_crypto_packet_build(true, ttl,
|
||||
seq,
|
||||
src, dst,
|
||||
NET_OP_SEG_ACKNOWLEDGE,
|
||||
false, /* Not Segmented */
|
||||
0, /* No Key ID associated */
|
||||
false, rly, seqZero,
|
||||
0, 0, /* no segO or segN */
|
||||
data + 1, 6,
|
||||
pkt + 1, &pkt_len)) {
|
||||
|
||||
/* Not Segmented, no Key ID associated, no segO or segN */
|
||||
if (!mesh_crypto_packet_build(true, ttl, seq, src, dst,
|
||||
NET_OP_SEG_ACKNOWLEDGE, false, 0, false,
|
||||
rly, seqZero, 0, 0, data + 1, 6,
|
||||
pkt + 1, &pkt_len))
|
||||
return;
|
||||
}
|
||||
|
||||
if (!key_id) {
|
||||
struct mesh_subnet *subnet = get_primary_subnet(net);
|
||||
@ -3323,24 +3283,17 @@ void mesh_net_transport_send(struct mesh_net *net, uint32_t key_id,
|
||||
uint32_t hdr = msg[0] << OPCODE_HDR_SHIFT;
|
||||
uint8_t frnd_ttl = ttl;
|
||||
|
||||
if (friend_packet_queue(net, iv_index,
|
||||
true, frnd_ttl,
|
||||
mesh_net_next_seq_num(net),
|
||||
src, dst,
|
||||
hdr,
|
||||
msg + 1, msg_len - 1)) {
|
||||
if (friend_packet_queue(net, iv_index, true, frnd_ttl,
|
||||
mesh_net_next_seq_num(net), src, dst,
|
||||
hdr, msg + 1, msg_len - 1))
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* Deliver to Local entities if applicable */
|
||||
if (!(dst & 0x8000) && src >= net->src_addr && src <= net->last_addr) {
|
||||
result = ctl_received(net, key_id,
|
||||
iv_index, ttl,
|
||||
mesh_net_next_seq_num(net),
|
||||
src, dst,
|
||||
if (!(dst & 0x8000) && src >= net->src_addr && src <= net->last_addr)
|
||||
result = ctl_received(net, key_id, iv_index, ttl,
|
||||
mesh_net_next_seq_num(net), src, dst,
|
||||
msg[0], 0, msg + 1, msg_len - 1);
|
||||
}
|
||||
|
||||
if (!key_id) {
|
||||
struct mesh_subnet *subnet = l_queue_find(net->subnets,
|
||||
@ -3355,15 +3308,9 @@ void mesh_net_transport_send(struct mesh_net *net, uint32_t key_id,
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mesh_crypto_packet_build(true, ttl,
|
||||
use_seq,
|
||||
src, dst,
|
||||
msg[0],
|
||||
false, 0,
|
||||
false, false, 0,
|
||||
0, 0,
|
||||
msg + 1, msg_len - 1,
|
||||
pkt + 1, &pkt_len))
|
||||
if (!mesh_crypto_packet_build(true, ttl, use_seq, src, dst, msg[0],
|
||||
false, 0, false, false, 0, 0, 0, msg + 1,
|
||||
msg_len - 1, pkt + 1, &pkt_len))
|
||||
return;
|
||||
|
||||
if (!net_key_encrypt(key_id, iv_index, pkt + 1, pkt_len)) {
|
||||
@ -3517,7 +3464,7 @@ void mesh_net_heartbeat_send(struct mesh_net *net)
|
||||
n += 2;
|
||||
|
||||
mesh_net_transport_send(net, 0, 0, mesh_net_get_iv_index(net),
|
||||
hb->pub_ttl, 0, 0, hb->pub_dst, msg, n);
|
||||
hb->pub_ttl, 0, 0, hb->pub_dst, msg, n);
|
||||
}
|
||||
|
||||
void mesh_net_heartbeat_init(struct mesh_net *net)
|
||||
@ -3575,7 +3522,7 @@ uint16_t mesh_net_get_primary_idx(struct mesh_net *net)
|
||||
uint32_t mesh_net_friend_timeout(struct mesh_net *net, uint16_t addr)
|
||||
{
|
||||
struct mesh_friend *frnd = l_queue_find(net->friends, match_by_friend,
|
||||
L_UINT_TO_PTR(addr));
|
||||
L_UINT_TO_PTR(addr));
|
||||
|
||||
if (!frnd)
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user