1 /* GNIO - GLib Network Layer of GIO
3 * Copyright (C) 2008 Christian Kellner, Samuel Cormier-Iijima
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General
16 * Public License along with this library; if not, write to the
17 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18 * Boston, MA 02111-1307, USA.
20 * Authors: Christian Kellner <gicmo@gnome.org>
21 * Samuel Cormier-Iijima <sciyoshi@gmail.com>
27 #include "ginetaddress.h"
30 * SECTION:ginetaddress
31 * @short_description: Base class for implementing IPv4/IPv6 classes
37 G_DEFINE_ABSTRACT_TYPE (GInetAddress, g_inet_address, G_TYPE_INITIALLY_UNOWNED);
55 g_inet_address_get_property (GObject *object,
60 GInetAddress *address = G_INET_ADDRESS (object);
65 g_value_set_boolean (value, G_INET_ADDRESS_GET_CLASS (address)->is_any (address));
68 case PROP_IS_LINKLOCAL:
69 g_value_set_boolean (value, G_INET_ADDRESS_GET_CLASS (address)->is_linklocal (address));
72 case PROP_IS_LOOPBACK:
73 g_value_set_boolean (value, G_INET_ADDRESS_GET_CLASS (address)->is_loopback (address));
77 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
82 g_inet_address_set_property (GObject *object,
87 GInetAddress *address G_GNUC_UNUSED = G_INET_ADDRESS (object);
92 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
97 g_inet_address_class_init (GInetAddressClass *klass)
99 GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
101 gobject_class->get_property = g_inet_address_get_property;
102 gobject_class->set_property = g_inet_address_set_property;
104 g_object_class_install_property (gobject_class, PROP_IS_ANY,
105 g_param_spec_boolean ("is-any",
109 G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
111 g_object_class_install_property (gobject_class, PROP_IS_LINKLOCAL,
112 g_param_spec_boolean ("is-link-local",
116 G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
118 g_object_class_install_property (gobject_class, PROP_IS_LOOPBACK,
119 g_param_spec_boolean ("is-loopback",
123 G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
125 g_object_class_install_property (gobject_class, PROP_IS_SITELOCAL,
126 g_param_spec_boolean ("is-site-local",
130 G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
132 g_object_class_install_property (gobject_class, PROP_IS_MULTICAST,
133 g_param_spec_boolean ("is-multicast",
137 G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
139 g_object_class_install_property (gobject_class, PROP_IS_MC_GLOBAL,
140 g_param_spec_boolean ("is-mc-global",
144 G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
146 g_object_class_install_property (gobject_class, PROP_IS_MC_LINKLOCAL,
147 g_param_spec_boolean ("is-mc-link-local",
151 G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
153 g_object_class_install_property (gobject_class, PROP_IS_MC_NODELOCAL,
154 g_param_spec_boolean ("is-mc-node-local",
158 G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
160 g_object_class_install_property (gobject_class, PROP_IS_MC_ORGLOCAL,
161 g_param_spec_boolean ("is-mc-org-local",
165 G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
167 g_object_class_install_property (gobject_class, PROP_IS_MC_SITELOCAL,
168 g_param_spec_boolean ("is-mc-site-local",
172 G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
176 g_inet_address_init (GInetAddress *address)
182 g_inet_address_to_string (GInetAddress *address)
184 g_return_val_if_fail (G_IS_INET_ADDRESS (address), NULL);
186 return G_INET_ADDRESS_GET_CLASS (address)->to_string (address);
189 /* ******************************************* */
190 /* Getters for properties */
193 get_boolean_property (GInetAddress *address, const gchar *property)
197 g_return_val_if_fail (G_IS_INET_ADDRESS (address), FALSE);
199 g_object_get (address, property, &value, NULL);
205 g_inet_address_is_any (GInetAddress *address)
207 return get_boolean_property (address, "is-any");
211 g_inet_address_is_linklocal (GInetAddress *address)
213 return get_boolean_property (address, "is-link-local");
217 g_inet_address_is_loopback (GInetAddress *address)
219 return get_boolean_property (address, "is-loopback");
223 g_inet_address_is_sitelocal (GInetAddress *address)
225 return get_boolean_property (address, "is-site-local");
229 g_inet_address_is_multicast (GInetAddress *address)
231 return get_boolean_property (address, "is-multicast");
235 g_inet_address_is_mc_global (GInetAddress *address)
237 return get_boolean_property (address, "is-mc-global");
241 g_inet_address_is_mc_linklocal (GInetAddress *address)
243 return get_boolean_property (address, "is-mc-link-local");
247 g_inet_address_is_mc_nodelocal (GInetAddress *address)
249 return get_boolean_property (address, "is-mc-node-local");
253 g_inet_address_is_mc_orglocal (GInetAddress *address)
255 return get_boolean_property (address, "is-mc-org-local");
259 g_inet_address_is_mc_sitelocal (GInetAddress *address)
261 return get_boolean_property (address, "is-mc-site-local");