X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcutil.c;h=15ad5eab37ccf053d4f1e08e17729251f5bc89a7;hb=99865727f85eb96f5462158eed8dc935710d1a0b;hp=c37ec4e55df810e5c16206f1b94e3254016cc384;hpb=e4b63806b89601e4e787c239b39b1bee33e46f7e;p=silc.git diff --git a/lib/silcutil/silcutil.c b/lib/silcutil/silcutil.c index c37ec4e5..15ad5eab 100644 --- a/lib/silcutil/silcutil.c +++ b/lib/silcutil/silcutil.c @@ -539,12 +539,16 @@ char *silc_id_render(void *id, uint16 type) case SILC_ID_SERVER: { SilcServerID *server_id = (SilcServerID *)id; - struct in_addr ipv4; - if (server_id->ip.data_len > 4) { - +#ifdef HAVE_IPV6 + struct in6_addr ipv6; + memmove(&ipv6, server_id->ip.data, sizeof(ipv6)); + if (!inet_ntop(AF_INET6, &ipv6, tmp, sizeof(tmp))) + strcat(rid, tmp); +#endif } else { - memcpy(&ipv4.s_addr, server_id->ip.data, 4); + struct in_addr ipv4; + memmove(&ipv4.s_addr, server_id->ip.data, 4); strcat(rid, inet_ntoa(ipv4)); } @@ -560,12 +564,16 @@ char *silc_id_render(void *id, uint16 type) case SILC_ID_CLIENT: { SilcClientID *client_id = (SilcClientID *)id; - struct in_addr ipv4; - if (client_id->ip.data_len > 4) { - +#ifdef HAVE_IPV6 + struct in6_addr ipv6; + memmove(&ipv6, client_id->ip.data, sizeof(ipv6)); + if (!inet_ntop(AF_INET6, &ipv6, tmp, sizeof(tmp))) + strcat(rid, tmp); +#endif } else { - memcpy(&ipv4.s_addr, client_id->ip.data, 4); + struct in_addr ipv4; + memmove(&ipv4.s_addr, client_id->ip.data, 4); strcat(rid, inet_ntoa(ipv4)); } @@ -582,12 +590,16 @@ char *silc_id_render(void *id, uint16 type) case SILC_ID_CHANNEL: { SilcChannelID *channel_id = (SilcChannelID *)id; - struct in_addr ipv4; - if (channel_id->ip.data_len > 4) { - +#ifdef HAVE_IPV6 + struct in6_addr ipv6; + memmove(&ipv6, channel_id->ip.data, sizeof(ipv6)); + if (!inet_ntop(AF_INET6, &ipv6, tmp, sizeof(tmp))) + strcat(rid, tmp); +#endif } else { - memcpy(&ipv4.s_addr, channel_id->ip.data, 4); + struct in_addr ipv4; + memmove(&ipv4.s_addr, channel_id->ip.data, 4); strcat(rid, inet_ntoa(ipv4)); }