From 31a49a69c73b5895ba20fd6b7aa00c7cc55e29e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 12 Aug 2010 13:28:55 +0000 Subject: [PATCH] * Added support for printing AF_LINK addresses. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38055 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/network/libnetapi/NetworkAddress.cpp | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/kits/network/libnetapi/NetworkAddress.cpp b/src/kits/network/libnetapi/NetworkAddress.cpp index e9d28a7ec1..9213e4dade 100644 --- a/src/kits/network/libnetapi/NetworkAddress.cpp +++ b/src/kits/network/libnetapi/NetworkAddress.cpp @@ -803,7 +803,7 @@ BNetworkAddress::ResolveTo(const BNetworkAddress& address) BString BNetworkAddress::ToString(bool includePort) const { - char buffer[128]; + char buffer[512]; switch (fAddress.ss_family) { case AF_INET: @@ -816,6 +816,31 @@ BNetworkAddress::ToString(bool includePort) const buffer, sizeof(buffer)); break; + case AF_LINK: + { + uint8 *byte = LinkLevelAddress(); + char* target = buffer; + int bytesLeft = sizeof(buffer); + target[0] = '\0'; + + for (size_t i = 0; i < LinkLevelAddressLength(); i++) { + if (i != 0 && bytesLeft > 1) { + target[0] = ':'; + target[1] = '\0'; + target++; + bytesLeft--; + } + + int bytesWritten = snprintf(target, bytesLeft, "%02x", byte[i]); + if (bytesWritten >= bytesLeft) + break; + + target += bytesWritten; + bytesLeft -= bytesWritten; + } + break; + } + default: return ""; }