diff options
author | Thomas Haller <thaller@redhat.com> | 2019-04-05 12:31:49 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-04-05 16:27:17 +0200 |
commit | 47412936c2a1149d950825f979f75c7ad296906b (patch) | |
tree | e33022ece13a0df3553c8e2074fe84f0fa279ee7 | |
parent | b25cf61a3367b6bfa1757ce59095f95ab10ede89 (diff) | |
download | NetworkManager-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.
-rw-r--r-- | src/devices/nm-device-private.h | 3 | ||||
-rw-r--r-- | src/devices/nm-device.c | 10 | ||||
-rw-r--r-- | src/devices/wwan/nm-modem.c | 2 |
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; |