aboutsummaryrefslogtreecommitdiff
path: root/src/transport
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-05-03 06:59:13 +0000
committerChristian Grothoff <christian@grothoff.org>2010-05-03 06:59:13 +0000
commita894ddc0a376fa59850b410b43d3c9331c847677 (patch)
tree125ad36b7b7b7b888b4aba2f773493cb67c807f6 /src/transport
parent2c8eb2f20999f03d781045d7d5bdadf748fe3cfc (diff)
downloadgnunet-a894ddc0a376fa59850b410b43d3c9331c847677.tar.gz
gnunet-a894ddc0a376fa59850b410b43d3c9331c847677.zip
inet_ntop
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/plugin_transport_tcp.c30
-rw-r--r--src/transport/plugin_transport_udp.c31
2 files changed, 32 insertions, 29 deletions
diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c
index fad999fa4..d4212631a 100644
--- a/src/transport/plugin_transport_tcp.c
+++ b/src/transport/plugin_transport_tcp.c
@@ -316,39 +316,41 @@ tcp_address_to_string (void *cls,
316 const void *addr, 316 const void *addr,
317 size_t addrlen) 317 size_t addrlen)
318{ 318{
319 static char buf[INET6_ADDRSTRLEN]; 319 static char rbuf[INET6_ADDRSTRLEN + 10];
320 char buf[INET6_ADDRSTRLEN];
320 const void *sb; 321 const void *sb;
321 struct sockaddr_in a4; 322 struct in_addr a4;
322 struct sockaddr_in6 a6; 323 struct in6_addr a6;
323 const struct IPv4TcpAddress *t4; 324 const struct IPv4TcpAddress *t4;
324 const struct IPv6TcpAddress *t6; 325 const struct IPv6TcpAddress *t6;
325 int af; 326 int af;
327 uint16_t port;
326 328
327 if (addrlen == sizeof (struct IPv6TcpAddress)) 329 if (addrlen == sizeof (struct IPv6TcpAddress))
328 { 330 {
329 t6 = addr; 331 t6 = addr;
330 af = AF_INET6; 332 af = AF_INET6;
331 memset (&a6, 0, sizeof (a6)); 333 port = ntohs (t6->t6_port);
332 a6.sin6_family = AF_INET6; 334 memcpy (&a6, t6->ipv6_addr, sizeof (a6));
333 a6.sin6_port = t6->t6_port;
334 memcpy (a6.sin6_addr.s6_addr,
335 t6->ipv6_addr,
336 16);
337 sb = &a6; 335 sb = &a6;
338 } 336 }
339 else if (addrlen == sizeof (struct IPv4TcpAddress)) 337 else if (addrlen == sizeof (struct IPv4TcpAddress))
340 { 338 {
341 t4 = addr; 339 t4 = addr;
342 af = AF_INET; 340 af = AF_INET;
343 memset (&a4, 0, sizeof (a4)); 341 port = ntohs (t4->t_port);
344 a4.sin_family = AF_INET; 342 memcpy (&a4, &t4->ipv4_addr, sizeof (a4));
345 a4.sin_port = t4->t_port;
346 a4.sin_addr.s_addr = t4->ipv4_addr;
347 sb = &a4; 343 sb = &a4;
348 } 344 }
349 else 345 else
350 return NULL; 346 return NULL;
351 return inet_ntop (af, sb, buf, INET6_ADDRSTRLEN); 347 inet_ntop (af, sb, buf, INET6_ADDRSTRLEN);
348 GNUNET_snprintf (rbuf,
349 sizeof (rbuf),
350 "%s:%u",
351 buf,
352 port);
353 return rbuf;
352} 354}
353 355
354 356
diff --git a/src/transport/plugin_transport_udp.c b/src/transport/plugin_transport_udp.c
index 0e7f4d126..689d75b74 100644
--- a/src/transport/plugin_transport_udp.c
+++ b/src/transport/plugin_transport_udp.c
@@ -846,40 +846,41 @@ udp_address_to_string (void *cls,
846 const void *addr, 846 const void *addr,
847 size_t addrlen) 847 size_t addrlen)
848{ 848{
849 static char buf[INET6_ADDRSTRLEN]; 849 static char rbuf[INET6_ADDRSTRLEN + 10];
850 char buf[INET6_ADDRSTRLEN];
850 const void *sb; 851 const void *sb;
851 struct sockaddr_in a4; 852 struct in_addr a4;
852 struct sockaddr_in6 a6; 853 struct in6_addr a6;
853 const struct IPv4UdpAddress *t4; 854 const struct IPv4UdpAddress *t4;
854 const struct IPv6UdpAddress *t6; 855 const struct IPv6UdpAddress *t6;
855 int af; 856 int af;
857 uint16_t port;
856 858
857 if (addrlen == sizeof (struct IPv6UdpAddress)) 859 if (addrlen == sizeof (struct IPv6UdpAddress))
858 { 860 {
859 t6 = addr; 861 t6 = addr;
860 af = AF_INET6; 862 af = AF_INET6;
861 memset (&a6, 0, sizeof (a6)); 863 port = ntohs (t6->u6_port);
862 a6.sin6_family = AF_INET6; 864 memcpy (&a6, t6->ipv6_addr, sizeof (a6));
863 a6.sin6_port = t6->u6_port;
864 memcpy (a6.sin6_addr.s6_addr,
865 t6->ipv6_addr,
866 16);
867 sb = &a6; 865 sb = &a6;
868 } 866 }
869 else if (addrlen == sizeof (struct IPv4UdpAddress)) 867 else if (addrlen == sizeof (struct IPv4UdpAddress))
870 { 868 {
871 t4 = addr; 869 t4 = addr;
872 af = AF_INET; 870 af = AF_INET;
873 memset (&a4, 0, sizeof (a4)); 871 port = ntohs (t4->u_port);
874 a4.sin_family = AF_INET; 872 memcpy (&a4, &t4->ipv4_addr, sizeof (a4));
875 a4.sin_port = t4->u_port;
876 a4.sin_addr.s_addr = t4->ipv4_addr;
877 sb = &a4; 873 sb = &a4;
878 } 874 }
879 else 875 else
880 return NULL; 876 return NULL;
881 877 inet_ntop (af, sb, buf, INET6_ADDRSTRLEN);
882 return inet_ntop (af, sb, buf, INET6_ADDRSTRLEN); 878 GNUNET_snprintf (rbuf,
879 sizeof (rbuf),
880 "%s:%u",
881 buf,
882 port);
883 return rbuf;
883} 884}
884 885
885 886