Move TLV pack/unpack functions to make them available for both FAPI and nFAPI

parent 3fe2630a
...@@ -3930,6 +3930,33 @@ typedef struct nfapi_p4_p5_codec_config { ...@@ -3930,6 +3930,33 @@ typedef struct nfapi_p4_p5_codec_config {
// Functions // Functions
// //
uint32_t get_packed_msg_len(uintptr_t msgHead, uintptr_t msgEnd);
uint8_t pack_uint32_tlv_value(void *tlv, uint8_t **ppWritePackedMsg, uint8_t *end);
uint8_t unpack_uint32_tlv_value(void *tlv, uint8_t **ppReadPackedMsg, uint8_t *end);
uint8_t pack_uint16_tlv_value(void *tlv, uint8_t **ppWritePackedMsg, uint8_t *end);
uint8_t unpack_uint16_tlv_value(void *tlv, uint8_t **ppReadPackedMsg, uint8_t *end);
uint8_t pack_int16_tlv_value(void *tlv, uint8_t **ppWritePackedMsg, uint8_t *end);
uint8_t unpack_int16_tlv_value(void *tlv, uint8_t **ppReadPackedMsg, uint8_t *end);
uint8_t pack_uint8_tlv_value(void *tlv, uint8_t **ppWritePackedMsg, uint8_t *end);
uint8_t unpack_uint8_tlv_value(void *tlv, uint8_t **ppReadPackedMsg, uint8_t *end);
uint8_t pack_ipv4_address_value(void *tlv, uint8_t **ppWritePackedMsg, uint8_t *end);
uint8_t unpack_ipv4_address_value(void *tlv, uint8_t **ppReadPackedMsg, uint8_t *end);
uint8_t pack_ipv6_address_value(void *tlv, uint8_t **ppWritePackedMsg, uint8_t *end);
uint8_t unpack_ipv6_address_value(void *tlv, uint8_t **ppReadPackedMsg, uint8_t *end);
/*! \brief Encodes an NFAPI P4 message to a buffer /*! \brief Encodes an NFAPI P4 message to a buffer
* \param pMessageBuf A pointer to a nfapi p4 message structure * \param pMessageBuf A pointer to a nfapi p4 message structure
* \param messageBufLen The size of the p4 message structure * \param messageBufLen The size of the p4 message structure
......
...@@ -1138,6 +1138,47 @@ uint8_t pack_nr_tlv(uint16_t tag, void *tlv, uint8_t **ppWritePackedMsg, uint8_t ...@@ -1138,6 +1138,47 @@ uint8_t pack_nr_tlv(uint16_t tag, void *tlv, uint8_t **ppWritePackedMsg, uint8_t
return 1; return 1;
} }
uint8_t pack_uint32_tlv_value(void *tlv, uint8_t **ppWritePackedMsg, uint8_t *end) {
nfapi_uint32_tlv_t *value = (nfapi_uint32_tlv_t *)tlv;
return push32(value->value, ppWritePackedMsg, end);
}
uint8_t unpack_uint32_tlv_value(void *tlv, uint8_t **ppReadPackedMsg, uint8_t *end) {
nfapi_uint32_tlv_t *value = (nfapi_uint32_tlv_t *)tlv;
return pull32(ppReadPackedMsg, &value->value, end);
}
uint8_t pack_uint16_tlv_value(void *tlv, uint8_t **ppWritePackedMsg, uint8_t *end) {
nfapi_uint16_tlv_t *value = (nfapi_uint16_tlv_t *)tlv;
return push16(value->value, ppWritePackedMsg, end);
}
uint8_t unpack_uint16_tlv_value(void *tlv, uint8_t **ppReadPackedMsg, uint8_t *end) {
nfapi_uint16_tlv_t *value = (nfapi_uint16_tlv_t *)tlv;
return pull16(ppReadPackedMsg, &value->value, end);
}
uint8_t pack_int16_tlv_value(void *tlv, uint8_t **ppWritePackedMsg, uint8_t *end) {
nfapi_int16_tlv_t *value = (nfapi_int16_tlv_t *)tlv;
return pushs16(value->value, ppWritePackedMsg, end);
}
uint8_t unpack_int16_tlv_value(void *tlv, uint8_t **ppReadPackedMsg, uint8_t *end) {
nfapi_int16_tlv_t *value = (nfapi_int16_tlv_t *)tlv;
return pulls16(ppReadPackedMsg, &value->value, end);
}
uint8_t pack_uint8_tlv_value(void *tlv, uint8_t **ppWritePackedMsg, uint8_t *end) {
nfapi_uint8_tlv_t *value = (nfapi_uint8_tlv_t *)tlv;
return push8(value->value, ppWritePackedMsg, end);
}
uint8_t unpack_uint8_tlv_value(void *tlv, uint8_t **ppReadPackedMsg, uint8_t *end) {
nfapi_uint8_tlv_t *value = (nfapi_uint8_tlv_t *)tlv;
return pull8(ppReadPackedMsg, &value->value, end);
}
const char *nfapi_error_code_to_str(nfapi_error_code_e value) { const char *nfapi_error_code_to_str(nfapi_error_code_e value) {
switch(value) { switch(value) {
case NFAPI_MSG_OK: case NFAPI_MSG_OK:
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment