Apologies for these stupid mistakes. And there's no reason to export ProxyConfig on DBus. Only useful property was pac-url which also isn't needed to be on Bus as the url is apparently passed into pacrunner. Will remove them .
Thanks! On 6/29/16, Dan Williams <d...@redhat.com> wrote: > On Fri, 2016-06-24 at 00:42 +0530, Atul Anand wrote: >> A new Object NMProxyConfig added with properties for proxies, >> PAC Url and PAC Script. Getters are setters implemented for >> manipulating those fields. >> > > I couldn't find anywhere in the code that actually uses the GObject > properties for the ProxyConfig object, it seems everything uses the > accessors. Which is fine, as long as the object isn't exported over D- > Bus, and since I don't think it is, we probably don't need GObject > properties on the ProxyConfig object yet. > > Dan > >> --- >> src/Makefile.am | 4 + >> src/nm-proxy-config.c | 243 >> ++++++++++++++++++++++++++++++++++++++++++++++++++ >> src/nm-proxy-config.h | 53 +++++++++++ >> 3 files changed, 300 insertions(+) >> create mode 100644 src/nm-proxy-config.c >> create mode 100644 src/nm-proxy-config.h >> >> diff --git a/src/Makefile.am b/src/Makefile.am >> index 5e289d9..700cfc4 100644 >> --- a/src/Makefile.am >> +++ b/src/Makefile.am >> @@ -415,6 +415,8 @@ libNetworkManager_la_SOURCES = \ >> nm-exported-object.h \ >> nm-firewall-manager.c \ >> nm-firewall-manager.h \ >> + nm-proxy-config.c \ >> + nm-proxy-config.h \ >> nm-ip4-config.c \ >> nm-ip4-config.h \ >> nm-ip6-config.c \ >> @@ -565,6 +567,8 @@ libnm_iface_helper_la_SOURCES = \ >> \ >> nm-exported-object.c \ >> nm-exported-object.h \ >> + nm-proxy-config.c \ >> + nm-proxy-config.h \ >> nm-ip4-config.c \ >> nm-ip4-config.h \ >> nm-ip6-config.c \ >> diff --git a/src/nm-proxy-config.c b/src/nm-proxy-config.c >> new file mode 100644 >> index 0000000..93f9b21 >> --- /dev/null >> +++ b/src/nm-proxy-config.c >> @@ -0,0 +1,243 @@ >> +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 >> -*- */ >> + >> +#include "nm-default.h" >> + >> +#include "nm-proxy-config.h" >> + >> +#include <string.h> >> + >> +#include "nm-utils.h" >> +#include "NetworkManagerUtils.h" >> + >> +#define NM_PROXY_CONFIG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE >> ((o), NM_TYPE_PROXY_CONFIG, NMProxyConfigPrivate)) >> + >> +G_DEFINE_TYPE (NMProxyConfig, nm_proxy_config, G_TYPE_OBJECT) >> + >> +typedef struct { >> + NMProxyConfigMethod method; >> + GPtrArray *proxies; >> + char *pac_url; >> + char *pac_script; >> +} NMProxyConfigPrivate; >> + >> +NM_GOBJECT_PROPERTIES_DEFINE (NMProxyConfig, >> + PROP_METHOD, >> + PROP_PROXIES, >> + PROP_PAC_URL, >> + PROP_PAC_SCRIPT, >> +); >> + >> +NMProxyConfig * >> +nm_proxy_config_new (void) >> +{ >> + return NM_PROXY_CONFIG (g_object_new (NM_TYPE_PROXY_CONFIG, >> NULL)); >> +} >> + >> +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) >> +{ >> + NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE >> (config); >> + >> + return priv->method; >> +} >> + >> +void >> +nm_proxy_config_reset_proxies (NMProxyConfig *config) >> +{ >> + NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE >> (config); >> + >> + if (priv->proxies->len !=0) { >> + g_ptr_array_set_size (priv->proxies, 0); >> + _notify (config, PROP_PROXIES); >> + } >> +} >> + >> +void >> +nm_proxy_config_add_proxy (NMProxyConfig *config, const char *proxy) >> +{ >> + NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE >> (config); >> + int i; >> + >> + g_return_if_fail (proxy != NULL); >> + g_return_if_fail (proxy[0] != '\0'); >> + >> + for (i = 0; i < priv->proxies->len; i++) >> + if (!g_strcmp0 (g_ptr_array_index (priv->proxies, >> i), proxy)) >> + return; >> + >> + g_ptr_array_add (priv->proxies, g_strdup (proxy)); >> + _notify (config, PROP_PROXIES); >> +} >> + >> +void >> +nm_proxy_config_del_proxy (NMProxyConfig *config, guint i) >> +{ >> + NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE >> (config); >> + >> + g_return_if_fail (i < priv->proxies->len); >> + >> + g_ptr_array_remove_index (priv->proxies, i); >> + _notify (config, PROP_PROXIES); >> +} >> + >> +guint32 >> +nm_proxy_config_get_num_proxies (const NMProxyConfig *config) >> +{ >> + NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE >> (config); >> + >> + return priv->proxies->len; >> +} >> + >> +const char * >> +nm_proxy_config_get_proxy (const NMProxyConfig *config, guint i) >> +{ >> + NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE >> (config); >> + >> + return g_ptr_array_index (priv->proxies, i); >> +} >> + >> +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) >> +{ >> + 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) >> +{ >> + 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; >> + priv->proxies = g_ptr_array_new_with_free_func (g_free); >> +} >> + >> +static void >> +finalize (GObject *object) >> +{ >> + NMProxyConfig *self = NM_PROXY_CONFIG (object); >> + NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE >> (self); >> + >> + g_ptr_array_unref (priv->proxies); >> + g_free (priv->pac_url); >> + g_free (priv->pac_script); >> + >> + G_OBJECT_CLASS (nm_proxy_config_parent_class)->finalize >> (object); >> +} >> + >> +static void >> +get_property (GObject *object, guint prop_id, >> + GValue *value, GParamSpec *pspec) >> +{ >> + NMProxyConfig *config = NM_PROXY_CONFIG (object); >> + NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE >> (config); >> + >> + switch (prop_id) { >> + case PROP_METHOD: >> + g_value_set_int (value, priv->method); >> + break; >> + case PROP_PROXIES: >> + nm_utils_g_value_set_strv (value, priv->proxies); >> + break; >> + case PROP_PAC_URL: >> + g_value_set_string (value, priv->pac_url); >> + break; >> + case PROP_PAC_SCRIPT: >> + g_value_set_string (value, priv->pac_script); >> + break; >> + default: >> + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, >> pspec); >> + break; >> + } >> +} >> + >> +static void >> +set_property (GObject *object, >> + guint prop_id, >> + const GValue *value, >> + GParamSpec *pspec) >> +{ >> + NMProxyConfig *self = NM_PROXY_CONFIG (object); >> + NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE >> (self); >> + >> + switch (prop_id) { >> + case PROP_METHOD: >> + priv->method = g_value_get_int (value); >> + break; >> + default: >> + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, >> pspec); >> + break; >> + } >> +} >> + >> +static void >> +nm_proxy_config_class_init (NMProxyConfigClass *klass) >> +{ >> + GObjectClass *object_class = G_OBJECT_CLASS (klass); >> + >> + g_type_class_add_private (object_class, sizeof >> (NMProxyConfigPrivate)); >> + >> + /* virtual methods */ >> + object_class->get_property = get_property; >> + object_class->set_property = set_property; >> + object_class->finalize = finalize; >> + >> + obj_properties[PROP_METHOD] = >> + g_param_spec_int (NM_PROXY_CONFIG_METHOD, "", "", >> + 0, G_MAXINT, 0, >> + G_PARAM_READWRITE | >> + G_PARAM_CONSTRUCT_ONLY | >> + G_PARAM_STATIC_STRINGS); >> + obj_properties[PROP_PROXIES] = >> + g_param_spec_boxed (NM_PROXY_CONFIG_PROXIES, "", "", >> + G_TYPE_STRV, >> + G_PARAM_READABLE | >> + G_PARAM_STATIC_STRINGS); >> + obj_properties[PROP_PAC_URL] = >> + g_param_spec_string (NM_PROXY_CONFIG_PAC_URL, "", >> "", >> + NULL, >> + G_PARAM_READABLE | >> + G_PARAM_STATIC_STRINGS); >> + obj_properties[PROP_PAC_SCRIPT] = >> + g_param_spec_string (NM_PROXY_CONFIG_PAC_SCRIPT, "", >> "", >> + NULL, >> + G_PARAM_READABLE | >> + G_PARAM_STATIC_STRINGS); >> + >> + g_object_class_install_properties (object_class, >> _PROPERTY_ENUMS_LAST, obj_properties); >> +} >> diff --git a/src/nm-proxy-config.h b/src/nm-proxy-config.h >> new file mode 100644 >> index 0000000..b709e82 >> --- /dev/null >> +++ b/src/nm-proxy-config.h >> @@ -0,0 +1,53 @@ >> +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 >> -*- */ >> + >> +#include "nm-default.h" >> + >> +#ifndef __NETWORKMANAGER_PROXY_CONFIG_H__ >> +#define __NETWORKMANAGER_PROXY_CONFIG_H__ >> + >> +typedef enum { >> + NM_PROXY_CONFIG_METHOD_NONE = 0, >> + NM_PROXY_CONFIG_METHOD_AUTO, >> + NM_PROXY_CONFIG_METHOD_MANUAL >> +} NMProxyConfigMethod; >> + >> +#define NM_TYPE_PROXY_CONFIG (nm_proxy_config_get_type ()) >> +#define NM_PROXY_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), >> NM_TYPE_PROXY_CONFIG, NMProxyConfig)) >> +#define NM_PROXY_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST >> ((klass), NM_TYPE_PROXY_CONFIG, NMProxyConfigClass)) >> +#define NM_IS_PROXY_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), >> NM_TYPE_PROXY_CONFIG)) >> +#define NM_IS_PROXY_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE >> ((klass), NM_TYPE_PROXY_CONFIG)) >> +#define NM_PROXY_CONFIG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS >> ((obj), NM_TYPE_PROXY_CONFIG, NMProxyConfigClass)) >> + >> +struct _NMProxyConfig { >> + GObject parent; >> +}; >> + >> +typedef struct { >> + GObjectClass parent; >> +} NMProxyConfigClass; >> + >> +#define NM_PROXY_CONFIG_METHOD "method" >> +#define NM_PROXY_CONFIG_PROXIES "proxies" >> +#define NM_PROXY_CONFIG_PAC_URL "pac-url" >> +#define NM_PROXY_CONFIG_PAC_SCRIPT "pac-script" >> + >> +GType nm_proxy_config_get_type (void); >> + >> +NMProxyConfig * nm_proxy_config_new (void); >> + >> +void nm_proxy_config_set_method (NMProxyConfig *config, >> NMProxyConfigMethod method); >> +NMProxyConfigMethod nm_proxy_config_get_method (const NMProxyConfig >> *config); >> + >> +void nm_proxy_config_reset_proxies (NMProxyConfig *config); >> +void nm_proxy_config_add_proxy (NMProxyConfig *config, const char >> *proxy); >> +void nm_proxy_config_del_proxy (NMProxyConfig *config, guint i); >> +guint32 nm_proxy_config_get_num_proxies (const NMProxyConfig >> *config); >> +const char * nm_proxy_config_get_proxy (const NMProxyConfig *config, >> guint i); >> + >> +void nm_proxy_config_set_pac_url (NMProxyConfig *config, const char >> *url); >> +const char * nm_proxy_config_get_pac_url (const NMProxyConfig >> *config); >> + >> +void nm_proxy_config_set_pac_script (NMProxyConfig *config, const >> char *script); >> +const char * nm_proxy_config_get_pac_script (const NMProxyConfig >> *config); >> + >> +#endif /* __NETWORKMANAGER_PROXY_CONFIG_H__ */ > _______________________________________________ networkmanager-list mailing list networkmanager-list@gnome.org https://mail.gnome.org/mailman/listinfo/networkmanager-list