X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FRaw%2FLLAddressing.cci;h=0084c20dc715c00be0b6bff2d1199f70e8582a0c;hb=cd019de7e5d80122a302577c1907e2a952249260;hp=93deeb35191822f6b2c6d43cc58cf3774b564b41;hpb=6bb3fa3caaa41dab4d5b451ca27e70f9e55e49d6;p=senf.git diff --git a/Socket/Protocols/Raw/LLAddressing.cci b/Socket/Protocols/Raw/LLAddressing.cci index 93deeb3..0084c20 100644 --- a/Socket/Protocols/Raw/LLAddressing.cci +++ b/Socket/Protocols/Raw/LLAddressing.cci @@ -36,17 +36,25 @@ prefix_ senf::LLSocketAddress::LLSocketAddress() clear(); } -prefix_ senf::LLSocketAddress::LLSocketAddress(unsigned protocol, std::string interface) +prefix_ senf::LLSocketAddress::LLSocketAddress(unsigned prot, std::string const & iface) { clear(); - this->protocol(protocol); - this->interface(interface); + protocol(prot); + interface(iface); } -prefix_ senf::LLSocketAddress::LLSocketAddress(std::string interface) +prefix_ senf::LLSocketAddress::LLSocketAddress(std::string const &iface) { clear(); - this->interface(interface); + interface(iface); +} + +prefix_ senf::LLSocketAddress::LLSocketAddress(MACAddress const & addr, + std::string const & iface) +{ + clear(); + address(addr); + interface(iface); } prefix_ void senf::LLSocketAddress::clear() @@ -64,28 +72,29 @@ prefix_ unsigned senf::LLSocketAddress::protocol() prefix_ unsigned senf::LLSocketAddress::arptype() const { - /** \todo make sure, that the value really is in network byte - order */ return ntohs(addr_.sll_hatype); } -prefix_ unsigned senf::LLSocketAddress::pkttype() +prefix_ senf::LLSocketAddress::PktType senf::LLSocketAddress::pkttype() const { - /** \todo make sure, that the value really is in network byte - order */ - return ntohs(addr_.sll_pkttype); + return PktType(ntohs(addr_.sll_pkttype)); } -prefix_ senf::LLSocketAddress::LLAddress senf::LLSocketAddress::address() +prefix_ senf::MACAddress senf::LLSocketAddress::address() const { - return LLAddress(&addr_.sll_addr[0], &addr_.sll_addr[addr_.sll_halen]); + return MACAddress::from_data(&addr_.sll_addr[0]); +} + +prefix_ void senf::LLSocketAddress::address(MACAddress const & addr) +{ + std::copy(addr.begin(), addr.end(),&addr_.sll_addr[0]); } -prefix_ void senf::LLSocketAddress::protocol(unsigned protocol) +prefix_ void senf::LLSocketAddress::protocol(unsigned prot) { - addr_.sll_protocol = htons(protocol); + addr_.sll_protocol = htons(prot); } prefix_ struct sockaddr * senf::LLSocketAddress::sockaddr_p()