+#define HOSTIP_GUINT32_TO_STRING(hostip_guint32) \
+ (udpgate_printf_alloca("%d.%d.%d.%d", \
+ ((hostip_guint32)>>24U)&0xFFU, \
+ ((hostip_guint32)>>16U)&0xFFU, \
+ ((hostip_guint32)>> 8U)&0xFFU, \
+ ((hostip_guint32)>> 0U)&0xFFU))
+/* Do not use nested udpgate_printf_alloca() - macros cannot nest! */
+#define SOCKADDR_IN_TO_STRING(sockaddr_in_pointer) ({ \
+ const gchar *_hostip_string=HOSTIP_GUINT32_TO_STRING(ntohl((sockaddr_in_pointer)->sin_addr.s_addr)); \
+ udpgate_printf_alloca("%s:%d",_hostip_string,ntohs((sockaddr_in_pointer)->sin_port)); \
+ })
+