On Tue, 2016-06-28 at 16:45 -0500, Dan Williams wrote: > On Wed, 2016-06-29 at 02:08 +0530, Atul Anand wrote: > > > > 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 . > No problem, they aren't stupid mistakes you've worked with the NM and
"*unless* you've worked with the NM" I meant to say... > GDBus code for a couple years. Plus copy & paste is pretty standard > for a new GObject :) I'm pretty sure nobody writes them from > scratch. > > Dan > > > > > 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 _______________________________________________ networkmanager-list mailing list networkmanager-list@gnome.org https://mail.gnome.org/mailman/listinfo/networkmanager-list