00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00036 #ifndef _iprange_h_
00037 #define _iprange_h_
00038
00039 typedef void (*iprange_free_t)(gpointer value, gpointer udata);
00040 typedef gpointer (*iprange_clone_t)(gpointer value);
00041
00045 typedef struct {
00046 gint count;
00047 gint level2;
00048 gint heads;
00049 gint enlisted;
00050 } iprange_stats_t;
00051
00056 typedef enum {
00057 IPR_ERR_OK = 0,
00058 IPR_ERR_BAD_PREFIX,
00059 IPR_ERR_RANGE_CLASH,
00060 IPR_ERR_RANGE_DUP,
00061 IPR_ERR_RANGE_SUBNET,
00062 IPR_ERR_RANGE_OVERLAP,
00064 IPR_ERROR_COUNT
00065 } iprange_err_t;
00066
00067
00068
00069
00070
00071 const gchar *iprange_strerror(iprange_err_t errnum);
00072
00073 gpointer iprange_make(iprange_free_t freecb, iprange_clone_t clonecb);
00074 void iprange_free_each(gpointer db, gpointer udata);
00075 iprange_err_t iprange_add_cidr(
00076 gpointer db, guint32 net, guint bits, gpointer udata);
00077 iprange_err_t iprange_add_cidr_force(
00078 gpointer db, guint32 net, guint bits, gpointer udata, gpointer cdata);
00079 gpointer iprange_get(gpointer db, guint32 ip);
00080 void iprange_get_stats(gpointer db, iprange_stats_t *stats);
00081
00082 #endif
00083
00084