summaryrefslogtreecommitdiff
path: root/src/devices
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-04-05 12:31:49 +0200
committerThomas Haller <thaller@redhat.com>2019-04-05 16:27:17 +0200
commit47412936c2a1149d950825f979f75c7ad296906b (patch)
treee33022ece13a0df3553c8e2074fe84f0fa279ee7 /src/devices
parentb25cf61a3367b6bfa1757ce59095f95ab10ede89 (diff)
downloadNetworkManager-47412936c2a1149d950825f979f75c7ad296906b.tar.gz
device: limit maximum MTU for connection default of "infiniband.mtu"
Connection defaults should correspond in range to the per-profile values. "infiniband.mtu" is required to be not larger than 65520, so we also need to honor that when parsing the connection default.
Diffstat (limited to 'src/devices')
-rw-r--r--src/devices/nm-device-private.h3
-rw-r--r--src/devices/nm-device.c10
-rw-r--r--src/devices/wwan/nm-modem.c2
3 files changed, 9 insertions, 6 deletions
diff --git a/src/devices/nm-device-private.h b/src/devices/nm-device-private.h
index 6e2372abf9..dd98e92f73 100644
--- a/src/devices/nm-device-private.h
+++ b/src/devices/nm-device-private.h
@@ -168,7 +168,8 @@ NMIPConfig *nm_device_ip_config_new (NMDevice *self, int addr_family);
/*****************************************************************************/
gint64 nm_device_get_configured_mtu_from_connection_default (NMDevice *self,
- const char *property_name);
+ const char *property_name,
+ guint32 max_mtu);
guint32 nm_device_get_configured_mtu_from_connection (NMDevice *device,
GType setting_type,
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 925c1b5252..1b594ce000 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -8926,12 +8926,13 @@ linklocal6_start (NMDevice *self)
gint64
nm_device_get_configured_mtu_from_connection_default (NMDevice *self,
- const char *property_name)
+ const char *property_name,
+ guint32 max_mtu)
{
return nm_config_data_get_connection_default_int64 (NM_CONFIG_GET_DATA,
property_name,
self,
- 0, G_MAXUINT32, -1);
+ 0, max_mtu, -1);
}
guint32
@@ -8944,6 +8945,7 @@ nm_device_get_configured_mtu_from_connection (NMDevice *self,
NMSetting *setting;
gint64 mtu_default;
guint32 mtu = 0;
+ guint32 max_mtu = G_MAXUINT32;
nm_assert (NM_IS_DEVICE (self));
nm_assert (out_source);
@@ -8966,6 +8968,7 @@ nm_device_get_configured_mtu_from_connection (NMDevice *self,
if (setting)
mtu = nm_setting_infiniband_get_mtu (NM_SETTING_INFINIBAND (setting));
global_property_name = NM_CON_DEFAULT ("infiniband.mtu");
+ max_mtu = NM_INFINIBAND_MAX_MTU;
} else if (setting_type == NM_TYPE_SETTING_IP_TUNNEL) {
if (setting)
mtu = nm_setting_ip_tunnel_get_mtu (NM_SETTING_IP_TUNNEL (setting));
@@ -8977,13 +8980,12 @@ nm_device_get_configured_mtu_from_connection (NMDevice *self,
} else
g_return_val_if_reached (0);
-
if (mtu) {
*out_source = NM_DEVICE_MTU_SOURCE_CONNECTION;
return mtu;
}
- mtu_default = nm_device_get_configured_mtu_from_connection_default (self, global_property_name);
+ mtu_default = nm_device_get_configured_mtu_from_connection_default (self, global_property_name, max_mtu);
if (mtu_default >= 0) {
*out_source = NM_DEVICE_MTU_SOURCE_CONNECTION;
return (guint32) mtu_default;
diff --git a/src/devices/wwan/nm-modem.c b/src/devices/wwan/nm-modem.c
index 2217f2a2df..1779422956 100644
--- a/src/devices/wwan/nm-modem.c
+++ b/src/devices/wwan/nm-modem.c
@@ -885,7 +885,7 @@ nm_modem_get_configured_mtu (NMDevice *self, NMDeviceMtuSource *out_source)
}
property_name = NM_IS_SETTING_GSM (setting) ? "gsm.mtu" : "cdma.mtu";
- mtu_default = nm_device_get_configured_mtu_from_connection_default (self, property_name);
+ mtu_default = nm_device_get_configured_mtu_from_connection_default (self, property_name, G_MAXUINT32);
if (mtu_default >= 0) {
*out_source = NM_DEVICE_MTU_SOURCE_CONNECTION;
return (guint32) mtu_default;