summaryrefslogtreecommitdiffstats
path: root/src/include/ipxe/params.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/ipxe/params.h')
-rw-r--r--src/include/ipxe/params.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/include/ipxe/params.h b/src/include/ipxe/params.h
new file mode 100644
index 000000000..d78adf562
--- /dev/null
+++ b/src/include/ipxe/params.h
@@ -0,0 +1,46 @@
+#ifndef _IPXE_PARAMS_H
+#define _IPXE_PARAMS_H
+
+/** @file
+ *
+ * Form parameters
+ *
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER );
+
+#include <ipxe/list.h>
+#include <ipxe/refcnt.h>
+
+/** A form parameter list */
+struct parameters {
+ /** List of all parameter lists */
+ struct list_head list;
+ /** Name */
+ const char *name;
+ /** Parameters */
+ struct list_head entries;
+};
+
+/** A form parameter */
+struct parameter {
+ /** List of form parameters */
+ struct list_head list;
+ /** Key */
+ const char *key;
+ /** Value */
+ const char *value;
+};
+
+/** Iterate over all form parameters in a list */
+#define for_each_param( param, params ) \
+ list_for_each_entry ( (param), &(params)->entries, list )
+
+extern struct parameters * find_parameters ( const char *name );
+extern struct parameters * create_parameters ( const char *name );
+extern struct parameter * add_parameter ( struct parameters *params,
+ const char *key, const char *value );
+extern void destroy_parameters ( struct parameters *params );
+extern void claim_parameters ( struct parameters *params );
+
+#endif /* _IPXE_PARAMS_H */