summaryrefslogtreecommitdiff
path: root/src/nm-config.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nm-config.c')
-rw-r--r--src/nm-config.c61
1 files changed, 55 insertions, 6 deletions
diff --git a/src/nm-config.c b/src/nm-config.c
index 3a4572b574..cead84e86d 100644
--- a/src/nm-config.c
+++ b/src/nm-config.c
@@ -1923,6 +1923,8 @@ _nm_config_state_set (NMConfig *self,
#define DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_PERM_HW_ADDR_FAKE "perm-hw-addr-fake"
#define DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_CONNECTION_UUID "connection-uuid"
#define DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_NM_OWNED "nm-owned"
+#define DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_ROUTE_METRIC_DEFAULT_V4 "route-metric-default-v4"
+#define DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_ROUTE_METRIC_DEFAULT_V6 "route-metric-default-v6"
NM_UTILS_LOOKUP_STR_DEFINE_STATIC (_device_state_managed_type_to_str, NMConfigDeviceStateManagedType,
NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT ("unknown"),
@@ -1942,6 +1944,11 @@ _config_device_state_data_new (int ifindex, GKeyFile *kf)
gsize perm_hw_addr_fake_len;
gint nm_owned = -1;
char *p;
+ gint64 v_int64;
+ gboolean route_metric_default_has_v4 = FALSE;
+ gboolean route_metric_default_has_v6 = FALSE;
+ guint32 route_metric_default_val_v4 = 0;
+ guint32 route_metric_default_val_v6 = 0;
nm_assert (ifindex > 0);
@@ -1981,6 +1988,24 @@ _config_device_state_data_new (int ifindex, GKeyFile *kf)
DEVICE_RUN_STATE_KEYFILE_GROUP_DEVICE,
DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_NM_OWNED,
-1);
+
+ v_int64 = nm_config_keyfile_get_int64 (kf,
+ DEVICE_RUN_STATE_KEYFILE_GROUP_DEVICE,
+ DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_ROUTE_METRIC_DEFAULT_V4,
+ 10, 0, G_MAXINT32, -1);
+ if (v_int64 != -1) {
+ route_metric_default_has_v4 = TRUE;
+ route_metric_default_val_v4 = v_int64;
+ }
+
+ v_int64 = nm_config_keyfile_get_int64 (kf,
+ DEVICE_RUN_STATE_KEYFILE_GROUP_DEVICE,
+ DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_ROUTE_METRIC_DEFAULT_V6,
+ 10, 0, G_MAXINT32, -1);
+ if (v_int64 != -1) {
+ route_metric_default_has_v6 = TRUE;
+ route_metric_default_val_v6 = v_int64;
+ }
}
connection_uuid_len = connection_uuid ? strlen (connection_uuid) + 1 : 0;
@@ -1995,6 +2020,10 @@ _config_device_state_data_new (int ifindex, GKeyFile *kf)
device_state->connection_uuid = NULL;
device_state->perm_hw_addr_fake = NULL;
device_state->nm_owned = nm_owned;
+ device_state->route_metric_default_has_v4 = route_metric_default_has_v4;
+ device_state->route_metric_default_has_v6 = route_metric_default_has_v6;
+ device_state->route_metric_default_val_v4 = route_metric_default_val_v4;
+ device_state->route_metric_default_val_v6 = route_metric_default_val_v6;
p = (char *) (&device_state[1]);
if (connection_uuid) {
@@ -2039,14 +2068,15 @@ nm_config_device_state_load (int ifindex)
", nm-owned=1" :
(device_state->nm_owned == FALSE ? ", nm-owned=0" : "");
-
- _LOGT ("device-state: %s #%d (%s); managed=%s%s%s%s%s%s%s%s",
+ _LOGT ("device-state: %s #%d (%s); managed=%s%s%s%s%s%s%s%s, route-metric-default-v4=%"G_GINT64_FORMAT", , route-metric-default-v6=%"G_GINT64_FORMAT,
kf ? "read" : "miss",
ifindex, path,
_device_state_managed_type_to_str (device_state->managed),
NM_PRINT_FMT_QUOTED (device_state->connection_uuid, ", connection-uuid=", device_state->connection_uuid, "", ""),
NM_PRINT_FMT_QUOTED (device_state->perm_hw_addr_fake, ", perm-hw-addr-fake=", device_state->perm_hw_addr_fake, "", ""),
- nm_owned_str);
+ nm_owned_str,
+ device_state->route_metric_default_has_v4 ? (gint64) device_state->route_metric_default_val_v4 : (gint64) -1,
+ device_state->route_metric_default_has_v6 ? (gint64) device_state->route_metric_default_val_v6 : (gint64) -1);
return device_state;
}
@@ -2101,7 +2131,11 @@ nm_config_device_state_write (int ifindex,
NMConfigDeviceStateManagedType managed,
const char *perm_hw_addr_fake,
const char *connection_uuid,
- gint nm_owned)
+ gint nm_owned,
+ gboolean route_metric_default_has_v4,
+ guint32 route_metric_default_val_v4,
+ gboolean route_metric_default_has_v6,
+ guint32 route_metric_default_val_v6)
{
char path[NM_STRLEN (NM_CONFIG_DEVICE_STATE_DIR) + 60];
GError *local = NULL;
@@ -2143,17 +2177,32 @@ nm_config_device_state_write (int ifindex,
nm_owned);
}
+ if (route_metric_default_has_v4) {
+ g_key_file_set_int64 (kf,
+ DEVICE_RUN_STATE_KEYFILE_GROUP_DEVICE,
+ DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_ROUTE_METRIC_DEFAULT_V4,
+ route_metric_default_val_v4);
+ }
+
+ if (route_metric_default_has_v6) {
+ g_key_file_set_int64 (kf,
+ DEVICE_RUN_STATE_KEYFILE_GROUP_DEVICE,
+ DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_ROUTE_METRIC_DEFAULT_V6,
+ route_metric_default_val_v6);
+ }
if (!g_key_file_save_to_file (kf, path, &local)) {
_LOGW ("device-state: write #%d (%s) failed: %s", ifindex, path, local->message);
g_error_free (local);
return FALSE;
}
- _LOGT ("device-state: write #%d (%s); managed=%s%s%s%s%s%s%s",
+ _LOGT ("device-state: write #%d (%s); managed=%s%s%s%s%s%s%s, route-metric-default-v4=%"G_GINT64_FORMAT", , route-metric-default-v6=%"G_GINT64_FORMAT,
ifindex, path,
_device_state_managed_type_to_str (managed),
NM_PRINT_FMT_QUOTED (connection_uuid, ", connection-uuid=", connection_uuid, "", ""),
- NM_PRINT_FMT_QUOTED (perm_hw_addr_fake, ", perm-hw-addr-fake=", perm_hw_addr_fake, "", ""));
+ NM_PRINT_FMT_QUOTED (perm_hw_addr_fake, ", perm-hw-addr-fake=", perm_hw_addr_fake, "", ""),
+ route_metric_default_has_v4 ? (gint64) route_metric_default_val_v4 : (gint64) -1,
+ route_metric_default_has_v6 ? (gint64) route_metric_default_val_v6 : (gint64) -1);
return TRUE;
}