return NULL;
}
-static int nw_port_bonding_config_read(nw_port* port) {
- int r;
-
- // Mode
- const char* mode = nw_config_get(port->config, "BONDING_MODE");
- if (mode) {
- r = nw_port_bonding_set_mode(port, mode);
- if (r)
- return r;
+static int nw_port_bonding_read_mode(nw_config* config, const char* key, void* data) {
+ int* mode = (int*)data;
+
+ const char* value = nw_config_get(config, key);
+ if (value) {
+ *mode = nw_port_bonding_mode_from_string(value);
+ if (!*mode)
+ return -errno;
}
return 0;
}
-static int nw_port_bonding_config_write(nw_port* port) {
+static int nw_port_bonding_write_mode(nw_config* config, const char* key, const void* data) {
+ const int* mode = (int*)data;
+
+ return nw_config_set(config, key, nw_port_bonding_mode_to_string(*mode));
+}
+
+static int nw_port_bonding_setup(nw_port* port) {
int r;
// Mode
- r = nw_config_set(port->config, "BONDING_MODE",
- nw_port_bonding_mode_to_string(port->bonding.mode));
- if (r)
+ r = NW_CONFIG_OPTION(port->config, "BONDING_MODE", &port->bonding.mode,
+ nw_port_bonding_read_mode, nw_port_bonding_write_mode);
+ if (r < 0)
return r;
return 0;
// Operations
.ops = {
// Configuration
- .config_read = nw_port_bonding_config_read,
- .config_write = nw_port_bonding_config_write,
+ .setup = nw_port_bonding_setup,
// Link
.create_link = nw_port_bonding_create_link,