aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/parseopt.c23
-rw-r--r--src/include/ipxe/parseopt.h4
2 files changed, 27 insertions, 0 deletions
diff --git a/src/core/parseopt.c b/src/core/parseopt.c
index 51450835..334ffb2c 100644
--- a/src/core/parseopt.c
+++ b/src/core/parseopt.c
@@ -140,6 +140,29 @@ int parse_netdev ( char *text, struct net_device **netdev ) {
}
/**
+ * Parse network device configurator name
+ *
+ * @v text Text
+ * @ret configurator Network device configurator
+ * @ret rc Return status code
+ */
+int parse_netdev_configurator ( char *text,
+ struct net_device_configurator **configurator ){
+
+ /* Sanity check */
+ assert ( text != NULL );
+
+ /* Find network device configurator */
+ *configurator = find_netdev_configurator ( text );
+ if ( ! *configurator ) {
+ printf ( "\"%s\": no such configurator\n", text );
+ return -ENOTSUP;
+ }
+
+ return 0;
+}
+
+/**
* Parse menu name
*
* @v text Text
diff --git a/src/include/ipxe/parseopt.h b/src/include/ipxe/parseopt.h
index e3b54c8e..840de749 100644
--- a/src/include/ipxe/parseopt.h
+++ b/src/include/ipxe/parseopt.h
@@ -14,6 +14,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include <ipxe/settings.h>
struct net_device;
+struct net_device_configurator;
struct menu;
struct parameters;
@@ -128,6 +129,9 @@ extern int parse_string ( char *text, char **value );
extern int parse_integer ( char *text, unsigned int *value );
extern int parse_timeout ( char *text, unsigned long *value );
extern int parse_netdev ( char *text, struct net_device **netdev );
+extern int
+parse_netdev_configurator ( char *text,
+ struct net_device_configurator **configurator );
extern int parse_menu ( char *text, struct menu **menu );
extern int parse_flag ( char *text __unused, int *flag );
extern int parse_key ( char *text, unsigned int *key );