libnm: add nm_meta_setting_types_by_priority array for sorting settings

nm_meta_setting_infos is a list of all NMMetaSettingInfo, sorted by name.
Add nm_meta_setting_types_by_priority which provides a mapping with a
different sort order (first by priority). We need that sometimes.
This commit is contained in:
Thomas Haller
2021-06-11 15:28:09 +02:00
parent 1a5a4838f1
commit b7a7cc1b13
4 changed files with 140 additions and 0 deletions

View File

@@ -519,6 +519,74 @@ const NMMetaSettingInfo nm_meta_setting_infos[] = {
},
};
const NMMetaSettingType nm_meta_setting_types_by_priority[] = {
/* NM_SETTING_PRIORITY_CONNECTION */
NM_META_SETTING_TYPE_CONNECTION,
/* NM_SETTING_PRIORITY_HW_BASE */
NM_META_SETTING_TYPE_6LOWPAN,
NM_META_SETTING_TYPE_OLPC_MESH,
NM_META_SETTING_TYPE_WIRELESS,
NM_META_SETTING_TYPE_WIRED,
NM_META_SETTING_TYPE_ADSL,
NM_META_SETTING_TYPE_BOND,
NM_META_SETTING_TYPE_BRIDGE,
NM_META_SETTING_TYPE_CDMA,
NM_META_SETTING_TYPE_DUMMY,
NM_META_SETTING_TYPE_GENERIC,
NM_META_SETTING_TYPE_GSM,
NM_META_SETTING_TYPE_INFINIBAND,
NM_META_SETTING_TYPE_IP_TUNNEL,
NM_META_SETTING_TYPE_MACSEC,
NM_META_SETTING_TYPE_MACVLAN,
NM_META_SETTING_TYPE_OVS_BRIDGE,
NM_META_SETTING_TYPE_OVS_DPDK,
NM_META_SETTING_TYPE_OVS_INTERFACE,
NM_META_SETTING_TYPE_OVS_PATCH,
NM_META_SETTING_TYPE_OVS_PORT,
NM_META_SETTING_TYPE_TEAM,
NM_META_SETTING_TYPE_TUN,
NM_META_SETTING_TYPE_VETH,
NM_META_SETTING_TYPE_VLAN,
NM_META_SETTING_TYPE_VPN,
NM_META_SETTING_TYPE_VRF,
NM_META_SETTING_TYPE_VXLAN,
NM_META_SETTING_TYPE_WIFI_P2P,
NM_META_SETTING_TYPE_WIMAX,
NM_META_SETTING_TYPE_WIREGUARD,
NM_META_SETTING_TYPE_WPAN,
/* NM_SETTING_PRIORITY_HW_NON_BASE */
NM_META_SETTING_TYPE_BLUETOOTH,
/* NM_SETTING_PRIORITY_HW_AUX */
NM_META_SETTING_TYPE_WIRELESS_SECURITY,
NM_META_SETTING_TYPE_802_1X,
NM_META_SETTING_TYPE_DCB,
NM_META_SETTING_TYPE_SERIAL,
NM_META_SETTING_TYPE_SRIOV,
/* NM_SETTING_PRIORITY_AUX */
NM_META_SETTING_TYPE_BRIDGE_PORT,
NM_META_SETTING_TYPE_ETHTOOL,
NM_META_SETTING_TYPE_MATCH,
NM_META_SETTING_TYPE_OVS_EXTERNAL_IDS,
NM_META_SETTING_TYPE_PPP,
NM_META_SETTING_TYPE_PPPOE,
NM_META_SETTING_TYPE_TEAM_PORT,
/* NM_SETTING_PRIORITY_IP */
NM_META_SETTING_TYPE_HOSTNAME,
NM_META_SETTING_TYPE_IP4_CONFIG,
NM_META_SETTING_TYPE_IP6_CONFIG,
NM_META_SETTING_TYPE_PROXY,
NM_META_SETTING_TYPE_TC_CONFIG,
/* NM_SETTING_PRIORITY_USER */
NM_META_SETTING_TYPE_USER,
};
const NMMetaSettingInfo *
nm_meta_setting_infos_by_name(const char *name)
{

View File

@@ -175,6 +175,8 @@ typedef struct _NMMetaSettingInfo_Alias NMMetaSettingInfo;
extern const NMMetaSettingInfo nm_meta_setting_infos[_NM_META_SETTING_TYPE_NUM + 1];
extern const NMMetaSettingType nm_meta_setting_types_by_priority[_NM_META_SETTING_TYPE_NUM];
const NMMetaSettingInfo *nm_meta_setting_infos_by_name(const char *name);
const NMMetaSettingInfo *nm_meta_setting_infos_by_gtype(GType gtype);

View File

@@ -519,6 +519,74 @@ const NMMetaSettingInfo nm_meta_setting_infos[] = {
},
};
const NMMetaSettingType nm_meta_setting_types_by_priority[] = {
/* NM_SETTING_PRIORITY_CONNECTION */
NM_META_SETTING_TYPE_CONNECTION,
/* NM_SETTING_PRIORITY_HW_BASE */
NM_META_SETTING_TYPE_6LOWPAN,
NM_META_SETTING_TYPE_OLPC_MESH,
NM_META_SETTING_TYPE_WIRELESS,
NM_META_SETTING_TYPE_WIRED,
NM_META_SETTING_TYPE_ADSL,
NM_META_SETTING_TYPE_BOND,
NM_META_SETTING_TYPE_BRIDGE,
NM_META_SETTING_TYPE_CDMA,
NM_META_SETTING_TYPE_DUMMY,
NM_META_SETTING_TYPE_GENERIC,
NM_META_SETTING_TYPE_GSM,
NM_META_SETTING_TYPE_INFINIBAND,
NM_META_SETTING_TYPE_IP_TUNNEL,
NM_META_SETTING_TYPE_MACSEC,
NM_META_SETTING_TYPE_MACVLAN,
NM_META_SETTING_TYPE_OVS_BRIDGE,
NM_META_SETTING_TYPE_OVS_DPDK,
NM_META_SETTING_TYPE_OVS_INTERFACE,
NM_META_SETTING_TYPE_OVS_PATCH,
NM_META_SETTING_TYPE_OVS_PORT,
NM_META_SETTING_TYPE_TEAM,
NM_META_SETTING_TYPE_TUN,
NM_META_SETTING_TYPE_VETH,
NM_META_SETTING_TYPE_VLAN,
NM_META_SETTING_TYPE_VPN,
NM_META_SETTING_TYPE_VRF,
NM_META_SETTING_TYPE_VXLAN,
NM_META_SETTING_TYPE_WIFI_P2P,
NM_META_SETTING_TYPE_WIMAX,
NM_META_SETTING_TYPE_WIREGUARD,
NM_META_SETTING_TYPE_WPAN,
/* NM_SETTING_PRIORITY_HW_NON_BASE */
NM_META_SETTING_TYPE_BLUETOOTH,
/* NM_SETTING_PRIORITY_HW_AUX */
NM_META_SETTING_TYPE_WIRELESS_SECURITY,
NM_META_SETTING_TYPE_802_1X,
NM_META_SETTING_TYPE_DCB,
NM_META_SETTING_TYPE_SERIAL,
NM_META_SETTING_TYPE_SRIOV,
/* NM_SETTING_PRIORITY_AUX */
NM_META_SETTING_TYPE_BRIDGE_PORT,
NM_META_SETTING_TYPE_ETHTOOL,
NM_META_SETTING_TYPE_MATCH,
NM_META_SETTING_TYPE_OVS_EXTERNAL_IDS,
NM_META_SETTING_TYPE_PPP,
NM_META_SETTING_TYPE_PPPOE,
NM_META_SETTING_TYPE_TEAM_PORT,
/* NM_SETTING_PRIORITY_IP */
NM_META_SETTING_TYPE_HOSTNAME,
NM_META_SETTING_TYPE_IP4_CONFIG,
NM_META_SETTING_TYPE_IP6_CONFIG,
NM_META_SETTING_TYPE_PROXY,
NM_META_SETTING_TYPE_TC_CONFIG,
/* NM_SETTING_PRIORITY_USER */
NM_META_SETTING_TYPE_USER,
};
const NMMetaSettingInfo *
nm_meta_setting_infos_by_name(const char *name)
{

View File

@@ -175,6 +175,8 @@ typedef struct _NMMetaSettingInfo_Alias NMMetaSettingInfo;
extern const NMMetaSettingInfo nm_meta_setting_infos[_NM_META_SETTING_TYPE_NUM + 1];
extern const NMMetaSettingType nm_meta_setting_types_by_priority[_NM_META_SETTING_TYPE_NUM];
const NMMetaSettingInfo *nm_meta_setting_infos_by_name(const char *name);
const NMMetaSettingInfo *nm_meta_setting_infos_by_gtype(GType gtype);