libnm: hide NMSetting types from public headers

When subclassing a GObject type, the class and object structs
must be available and defined in the header.

For libnm, and in particular for NMSetting classes, we don't want
users to subclass NMSetting. It also doesn't work, because libnm
has internal code that is necessary to hook up the NMSetting class.
You cannot define your own type and make it work together with
libnm.

Having the structs in public headers limits what we can do with them.
For example, we could embed the private data directly in the structures
and avoid the additional indirection.

This is an API break, but for something that most likely nobody cares
about. Or better, nobody should care about. API is not what is
accidentally defined in a header, API was the library provides to
meaningfully use. Subclassing these types is not meaningful and was
only accidentally possible so far.

Only hide the structs for now. More cleanup is possible later. We shall
however aim to keep the padding and struct layout to not also break ABI.
This commit is contained in:
Thomas Haller
2021-06-11 00:27:31 +02:00
parent 0d6c35a6d9
commit e46d484fae
70 changed files with 674 additions and 583 deletions

View File

@@ -26,6 +26,7 @@
#include "libnm-core-intern/nm-core-internal.h"
#include "nm-keyfile.h"
#include "nm-setting-private.h"
#include "nm-setting-user.h"
#include "nm-setting-ovs-external-ids.h"

View File

@@ -7,6 +7,10 @@
#include "nm-meta-setting-base.h"
#if _NM_META_SETTING_BASE_IMPL_LIBNM
#include "libnm-core-impl/nm-default-libnm-core.h"
#endif
#include "nm-setting-6lowpan.h"
#include "nm-setting-8021x.h"
#include "nm-setting-adsl.h"
@@ -59,6 +63,10 @@
#include "nm-setting-wireless.h"
#include "nm-setting-wpan.h"
#if _NM_META_SETTING_BASE_IMPL_LIBNM
#include "nm-setting-private.h"
#endif
/*****************************************************************************/
const NMSetting8021xSchemeVtable nm_setting_8021x_scheme_vtable[] = {

View File

@@ -180,6 +180,22 @@ typedef struct {
bool system_ca_certs : 1;
} NMSetting8021xPrivate;
/**
* NMSetting8021x:
*
* IEEE 802.1x Authentication Settings
*/
struct _NMSetting8021x {
NMSetting parent;
};
struct _NMSetting8021xClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSetting8021x, nm_setting_802_1x, NM_TYPE_SETTING)
#define NM_SETTING_802_1X_GET_PRIVATE(o) \

View File

@@ -40,6 +40,22 @@ typedef struct {
guint32 vci;
} NMSettingAdslPrivate;
/**
* NMSettingAdsl:
*
* ADSL Settings
*/
struct _NMSettingAdsl {
NMSetting parent;
};
struct _NMSettingAdslClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingAdsl, nm_setting_adsl, NM_TYPE_SETTING)
#define NM_SETTING_ADSL_GET_PRIVATE(o) \

View File

@@ -36,6 +36,22 @@ typedef struct {
char *type;
} NMSettingBluetoothPrivate;
/**
* NMSettingBluetooth:
*
* Bluetooth Settings
*/
struct _NMSettingBluetooth {
NMSetting parent;
};
struct _NMSettingBluetoothClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingBluetooth, nm_setting_bluetooth, NM_TYPE_SETTING)
#define NM_SETTING_BLUETOOTH_GET_PRIVATE(o) \

View File

@@ -38,6 +38,22 @@ typedef struct {
NMUtilsNamedValue *options_idx_cache;
} NMSettingBondPrivate;
/**
* NMSettingBond:
*
* Bonding Settings
*/
struct _NMSettingBond {
NMSetting parent;
};
struct _NMSettingBondClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingBond, nm_setting_bond, NM_TYPE_SETTING)
#define NM_SETTING_BOND_GET_PRIVATE(o) \

View File

@@ -39,11 +39,29 @@ typedef struct {
bool hairpin_mode : 1;
} NMSettingBridgePortPrivate;
/**
* NMSettingBridgePort:
*
* Bridge Port Settings
*/
struct _NMSettingBridgePort {
NMSetting parent;
};
struct _NMSettingBridgePortClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingBridgePort, nm_setting_bridge_port, NM_TYPE_SETTING)
#define NM_SETTING_BRIDGE_PORT_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE((o), NM_TYPE_SETTING_BRIDGE_PORT, NMSettingBridgePortPrivate))
/*****************************************************************************/
static int
vlan_ptr_cmp(gconstpointer a, gconstpointer b)
{

View File

@@ -36,6 +36,22 @@ typedef struct {
NMSettingSecretFlags password_flags;
} NMSettingCdmaPrivate;
/**
* NMSettingCdma:
*
* CDMA-based Mobile Broadband Settings
*/
struct _NMSettingCdma {
NMSetting parent;
};
struct _NMSettingCdmaClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingCdma, nm_setting_cdma, NM_TYPE_SETTING)
#define NM_SETTING_CDMA_GET_PRIVATE(o) \

View File

