make blob attribute checking available externally
[project/libubox.git] / blob.h
diff --git a/blob.h b/blob.h
index e598c5e..7d7509c 100644 (file)
--- a/blob.h
+++ b/blob.h
@@ -107,7 +107,7 @@ struct blob_attr_info {
        unsigned int type;
        unsigned int minlen;
        unsigned int maxlen;
-       bool (*validate)(struct blob_attr_info *, struct blob_attr *);
+       bool (*validate)(const struct blob_attr_info *, struct blob_attr *);
 };
 
 struct blob_buf {
@@ -115,7 +115,6 @@ struct blob_buf {
        bool (*grow)(struct blob_buf *buf, int minlen);
        int buflen;
        void *buf;
-       void *priv;
 };
 
 /*
@@ -141,7 +140,7 @@ blob_id(struct blob_attr *attr)
  * blob_len: returns the length of the attribute's payload
  */
 static inline unsigned int
-blob_len(struct blob_attr *attr)
+blob_len(const struct blob_attr *attr)
 {
        return (be32_to_cpu(attr->id_len) & BLOB_ATTR_LEN_MASK) - sizeof(struct blob_attr);
 }
@@ -219,7 +218,8 @@ extern struct blob_attr *blob_new(struct blob_buf *buf, int id, int payload);
 extern void *blob_nest_start(struct blob_buf *buf, int id);
 extern void blob_nest_end(struct blob_buf *buf, void *cookie);
 extern struct blob_attr *blob_put(struct blob_buf *buf, int id, const void *ptr, int len);
-extern int blob_parse(struct blob_attr *attr, struct blob_attr **data, struct blob_attr_info *info, int max);
+extern bool blob_check_type(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);
 
 static inline struct blob_attr *
 blob_put_string(struct blob_buf *buf, int id, const char *str)