discover: Handle incoming configuration messages
[petitboot] / lib / pb-config / storage-test.c
index 3114712b4825cb60625ac3d76640004e531fd2fa..48cb238bd383bcaabb1efc2e571d3033d1c749d4 100644 (file)
@@ -4,6 +4,8 @@
 #include <sys/types.h>
 #include <sys/wait.h>
 
+#include <util/util.h>
+
 #include "pb-config.h"
 #include "storage.h"
 
@@ -24,8 +26,6 @@ struct interface_config net2 = {
 struct interface_config *interface_configs[] = { &net1, &net2 };
 const char *dns_servers[] = { "192.168.1.1", "192.168.1.2" };
 
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-
 struct config test_config = {
        .autoboot_enabled = true,
        .network = {
@@ -40,22 +40,34 @@ struct test_storage {
        struct config_storage   storage;
        struct param            *params;
        int                     n_params;
+       struct config           *config;
 };
 
-static int load(struct config_storage *st __attribute__((unused)),
-               struct config *config)
+#define to_test_storage(st) container_of(st, struct test_storage, storage)
+
+static int load(struct config_storage *st, struct config *config)
+{
+       struct test_storage *ts = to_test_storage(st);
+       memcpy(config, ts->config, sizeof(test_config));
+       return 0;
+}
+
+static int save(struct config_storage *st, struct config *newconfig)
 {
-       memcpy(config, &test_config, sizeof(test_config));
+       struct test_storage *ts = to_test_storage(st);
+       ts->config = newconfig;
        return 0;
 }
 
 static struct test_storage st = {
        .storage = {
                .load  = load,
+               .save = save,
        },
 };
 
 struct config_storage *create_test_storage(void *ctx __attribute__((unused)))
 {
+       st.config = &test_config;
        return &st.storage;
 }