NetworkManager/src/core/nm-proxy-config.c
Thomas Haller ac1a9e03e4
all: move "src/" directory to "src/core/"
Currently "src/" mostly contains the source code of the daemon.
I say mostly, because that is not true, there are also the device,
settings, wwan, ppp plugins, the initrd generator, the pppd and dhcp
helper, and probably more.

Also we have source code under libnm-core/, libnm/, clients/, and
shared/ directories. That is all confusing.

We should have one "src" directory, that contains subdirectories. Those
subdirectories should contain individual parts (libraries or
applications), that possibly have dependencies on other subdirectories.
There should be a flat hierarchy of directories under src/, which
contains individual modules.

As the name "src/" is already taken, that prevents any sensible
restructuring of the code.

As a first step, move "src/" to "src/core/". This gives space to
reorganize the code better by moving individual components into "src/".

For inspiration, look at systemd's "src/" directory.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/743
2021-02-04 09:45:55 +01:00

172 lines
4.1 KiB
C

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright (C) 2016 Atul Anand <atulhjp@gmail.com>.
*/
#include "nm-default.h"
#include "nm-proxy-config.h"
#include <stdlib.h>
#include "nm-core-internal.h"
/*****************************************************************************/
typedef struct {
NMProxyConfigMethod method;
gboolean browser_only;
char * pac_url;
char * pac_script;
} NMProxyConfigPrivate;
struct _NMProxyConfig {
GObject parent;
NMProxyConfigPrivate _priv;
};
struct _NMProxyConfigClass {
GObjectClass parent;
};
G_DEFINE_TYPE(NMProxyConfig, nm_proxy_config, G_TYPE_OBJECT)
#define NM_PROXY_CONFIG_GET_PRIVATE(self) _NM_GET_PRIVATE(self, NMProxyConfig, NM_IS_PROXY_CONFIG)
/*****************************************************************************/
void
nm_proxy_config_set_method(NMProxyConfig *config, NMProxyConfigMethod method)
{
NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE(config);
priv->method = method;
}
NMProxyConfigMethod
nm_proxy_config_get_method(const NMProxyConfig *config)
{
const NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE(config);
return priv->method;
}
void
nm_proxy_config_merge_setting(NMProxyConfig *config, NMSettingProxy *setting)
{
const char * tmp = NULL;
NMProxyConfigPrivate *priv;
NMSettingProxyMethod method;
if (!setting)
return;
g_return_if_fail(NM_IS_SETTING_PROXY(setting));
priv = NM_PROXY_CONFIG_GET_PRIVATE(config);
nm_clear_g_free(&priv->pac_script);
method = nm_setting_proxy_get_method(setting);
switch (method) {
case NM_SETTING_PROXY_METHOD_AUTO:
priv->method = NM_PROXY_CONFIG_METHOD_AUTO;
/* Free DHCP Obtained PAC Url (i.e Option 252)
* only when libnm overrides it.
*/
tmp = nm_setting_proxy_get_pac_url(setting);
if (tmp) {
g_free(priv->pac_url);
priv->pac_url = g_strdup(tmp);
}
tmp = nm_setting_proxy_get_pac_script(setting);
priv->pac_script = g_strdup(tmp);
break;
case NM_SETTING_PROXY_METHOD_NONE:
priv->method = NM_PROXY_CONFIG_METHOD_NONE;
break;
}
priv->browser_only = nm_setting_proxy_get_browser_only(setting);
}
gboolean
nm_proxy_config_get_browser_only(const NMProxyConfig *config)
{
const NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE(config);
return priv->browser_only;
}
void
nm_proxy_config_set_pac_url(NMProxyConfig *config, const char *url)
{
NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE(config);
g_free(priv->pac_url);
priv->pac_url = g_strdup(url);
}
const char *
nm_proxy_config_get_pac_url(const NMProxyConfig *config)
{
const NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE(config);
return priv->pac_url;
}
void
nm_proxy_config_set_pac_script(NMProxyConfig *config, const char *script)
{
NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE(config);
g_free(priv->pac_script);
priv->pac_script = g_strdup(script);
}
const char *
nm_proxy_config_get_pac_script(const NMProxyConfig *config)
{
const NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE(config);
return priv->pac_script;
}
/*****************************************************************************/
static void
nm_proxy_config_init(NMProxyConfig *config)
{
NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE(config);
priv->method = NM_PROXY_CONFIG_METHOD_NONE;
}
NMProxyConfig *
nm_proxy_config_new(void)
{
return NM_PROXY_CONFIG(g_object_new(NM_TYPE_PROXY_CONFIG, NULL));
}
static void
finalize(GObject *object)
{
NMProxyConfig * self = NM_PROXY_CONFIG(object);
NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE(self);
g_free(priv->pac_url);
g_free(priv->pac_script);
G_OBJECT_CLASS(nm_proxy_config_parent_class)->finalize(object);
}
static void
nm_proxy_config_class_init(NMProxyConfigClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS(klass);
object_class->finalize = finalize;
}