68 if (data_len <
sizeof(
struct blob_attr) || data_len > len)
146 memset(tb, 0, policy_len *
sizeof(*tb));
174 memset(tb, 0, policy_len *
sizeof(*tb));
177 pslen = alloca(policy_len);
178 for (i = 0; i < policy_len; i++) {
182 pslen[i] = strlen(policy[i].
name);
193 for (i = 0; i < policy_len; i++) {
215 if (strcmp(policy[i].
name, (
char *) hdr->
name) != 0)
232 char *pad_start, *pad_end;
252 if (pad_start < pad_end)
253 memset(pad_start, 0, pad_end - pad_start);
281 return (
void *)offset;
293 len = vsnprintf(&cbuf,
sizeof(cbuf), format, arg2);
303 ret = vsnprintf(sbuf, len + 1, format, arg);
318 va_start(ap, format);
347 int required = maxlen + 1 - (buf->
buflen - offset);
378 const void *
data,
unsigned int len)
388 memcpy(data_dest,
data, len);
void blob_set_raw_len(struct blob_attr *attr, unsigned int len)
struct blob_attr * blob_new(struct blob_buf *buf, int id, int payload)
bool blob_check_type(const void *ptr, unsigned int len, int type)
bool blob_buf_grow(struct blob_buf *buf, int required)
void blob_fill_pad(struct blob_attr *attr)
static size_t blob_raw_len(const struct blob_attr *attr)
static size_t blob_pad_len(const struct blob_attr *attr)
static struct blob_attr * blob_next(const struct blob_attr *attr)
static bool blob_is_extended(const struct blob_attr *attr)
#define __blob_for_each_attr(pos, attr, rem)
static size_t blob_len(const struct blob_attr *attr)
static void * blob_data(const struct blob_attr *attr)
static unsigned int blob_id(const struct blob_attr *attr)
#define BLOB_ATTR_EXTENDED
bool blobmsg_check_attr_list(const struct blob_attr *attr, int type)
static bool blobmsg_check_name(const struct blob_attr *attr, bool name)
__attribute__((format(printf, 3, 0)))
int blobmsg_check_array_len(const struct blob_attr *attr, int type, size_t blob_len)
bool blobmsg_check_attr_len(const struct blob_attr *attr, bool name, size_t len)
int blobmsg_add_field(struct blob_buf *buf, int type, const char *name, const void *data, unsigned int len)
void * blobmsg_open_nested(struct blob_buf *buf, const char *name, bool array)
static const int blob_type[__BLOBMSG_TYPE_LAST]
bool blobmsg_check_attr_list_len(const struct blob_attr *attr, int type, size_t len)
void * blobmsg_alloc_string_buffer(struct blob_buf *buf, const char *name, unsigned int maxlen)
static int attr_to_offset(struct blob_buf *buf, struct blob_attr *attr)
int blobmsg_check_array(const struct blob_attr *attr, int type)
void blobmsg_add_string_buffer(struct blob_buf *buf)
bool blobmsg_check_attr(const struct blob_attr *attr, bool name)
int blobmsg_parse_array(const struct blobmsg_policy *policy, int policy_len, struct blob_attr **tb, void *data, unsigned int len)
static struct blob_attr * blobmsg_new(struct blob_buf *buf, int type, const char *name, int payload_len, void **data)
int blobmsg_parse(const struct blobmsg_policy *policy, int policy_len, struct blob_attr **tb, void *data, unsigned int len)
void * blobmsg_realloc_string_buffer(struct blob_buf *buf, unsigned int maxlen)
static size_t blobmsg_data_len(const struct blob_attr *attr)
int blobmsg_vprintf(struct blob_buf *buf, const char *name, const char *format, va_list arg)
int blobmsg_printf(struct blob_buf *buf, const char *name, const char *format,...) __attribute__((format(printf
#define blobmsg_for_each_attr(pos, attr, rem)
static uint16_t blobmsg_namelen(const struct blobmsg_hdr *hdr)
static int blobmsg_hdrlen(unsigned int namelen)
static void * blobmsg_data(const struct blob_attr *attr)