[haiku-commits] r39695 - haiku/trunk/src/kits/network/libnetapi

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 1 Dec 2010 20:21:26 +0100 (CET)

Author: axeld
Date: 2010-12-01 20:21:26 +0100 (Wed, 01 Dec 2010)
New Revision: 39695
Changeset: http://dev.haiku-os.org/changeset/39695

Modified:
   haiku/trunk/src/kits/network/libnetapi/NetworkAddress.cpp
Log:
* Implemented link level setters.


Modified: haiku/trunk/src/kits/network/libnetapi/NetworkAddress.cpp
===================================================================
--- haiku/trunk/src/kits/network/libnetapi/NetworkAddress.cpp   2010-12-01 
17:33:09 UTC (rev 39694)
+++ haiku/trunk/src/kits/network/libnetapi/NetworkAddress.cpp   2010-12-01 
19:21:26 UTC (rev 39695)
@@ -438,42 +438,73 @@
 void
 BNetworkAddress::SetToLinkLevel(uint8* address, size_t length)
 {
-       // TODO: implement me!
+       sockaddr_dl& link = (sockaddr_dl&)fAddress;
+       memset(&link, 0, sizeof(sockaddr_dl));
+
+       link.sdl_family = AF_LINK;
+       link.sdl_alen = length;
+       memcpy(LLADDR(&link), address, length);
+
+       link.sdl_len = sizeof(sockaddr_dl);
+       if (length > sizeof(link.sdl_data))
+               link.sdl_len += length - sizeof(link.sdl_data);
 }
 
 
 void
 BNetworkAddress::SetToLinkLevel(const char* name)
 {
-       // TODO: implement me!
+       sockaddr_dl& link = (sockaddr_dl&)fAddress;
+       memset(&link, 0, sizeof(sockaddr_dl));
+
+       size_t length = strlen(name);
+       if (length > sizeof(fAddress) - sizeof(sockaddr_dl) + 
sizeof(link.sdl_data))
+               length = sizeof(fAddress) - sizeof(sockaddr_dl) + 
sizeof(link.sdl_data);
+
+       link.sdl_family = AF_LINK;
+       link.sdl_nlen = length;
+
+       memcpy(link.sdl_data, name, link.sdl_nlen);
+
+       link.sdl_len = sizeof(sockaddr_dl);
+       if (link.sdl_nlen > sizeof(link.sdl_data))
+               link.sdl_len += link.sdl_nlen - sizeof(link.sdl_data);
 }
 
 
 void
 BNetworkAddress::SetToLinkLevel(uint32 index)
 {
-       // TODO: implement me!
+       sockaddr_dl& link = (sockaddr_dl&)fAddress;
+       memset(&link, 0, sizeof(sockaddr_dl));
+
+       link.sdl_family = AF_LINK;
+       link.sdl_len = sizeof(sockaddr_dl);
+       link.sdl_index = index;
 }
 
 
 void
 BNetworkAddress::SetLinkLevelIndex(uint32 index)
 {
-       // TODO: implement me!
+       sockaddr_dl& link = (sockaddr_dl&)fAddress;
+       link.sdl_index = index;
 }
 
 
 void
 BNetworkAddress::SetLinkLevelType(uint32 type)
 {
-       // TODO: implement me!
+       sockaddr_dl& link = (sockaddr_dl&)fAddress;
+       link.sdl_type = type;
 }
 
 
 void
 BNetworkAddress::SetLinkLevelFrameType(uint32 frameType)
 {
-       // TODO: implement me!
+       sockaddr_dl& link = (sockaddr_dl&)fAddress;
+       link.sdl_e_type = frameType;
 }
 
 


Other related posts:

  • » [haiku-commits] r39695 - haiku/trunk/src/kits/network/libnetapi - axeld