summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/ipxe/params.h46
-rw-r--r--src/include/ipxe/parseopt.h2
2 files changed, 48 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 */
diff --git a/src/include/ipxe/parseopt.h b/src/include/ipxe/parseopt.h
index 2e38d231f..108ce04ce 100644
--- a/src/include/ipxe/parseopt.h
+++ b/src/include/ipxe/parseopt.h
@@ -15,6 +15,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
struct net_device;
struct menu;
+struct parameters;
/** A command-line option descriptor */
struct option_descriptor {
@@ -135,6 +136,7 @@ extern int parse_setting ( char *text, struct named_setting *setting,
extern int parse_existing_setting ( char *text, struct named_setting *setting );
extern int parse_autovivified_setting ( char *text,
struct named_setting *setting );
+extern int parse_parameters ( char *text, struct parameters **params );
extern void print_usage ( struct command_descriptor *cmd, char **argv );
extern int reparse_options ( int argc, char **argv,
struct command_descriptor *cmd, void *opts );