@@ -97,6 +97,22 @@ typedef struct {
bool autoconnect : 1;
} NMSettingConnectionPrivate;
/**
* NMSettingConnection:
*
* General Connection Profile Settings
*/
struct _NMSettingConnection {
NMSetting parent;
};
struct _NMSettingConnectionClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingConnection, nm_setting_connection, NM_TYPE_SETTING)
#define NM_SETTING_CONNECTION_GET_PRIVATE(o) \

View File

@@ -65,6 +65,22 @@ typedef struct {
NMSettingDcbFlags priority_group_flags;
} NMSettingDcbPrivate;
/**
* NMSettingDcb:
*
* Data Center Bridging Settings
*/
struct _NMSettingDcb {
NMSetting parent;
};
struct _NMSettingDcbClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingDcb, nm_setting_dcb, NM_TYPE_SETTING)
#define NM_SETTING_DCB_GET_PRIVATE(o) \

View File

@@ -21,6 +21,22 @@
/*****************************************************************************/
/**
* NMSettingDummy:
*
* Dummy Link Settings
*/
struct _NMSettingDummy {
NMSetting parent;
};
struct _NMSettingDummyClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingDummy, nm_setting_dummy, NM_TYPE_SETTING)
/*****************************************************************************/

View File

@@ -27,6 +27,22 @@ typedef struct {
int dummy;
} NMSettingGenericPrivate;
/**
* NMSettingGeneric:
*
* Generic Link Settings
*/
struct _NMSettingGeneric {
NMSetting parent;
};
struct _NMSettingGenericClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingGeneric, nm_setting_generic, NM_TYPE_SETTING)
#define NM_SETTING_GENERIC_GET_PRIVATE(o) \

View File

@@ -55,6 +55,22 @@ typedef struct {
bool home_only : 1;
} NMSettingGsmPrivate;
/**
* NMSettingGsm:
*
* GSM-based Mobile Broadband Settings
*/
struct _NMSettingGsm {
NMSetting parent;
};
struct _NMSettingGsmClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingGsm, nm_setting_gsm, NM_TYPE_SETTING)
#define NM_SETTING_GSM_GET_PRIVATE(o) \

View File

@@ -40,6 +40,22 @@ typedef struct {
guint32 mtu;
} NMSettingInfinibandPrivate;
/**
* NMSettingInfiniband:
*
* Infiniband Settings
*/
struct _NMSettingInfiniband {
NMSetting parent;
};
struct _NMSettingInfinibandClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingInfiniband, nm_setting_infiniband, NM_TYPE_SETTING)
#define NM_SETTING_INFINIBAND_GET_PRIVATE(o) \

View File

@@ -47,6 +47,22 @@ typedef struct {
bool path_mtu_discovery : 1;
} NMSettingIPTunnelPrivate;
/**
* NMSettingIPTunnel:
*
* IP Tunneling Settings
*/
struct _NMSettingIPTunnel {
NMSetting parent;
};
struct _NMSettingIPTunnelClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingIPTunnel, nm_setting_ip_tunnel, NM_TYPE_SETTING)
#define NM_SETTING_IP_TUNNEL_GET_PRIVATE(o) \

View File

@@ -45,6 +45,22 @@ typedef struct {
char *dhcp_vendor_class_identifier;
} NMSettingIP4ConfigPrivate;
/**
* NMSettingIP4Config:
*
* IPv4 Settings
*/
struct _NMSettingIP4Config {
NMSettingIPConfig parent;
};
struct _NMSettingIP4ConfigClass {
NMSettingIPConfigClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingIP4Config, nm_setting_ip4_config, NM_TYPE_SETTING_IP_CONFIG)
#define NM_SETTING_IP4_CONFIG_GET_PRIVATE(o) \

View File

@@ -52,6 +52,22 @@ typedef struct {
gint32 ra_timeout;
} NMSettingIP6ConfigPrivate;
/**
* NMSettingIP6Config:
*
* IPv6 Settings
*/
struct _NMSettingIP6Config {
NMSettingIPConfig parent;
};
struct _NMSettingIP6ConfigClass {
NMSettingIPConfigClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingIP6Config, nm_setting_ip6_config, NM_TYPE_SETTING_IP_CONFIG)
#define NM_SETTING_IP6_CONFIG_GET_PRIVATE(o) \

View File

@@ -49,6 +49,22 @@ typedef struct {
bool send_sci : 1;
} NMSettingMacsecPrivate;
/**
* NMSettingMacsec:
*
* MACSec Settings
*/
struct _NMSettingMacsec {
NMSetting parent;
};
struct _NMSettingMacsecClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingMacsec, nm_setting_macsec, NM_TYPE_SETTING)
#define NM_SETTING_MACSEC_GET_PRIVATE(o) \

View File

@@ -34,6 +34,22 @@ typedef struct {
bool tap : 1;
} NMSettingMacvlanPrivate;
/**
* NMSettingMacvlan:
*
* MAC VLAN Settings
*/
struct _NMSettingMacvlan {
NMSetting parent;
};
struct _NMSettingMacvlanClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingMacvlan, nm_setting_macvlan, NM_TYPE_SETTING)
#define NM_SETTING_MACVLAN_GET_PRIVATE(o) \

View File

