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-- |
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 |