return attr;
}
+struct blob_attr *
+blob_put_raw(struct blob_buf *buf, const void *ptr, int len)
+{
+ struct blob_attr *attr;
+
+ if (len < sizeof(struct blob_attr) || !ptr)
+ return NULL;
+
+ attr = blob_add(buf, blob_next(buf->head), 0, len - sizeof(struct blob_attr));
+ blob_set_raw_len(buf->head, blob_pad_len(buf->head) + len);
+ memcpy(attr, ptr, len);
+ return attr;
+}
+
struct blob_attr *
blob_put(struct blob_buf *buf, int id, const void *ptr, int len)
{
extern bool blob_check_type(const void *ptr, int len, int type);
extern int blob_parse(struct blob_attr *attr, struct blob_attr **data, const struct blob_attr_info *info, int max);
extern struct blob_attr *blob_memdup(struct blob_attr *attr);
+extern struct blob_attr *blob_put_raw(struct blob_buf *buf, const void *ptr, int len);
static inline struct blob_attr *
blob_put_string(struct blob_buf *buf, int id, const char *str)