INetAddressing.cci

Go to the documentation of this file.
00001 // $Id: INetAddressing.cci 1742 2010-11-04 14:51:56Z g0dil $
00002 //
00003 // Copyright (C) 2006
00004 // Fraunhofer (FOKUS)
00005 // Competence Center NETwork research (NET), St. Augustin, GERMANY
00006 //     Stefan Bund <g0dil@berlios.de>
00007 //
00008 // This program is free software; you can redistribute it and/or modify
00009 // it under the terms of the GNU General Public License as published by
00010 // the Free Software Foundation; either version 2 of the License, or
00011 // (at your option) any later version.
00012 //
00013 // This program is distributed in the hope that it will be useful,
00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016 // GNU General Public License for more details.
00017 //
00018 // You should have received a copy of the GNU General Public License
00019 // along with this program; if not, write to the
00020 // Free Software Foundation, Inc.,
00021 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00022 
00027 // Custom includes
00028 #include <arpa/inet.h>
00029 
00030 #define prefix_ inline
00031 //-/////////////////////////////////////////////////////////////////////////////////////////////////
00032 
00033 //-/////////////////////////////////////////////////////////////////////////////////////////////////
00034 // senf::INet4Address
00035 
00036 prefix_ senf::INet4SocketAddress::INet4SocketAddress()
00037     : BSDSocketAddress (sizeof(sockaddr_in), AF_INET)
00038 {}
00039 
00040 prefix_ senf::INet4SocketAddress::INet4SocketAddress(const INet4SocketAddress& other)
00041     : BSDSocketAddress(other)
00042 {}
00043 
00044 prefix_ senf::INet4SocketAddress&
00045 senf::INet4SocketAddress::operator=(const INet4SocketAddress& other)
00046 {
00047     BSDSocketAddress::operator=(other);
00048     return *this;
00049 }
00050 
00051 prefix_ senf::INet4Address senf::INet4SocketAddress::address()
00052     const
00053 {
00054     return INet4Address::from_inaddr(addr_.sin_addr.s_addr);
00055 }
00056 
00057 prefix_ unsigned senf::INet4SocketAddress::port()
00058     const
00059 {
00060     return ntohs(addr_.sin_port);
00061 }
00062 
00063 prefix_ void senf::INet4SocketAddress::address(INet4Address const & addr)
00064 {
00065     addr_.sin_addr.s_addr = addr.inaddr();
00066 }
00067 
00068 prefix_ void senf::INet4SocketAddress::port(unsigned p)
00069 {
00070     addr_.sin_port = htons(p);
00071 }
00072 
00073 //-/////////////////////////////////////////////////////////////////////////////////////////////////
00074 // senf::INet6SocketAddress
00075 
00076 prefix_ senf::INet6SocketAddress::INet6SocketAddress()
00077     : BSDSocketAddress (sizeof(sockaddr_in6), AF_INET6)
00078 {}
00079 
00080 prefix_ senf::INet6SocketAddress::INet6SocketAddress(INet6Address const & addr, unsigned port)
00081     : BSDSocketAddress (sizeof(sockaddr_in6), AF_INET6)
00082 {
00083     std::copy(addr.begin(), addr.end(), &sockaddr_.sin6_addr.s6_addr[0]);
00084     sockaddr_.sin6_port = htons(port);
00085 }
00086 
00087 prefix_ senf::INet6SocketAddress::INet6SocketAddress(INet6Address const & addr, unsigned port,
00088                                                      std::string const & iface)
00089     : BSDSocketAddress (sizeof(sockaddr_in6), AF_INET6)
00090 {
00091     std::copy(addr.begin(), addr.end(), &sockaddr_.sin6_addr.s6_addr[0]);
00092     sockaddr_.sin6_port = htons(port);
00093     assignIface(iface);
00094 }
00095 
00096 prefix_ senf::INet6SocketAddress::INet6SocketAddress(unsigned port)
00097     : BSDSocketAddress (sizeof(sockaddr_in6), AF_INET6)
00098 {
00099     sockaddr_.sin6_port = htons(port);
00100 }
00101 
00102 prefix_ senf::INet6SocketAddress::INet6SocketAddress(const INet6SocketAddress& other)
00103     : BSDSocketAddress (other)
00104 {}
00105 
00106 prefix_ senf::INet6SocketAddress&
00107 senf::INet6SocketAddress::operator=(const INet6SocketAddress& other)
00108 {
00109     BSDSocketAddress::operator=(other);
00110     return *this;
00111 }
00112 
00113 prefix_ senf::INet6Address senf::INet6SocketAddress::address()
00114     const
00115 {
00116     return INet6Address::from_data(&sockaddr_.sin6_addr.s6_addr[0]);
00117 }
00118 
00119 prefix_ void senf::INet6SocketAddress::address(INet6Address const & addr)
00120 {
00121     std::copy(addr.begin(), addr.end(), &sockaddr_.sin6_addr.s6_addr[0]);
00122 }
00123 
00124 prefix_ unsigned senf::INet6SocketAddress::port()
00125     const
00126 {
00127     return ntohs(sockaddr_.sin6_port);
00128 }
00129 
00130 prefix_ void senf::INet6SocketAddress::port(unsigned port)
00131 {
00132     sockaddr_.sin6_port = htons(port);
00133 }
00134 
00135 prefix_ void senf::INet6SocketAddress::iface(std::string const & iface)
00136 {
00137     assignIface(iface);
00138 }
00139 
00140 //-/////////////////////////////////////////////////////////////////////////////////////////////////
00141 #undef prefix_
00142 
00143 
00144 // Local Variables:
00145 // mode: c++
00146 // fill-column: 100
00147 // c-file-style: "senf"
00148 // indent-tabs-mode: nil
00149 // ispell-local-dictionary: "american"
00150 // compile-command: "scons -u test"
00151 // comment-column: 40
00152 // End: