diff options
Diffstat (limited to 'src/core/supplicant/nm-supplicant-config.c')
| -rw-r--r-- | src/core/supplicant/nm-supplicant-config.c | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/core/supplicant/nm-supplicant-config.c b/src/core/supplicant/nm-supplicant-config.c index 1d9372e0..9ad4a8f9 100644 --- a/src/core/supplicant/nm-supplicant-config.c +++ b/src/core/supplicant/nm-supplicant-config.c @@ -396,14 +396,16 @@ again: } gboolean -nm_supplicant_config_add_setting_macsec(NMSupplicantConfig *self, - NMSettingMacsec *setting, - GError **error) +nm_supplicant_config_add_setting_macsec(NMSupplicantConfig *self, + NMSettingMacsec *setting, + NMSettingMacsecOffload offload, + GError **error) { const char *value; char buf[32]; int port; gsize key_len; + const char *offload_str = NULL; g_return_val_if_fail(NM_IS_SUPPLICANT_CONFIG(self), FALSE); g_return_val_if_fail(setting != NULL, FALSE); @@ -472,6 +474,28 @@ nm_supplicant_config_add_setting_macsec(NMSupplicantConfig *self, return FALSE; } + switch (offload) { + case NM_SETTING_MACSEC_OFFLOAD_OFF: + /* This is the default in wpa_supplicant. Don't set the option, + * so that if user doesn't enable offload, the connection still + * works with previous versions of the supplicant. + */ + break; + case NM_SETTING_MACSEC_OFFLOAD_PHY: + offload_str = "1"; + break; + case NM_SETTING_MACSEC_OFFLOAD_MAC: + offload_str = "2"; + break; + case NM_SETTING_MACSEC_OFFLOAD_DEFAULT: + nm_assert_not_reached(); + break; + } + if (offload_str + && !nm_supplicant_config_add_option(self, "macsec_offload", offload_str, -1, NULL, error)) { + return FALSE; + } + return TRUE; } |