summaryrefslogtreecommitdiffstats
path: root/lib/pb-config/pb-config.c
blob: 5cd303b06d257e6292fc49a87f918ba24308db78 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89

#include <log/log.h>
#include <talloc/talloc.h>

#include "pb-config.h"

#include "storage.h"

static struct config		*config;
static struct config_storage	*storage;


static void config_set_defaults(struct config *config)
{
	config->autoboot_enabled = true;
	config->network.interfaces = NULL;
	config->network.n_interfaces = 0;
}

static void dump_config(struct config *config)
{
	int i;

	pb_log("configuration:\n");

	pb_log(" autoboot: %s\n",
			config->autoboot_enabled ? "enabled" : "disabled");

	if (config->n_network_configs > 0)
		pb_log(" network configuration:\n");

	for (i = 0; i < config->network.n_interfaces; i++) {
		struct interface_config *ifconf =
			config->network.interfaces[i];

		pb_log("  interface %02x:%02x:%02x:%02x:%02x:%02x\n",
				ifconf->hwaddr[0], ifconf->hwaddr[1],
				ifconf->hwaddr[2], ifconf->hwaddr[3],
				ifconf->hwaddr[4], ifconf->hwaddr[5]);

		if (ifconf->ignore) {
			pb_log("   ignore\n");
			continue;
		}

		if (ifconf->method == CONFIG_METHOD_DHCP) {
			pb_log("   dhcp\n");

		} else if (ifconf->method == CONFIG_METHOD_STATIC) {
			pb_log("   static:\n");
			pb_log("    ip:  %s\n", ifconf->static_config.address);
			pb_log("    gw:  %s\n", ifconf->static_config.gateway);

		}
	}
}

int config_init(void *ctx)
{
	config = talloc(ctx, struct config);
	config_set_defaults(config);

	storage = create_powerpc_nvram_storage(config);

	storage->load(storage, config);

	dump_config(config);

	return 0;
}

const struct config *config_get(void)
{
	return config;
}

void config_set_autoboot(bool autoboot_enabled)
{
	config->autoboot_enabled = autoboot_enabled;

	pb_log("set autoboot: %s\n",
			config->autoboot_enabled ? "enabled" : "disabled");
}

int config_fini(void)
{
	talloc_free(config);
	return 0;
}
OpenPOWER on IntegriCloud