*/
#define SOCKIPLEN 45
+#define CIDRLEN SOCKIPLEN + 4
+
/* from ircd_string.h */
extern const char* ircd_ntoa(const struct irc_in_addr* addr);
extern const char* ircd_ntoa_r(char* buf, const struct irc_in_addr* addr);
+extern const char * ircd_ntoa_masked(const struct irc_in_addr* addr, unsigned char bits);
+extern const char* ircd_ntoa_masked_r(char* buf, const struct irc_in_addr* in, unsigned char bits);
#define ircd_aton(ADDR, STR) ipmask_parse((STR), (ADDR), NULL)
extern int ipmask_parse(const char *in, struct irc_in_addr *mask, unsigned char *bits_ptr);
extern int ipmask_check(const struct irc_in_addr *, const struct irc_in_addr *, unsigned char);
void ip_canonicalize_tunnel(struct irc_in_addr *out, const struct irc_in_addr *in);
#define IPtostr(ipaddr) ircd_ntoa(&(ipaddr))
+#define CIDRtostr(ipaddr, bits) ircd_ntoa_masked(&(ipaddr), bits)
#define irc_in_addr_v4_to_int(ADDR) ((ntohs((ADDR)->in6_16[6]) << 16) | ntohs((ADDR)->in6_16[7]))
/* from numnicks.h */