2020-12-23 22:21:36 +01:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
2019-09-25 13:13:40 +02:00
|
|
|
/*
|
2011-09-22 10:16:07 -05:00
|
|
|
* Copyright (C) 2011 Red Hat, Inc.
|
2013-01-15 18:48:51 +01:00
|
|
|
* Copyright (C) 2013 Thomas Bechtold <thomasbechtold@jpberlin.de>
|
2011-09-22 10:16:07 -05:00
|
|
|
*/
|
|
|
|
|
|
all: fix up multiple-include-guard defines
Previously, src/nm-ip4-config.h, libnm/nm-ip4-config.h, and
libnm-glib/nm-ip4-config.h all used "NM_IP4_CONFIG_H" as an include
guard, which meant that nm-test-utils.h could not tell which of them
was being included (and so, eg, if you tried to include
nm-ip4-config.h in a libnm test, it would fail to compile because
nm-test-utils.h was referring to symbols in src/nm-ip4-config.h).
Fix this by changing the include guards in the non-API-stable parts of
the tree:
- libnm-glib/nm-ip4-config.h remains NM_IP4_CONFIG_H
- libnm/nm-ip4-config.h now uses __NM_IP4_CONFIG_H__
- src/nm-ip4-config.h now uses __NETWORKMANAGER_IP4_CONFIG_H__
And likewise for all other headers.
The two non-"nm"-prefixed headers, libnm/NetworkManager.h and
src/NetworkManagerUtils.h are now __NETWORKMANAGER_H__ and
__NETWORKMANAGER_UTILS_H__ respectively, which, while not entirely
consistent with the general scheme, do still mostly make sense in
isolation.
2014-08-13 14:10:11 -04:00
|
|
|
#ifndef __NETWORKMANAGER_CONFIG_H__
|
|
|
|
|
#define __NETWORKMANAGER_CONFIG_H__
|
2011-09-22 10:16:07 -05:00
|
|
|
|
2014-07-11 18:54:18 +02:00
|
|
|
#include "nm-config-data.h"
|
2013-03-12 13:14:54 -04:00
|
|
|
|
2021-03-09 09:14:21 +01:00
|
|
|
#include "libnm-base/nm-config-base.h"
|
|
|
|
|
|
2013-01-15 18:48:51 +01:00
|
|
|
#define NM_TYPE_CONFIG (nm_config_get_type())
|
|
|
|
|
#define NM_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_CONFIG, NMConfig))
|
|
|
|
|
#define NM_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_CONFIG, NMConfigClass))
|
|
|
|
|
#define NM_IS_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_CONFIG))
|
|
|
|
|
#define NM_IS_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), NM_TYPE_CONFIG))
|
|
|
|
|
#define NM_CONFIG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), NM_TYPE_CONFIG, NMConfigClass))
|
|
|
|
|
|
2014-12-16 15:10:24 +01:00
|
|
|
/* Properties */
|
|
|
|
|
#define NM_CONFIG_CMD_LINE_OPTIONS "cmd-line-options"
|
2015-06-10 11:59:46 +02:00
|
|
|
#define NM_CONFIG_ATOMIC_SECTION_PREFIXES "atomic-section-prefixes"
|
2014-12-16 15:10:24 +01:00
|
|
|
|
2014-07-09 18:54:47 +02:00
|
|
|
/* Signals */
|
|
|
|
|
#define NM_CONFIG_SIGNAL_CONFIG_CHANGED "config-changed"
|
|
|
|
|
|
2015-02-19 14:24:37 +01:00
|
|
|
#define NM_CONFIG_DEFAULT_CONNECTIVITY_INTERVAL 300
|
2015-06-06 21:29:01 +02:00
|
|
|
#define NM_CONFIG_DEFAULT_CONNECTIVITY_RESPONSE "NetworkManager is online" /* NOT LOCALIZED */
|
2015-02-19 14:24:37 +01:00
|
|
|
|
2014-07-09 15:17:01 +02:00
|
|
|
typedef struct NMConfigCmdLineOptions NMConfigCmdLineOptions;
|
|
|
|
|
|
2015-11-06 16:45:27 +01:00
|
|
|
typedef enum {
|
2016-04-07 18:42:24 +02:00
|
|
|
NM_CONFIG_STATE_PROPERTY_NONE,
|
2015-11-06 16:45:27 +01:00
|
|
|
|
|
|
|
|
/* 1 set-argument: (gboolean enabled) */
|
2016-04-07 18:42:24 +02:00
|
|
|
NM_CONFIG_STATE_PROPERTY_NETWORKING_ENABLED,
|
|
|
|
|
NM_CONFIG_STATE_PROPERTY_WIFI_ENABLED,
|
|
|
|
|
NM_CONFIG_STATE_PROPERTY_WWAN_ENABLED,
|
2015-11-06 16:45:27 +01:00
|
|
|
} NMConfigRunStatePropertyType;
|
|
|
|
|
|
2018-01-30 18:01:18 +01:00
|
|
|
typedef enum {
|
|
|
|
|
NM_CONFIG_CONFIGURE_AND_QUIT_INVALID = -1,
|
|
|
|
|
NM_CONFIG_CONFIGURE_AND_QUIT_DISABLED = FALSE,
|
2021-08-06 15:17:05 +02:00
|
|
|
NM_CONFIG_CONFIGURE_AND_QUIT_INITRD = 2,
|
2018-01-30 18:01:18 +01:00
|
|
|
} NMConfigConfigureAndQuitType;
|
|
|
|
|
|
2015-11-06 16:45:27 +01:00
|
|
|
typedef struct {
|
|
|
|
|
bool net_enabled;
|
|
|
|
|
bool wifi_enabled;
|
|
|
|
|
bool wwan_enabled;
|
|
|
|
|
|
|
|
|
|
/* Whether the runstate is modified and not saved to disk. */
|
|
|
|
|
bool dirty;
|
2016-04-07 18:42:24 +02:00
|
|
|
} NMConfigState;
|
2015-11-06 16:45:27 +01:00
|
|
|
|
2016-09-29 13:49:01 +02:00
|
|
|
typedef struct _NMConfigClass NMConfigClass;
|
2013-01-15 18:48:51 +01:00
|
|
|
|
|
|
|
|
GType nm_config_get_type(void);
|
2011-09-22 10:16:07 -05:00
|
|
|
|
2013-01-15 18:48:51 +01:00
|
|
|
NMConfig *nm_config_get(void);
|
2011-09-22 10:16:07 -05:00
|
|
|
|
2016-01-19 11:14:51 +01:00
|
|
|
const char *nm_config_change_flags_to_string(NMConfigChangeFlags flags, char *buf, gsize len);
|
2015-01-21 12:58:32 +01:00
|
|
|
|
2014-07-11 18:54:18 +02:00
|
|
|
NMConfigData *nm_config_get_data(NMConfig *config);
|
|
|
|
|
NMConfigData *nm_config_get_data_orig(NMConfig *config);
|
2015-06-09 08:47:41 +02:00
|
|
|
|
|
|
|
|
#define NM_CONFIG_GET_DATA (nm_config_get_data(nm_config_get()))
|
|
|
|
|
#define NM_CONFIG_GET_DATA_ORIG (nm_config_get_data_orig(nm_config_get()))
|
|
|
|
|
|
2021-11-09 13:28:54 +01:00
|
|
|
const char *nm_config_get_log_level(NMConfig *config);
|
|
|
|
|
const char *nm_config_get_log_domains(NMConfig *config);
|
2018-01-30 18:01:18 +01:00
|
|
|
NMConfigConfigureAndQuitType nm_config_get_configure_and_quit(NMConfig *config);
|
2015-07-08 19:39:00 +02:00
|
|
|
gboolean nm_config_get_is_debug(NMConfig *config);
|
2011-09-22 10:16:07 -05:00
|
|
|
|
2017-04-19 15:56:24 +02:00
|
|
|
gboolean nm_config_get_first_start(NMConfig *config);
|
|
|
|
|
|
2019-09-26 09:52:23 +02:00
|
|
|
const char *nm_config_get_no_auto_default_file(NMConfig *config);
|
|
|
|
|
|
2015-06-24 20:11:42 +02:00
|
|
|
void nm_config_set_values(NMConfig *self,
|
|
|
|
|
GKeyFile *keyfile_intern_new,
|
|
|
|
|
gboolean allow_write,
|
|
|
|
|
gboolean force_rewrite);
|
|
|
|
|
|
2013-03-11 12:06:38 -04:00
|
|
|
/* for main.c only */
|
2017-04-19 15:56:24 +02:00
|
|
|
NMConfigCmdLineOptions *nm_config_cmd_line_options_new(gboolean first_start);
|
2014-07-09 15:17:01 +02:00
|
|
|
void nm_config_cmd_line_options_free(NMConfigCmdLineOptions *cli);
|
|
|
|
|
void nm_config_cmd_line_options_add_to_entries(NMConfigCmdLineOptions *cli,
|
2021-11-09 13:28:54 +01:00
|
|
|
GOptionContext *opt_ctx);
|
2014-07-09 15:17:01 +02:00
|
|
|
|
2015-01-07 17:09:52 +01:00
|
|
|
gboolean nm_config_get_no_auto_default_for_device(NMConfig *config, NMDevice *device);
|
|
|
|
|
void nm_config_set_no_auto_default_for_device(NMConfig *config, NMDevice *device);
|
|
|
|
|
|
2015-06-10 11:59:46 +02:00
|
|
|
NMConfig *
|
|
|
|
|
nm_config_new(const NMConfigCmdLineOptions *cli, char **atomic_section_prefixes, GError **error);
|
|
|
|
|
NMConfig *
|
|
|
|
|
nm_config_setup(const NMConfigCmdLineOptions *cli, char **atomic_section_prefixes, GError **error);
|
2018-11-09 18:06:32 +01:00
|
|
|
void nm_config_reload(NMConfig *config, NMConfigChangeFlags reload_flags, gboolean emit_warnings);
|
2013-03-11 12:06:38 -04:00
|
|
|
|
2016-04-07 18:42:24 +02:00
|
|
|
const NMConfigState *nm_config_state_get(NMConfig *config);
|
2015-11-06 16:45:27 +01:00
|
|
|
|
2016-04-07 18:42:24 +02:00
|
|
|
void _nm_config_state_set(NMConfig *config, gboolean allow_persist, gboolean force_persist, ...);
|
|
|
|
|
#define nm_config_state_set(config, allow_persist, force_persist, ...) \
|
|
|
|
|
_nm_config_state_set(config, allow_persist, force_persist, ##__VA_ARGS__, 0)
|
2020-09-28 16:03:33 +02:00
|
|
|
|
all: don't use gchar/gshort/gint/glong but C types
We commonly don't use the glib typedefs for char/short/int/long,
but their C types directly.
$ git grep '\<g\(char\|short\|int\|long\|float\|double\)\>' | wc -l
587
$ git grep '\<\(char\|short\|int\|long\|float\|double\)\>' | wc -l
21114
One could argue that using the glib typedefs is preferable in
public API (of our glib based libnm library) or where it clearly
is related to glib, like during
g_object_set (obj, PROPERTY, (gint) value, NULL);
However, that argument does not seem strong, because in practice we don't
follow that argument today, and seldomly use the glib typedefs.
Also, the style guide for this would be hard to formalize, because
"using them where clearly related to a glib" is a very loose suggestion.
Also note that glib typedefs will always just be typedefs of the
underlying C types. There is no danger of glib changing the meaning
of these typedefs (because that would be a major API break of glib).
A simple style guide is instead: don't use these typedefs.
No manual actions, I only ran the bash script:
FILES=($(git ls-files '*.[hc]'))
sed -i \
-e 's/\<g\(char\|short\|int\|long\|float\|double\)\>\( [^ ]\)/\1\2/g' \
-e 's/\<g\(char\|short\|int\|long\|float\|double\)\> /\1 /g' \
-e 's/\<g\(char\|short\|int\|long\|float\|double\)\>/\1/g' \
"${FILES[@]}"
2018-07-11 07:40:19 +02:00
|
|
|
int nm_config_parse_boolean(const char *str, int default_value);
|
2020-09-28 16:03:33 +02:00
|
|
|
|
2014-12-16 12:14:30 +01:00
|
|
|
GKeyFile *nm_config_create_keyfile(void);
|
all: don't use gchar/gshort/gint/glong but C types
We commonly don't use the glib typedefs for char/short/int/long,
but their C types directly.
$ git grep '\<g\(char\|short\|int\|long\|float\|double\)\>' | wc -l
587
$ git grep '\<\(char\|short\|int\|long\|float\|double\)\>' | wc -l
21114
One could argue that using the glib typedefs is preferable in
public API (of our glib based libnm library) or where it clearly
is related to glib, like during
g_object_set (obj, PROPERTY, (gint) value, NULL);
However, that argument does not seem strong, because in practice we don't
follow that argument today, and seldomly use the glib typedefs.
Also, the style guide for this would be hard to formalize, because
"using them where clearly related to a glib" is a very loose suggestion.
Also note that glib typedefs will always just be typedefs of the
underlying C types. There is no danger of glib changing the meaning
of these typedefs (because that would be a major API break of glib).
A simple style guide is instead: don't use these typedefs.
No manual actions, I only ran the bash script:
FILES=($(git ls-files '*.[hc]'))
sed -i \
-e 's/\<g\(char\|short\|int\|long\|float\|double\)\>\( [^ ]\)/\1\2/g' \
-e 's/\<g\(char\|short\|int\|long\|float\|double\)\> /\1 /g' \
-e 's/\<g\(char\|short\|int\|long\|float\|double\)\>/\1/g' \
"${FILES[@]}"
2018-07-11 07:40:19 +02:00
|
|
|
int nm_config_keyfile_get_boolean(const GKeyFile *keyfile,
|
2021-11-09 13:28:54 +01:00
|
|
|
const char *section,
|
|
|
|
|
const char *key,
|
all: don't use gchar/gshort/gint/glong but C types
We commonly don't use the glib typedefs for char/short/int/long,
but their C types directly.
$ git grep '\<g\(char\|short\|int\|long\|float\|double\)\>' | wc -l
587
$ git grep '\<\(char\|short\|int\|long\|float\|double\)\>' | wc -l
21114
One could argue that using the glib typedefs is preferable in
public API (of our glib based libnm library) or where it clearly
is related to glib, like during
g_object_set (obj, PROPERTY, (gint) value, NULL);
However, that argument does not seem strong, because in practice we don't
follow that argument today, and seldomly use the glib typedefs.
Also, the style guide for this would be hard to formalize, because
"using them where clearly related to a glib" is a very loose suggestion.
Also note that glib typedefs will always just be typedefs of the
underlying C types. There is no danger of glib changing the meaning
of these typedefs (because that would be a major API break of glib).
A simple style guide is instead: don't use these typedefs.
No manual actions, I only ran the bash script:
FILES=($(git ls-files '*.[hc]'))
sed -i \
-e 's/\<g\(char\|short\|int\|long\|float\|double\)\>\( [^ ]\)/\1\2/g' \
-e 's/\<g\(char\|short\|int\|long\|float\|double\)\> /\1 /g' \
-e 's/\<g\(char\|short\|int\|long\|float\|double\)\>/\1/g' \
"${FILES[@]}"
2018-07-11 07:40:19 +02:00
|
|
|
int default_value);
|
2017-12-06 12:49:21 +01:00
|
|
|
gint64 nm_config_keyfile_get_int64(const GKeyFile *keyfile,
|
2021-11-09 13:28:54 +01:00
|
|
|
const char *section,
|
|
|
|
|
const char *key,
|
2017-12-06 12:49:21 +01:00
|
|
|
guint base,
|
|
|
|
|
gint64 min,
|
|
|
|
|
gint64 max,
|
|
|
|
|
gint64 fallback);
|
2021-11-09 13:28:54 +01:00
|
|
|
char *nm_config_keyfile_get_value(const GKeyFile *keyfile,
|
|
|
|
|
const char *section,
|
|
|
|
|
const char *key,
|
2015-06-16 15:13:26 +02:00
|
|
|
NMConfigGetValueFlags flags);
|
2021-11-09 13:28:54 +01:00
|
|
|
void nm_config_keyfile_set_string_list(GKeyFile *keyfile,
|
|
|
|
|
const char *group,
|
|
|
|
|
const char *key,
|
2015-06-09 09:02:32 +02:00
|
|
|
const char *const *strv,
|
|
|
|
|
gssize len);
|
2015-10-01 14:00:01 +02:00
|
|
|
gboolean nm_config_keyfile_has_global_dns_config(GKeyFile *keyfile, gboolean internal);
|
2020-09-28 16:03:33 +02:00
|
|
|
|
2015-10-01 10:50:14 +02:00
|
|
|
GSList *nm_config_get_match_spec(const GKeyFile *keyfile,
|
2021-11-09 13:28:54 +01:00
|
|
|
const char *group,
|
|
|
|
|
const char *key,
|
|
|
|
|
gboolean *out_has_key);
|
2020-09-28 16:03:33 +02:00
|
|
|
|
2015-06-24 20:11:42 +02:00
|
|
|
void _nm_config_sort_groups(char **groups, gsize ngroups);
|
2020-09-28 16:03:33 +02:00
|
|
|
|
2015-07-03 11:06:39 +02:00
|
|
|
gboolean nm_config_set_global_dns(NMConfig *self, NMGlobalDnsConfig *global_dns, GError **error);
|
2020-09-28 16:03:33 +02:00
|
|
|
|
2017-08-09 15:19:54 +08:00
|
|
|
void nm_config_set_connectivity_check_enabled(NMConfig *self, gboolean enabled);
|
|
|
|
|
|
config: allow to enable/disable configuration snippets
Support a new configuration option
[.config]
enable=<ENABLED>
for configuration snippets.
This new [.config] section is only relevant within the snippet itself
and it is not merged into the combined configuration.
Currently only the "enable" key is supported. If the "enable" key is
missing, it obviously defaults to being enabled. It allows snippets
to be skipped from loading. The main configuration "NetworkManager.conf"
cannot be skipped.
<ENABLED> can be a boolean value (false), to skip a configuration
snippet from loading.
It can also be a string to match against the NetworkManager version,
like "enable=nm-version-min:1.1,nm-version-min:1.0.6"
There are several motivations for this:
- the user can disable an entire configuration snippet by toggeling
one entry.
This generalizes the functionality of the global-dns.enable
setting, but in a way that applies to configuration on a per-file
basis.
- for developing, we often switch between different versions of
NetworkManager. Thus, we might want to use different configuration.
E.g. before global-dns options, I want to use "dns=none" and manage
resolv.conf myself. Now, I can use global-dns setting to do that.
That can be achieved with something like the following (not exactly,
it's an example only):
[.config]
enable=nm-version-min:1.1
[main]
dns=default
[global-dns-domain-*]
nameserver=127.0.0.1
Arguably, this would be more awesome, if we would bump our micro devel
version (1.1.0) more often while developing 1.2.0 (*hint*).
- in principle, packages could drop configuration snippets and enable
them based on the NetworkManager version.
- with the "env:" spec, you can enable/disable snippets by configuring
an environment variable. Again, useful for testing and developing.
2015-10-01 10:43:33 +02:00
|
|
|
/* internal defines ... */
|
|
|
|
|
extern guint _nm_config_match_nm_version;
|
|
|
|
|
extern char *_nm_config_match_env;
|
|
|
|
|
|
2016-04-04 18:18:49 +02:00
|
|
|
/*****************************************************************************/
|
|
|
|
|
|
|
|
|
|
#define NM_CONFIG_DEVICE_STATE_DIR "" NMRUNDIR "/devices"
|
2016-10-06 22:14:01 +02:00
|
|
|
|
|
|
|
|
#define NM_CONFIG_DEFAULT_LOGGING_AUDIT_BOOL (nm_streq("" NM_CONFIG_DEFAULT_LOGGING_AUDIT, "true"))
|
2016-04-04 18:18:49 +02:00
|
|
|
|
2016-09-23 17:36:21 +02:00
|
|
|
typedef enum {
|
|
|
|
|
NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNKNOWN = -1,
|
|
|
|
|
NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNMANAGED = 0,
|
|
|
|
|
NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_MANAGED = 1,
|
|
|
|
|
} NMConfigDeviceStateManagedType;
|
|
|
|
|
|
2016-09-26 14:36:20 +02:00
|
|
|
struct _NMConfigDeviceStateData {
|
2016-09-23 17:36:21 +02:00
|
|
|
int ifindex;
|
|
|
|
|
NMConfigDeviceStateManagedType managed;
|
|
|
|
|
|
2017-12-06 15:51:18 +01:00
|
|
|
/* a value of zero means that no metric is set. */
|
2017-12-20 12:45:02 +01:00
|
|
|
guint32 route_metric_default_aspired;
|
|
|
|
|
guint32 route_metric_default_effective;
|
2017-12-06 15:51:18 +01:00
|
|
|
|
2016-09-23 17:36:21 +02:00
|
|
|
/* the UUID of the last settings-connection active
|
|
|
|
|
* on the device. */
|
|
|
|
|
const char *connection_uuid;
|
2016-10-13 15:56:13 +02:00
|
|
|
|
|
|
|
|
const char *perm_hw_addr_fake;
|
2017-05-30 13:36:56 +02:00
|
|
|
|
|
|
|
|
/* whether the device was nm-owned (0/1) or -1 for
|
|
|
|
|
* non-software devices. */
|
2020-05-06 23:03:10 +02:00
|
|
|
NMTernary nm_owned : 3;
|
2016-09-26 14:36:20 +02:00
|
|
|
};
|
2016-09-23 17:36:21 +02:00
|
|
|
|
2017-04-19 15:45:31 +02:00
|
|
|
NMConfigDeviceStateData *nm_config_device_state_load(int ifindex);
|
2021-11-09 13:28:54 +01:00
|
|
|
GHashTable *nm_config_device_state_load_all(void);
|
2017-04-19 15:45:31 +02:00
|
|
|
gboolean nm_config_device_state_write(int ifindex,
|
2017-04-07 13:48:43 +02:00
|
|
|
NMConfigDeviceStateManagedType managed,
|
2021-11-09 13:28:54 +01:00
|
|
|
const char *perm_hw_addr_fake,
|
|
|
|
|
const char *connection_uuid,
|
2020-05-06 23:03:10 +02:00
|
|
|
NMTernary nm_owned,
|
2017-12-20 12:45:02 +01:00
|
|
|
guint32 route_metric_default_aspired,
|
2018-08-13 18:37:02 +02:00
|
|
|
guint32 route_metric_default_effective,
|
2021-11-09 13:28:54 +01:00
|
|
|
const char *next_server,
|
|
|
|
|
const char *root_path,
|
|
|
|
|
const char *dhcp_bootfile);
|
2020-09-28 16:03:33 +02:00
|
|
|
|
2020-03-04 16:52:57 +01:00
|
|
|
void nm_config_device_state_prune_stale(GHashTable *preserve_ifindexes,
|
|
|
|
|
NMPlatform *preserve_in_platform);
|
2020-09-28 16:03:33 +02:00
|
|
|
|
2021-11-09 13:28:54 +01:00
|
|
|
const GHashTable *nm_config_device_state_get_all(NMConfig *self);
|
2017-12-06 13:09:31 +01:00
|
|
|
const NMConfigDeviceStateData *nm_config_device_state_get(NMConfig *self, int ifindex);
|
2020-09-28 16:03:33 +02:00
|
|
|
|
2018-11-09 18:06:32 +01:00
|
|
|
const char *const *nm_config_get_warnings(NMConfig *config);
|
|
|
|
|
void nm_config_clear_warnings(NMConfig *config);
|
|
|
|
|
|
2016-04-04 18:18:49 +02:00
|
|
|
/*****************************************************************************/
|
|
|
|
|
|
all: fix up multiple-include-guard defines
Previously, src/nm-ip4-config.h, libnm/nm-ip4-config.h, and
libnm-glib/nm-ip4-config.h all used "NM_IP4_CONFIG_H" as an include
guard, which meant that nm-test-utils.h could not tell which of them
was being included (and so, eg, if you tried to include
nm-ip4-config.h in a libnm test, it would fail to compile because
nm-test-utils.h was referring to symbols in src/nm-ip4-config.h).
Fix this by changing the include guards in the non-API-stable parts of
the tree:
- libnm-glib/nm-ip4-config.h remains NM_IP4_CONFIG_H
- libnm/nm-ip4-config.h now uses __NM_IP4_CONFIG_H__
- src/nm-ip4-config.h now uses __NETWORKMANAGER_IP4_CONFIG_H__
And likewise for all other headers.
The two non-"nm"-prefixed headers, libnm/NetworkManager.h and
src/NetworkManagerUtils.h are now __NETWORKMANAGER_H__ and
__NETWORKMANAGER_UTILS_H__ respectively, which, while not entirely
consistent with the general scheme, do still mostly make sense in
isolation.
2014-08-13 14:10:11 -04:00
|
|
|
#endif /* __NETWORKMANAGER_CONFIG_H__ */
|