1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-28 07:51:19 +01:00

Merge pull request #17976 from benpicco/coap_get_token

nanocoap: add coap_get_token()
This commit is contained in:
benpicco 2022-04-22 10:08:30 +02:00 committed by GitHub
commit c032e40fba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 4 deletions

View File

@ -395,6 +395,18 @@ static inline unsigned coap_get_token_len(const coap_pkt_t *pkt)
return (pkt->hdr->ver_t_tkl & 0xf);
}
/**
* @brief Get pointer to a message's token
*
* @param[in] pkt CoAP packet
*
* @returns pointer to the token position
*/
static inline void *coap_get_token(const coap_pkt_t *pkt)
{
return (uint8_t*)pkt->hdr + sizeof(coap_hdr_t);
}
/**
* @brief Get the total header length (4-byte header + token length)
*

View File

@ -292,7 +292,7 @@ static int _gcoap_forward_proxy_via_coap(coap_pkt_t *client_pkt,
pkt.hdr->id = client_pkt->hdr->id;
if (token_len) {
memcpy(pkt.token, client_pkt->token, token_len);
memcpy(coap_get_token(&pkt), coap_get_token(client_pkt), token_len);
}
/* copy all options from client_pkt to pkt */

View File

@ -608,7 +608,7 @@ static size_t _handle_req(gcoap_socket_t *sock, coap_pkt_t *pdu, uint8_t *buf,
memo->token_len = coap_get_token_len(pdu);
memo->socket = *sock;
if (memo->token_len) {
memcpy(&memo->token[0], pdu->token, memo->token_len);
memcpy(&memo->token[0], coap_get_token(pdu), memo->token_len);
}
DEBUG("gcoap: Registered observer for: %s\n", memo->resource->path);
}
@ -803,7 +803,7 @@ static void _find_req_memo(gcoap_request_memo_t **memo_ptr, coap_pkt_t *src_pdu,
}
} else if (coap_get_token_len(memo_pdu) == cmplen) {
memo_pdu->token = coap_hdr_data_ptr(memo_pdu->hdr);
if ((memcmp(src_pdu->token, memo_pdu->token, cmplen) == 0)
if ((memcmp(coap_get_token(src_pdu), memo_pdu->token, cmplen) == 0)
&& sock_udp_ep_equal(&memo->remote_ep, remote)) {
*memo_ptr = memo;
break;

View File

@ -504,7 +504,7 @@ ssize_t coap_build_reply(coap_pkt_t *pkt, unsigned code,
}
}
coap_build_hdr((coap_hdr_t *)rbuf, type, pkt->token, tkl, code,
coap_build_hdr((coap_hdr_t *)rbuf, type, coap_get_token(pkt), tkl, code,
ntohs(pkt->hdr->id));
coap_hdr_set_type((coap_hdr_t *)rbuf, type);
coap_hdr_set_code((coap_hdr_t *)rbuf, code);