From 2c6011bdaf343014ddcdc88cbb7c515535b3c865 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 10 Jun 2020 12:52:26 +0200 Subject: supplicant: use macros to initialize config options --- src/supplicant/nm-supplicant-settings-verify.c | 275 +++++++++++++------------ 1 file changed, 140 insertions(+), 135 deletions(-) diff --git a/src/supplicant/nm-supplicant-settings-verify.c b/src/supplicant/nm-supplicant-settings-verify.c index 76f60e5ece..26850a6fca 100644 --- a/src/supplicant/nm-supplicant-settings-verify.c +++ b/src/supplicant/nm-supplicant-settings-verify.c @@ -12,10 +12,10 @@ struct Opt { const char *key; + const char *const*str_allowed; const NMSupplOptType type; - const guint16 int_low; /* Inclusive */ + const guint32 int_low; /* Inclusive */ const guint32 int_high; /* Inclusive; max length for strings */ - const char *const*str_allowed; }; static gboolean validate_type_int (const struct Opt * opt, @@ -36,140 +36,145 @@ static gboolean validate_type_keyword (const struct Opt * opt, typedef gboolean (*validate_func) (const struct Opt *, const char *, const guint32); +#define OPT_INT( _key, _int_low, _int_high) { .key = _key, .type = NM_SUPPL_OPT_TYPE_INT, .int_high = _int_high, .int_low = _int_low, } +#define OPT_BYTES( _key, _int_high) { .key = _key, .type = NM_SUPPL_OPT_TYPE_BYTES, .int_high = _int_high, } +#define OPT_UTF8( _key, _int_high) { .key = _key, .type = NM_SUPPL_OPT_TYPE_UTF8, .int_high = _int_high, } +#define OPT_KEYWORD(_key, _str_allowed) { .key = _key, .type = NM_SUPPL_OPT_TYPE_KEYWORD, .str_allowed = _str_allowed, } + static const struct Opt opt_table[] = { - { "altsubject_match", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "altsubject_match2", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "anonymous_identity", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "auth_alg", NM_SUPPL_OPT_TYPE_KEYWORD, 0, 0, NM_MAKE_STRV ( - "OPEN", - "SHARED", - "LEAP", - ) }, - { "bgscan", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "bssid", NM_SUPPL_OPT_TYPE_KEYWORD, 0, 0, NULL }, - { "ca_cert", NM_SUPPL_OPT_TYPE_BYTES, 0, 65536, NULL }, - { "ca_cert2", NM_SUPPL_OPT_TYPE_BYTES, 0, 65536, NULL }, - { "ca_path", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "ca_path2", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "client_cert", NM_SUPPL_OPT_TYPE_BYTES, 0, 65536, NULL }, - { "client_cert2", NM_SUPPL_OPT_TYPE_BYTES, 0, 65536, NULL }, - { "domain_match", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "domain_match2", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "domain_suffix_match", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "domain_suffix_match2", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "eap", NM_SUPPL_OPT_TYPE_KEYWORD, 0, 0, NM_MAKE_STRV ( - "LEAP", - "MD5", - "TLS", - "PEAP", - "TTLS", - "SIM", - "PSK", - "FAST", - "PWD", - ) }, - { "eapol_flags", NM_SUPPL_OPT_TYPE_INT, 0, 3, NULL }, - { "eappsk", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "engine", NM_SUPPL_OPT_TYPE_INT, 0, 1, NULL }, - { "engine_id", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "fragment_size", NM_SUPPL_OPT_TYPE_INT, 1, 2000, NULL }, - { "freq_list", NM_SUPPL_OPT_TYPE_KEYWORD, 0, 0, NULL }, - { "frequency", NM_SUPPL_OPT_TYPE_INT, 2412, 5825, NULL }, - { "group", NM_SUPPL_OPT_TYPE_KEYWORD, 0, 0, NM_MAKE_STRV ( - "CCMP", - "TKIP", - "WEP104", - "WEP40", - ) }, - { "identity", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "ieee80211w", NM_SUPPL_OPT_TYPE_INT, 0, 2, NULL }, - { "ignore_broadcast_ssid", NM_SUPPL_OPT_TYPE_INT, 0, 2, NULL }, - { "key_id", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "key_mgmt", NM_SUPPL_OPT_TYPE_KEYWORD, 0, 0, NM_MAKE_STRV ( - "WPA-PSK", - "WPA-PSK-SHA256", - "FT-PSK", - "WPA-EAP", - "WPA-EAP-SHA256", - "FT-EAP", - "FT-EAP-SHA384", - "FILS-SHA256", - "FILS-SHA384", - "FT-FILS-SHA256", - "FT-FILS-SHA384", - "IEEE8021X", - "SAE", - "FT-SAE", - "OWE", - "NONE", - ) }, - { "macsec_integ_only", NM_SUPPL_OPT_TYPE_INT, 0, 1, NULL }, - { "macsec_policy", NM_SUPPL_OPT_TYPE_INT, 0, 1, NULL }, - { "macsec_port", NM_SUPPL_OPT_TYPE_INT, 1, 65534, NULL }, - { "mka_cak", NM_SUPPL_OPT_TYPE_BYTES, 0, 65536, NULL }, - { "mka_ckn", NM_SUPPL_OPT_TYPE_BYTES, 0, 65536, NULL }, - { "nai", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "pac_file", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "pairwise", NM_SUPPL_OPT_TYPE_KEYWORD, 0, 0, NM_MAKE_STRV ( - "CCMP", - "TKIP", - "NONE", - ) }, - { "password", NM_SUPPL_OPT_TYPE_UTF8, 0, 0, NULL }, - { "pcsc", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "phase1", NM_SUPPL_OPT_TYPE_KEYWORD, 0, 0, NM_MAKE_STRV ( - "peapver=0", - "peapver=1", - "peaplabel=1", - "peap_outer_success=0", - "include_tls_length=1", - "sim_min_num_chal=3", - "fast_provisioning=0", - "fast_provisioning=1", - "fast_provisioning=2", - "fast_provisioning=3", - "tls_disable_tlsv1_0=0", - "tls_disable_tlsv1_0=1", - "tls_disable_tlsv1_1=0", - "tls_disable_tlsv1_1=1", - "tls_disable_tlsv1_2=0", - "tls_disable_tlsv1_2=1", - ) }, - { "phase2", NM_SUPPL_OPT_TYPE_KEYWORD, 0, 0, NM_MAKE_STRV ( - "auth=PAP", - "auth=CHAP", - "auth=MSCHAP", - "auth=MSCHAPV2", - "auth=GTC", - "auth=OTP", - "auth=MD5", - "auth=TLS", - "autheap=MD5", - "autheap=MSCHAPV2", - "autheap=OTP", - "autheap=GTC", - "autheap=TLS", - ) }, - { "pin", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "private_key", NM_SUPPL_OPT_TYPE_BYTES, 0, 65536, NULL }, - { "private_key2", NM_SUPPL_OPT_TYPE_BYTES, 0, 65536, NULL }, - { "private_key2_passwd", NM_SUPPL_OPT_TYPE_BYTES, 0, 1024, NULL }, - { "private_key_passwd", NM_SUPPL_OPT_TYPE_BYTES, 0, 1024, NULL }, - { "proactive_key_caching", NM_SUPPL_OPT_TYPE_INT, 0, 1, NULL }, - { "proto", NM_SUPPL_OPT_TYPE_KEYWORD, 0, 0, NM_MAKE_STRV ( - "WPA", - "RSN", - ) }, - { "psk", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "scan_ssid", NM_SUPPL_OPT_TYPE_INT, 0, 1, NULL }, - { "ssid", NM_SUPPL_OPT_TYPE_BYTES, 0, 32, NULL }, - { "subject_match", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "subject_match2", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "wep_key0", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "wep_key1", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "wep_key2", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "wep_key3", NM_SUPPL_OPT_TYPE_BYTES, 0, 0, NULL }, - { "wep_tx_keyidx", NM_SUPPL_OPT_TYPE_INT, 0, 3, NULL }, + OPT_BYTES ("altsubject_match", 0), + OPT_BYTES ("altsubject_match2", 0), + OPT_BYTES ("anonymous_identity", 0), + OPT_KEYWORD ("auth_alg", NM_MAKE_STRV ( + "OPEN", + "SHARED", + "LEAP", + )), + OPT_BYTES ("bgscan", 0), + OPT_KEYWORD ("bssid", NULL), + OPT_BYTES ("ca_cert", 65536), + OPT_BYTES ("ca_cert2", 65536), + OPT_BYTES ("ca_path", 0), + OPT_BYTES ("ca_path2", 0), + OPT_BYTES ("client_cert", 65536), + OPT_BYTES ("client_cert2", 65536), + OPT_BYTES ("domain_match", 0), + OPT_BYTES ("domain_match2", 0), + OPT_BYTES ("domain_suffix_match", 0), + OPT_BYTES ("domain_suffix_match2", 0), + OPT_KEYWORD ("eap", NM_MAKE_STRV ( + "LEAP", + "MD5", + "TLS", + "PEAP", + "TTLS", + "SIM", + "PSK", + "FAST", + "PWD", + )), + OPT_INT ("eapol_flags", 0, 3), + OPT_BYTES ("eappsk", 0), + OPT_INT ("engine", 0, 1), + OPT_BYTES ("engine_id", 0), + OPT_INT ("fragment_size", 1, 2000), + OPT_KEYWORD ("freq_list", NULL), + OPT_INT ("frequency", 2412, 5825), + OPT_KEYWORD ("group", NM_MAKE_STRV ( + "CCMP", + "TKIP", + "WEP104", + "WEP40", + )), + OPT_BYTES ("identity", 0), + OPT_INT ("ieee80211w", 0, 2), + OPT_INT ("ignore_broadcast_ssid", 0, 2), + OPT_BYTES ("key_id", 0), + OPT_KEYWORD ("key_mgmt", NM_MAKE_STRV ( + "WPA-PSK", + "WPA-PSK-SHA256", + "FT-PSK", + "WPA-EAP", + "WPA-EAP-SHA256", + "FT-EAP", + "FT-EAP-SHA384", + "FILS-SHA256", + "FILS-SHA384", + "FT-FILS-SHA256", + "FT-FILS-SHA384", + "IEEE8021X", + "SAE", + "FT-SAE", + "OWE", + "NONE", + )), + OPT_INT ("macsec_integ_only", 0, 1), + OPT_INT ("macsec_policy", 0, 1), + OPT_INT ("macsec_port", 1, 65534), + OPT_BYTES ("mka_cak", 65536), + OPT_BYTES ("mka_ckn", 65536), + OPT_BYTES ("nai", 0), + OPT_BYTES ("pac_file", 0), + OPT_KEYWORD ("pairwise", NM_MAKE_STRV ( + "CCMP", + "TKIP", + "NONE", + )), + OPT_UTF8 ("password", 0), + OPT_BYTES ("pcsc", 0), + OPT_KEYWORD ("phase1", NM_MAKE_STRV ( + "peapver=0", + "peapver=1", + "peaplabel=1", + "peap_outer_success=0", + "include_tls_length=1", + "sim_min_num_chal=3", + "fast_provisioning=0", + "fast_provisioning=1", + "fast_provisioning=2", + "fast_provisioning=3", + "tls_disable_tlsv1_0=0", + "tls_disable_tlsv1_0=1", + "tls_disable_tlsv1_1=0", + "tls_disable_tlsv1_1=1", + "tls_disable_tlsv1_2=0", + "tls_disable_tlsv1_2=1", + )), + OPT_KEYWORD ("phase2", NM_MAKE_STRV ( + "auth=PAP", + "auth=CHAP", + "auth=MSCHAP", + "auth=MSCHAPV2", + "auth=GTC", + "auth=OTP", + "auth=MD5", + "auth=TLS", + "autheap=MD5", + "autheap=MSCHAPV2", + "autheap=OTP", + "autheap=GTC", + "autheap=TLS", + )), + OPT_BYTES ("pin", 0), + OPT_BYTES ("private_key", 65536), + OPT_BYTES ("private_key2", 65536), + OPT_BYTES ("private_key2_passwd", 1024), + OPT_BYTES ("private_key_passwd", 1024), + OPT_INT ("proactive_key_caching", 0, 1), + OPT_KEYWORD ("proto", NM_MAKE_STRV ( + "WPA", + "RSN", + )), + OPT_BYTES ("psk", 0), + OPT_INT ("scan_ssid", 0, 1), + OPT_BYTES ("ssid", 32), + OPT_BYTES ("subject_match", 0), + OPT_BYTES ("subject_match2", 0), + OPT_BYTES ("wep_key0", 0), + OPT_BYTES ("wep_key1", 0), + OPT_BYTES ("wep_key2", 0), + OPT_BYTES ("wep_key3", 0), + OPT_INT ("wep_tx_keyidx", 0, 3), }; static gboolean -- cgit v1.2.1