+ * if extended is set to true, uci_lookup_ptr supports the following
+ * extended syntax:
+ *
+ * Examples:
+ * network.@interface[0].ifname ('ifname' option of the first interface section)
+ * network.@interface[-1] (last interface section)
+ * Note: uci_lookup_ext will automatically load a config package if necessary
+ */
+extern int uci_lookup_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *str, bool extended);
+
+/**
+ * uci_add_section: Add an unnamed section
+ * @ctx: uci context
+ * @p: package to add the section to
+ * @type: section type
+ * @res: pointer to store a reference to the new section in
+ */
+extern int uci_add_section(struct uci_context *ctx, struct uci_package *p, const char *type, struct uci_section **res);
+
+/**
+ * uci_set: Set an element's value; create the element if necessary
+ * @ctx: uci context
+ * @ptr: uci pointer
+ *
+ * The updated/created element is stored in ptr->last
+ */
+extern int uci_set(struct uci_context *ctx, struct uci_ptr *ptr);
+
+/**
+ * uci_add_list: Append a string to an element list
+ * @ctx: uci context
+ * @ptr: uci pointer (with value)
+ *
+ * Note: if the given option already contains a string value,
+ * it will be converted to an 1-element-list before appending the next element
+ */
+extern int uci_add_list(struct uci_context *ctx, struct uci_ptr *ptr);
+
+/**
+ * uci_rename: Rename an element
+ * @ctx: uci context
+ * @ptr: uci pointer (with value)
+ */
+extern int uci_rename(struct uci_context *ctx, struct uci_ptr *ptr);
+
+/**
+ * uci_delete: Delete a section or option