13 #define WPABUF_FLAG_EXT_DATA BIT(0) 29 int wpabuf_resize(
struct wpabuf **buf,
size_t add_len);
30 struct wpabuf * wpabuf_alloc(
size_t len);
31 struct wpabuf * wpabuf_alloc_ext_data(u8 *data,
size_t len);
32 struct wpabuf * wpabuf_alloc_copy(
const void *data,
size_t len);
34 void wpabuf_free(
struct wpabuf *buf);
35 void wpabuf_clear_free(
struct wpabuf *buf);
36 void * wpabuf_put(
struct wpabuf *buf,
size_t len);
38 struct wpabuf * wpabuf_zeropad(
struct wpabuf *buf,
size_t len);
39 void wpabuf_printf(
struct wpabuf *buf,
char *fmt, ...) PRINTF_FORMAT(2, 3);
40 struct wpabuf * wpabuf_parse_bin(
const char *buf);
48 static inline size_t wpabuf_size(
const struct wpabuf *buf)
58 static inline size_t wpabuf_len(
const struct wpabuf *buf)
68 static inline size_t wpabuf_tailroom(
const struct wpabuf *buf)
70 return buf->size - buf->used;
78 static inline const void * wpabuf_head(
const struct wpabuf *buf)
83 static inline const u8 * wpabuf_head_u8(
const struct wpabuf *buf)
85 return (
const u8 *) wpabuf_head(buf);
93 static inline void * wpabuf_mhead(
struct wpabuf *buf)
98 static inline u8 * wpabuf_mhead_u8(
struct wpabuf *buf)
100 return (u8 *) wpabuf_mhead(buf);
103 static inline void wpabuf_put_u8(
struct wpabuf *buf, u8 data)
105 u8 *pos = (u8 *) wpabuf_put(buf, 1);
109 static inline void wpabuf_put_le16(
struct wpabuf *buf, u16 data)
111 u8 *pos = (u8 *) wpabuf_put(buf, 2);
112 WPA_PUT_LE16(pos, data);
115 static inline void wpabuf_put_le32(
struct wpabuf *buf, u32 data)
117 u8 *pos = (u8 *) wpabuf_put(buf, 4);
118 WPA_PUT_LE32(pos, data);
121 static inline void wpabuf_put_be16(
struct wpabuf *buf, u16 data)
123 u8 *pos = (u8 *) wpabuf_put(buf, 2);
124 WPA_PUT_BE16(pos, data);
127 static inline void wpabuf_put_be24(
struct wpabuf *buf, u32 data)
129 u8 *pos = (u8 *) wpabuf_put(buf, 3);
130 WPA_PUT_BE24(pos, data);
133 static inline void wpabuf_put_be32(
struct wpabuf *buf, u32 data)
135 u8 *pos = (u8 *) wpabuf_put(buf, 4);
136 WPA_PUT_BE32(pos, data);
139 static inline void wpabuf_put_data(
struct wpabuf *buf,
const void *data,
143 os_memcpy(wpabuf_put(buf, len), data, len);
146 static inline void wpabuf_put_buf(
struct wpabuf *dst,
149 wpabuf_put_data(dst, wpabuf_head(src), wpabuf_len(src));
152 static inline void wpabuf_set(
struct wpabuf *buf,
const void *data,
size_t len)
154 buf->buf = (u8 *) data;
155 buf->flags = WPABUF_FLAG_EXT_DATA;
156 buf->size = buf->used = len;
159 static inline void wpabuf_put_str(
struct wpabuf *dst,
const char *str)
161 wpabuf_put_data(dst, str, os_strlen(str));