diff options
author | Dan Winship <danw@gnome.org> | 2011-10-01 08:31:54 -0400 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2011-11-14 13:42:29 -0500 |
commit | eb9755dc9c765cd0381f8b6d897e6ff4f7582a0a (patch) | |
tree | 6eb45ac0b3fd299b38a1959fe6d03eb68303dd4f /gio/ginetaddressmask.h | |
parent | fac9e8d29f3b73afb17feca1fefe51986a09327c (diff) | |
download | glib-eb9755dc9c765cd0381f8b6d897e6ff4f7582a0a.tar.gz |
GInetAddressMask: new type for internet address range matching
Eg, for matching a GInetAddress to a range like "10.0.0.0/8" or
"fe80::/10"
https://bugzilla.gnome.org/show_bug.cgi?id=620932
Diffstat (limited to 'gio/ginetaddressmask.h')
-rw-r--r-- | gio/ginetaddressmask.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/gio/ginetaddressmask.h b/gio/ginetaddressmask.h new file mode 100644 index 000000000..17d00cab8 --- /dev/null +++ b/gio/ginetaddressmask.h @@ -0,0 +1,78 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright 2011 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only <gio/gio.h> can be included directly." +#endif + +#ifndef __G_INET_ADDRESS_MASK_H__ +#define __G_INET_ADDRESS_MASK_H__ + +#include <gio/giotypes.h> + +G_BEGIN_DECLS + +#define G_TYPE_INET_ADDRESS_MASK (g_inet_address_mask_get_type ()) +#define G_INET_ADDRESS_MASK(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INET_ADDRESS_MASK, GInetAddressMask)) +#define G_INET_ADDRESS_MASK_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_INET_ADDRESS_MASK, GInetAddressMaskClass)) +#define G_IS_INET_ADDRESS_MASK(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_INET_ADDRESS_MASK)) +#define G_IS_INET_ADDRESS_MASK_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_INET_ADDRESS_MASK)) +#define G_INET_ADDRESS_MASK_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_INET_ADDRESS_MASK, GInetAddressMaskClass)) + +typedef struct _GInetAddressMaskClass GInetAddressMaskClass; +typedef struct _GInetAddressMaskPrivate GInetAddressMaskPrivate; + +struct _GInetAddressMask +{ + GObject parent_instance; + + /*< private >*/ + GInetAddressMaskPrivate *priv; +}; + +struct _GInetAddressMaskClass +{ + GObjectClass parent_class; + +}; + +GType g_inet_address_mask_get_type (void) G_GNUC_CONST; + +GInetAddressMask *g_inet_address_mask_new (GInetAddress *addr, + guint length, + GError **error); + +GInetAddressMask *g_inet_address_mask_new_from_string (const gchar *mask_string, + GError **error); +gchar *g_inet_address_mask_to_string (GInetAddressMask *mask); + +GSocketFamily g_inet_address_mask_get_family (GInetAddressMask *mask); +GInetAddress *g_inet_address_mask_get_address (GInetAddressMask *mask); +guint g_inet_address_mask_get_length (GInetAddressMask *mask); + +gboolean g_inet_address_mask_matches (GInetAddressMask *mask, + GInetAddress *address); +gboolean g_inet_address_mask_equal (GInetAddressMask *mask, + GInetAddressMask *mask2); + +G_END_DECLS + +#endif /* __G_INET_ADDRESS_MASK_H__ */ + |