Added clear_setting()
authorMichael Brown <mcb30@etherboot.org>
Tue, 12 Dec 2006 15:49:46 +0000 (15:49 +0000)
committerMichael Brown <mcb30@etherboot.org>
Tue, 12 Dec 2006 15:49:46 +0000 (15:49 +0000)
src/core/settings.c
src/include/gpxe/settings.h

index 650673b..3eface4 100644 (file)
@@ -115,7 +115,8 @@ find_or_build_config_setting ( const char *name,
        return setting;
 }
 
-/** Show value of setting
+/**
+ * Show value of setting
  *
  * @v context          Configuration context
  * @v name             Configuration setting name
@@ -134,7 +135,8 @@ int show_setting ( struct config_context *context, const char *name,
        return setting->type->show ( context, setting, buf, len );
 }
 
-/** Set value of setting
+/**
+ * Set value of setting
  *
  * @v context          Configuration context
  * @v name             Configuration setting name
@@ -152,6 +154,27 @@ int set_setting ( struct config_context *context, const char *name,
        return setting->type->set ( context, setting, value );
 }
 
+/**
+ * Clear setting
+ *
+ * @v context          Configuration context
+ * @v name             Configuration setting name
+ * @ret rc             Return status code
+ */
+int clear_setting ( struct config_context *context, const char *name ) {
+       struct config_setting *setting;
+       struct config_setting tmp_setting;
+
+       setting = find_or_build_config_setting ( name, &tmp_setting );
+       if ( ! setting )
+               return -ENOENT;
+
+       /* All types of settings get cleared the same way */
+       delete_dhcp_option ( context->options, setting->tag );
+
+       return 0;
+}
+
 /**
  * Show value of string setting
  *
index f5ecae9..ab0de5b 100644 (file)
@@ -102,5 +102,6 @@ extern int show_setting ( struct config_context *context, const char *name,
                          char *buf, size_t len );
 extern int set_setting ( struct config_context *context, const char *name,
                         const char *value );
+extern int clear_setting ( struct config_context *context, const char *name );
 
 #endif /* _GPXE_SETTINGS_H */