27 #include "lwpa_bool.h"
47 #define l_flag_set(flags_byte) ((bool)(flags_byte & 0x80))
51 #define v_flag_set(flags_byte) ((bool)(flags_byte & 0x40))
55 #define h_flag_set(flags_byte) ((bool)(flags_byte & 0x20))
59 #define d_flag_set(flags_byte) ((bool)(flags_byte & 0x10))
65 #define pdu_length(pdu_buf) \
66 ((uint32_t)(l_flag_set(pdu_buf[0]) ? (((pdu_buf[0] & 0x0f) << 16) | (pdu_buf[1] << 8) | pdu_buf[2]) \
67 : (((pdu_buf[0] & 0x0f) << 8) | pdu_buf[1])))
77 #define set_l_flag(flags_byte) (flags_byte |= 0x80)
80 #define set_v_flag(flags_byte) (flags_byte |= 0x40)
83 #define set_h_flag(flags_byte) (flags_byte |= 0x20)
86 #define set_d_flag(flags_byte) (flags_byte |= 0x10)
94 #define pdu_pack_normal_len(pdu_buf, length) \
97 (pdu_buf)[0] = (((pdu_buf)[0] & 0xf0) | (((length) >> 8) & 0x0f)); \
98 (pdu_buf)[1] = (length)&0xff; \
106 #define pdu_pack_ext_len(pdu_buf, length) \
109 (pdu_buf)[0] = (((pdu_buf)[0] & 0xf0) | (((length) >> 16) & 0x0f)); \
110 (pdu_buf)[1] = (((length) >> 8) & 0xff); \
111 (pdu_buf)[2] = (length)&0xff; \
117 const uint8_t *pvector;
118 const uint8_t *pheader;
119 const uint8_t *pdata;
121 const uint8_t *pnextpdu;
128 NULL, NULL, NULL, 0, NULL \
134 #define init_pdu(pduptr) \
137 (pduptr)->pvector = NULL; \
138 (pduptr)->pheader = NULL; \
139 (pduptr)->pdata = NULL; \
140 (pduptr)->datalen = 0; \
141 (pduptr)->pnextpdu = NULL; \
bool parse_pdu(const uint8_t *buf, size_t buflen, const LwpaPduConstraints *constraints, LwpaPdu *pdu)
Parse a generic PDU.
Definition: lwpa_pdu.c:37
struct LwpaPduConstraints LwpaPduConstraints
Contains specific PDU info used by the generic helper parse_pdu().
struct LwpaPdu LwpaPdu
Holds state data used when parsing multiple PDUs in a PDU block.
Contains specific PDU info used by the generic helper parse_pdu().
Definition: lwpa_pdu.h:146
size_t vector_size
The size of the Vector segment of this PDU.
Definition: lwpa_pdu.h:147
size_t header_size
The size of the Header segment of this PDU.
Definition: lwpa_pdu.h:148
Holds state data used when parsing multiple PDUs in a PDU block.
Definition: lwpa_pdu.h:116