@@ -33,6 +33,22 @@ typedef struct {
guint32 channel;
} NMSettingOlpcMeshPrivate;
/**
* NMSettingOlpcMesh:
*
* OLPC Wireless Mesh Settings
*/
struct _NMSettingOlpcMesh {
NMSetting parent;
};
struct _NMSettingOlpcMeshClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingOlpcMesh, nm_setting_olpc_mesh, NM_TYPE_SETTING)
#define NM_SETTING_OLPC_MESH_GET_PRIVATE(o) \

View File

@@ -62,6 +62,22 @@ typedef struct {
bool crtscts : 1;
} NMSettingPppPrivate;
/**
* NMSettingPpp:
*
* Point-to-Point Protocol Settings
*/
struct _NMSettingPpp {
NMSetting parent;
};
struct _NMSettingPppClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingPpp, nm_setting_ppp, NM_TYPE_SETTING)
#define NM_SETTING_PPP_GET_PRIVATE(o) \

View File

@@ -37,6 +37,22 @@ typedef struct {
NMSettingSecretFlags password_flags;
} NMSettingPppoePrivate;
/**
* NMSettingPppoe:
*
* PPP-over-Ethernet Settings
*/
struct _NMSettingPppoe {
NMSetting parent;
};
struct _NMSettingPppoeClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingPppoe, nm_setting_pppoe, NM_TYPE_SETTING)
#define NM_SETTING_PPPOE_GET_PRIVATE(o) \

View File

@@ -19,6 +19,116 @@
/*****************************************************************************/
/**
* NMSetting:
*
* The NMSetting struct contains only private data.
* It should only be accessed through the functions described below.
*/
struct _NMSetting {
GObject parent;
};
struct _NMSettingClass {
GObjectClass parent;
/* Virtual functions */
int (*verify)(NMSetting *setting, NMConnection *connection, GError **error);
gboolean (*verify_secrets)(NMSetting *setting, NMConnection *connection, GError **error);
GPtrArray *(*need_secrets)(NMSetting *setting);
int (*update_one_secret)(NMSetting *setting, const char *key, GVariant *value, GError **error);
gboolean (*get_secret_flags)(NMSetting * setting,
const char * secret_name,
NMSettingSecretFlags *out_flags,
GError ** error);
gboolean (*set_secret_flags)(NMSetting * setting,
const char * secret_name,
NMSettingSecretFlags flags,
GError ** error);
/* In the past, this struct was public API. Preserve ABI! */
gboolean (*clear_secrets)(const struct _NMSettInfoSetting *sett_info,
guint property_idx,
NMSetting * setting,
NMSettingClearSecretsWithFlagsFn func,
gpointer user_data);
/* compare_property() returns a ternary, where DEFAULT means that the property should not
* be compared due to the compare @flags. A TRUE/FALSE result means that the property is
* equal/not-equal.
*
* @other may be %NULL, in which case the function only determines whether
* the setting should be compared (TRUE) or not (DEFAULT). */
/* In the past, this struct was public API. Preserve ABI! */
NMTernary (*compare_property)(const struct _NMSettInfoSetting *sett_info,
guint property_idx,
NMConnection * con_a,
NMSetting * set_a,
NMConnection * con_b,
NMSetting * set_b,
NMSettingCompareFlags flags);
/* In the past, this struct was public API. Preserve ABI! */
void (*duplicate_copy_properties)(const struct _NMSettInfoSetting *sett_info,
NMSetting * src,
NMSetting * dst);
/* In the past, this struct was public API. Preserve ABI! */
void (*enumerate_values)(const struct _NMSettInfoProperty *property_info,
NMSetting * setting,
NMSettingValueIterFn func,
gpointer user_data);
/* In the past, this struct was public API. Preserve ABI! */
gboolean (*aggregate)(NMSetting *setting, int type_i, gpointer arg);
/* In the past, this struct was public API. Preserve ABI! */
void (*for_each_secret)(NMSetting * setting,
const char * secret_name,
GVariant * val,
gboolean remove_non_secrets,
_NMConnectionForEachSecretFunc callback,
gpointer callback_data,
GVariantBuilder * setting_builder);
/* In the past, this struct was public API. Preserve ABI! */
gboolean (*init_from_dbus)(NMSetting * setting,
GHashTable * keys,
GVariant * setting_dict,
GVariant * connection_dict,
guint /* NMSettingParseFlags */ parse_flags,
GError ** error);
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[1];
/* In the past, this struct was public API. Preserve ABI! */
const struct _NMMetaSettingInfo *setting_info;
};
/*****************************************************************************/
/**
* NMSettingIPConfig:
*/
struct _NMSettingIPConfig {
NMSetting parent;
};
struct _NMSettingIPConfigClass {
NMSettingClass parent;
/* Padding for future expansion */
gpointer padding[8];
};
/*****************************************************************************/
NMSettingPriority _nm_setting_get_base_type_priority(NMSetting *setting);
int _nm_setting_compare_priority(gconstpointer a, gconstpointer b);

View File

@@ -35,6 +35,21 @@ typedef struct {
bool browser_only : 1;
} NMSettingProxyPrivate;
/**
* NMSettingProxy:
*
* WWW Proxy Settings
*/
struct _NMSettingProxy {
NMSetting parent;
};
struct _NMSettingProxyClass {
NMSettingClass parent;
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingProxy, nm_setting_proxy, NM_TYPE_SETTING)
#define NM_SETTING_PROXY_GET_PRIVATE(o) \

