X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FRaw%2FLLAddressing.cci;h=374840bbf3af7d0338c1214352afd7dd9d9ceefa;hb=81f84badf27b66dbadec9890646ca1193e998505;hp=1054845e62c8534895f4cd4fdf3a59a7889741ec;hpb=1d9b6ad3acfb5059ecb461286de0dc11a9da9851;p=senf.git diff --git a/Socket/Protocols/Raw/LLAddressing.cci b/Socket/Protocols/Raw/LLAddressing.cci index 1054845..374840b 100644 --- a/Socket/Protocols/Raw/LLAddressing.cci +++ b/Socket/Protocols/Raw/LLAddressing.cci @@ -31,36 +31,49 @@ #define prefix_ inline ///////////////////////////////cci.p/////////////////////////////////////// +prefix_ void senf::LLSocketAddress::address(MACAddress const & addr) +{ + std::copy(addr.begin(), addr.end(),&addr_.sll_addr[0]); +} + prefix_ senf::LLSocketAddress::LLSocketAddress() + : BSDSocketAddress (sizeof(sockaddr_ll), AF_PACKET) +{} + +prefix_ void senf::LLSocketAddress::protocol(unsigned prot) { - clear(); + addr_.sll_protocol = htons(prot); } prefix_ senf::LLSocketAddress::LLSocketAddress(unsigned prot, std::string const & iface) + : BSDSocketAddress (sizeof(sockaddr_ll), AF_PACKET) { - clear(); protocol(prot); interface(iface); } prefix_ senf::LLSocketAddress::LLSocketAddress(std::string const &iface) + : BSDSocketAddress (sizeof(sockaddr_ll), AF_PACKET) { - clear(); interface(iface); } prefix_ senf::LLSocketAddress::LLSocketAddress(MACAddress const & addr, std::string const & iface) + : BSDSocketAddress (sizeof(sockaddr_ll), AF_PACKET) { - clear(); address(addr); interface(iface); } -prefix_ void senf::LLSocketAddress::clear() +prefix_ senf::LLSocketAddress::LLSocketAddress(const LLSocketAddress& other) + : BSDSocketAddress (other) +{} + +prefix_ senf::LLSocketAddress& senf::LLSocketAddress::operator=(const LLSocketAddress& other) { - ::memset(&addr_,0,sizeof(addr_)); - addr_.sll_family = AF_PACKET; + BSDSocketAddress::operator=(other); + return *this; } prefix_ unsigned senf::LLSocketAddress::protocol() @@ -87,40 +100,6 @@ prefix_ senf::MACAddress senf::LLSocketAddress::address() 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 prot) -{ - addr_.sll_protocol = htons(prot); -} - -prefix_ struct sockaddr * senf::LLSocketAddress::sockaddr_p() -{ - return reinterpret_cast(&addr_); -} - -prefix_ struct sockaddr const * senf::LLSocketAddress::sockaddr_p() - const -{ - return reinterpret_cast(&addr_); -} - -prefix_ unsigned senf::LLSocketAddress::sockaddr_len() - const -{ - return sizeof(addr_); -} - -prefix_ std::ostream & senf::operator<<(std::ostream & os, LLSocketAddress const & llAddr) -{ - // TODO: expose more bytes from sockaddr_ll addr_ - os << "[some LLSocketAddress]"; - return os; -} - ///////////////////////////////cci.e/////////////////////////////////////// #undef prefix_