src/node/inet-socket-address.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 30 Jul 2007 13:29:36 +0200
changeset 1171 335886fe4ddd
parent 1165 src/node/inet-address.cc@618104cbd20d
child 1172 2e5b994330c7
permissions -rw-r--r--
InetAddress -> InetSocketAddress
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
     1
#include "inet-socket-address.h"
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
#include "ns3/assert.h"
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
namespace ns3 {
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
     6
InetSocketAddress::InetSocketAddress (Ipv4Address ipv4, uint16_t port)
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
  : m_ipv4 (ipv4),
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
    m_port (port)
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
{}
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    10
InetSocketAddress::InetSocketAddress (Ipv4Address ipv4)
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
  : m_ipv4 (ipv4),
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
    m_port (0)
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
{}
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    14
InetSocketAddress::InetSocketAddress (const char *ipv4, uint16_t port)
1165
618104cbd20d add extra conveniance constructors and use them
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1164
diff changeset
    15
  : m_ipv4 (Ipv4Address (ipv4)),
618104cbd20d add extra conveniance constructors and use them
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1164
diff changeset
    16
    m_port (port)
618104cbd20d add extra conveniance constructors and use them
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1164
diff changeset
    17
{}
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    18
InetSocketAddress::InetSocketAddress (const char * ipv4)
1165
618104cbd20d add extra conveniance constructors and use them
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1164
diff changeset
    19
  : m_ipv4 (Ipv4Address (ipv4)),
618104cbd20d add extra conveniance constructors and use them
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1164
diff changeset
    20
    m_port (0)
618104cbd20d add extra conveniance constructors and use them
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1164
diff changeset
    21
{}
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    22
InetSocketAddress::InetSocketAddress (uint16_t port)
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
  : m_ipv4 (Ipv4Address::GetAny ()),
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
    m_port (port)
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
{}
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
uint16_t 
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    27
InetSocketAddress::GetPort (void) const
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
{
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
  return m_port;
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
}
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
Ipv4Address 
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    32
InetSocketAddress::GetIpv4 (void) const
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
{
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
  return m_ipv4;
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
}
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
void 
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    38
InetSocketAddress::SetPort (uint16_t port)
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
{
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
  m_port = port;
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
}
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
void 
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    43
InetSocketAddress::SetIpv4 (Ipv4Address address)
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
{
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
  m_ipv4 = address;
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
}
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
Address 
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    49
InetSocketAddress::ConvertTo (void) const
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
{
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
  uint8_t buf[6];
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
  m_ipv4.Serialize (buf);
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
  buf[4] = m_port & 0xff;
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
  buf[5] = (m_port >> 8) & 0xff;
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
  return Address (GetType (), buf, 6);
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
}
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    57
InetSocketAddress 
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    58
InetSocketAddress::ConvertFrom (const Address &address)
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
{
1159
eef87ec51ad7 improve type checking
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1158
diff changeset
    60
  NS_ASSERT (address.CheckCompatible (GetType (), 6));
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
  uint8_t buf[6];
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
  address.CopyTo (buf);
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
  Ipv4Address ipv4 = Ipv4Address::Deserialize (buf);
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
  uint16_t port = buf[0] | (buf[1] << 8);
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    65
  return InetSocketAddress (ipv4, port);
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
}
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
uint8_t 
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    68
InetSocketAddress::GetType (void)
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
{
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
  static uint8_t type = Address::Register ();
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
  return type;
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
}
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
} // namespace ns3