View File

@@ -36,6 +36,22 @@ typedef struct {
char parity;
} NMSettingSerialPrivate;
/**
* NMSettingSerial:
*
* Serial Link Settings
*/
struct _NMSettingSerial {
NMSetting parent;
};
struct _NMSettingSerialClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingSerial, nm_setting_serial, NM_TYPE_SETTING)
#define NM_SETTING_SERIAL_GET_PRIVATE(o) \

View File

@@ -35,6 +35,22 @@ typedef struct {
NMTeamSetting *team_setting;
} NMSettingTeamPortPrivate;
/**
* NMSettingTeamPort:
*
* Team Port Settings
*/
struct _NMSettingTeamPort {
NMSetting parent;
};
struct _NMSettingTeamPortClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingTeamPort, nm_setting_team_port, NM_TYPE_SETTING)
#define NM_SETTING_TEAM_PORT_GET_PRIVATE(o) \

View File

@@ -735,6 +735,22 @@ typedef struct {
NMTeamSetting *team_setting;
} NMSettingTeamPrivate;
/**
* NMSettingTeam:
*
* Teaming Settings
*/
struct _NMSettingTeam {
NMSetting parent;
};
struct _NMSettingTeamClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingTeam, nm_setting_team, NM_TYPE_SETTING)
#define NM_SETTING_TEAM_GET_PRIVATE(o) \

View File

@@ -40,6 +40,22 @@ typedef struct {
bool multi_queue : 1;
} NMSettingTunPrivate;
/**
* NMSettingTun:
*
* Tunnel Settings
*/
struct _NMSettingTun {
NMSetting parent;
};
struct _NMSettingTunClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingTun, nm_setting_tun, NM_TYPE_SETTING)
#define NM_SETTING_TUN_GET_PRIVATE(o) \

View File

@@ -41,6 +41,22 @@ typedef struct {
guint32 flags;
} NMSettingVlanPrivate;
/**
* NMSettingVlan:
*
* VLAN Settings
*/
struct _NMSettingVlan {
NMSetting parent;
};
struct _NMSettingVlanClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingVlan, nm_setting_vlan, NM_TYPE_SETTING)
#define NM_SETTING_VLAN_GET_PRIVATE(o) \

View File

@@ -74,6 +74,22 @@ typedef struct {
guint32 timeout;
} NMSettingVpnPrivate;
/**
* NMSettingVpn:
*
* VPN Settings
*/
struct _NMSettingVpn {
NMSetting parent;
};
struct _NMSettingVpnClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingVpn, nm_setting_vpn, NM_TYPE_SETTING)
#define NM_SETTING_VPN_GET_PRIVATE(o) \

View File

@@ -60,6 +60,22 @@ typedef struct {
bool l3_miss : 1;
} NMSettingVxlanPrivate;
/**
* NMSettingVxlan:
*
* VXLAN Settings
*/
struct _NMSettingVxlan {
NMSetting parent;
};
struct _NMSettingVxlanClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingVxlan, nm_setting_vxlan, NM_TYPE_SETTING)
#define NM_SETTING_VXLAN_GET_PRIVATE(o) \

View File

@@ -35,6 +35,22 @@ typedef struct {
char *mac_address;
} NMSettingWimaxPrivate;
/**
* NMSettingWimax:
*
* WiMax Settings
*/
struct _NMSettingWimax {
NMSetting parent;
};
struct _NMSettingWimaxClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingWimax, nm_setting_wimax, NM_TYPE_SETTING)
#define NM_SETTING_WIMAX_GET_PRIVATE(o) \

View File

@@ -69,6 +69,22 @@ typedef struct {
bool auto_negotiate : 1;
} NMSettingWiredPrivate;
/**
* NMSettingWired:
*
* Wired Ethernet Settings
*/
struct _NMSettingWired {
NMSetting parent;
};
struct _NMSettingWiredClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingWired, nm_setting_wired, NM_TYPE_SETTING)
#define NM_SETTING_WIRED_GET_PRIVATE(o) \

View File

@@ -84,6 +84,22 @@ typedef struct {
guint32 wep_tx_keyidx;
} NMSettingWirelessSecurityPrivate;
/**
* NMSettingWirelessSecurity:
*
* Wi-Fi Security Settings
*/
struct _NMSettingWirelessSecurity {
NMSetting parent;
};
struct _NMSettingWirelessSecurityClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingWirelessSecurity, nm_setting_wireless_security, NM_TYPE_SETTING)
#define NM_SETTING_WIRELESS_SECURITY_GET_PRIVATE(o) \

View File

@@ -66,6 +66,22 @@ typedef struct {
bool hidden : 1;
} NMSettingWirelessPrivate;
/**
* NMSettingWireless:
*
* Wi-Fi Settings
*/
struct _NMSettingWireless {
NMSetting parent;
};
struct _NMSettingWirelessClass {
NMSettingClass parent;
/* In the past, this struct was public API. Preserve ABI! */
gpointer padding[4];
};
G_DEFINE_TYPE(NMSettingWireless, nm_setting_wireless, NM_TYPE_SETTING)
#define NM_SETTING_WIRELESS_GET_PRIVATE(o) \

View File

@@ -164,21 +164,7 @@ typedef enum { /*< flags, underscore_name=nm_setting_802_1x_auth_flags >*/
* properties to the paths to their respective objects.
*/
/**
* NMSetting8021x:
*
* IEEE 802.1x Authentication Settings
*/
struct _NMSetting8021x {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSetting8021xClass;
typedef struct _NMSetting8021xClass NMSetting8021xClass;
GType nm_setting_802_1x_get_type(void);

View File

@@ -41,21 +41,7 @@ G_BEGIN_DECLS
#define NM_SETTING_ADSL_ENCAPSULATION_VCMUX "vcmux"
#define NM_SETTING_ADSL_ENCAPSULATION_LLC "llc"
/**
* NMSettingAdsl:
*
* ADSL Settings
*/
struct _NMSettingAdsl {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingAdslClass;
typedef struct _NMSettingAdslClass NMSettingAdslClass;
GType nm_setting_adsl_get_type(void);

View File

@@ -55,21 +55,7 @@ G_BEGIN_DECLS
*/
#define NM_SETTING_BLUETOOTH_TYPE_NAP "nap"
/**
* NMSettingBluetooth:
*
* Bluetooth Settings
*/
struct _NMSettingBluetooth {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingBluetoothClass;
typedef struct _NMSettingBluetoothClass NMSettingBluetoothClass;
GType nm_setting_bluetooth_get_type(void);

View File

@@ -57,21 +57,7 @@ G_BEGIN_DECLS
#define NM_SETTING_BOND_OPTION_TLB_DYNAMIC_LB "tlb_dynamic_lb"
#define NM_SETTING_BOND_OPTION_LP_INTERVAL "lp_interval"
/**
* NMSettingBond:
*
* Bonding Settings
*/
struct _NMSettingBond {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingBondClass;
typedef struct _NMSettingBondClass NMSettingBondClass;
GType nm_setting_bond_get_type(void);

View File

@@ -34,21 +34,7 @@ G_BEGIN_DECLS
#define NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE "hairpin-mode"
#define NM_SETTING_BRIDGE_PORT_VLANS "vlans"
/**
* NMSettingBridgePort:
*
* Bridge Port Settings
*/
struct _NMSettingBridgePort {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingBridgePortClass;
typedef struct _NMSettingBridgePortClass NMSettingBridgePortClass;
GType nm_setting_bridge_port_get_type(void);

View File

@@ -33,21 +33,7 @@ G_BEGIN_DECLS
#define NM_SETTING_CDMA_PASSWORD_FLAGS "password-flags"
#define NM_SETTING_CDMA_MTU "mtu"
/**
* NMSettingCdma:
*
* CDMA-based Mobile Broadband Settings
*/
struct _NMSettingCdma {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingCdmaClass;
typedef struct _NMSettingCdmaClass NMSettingCdmaClass;
GType nm_setting_cdma_get_type(void);

View File

@@ -127,21 +127,7 @@ typedef enum {
NM_SETTING_CONNECTION_LLMNR_YES = 2,
} NMSettingConnectionLlmnr;
/**
* NMSettingConnection:
*
* General Connection Profile Settings
*/
struct _NMSettingConnection {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingConnectionClass;
typedef struct _NMSettingConnectionClass NMSettingConnectionClass;
GType nm_setting_connection_get_type(void);

View File

@@ -77,21 +77,7 @@ typedef enum { /*< flags >*/
#define NM_SETTING_DCB_PRIORITY_STRICT_BANDWIDTH "priority-strict-bandwidth"
#define NM_SETTING_DCB_PRIORITY_TRAFFIC_CLASS "priority-traffic-class"
/**
* NMSettingDcb:
*
* Data Center Bridging Settings
*/
struct _NMSettingDcb {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingDcbClass;
typedef struct _NMSettingDcbClass NMSettingDcbClass;
GType nm_setting_dcb_get_type(void);

View File

@@ -26,21 +26,7 @@ G_BEGIN_DECLS
#define NM_SETTING_DUMMY_SETTING_NAME "dummy"
/**
* NMSettingDummy:
*
* Dummy Link Settings
*/
struct _NMSettingDummy {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingDummyClass;
typedef struct _NMSettingDummyClass NMSettingDummyClass;
NM_AVAILABLE_IN_1_8
GType nm_setting_dummy_get_type(void);

View File

@@ -27,21 +27,7 @@ G_BEGIN_DECLS
#define NM_SETTING_GENERIC_SETTING_NAME "generic"
/**
* NMSettingGeneric:
*
* Generic Link Settings
*/
struct _NMSettingGeneric {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingGenericClass;
typedef struct _NMSettingGenericClass NMSettingGenericClass;
GType nm_setting_generic_get_type(void);

View File

@@ -43,21 +43,7 @@ G_BEGIN_DECLS
/* Deprecated */
#define NM_SETTING_GSM_NUMBER "number"
/**
* NMSettingGsm:
*
* GSM-based Mobile Broadband Settings
*/
struct _NMSettingGsm {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingGsmClass;
typedef struct _NMSettingGsmClass NMSettingGsmClass;
GType nm_setting_gsm_get_type(void);

View File

@@ -34,21 +34,7 @@ G_BEGIN_DECLS
#define NM_SETTING_INFINIBAND_P_KEY "p-key"
#define NM_SETTING_INFINIBAND_PARENT "parent"
/**
* NMSettingInfiniband:
*
* Infiniband Settings
*/
struct _NMSettingInfiniband {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingInfinibandClass;
typedef struct _NMSettingInfinibandClass NMSettingInfinibandClass;
GType nm_setting_infiniband_get_type(void);

View File

@@ -352,19 +352,7 @@ char *nm_ip_routing_rule_to_string(const NMIPRoutingRule * self,
#define NM_SETTING_DNS_OPTION_NO_RELOAD "no-reload"
#define NM_SETTING_DNS_OPTION_TRUST_AD "trust-ad"
/**
* NMSettingIPConfig:
*/
struct _NMSettingIPConfig {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/* Padding for future expansion */
gpointer padding[8];
} NMSettingIPConfigClass;
typedef struct _NMSettingIPConfigClass NMSettingIPConfigClass;
/**
* NMDhcpHostnameFlags:

View File

@@ -41,21 +41,7 @@ G_BEGIN_DECLS
#define NM_SETTING_IP_TUNNEL_MTU "mtu"
#define NM_SETTING_IP_TUNNEL_FLAGS "flags"
/**
* NMSettingIPTunnel:
*
* IP Tunneling Settings
*/
struct _NMSettingIPTunnel {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingIPTunnelClass;
typedef struct _NMSettingIPTunnelClass NMSettingIPTunnelClass;
/*
* NMIPTunnelFlags:

View File

@@ -77,21 +77,7 @@ G_BEGIN_DECLS
*/
#define NM_SETTING_IP4_CONFIG_METHOD_DISABLED "disabled"
/**
* NMSettingIP4Config:
*
* IPv4 Settings
*/
struct _NMSettingIP4Config {
NMSettingIPConfig parent;
};
typedef struct {
NMSettingIPConfigClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingIP4ConfigClass;
typedef struct _NMSettingIP4ConfigClass NMSettingIP4ConfigClass;
GType nm_setting_ip4_config_get_type(void);

View File

@@ -139,21 +139,7 @@ typedef enum {
NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY = 1,
} NMSettingIP6ConfigAddrGenMode;
/**
* NMSettingIP6Config:
*
* IPv6 Settings
*/
struct _NMSettingIP6Config {
NMSettingIPConfig parent;
};
typedef struct {
NMSettingIPConfigClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingIP6ConfigClass;
typedef struct _NMSettingIP6ConfigClass NMSettingIP6ConfigClass;
GType nm_setting_ip6_config_get_type(void);

View File

@@ -36,21 +36,7 @@ G_BEGIN_DECLS
#define NM_SETTING_MACSEC_VALIDATION "validation"
#define NM_SETTING_MACSEC_SEND_SCI "send-sci"
/**
* NMSettingMacsec:
*
* MACSec Settings
*/
struct _NMSettingMacsec {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingMacsecClass;
typedef struct _NMSettingMacsecClass NMSettingMacsecClass;
/**
* NMSettingMacsecMode:

View File

@@ -32,21 +32,7 @@ G_BEGIN_DECLS
#define NM_SETTING_MACVLAN_PROMISCUOUS "promiscuous"
#define NM_SETTING_MACVLAN_TAP "tap"
/**
* NMSettingMacvlan:
*
* MAC VLAN Settings
*/
struct _NMSettingMacvlan {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingMacvlanClass;
typedef struct _NMSettingMacvlanClass NMSettingMacvlanClass;
/**
* NMSettingMacvlanMode:

View File

@@ -33,21 +33,7 @@ G_BEGIN_DECLS
#define NM_SETTING_OLPC_MESH_CHANNEL "channel"
#define NM_SETTING_OLPC_MESH_DHCP_ANYCAST_ADDRESS "dhcp-anycast-address"
/**
* NMSettingOlpcMesh:
*
* OLPC Wireless Mesh Settings
*/
struct _NMSettingOlpcMesh {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingOlpcMeshClass;
typedef struct _NMSettingOlpcMeshClass NMSettingOlpcMeshClass;
GType nm_setting_olpc_mesh_get_type(void);

View File

@@ -45,21 +45,7 @@ G_BEGIN_DECLS
#define NM_SETTING_PPP_LCP_ECHO_FAILURE "lcp-echo-failure"
#define NM_SETTING_PPP_LCP_ECHO_INTERVAL "lcp-echo-interval"
/**
* NMSettingPpp:
*
* Point-to-Point Protocol Settings
*/
struct _NMSettingPpp {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingPppClass;
typedef struct _NMSettingPppClass NMSettingPppClass;
GType nm_setting_ppp_get_type(void);

View File

@@ -33,21 +33,7 @@ G_BEGIN_DECLS
#define NM_SETTING_PPPOE_PASSWORD "password"
#define NM_SETTING_PPPOE_PASSWORD_FLAGS "password-flags"
/**
* NMSettingPppoe:
*
* PPP-over-Ethernet Settings
*/
struct _NMSettingPppoe {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingPppoeClass;
typedef struct _NMSettingPppoeClass NMSettingPppoeClass;
GType nm_setting_pppoe_get_type(void);

View File

@@ -45,20 +45,7 @@ typedef enum {
#define NM_SETTING_PROXY_PAC_URL "pac-url"
#define NM_SETTING_PROXY_PAC_SCRIPT "pac-script"
/**
* NMSettingProxy:
*
* WWW Proxy Settings
*/
struct _NMSettingProxy {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
gpointer padding[4];
} NMSettingProxyClass;
typedef struct _NMSettingProxyClass NMSettingProxyClass;
NM_AVAILABLE_IN_1_6
GType nm_setting_proxy_get_type(void);

View File

@@ -47,21 +47,7 @@ typedef enum {
#define NM_SETTING_SERIAL_STOPBITS "stopbits"
#define NM_SETTING_SERIAL_SEND_DELAY "send-delay"
/**
* NMSettingSerial:
*
* Serial Link Settings
*/
struct _NMSettingSerial {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingSerialClass;
typedef struct _NMSettingSerialClass NMSettingSerialClass;
GType nm_setting_serial_get_type(void);

View File

@@ -39,21 +39,7 @@ G_BEGIN_DECLS
#define NM_SETTING_TEAM_PORT_QUEUE_ID_DEFAULT -1
#define NM_SETTING_TEAM_PORT_LACP_PRIO_DEFAULT 255
/**
* NMSettingTeamPort:
*
* Team Port Settings
*/
struct _NMSettingTeamPort {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingTeamPortClass;
typedef struct _NMSettingTeamPortClass NMSettingTeamPortClass;
GType nm_setting_team_port_get_type(void);

View File

@@ -151,21 +151,7 @@ int nm_team_link_watcher_get_vlanid(const NMTeamLinkWatcher *watcher);
#define NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_DEFAULT \
NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_LACP_PRIO
/**
* NMSettingTeam:
*
* Teaming Settings
*/
struct _NMSettingTeam {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingTeamClass;
typedef struct _NMSettingTeamClass NMSettingTeamClass;
GType nm_setting_team_get_type(void);

View File

@@ -46,21 +46,7 @@ typedef enum {
NM_SETTING_TUN_MODE_TAP = 2,
} NMSettingTunMode;
/**
* NMSettingTun:
*
* Tunnel Settings
*/
struct _NMSettingTun {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingTunClass;
typedef struct _NMSettingTunClass NMSettingTunClass;
NM_AVAILABLE_IN_1_2
GType nm_setting_tun_get_type(void);

View File

@@ -32,21 +32,7 @@ G_BEGIN_DECLS
#define NM_SETTING_VLAN_INGRESS_PRIORITY_MAP "ingress-priority-map"
#define NM_SETTING_VLAN_EGRESS_PRIORITY_MAP "egress-priority-map"
/**
* NMSettingVlan:
*
* VLAN Settings
*/
struct _NMSettingVlan {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingVlanClass;
typedef struct _NMSettingVlanClass NMSettingVlanClass;
/**
* NMVlanPriorityMap:

View File

@@ -33,21 +33,7 @@ G_BEGIN_DECLS
#define NM_SETTING_VPN_SECRETS "secrets"
#define NM_SETTING_VPN_TIMEOUT "timeout"
/**
* NMSettingVpn:
*
* VPN Settings
*/
struct _NMSettingVpn {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingVpnClass;
typedef struct _NMSettingVpnClass NMSettingVpnClass;
/**
* NMVpnIterFunc:

View File

@@ -43,21 +43,7 @@ G_BEGIN_DECLS
#define NM_SETTING_VXLAN_L2_MISS "l2-miss"
#define NM_SETTING_VXLAN_L3_MISS "l3-miss"
/**
* NMSettingVxlan:
*
* VXLAN Settings
*/
struct _NMSettingVxlan {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingVxlanClass;
typedef struct _NMSettingVxlanClass NMSettingVxlanClass;
NM_AVAILABLE_IN_1_2
GType nm_setting_vxlan_get_type(void);

View File

@@ -29,21 +29,7 @@ G_BEGIN_DECLS
#define NM_SETTING_WIMAX_NETWORK_NAME "network-name"
#define NM_SETTING_WIMAX_MAC_ADDRESS "mac-address"
/**
* NMSettingWimax:
*
* WiMax Settings
*/
struct _NMSettingWimax {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingWimaxClass;
typedef struct _NMSettingWimaxClass NMSettingWimaxClass;
NM_DEPRECATED_IN_1_2
GType nm_setting_wimax_get_type(void);

View File

@@ -81,21 +81,7 @@ typedef enum { /*< flags >*/
#define NM_SETTING_WIRED_WAKE_ON_LAN_PASSWORD "wake-on-lan-password"
#define NM_SETTING_WIRED_ACCEPT_ALL_MAC_ADDRESSES "accept-all-mac-addresses"
/**
* NMSettingWired:
*
* Wired Ethernet Settings
*/
struct _NMSettingWired {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingWiredClass;
typedef struct _NMSettingWiredClass NMSettingWiredClass;
GType nm_setting_wired_get_type(void);

View File

@@ -152,21 +152,7 @@ typedef enum {
#define NM_SETTING_WIRELESS_SECURITY_WPS_METHOD "wps-method"
#define NM_SETTING_WIRELESS_SECURITY_FILS "fils"
/**
* NMSettingWirelessSecurity:
*
* Wi-Fi Security Settings
*/
struct _NMSettingWirelessSecurity {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingWirelessSecurityClass;
typedef struct _NMSettingWirelessSecurityClass NMSettingWirelessSecurityClass;
GType nm_setting_wireless_security_get_type(void);

View File

@@ -142,21 +142,7 @@ typedef enum {
NM_SETTING_WIRELESS_POWERSAVE_LAST = _NM_SETTING_WIRELESS_POWERSAVE_NUM - 1, /*< skip >*/
} NMSettingWirelessPowersave;
/**
* NMSettingWireless:
*
* Wi-Fi Settings
*/
struct _NMSettingWireless {
NMSetting parent;
};
typedef struct {
NMSettingClass parent;
/*< private >*/
gpointer padding[4];
} NMSettingWirelessClass;
typedef struct _NMSettingWirelessClass NMSettingWirelessClass;
GType nm_setting_wireless_get_type(void);

View File

@@ -129,16 +129,6 @@ typedef enum {
NM_SETTING_MAC_RANDOMIZATION_ALWAYS,
} NMSettingMacRandomization;
/**
* NMSetting:
*
* The NMSetting struct contains only private data.
* It should only be accessed through the functions described below.
*/
struct _NMSetting {
GObject parent;
};
/**
* NMSettingClearSecretsWithFlagsFn:
* @setting: The setting for which secrets are being iterated
@@ -175,87 +165,7 @@ typedef void (*NMSettingValueIterFn)(NMSetting * setting,
/*< private >*/
typedef gboolean (*_NMConnectionForEachSecretFunc)(NMSettingSecretFlags flags, gpointer user_data);
typedef struct {
GObjectClass parent;
/* Virtual functions */
int (*verify)(NMSetting *setting, NMConnection *connection, GError **error);
gboolean (*verify_secrets)(NMSetting *setting, NMConnection *connection, GError **error);
GPtrArray *(*need_secrets)(NMSetting *setting);
int (*update_one_secret)(NMSetting *setting, const char *key, GVariant *value, GError **error);
gboolean (*get_secret_flags)(NMSetting * setting,
const char * secret_name,
NMSettingSecretFlags *out_flags,
GError ** error);
gboolean (*set_secret_flags)(NMSetting * setting,
const char * secret_name,
NMSettingSecretFlags flags,
GError ** error);
/*< private >*/
gboolean (*clear_secrets)(const struct _NMSettInfoSetting *sett_info,
guint property_idx,
NMSetting * setting,
NMSettingClearSecretsWithFlagsFn func,
gpointer user_data);
/* compare_property() returns a ternary, where DEFAULT means that the property should not
* be compared due to the compare @flags. A TRUE/FALSE result means that the property is
* equal/not-equal.
*
* @other may be %NULL, in which case the function only determines whether
* the setting should be compared (TRUE) or not (DEFAULT). */
/*< private >*/
NMTernary (*compare_property)(const struct _NMSettInfoSetting *sett_info,
guint property_idx,
NMConnection * con_a,
NMSetting * set_a,
NMConnection * con_b,
NMSetting * set_b,
NMSettingCompareFlags flags);
/*< private >*/
void (*duplicate_copy_properties)(const struct _NMSettInfoSetting *sett_info,
NMSetting * src,
NMSetting * dst);
/*< private >*/
void (*enumerate_values)(const struct _NMSettInfoProperty *property_info,
NMSetting * setting,
NMSettingValueIterFn func,
gpointer user_data);
/*< private >*/
gboolean (*aggregate)(NMSetting *setting, int type_i, gpointer arg);
/*< private >*/
void (*for_each_secret)(NMSetting * setting,
const char * secret_name,
GVariant * val,
gboolean remove_non_secrets,
_NMConnectionForEachSecretFunc callback,
gpointer callback_data,
GVariantBuilder * setting_builder);
/*< private >*/
gboolean (*init_from_dbus)(NMSetting * setting,
GHashTable * keys,
GVariant * setting_dict,
GVariant * connection_dict,
guint /* NMSettingParseFlags */ parse_flags,
GError ** error);
/*< private >*/
gpointer padding[1];
/*< private >*/
const struct _NMMetaSettingInfo *setting_info;
} NMSettingClass;
typedef struct _NMSettingClass NMSettingClass;
GType nm_setting_get_type(void);

View File

@@ -7,6 +7,10 @@
#include "nm-meta-setting-base.h"
#if _NM_META_SETTING_BASE_IMPL_LIBNM
#include "libnm-core-impl/nm-default-libnm-core.h"
#endif
#include "nm-setting-6lowpan.h"
#include "nm-setting-8021x.h"
#include "nm-setting-adsl.h"
@@ -59,6 +63,10 @@
#include "nm-setting-wireless.h"
#include "nm-setting-wpan.h"
#if _NM_META_SETTING_BASE_IMPL_LIBNM
#include "nm-setting-private.h"
#endif
/*****************************************************************************/
const NMSetting8021xSchemeVtable nm_setting_8021x_scheme_vtable[] = {