summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-05-15 09:45:55 +0200
committerThomas Haller <thaller@redhat.com>2019-05-15 09:49:42 +0200
commit8fcadf532881ce671c999257b1b19260b7e873b5 (patch)
treee67a5049ba609fdb59c72124d478c7cc7c755277
parente813bdaf5e43d3790b84d487b6a3e0738642110b (diff)
downloadNetworkManager-8fcadf532881ce671c999257b1b19260b7e873b5.tar.gz
shared: embed scheme_type in NMSetting8021xSchemeVtable
Since we can easily lookup the vtable for a NMSetting8021xSchemeType, it is convenient to also easily get the scheme_type for a given NMSetting8021xSchemeVtable. On my x86_64, this change is basically for free as it does not increase the size of NMSetting8021xSchemeVtable, because the scheme_type fits in a previously unused part of the NMSetting8021xSchemeVtable struct.
-rw-r--r--shared/nm-meta-setting.c171
-rw-r--r--shared/nm-meta-setting.h1
2 files changed, 91 insertions, 81 deletions
diff --git a/shared/nm-meta-setting.c b/shared/nm-meta-setting.c
index 8d1d4ecd2a..42f684b7e4 100644
--- a/shared/nm-meta-setting.c
+++ b/shared/nm-meta-setting.c
@@ -73,87 +73,96 @@
/*****************************************************************************/
const NMSetting8021xSchemeVtable nm_setting_8021x_scheme_vtable[] = {
- [NM_SETTING_802_1X_SCHEME_TYPE_CA_CERT] = {
- .setting_key = NM_SETTING_802_1X_CA_CERT,
- .scheme_func = nm_setting_802_1x_get_ca_cert_scheme,
- .format_func = NULL,
- .path_func = nm_setting_802_1x_get_ca_cert_path,
- .blob_func = nm_setting_802_1x_get_ca_cert_blob,
- .uri_func = nm_setting_802_1x_get_ca_cert_uri,
- .passwd_func = nm_setting_802_1x_get_ca_cert_password,
- .pwflag_func = nm_setting_802_1x_get_ca_cert_password_flags,
- .set_cert_func = nm_setting_802_1x_set_ca_cert,
- .file_suffix = "ca-cert",
- },
-
- [NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CA_CERT] = {
- .setting_key = NM_SETTING_802_1X_PHASE2_CA_CERT,
- .scheme_func = nm_setting_802_1x_get_phase2_ca_cert_scheme,
- .format_func = NULL,
- .path_func = nm_setting_802_1x_get_phase2_ca_cert_path,
- .blob_func = nm_setting_802_1x_get_phase2_ca_cert_blob,
- .uri_func = nm_setting_802_1x_get_phase2_ca_cert_uri,
- .passwd_func = nm_setting_802_1x_get_phase2_ca_cert_password,
- .pwflag_func = nm_setting_802_1x_get_phase2_ca_cert_password_flags,
- .set_cert_func = nm_setting_802_1x_set_phase2_ca_cert,
- .file_suffix = "inner-ca-cert",
- },
-
- [NM_SETTING_802_1X_SCHEME_TYPE_CLIENT_CERT] = {
- .setting_key = NM_SETTING_802_1X_CLIENT_CERT,
- .scheme_func = nm_setting_802_1x_get_client_cert_scheme,
- .format_func = NULL,
- .path_func = nm_setting_802_1x_get_client_cert_path,
- .blob_func = nm_setting_802_1x_get_client_cert_blob,
- .uri_func = nm_setting_802_1x_get_client_cert_uri,
- .passwd_func = nm_setting_802_1x_get_client_cert_password,
- .pwflag_func = nm_setting_802_1x_get_client_cert_password_flags,
- .set_cert_func = nm_setting_802_1x_set_client_cert,
- .file_suffix = "client-cert",
- },
-
- [NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CLIENT_CERT] = {
- .setting_key = NM_SETTING_802_1X_PHASE2_CLIENT_CERT,
- .scheme_func = nm_setting_802_1x_get_phase2_client_cert_scheme,
- .format_func = NULL,
- .path_func = nm_setting_802_1x_get_phase2_client_cert_path,
- .blob_func = nm_setting_802_1x_get_phase2_client_cert_blob,
- .uri_func = nm_setting_802_1x_get_phase2_client_cert_uri,
- .passwd_func = nm_setting_802_1x_get_phase2_client_cert_password,
- .pwflag_func = nm_setting_802_1x_get_phase2_client_cert_password_flags,
- .set_cert_func = nm_setting_802_1x_set_phase2_client_cert,
- .file_suffix = "inner-client-cert",
- },
-
- [NM_SETTING_802_1X_SCHEME_TYPE_PRIVATE_KEY] = {
- .setting_key = NM_SETTING_802_1X_PRIVATE_KEY,
- .scheme_func = nm_setting_802_1x_get_private_key_scheme,
- .format_func = nm_setting_802_1x_get_private_key_format,
- .path_func = nm_setting_802_1x_get_private_key_path,
- .blob_func = nm_setting_802_1x_get_private_key_blob,
- .uri_func = nm_setting_802_1x_get_private_key_uri,
- .passwd_func = nm_setting_802_1x_get_private_key_password,
- .pwflag_func = nm_setting_802_1x_get_private_key_password_flags,
- .set_private_key_func = nm_setting_802_1x_set_private_key,
- .file_suffix = "private-key",
- .is_secret = TRUE,
- },
-
- [NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_PRIVATE_KEY] = {
- .setting_key = NM_SETTING_802_1X_PHASE2_PRIVATE_KEY,
- .scheme_func = nm_setting_802_1x_get_phase2_private_key_scheme,
- .format_func = nm_setting_802_1x_get_phase2_private_key_format,
- .path_func = nm_setting_802_1x_get_phase2_private_key_path,
- .blob_func = nm_setting_802_1x_get_phase2_private_key_blob,
- .uri_func = nm_setting_802_1x_get_phase2_private_key_uri,
- .passwd_func = nm_setting_802_1x_get_phase2_private_key_password,
- .pwflag_func = nm_setting_802_1x_get_phase2_private_key_password_flags,
- .set_private_key_func = nm_setting_802_1x_set_phase2_private_key,
- .file_suffix = "inner-private-key",
- .is_secret = TRUE,
- },
-
- [NM_SETTING_802_1X_SCHEME_TYPE_UNKNOWN] = { NULL },
+
+#define _D(_scheme_type, ...) \
+ [(_scheme_type)] = { \
+ .scheme_type = (_scheme_type), \
+ __VA_ARGS__ \
+ }
+
+ _D (NM_SETTING_802_1X_SCHEME_TYPE_UNKNOWN),
+
+ _D (NM_SETTING_802_1X_SCHEME_TYPE_CA_CERT,
+ .setting_key = NM_SETTING_802_1X_CA_CERT,
+ .scheme_func = nm_setting_802_1x_get_ca_cert_scheme,
+ .format_func = NULL,
+ .path_func = nm_setting_802_1x_get_ca_cert_path,
+ .blob_func = nm_setting_802_1x_get_ca_cert_blob,
+ .uri_func = nm_setting_802_1x_get_ca_cert_uri,
+ .passwd_func = nm_setting_802_1x_get_ca_cert_password,
+ .pwflag_func = nm_setting_802_1x_get_ca_cert_password_flags,
+ .set_cert_func = nm_setting_802_1x_set_ca_cert,
+ .file_suffix = "ca-cert",
+ ),
+
+ _D (NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CA_CERT,
+ .setting_key = NM_SETTING_802_1X_PHASE2_CA_CERT,
+ .scheme_func = nm_setting_802_1x_get_phase2_ca_cert_scheme,
+ .format_func = NULL,
+ .path_func = nm_setting_802_1x_get_phase2_ca_cert_path,
+ .blob_func = nm_setting_802_1x_get_phase2_ca_cert_blob,
+ .uri_func = nm_setting_802_1x_get_phase2_ca_cert_uri,
+ .passwd_func = nm_setting_802_1x_get_phase2_ca_cert_password,
+ .pwflag_func = nm_setting_802_1x_get_phase2_ca_cert_password_flags,
+ .set_cert_func = nm_setting_802_1x_set_phase2_ca_cert,
+ .file_suffix = "inner-ca-cert",
+ ),
+
+ _D (NM_SETTING_802_1X_SCHEME_TYPE_CLIENT_CERT,
+ .setting_key = NM_SETTING_802_1X_CLIENT_CERT,
+ .scheme_func = nm_setting_802_1x_get_client_cert_scheme,
+ .format_func = NULL,
+ .path_func = nm_setting_802_1x_get_client_cert_path,
+ .blob_func = nm_setting_802_1x_get_client_cert_blob,
+ .uri_func = nm_setting_802_1x_get_client_cert_uri,
+ .passwd_func = nm_setting_802_1x_get_client_cert_password,
+ .pwflag_func = nm_setting_802_1x_get_client_cert_password_flags,
+ .set_cert_func = nm_setting_802_1x_set_client_cert,
+ .file_suffix = "client-cert",
+ ),
+
+ _D (NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CLIENT_CERT,
+ .setting_key = NM_SETTING_802_1X_PHASE2_CLIENT_CERT,
+ .scheme_func = nm_setting_802_1x_get_phase2_client_cert_scheme,
+ .format_func = NULL,
+ .path_func = nm_setting_802_1x_get_phase2_client_cert_path,
+ .blob_func = nm_setting_802_1x_get_phase2_client_cert_blob,
+ .uri_func = nm_setting_802_1x_get_phase2_client_cert_uri,
+ .passwd_func = nm_setting_802_1x_get_phase2_client_cert_password,
+ .pwflag_func = nm_setting_802_1x_get_phase2_client_cert_password_flags,
+ .set_cert_func = nm_setting_802_1x_set_phase2_client_cert,
+ .file_suffix = "inner-client-cert",
+ ),
+
+ _D (NM_SETTING_802_1X_SCHEME_TYPE_PRIVATE_KEY,
+ .setting_key = NM_SETTING_802_1X_PRIVATE_KEY,
+ .scheme_func = nm_setting_802_1x_get_private_key_scheme,
+ .format_func = nm_setting_802_1x_get_private_key_format,
+ .path_func = nm_setting_802_1x_get_private_key_path,
+ .blob_func = nm_setting_802_1x_get_private_key_blob,
+ .uri_func = nm_setting_802_1x_get_private_key_uri,
+ .passwd_func = nm_setting_802_1x_get_private_key_password,
+ .pwflag_func = nm_setting_802_1x_get_private_key_password_flags,
+ .set_private_key_func = nm_setting_802_1x_set_private_key,
+ .file_suffix = "private-key",
+ .is_secret = TRUE,
+ ),
+
+ _D (NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_PRIVATE_KEY,
+ .setting_key = NM_SETTING_802_1X_PHASE2_PRIVATE_KEY,
+ .scheme_func = nm_setting_802_1x_get_phase2_private_key_scheme,
+ .format_func = nm_setting_802_1x_get_phase2_private_key_format,
+ .path_func = nm_setting_802_1x_get_phase2_private_key_path,
+ .blob_func = nm_setting_802_1x_get_phase2_private_key_blob,
+ .uri_func = nm_setting_802_1x_get_phase2_private_key_uri,
+ .passwd_func = nm_setting_802_1x_get_phase2_private_key_password,
+ .pwflag_func = nm_setting_802_1x_get_phase2_private_key_password_flags,
+ .set_private_key_func = nm_setting_802_1x_set_phase2_private_key,
+ .file_suffix = "inner-private-key",
+ .is_secret = TRUE,
+ ),
+
+#undef _D
};
/*****************************************************************************/
diff --git a/shared/nm-meta-setting.h b/shared/nm-meta-setting.h
index 73ee103ee5..1a74f65a27 100644
--- a/shared/nm-meta-setting.h
+++ b/shared/nm-meta-setting.h
@@ -101,6 +101,7 @@ typedef struct {
NMSetting8021xCKFormat *out_format,
GError **error);
const char *file_suffix;
+ NMSetting8021xSchemeType scheme_type;
bool is_secret:1;
} NMSetting8021xSchemeVtable;