author | tjkopena@cs.drexel.edu |
Fri, 29 Aug 2008 13:22:09 -0400 | |
changeset 3570 | 44b0bc6817c6 |
parent 2834 | 1aab57845b07 |
permissions | -rw-r--r-- |
1297
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
1 |
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
2 |
/* |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
3 |
* Copyright (c) 2005 INRIA |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
4 |
* |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
7 |
* published by the Free Software Foundation; |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
8 |
* |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
12 |
* GNU General Public License for more details. |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
13 |
* |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
17 |
* |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
18 |
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
19 |
*/ |
e30ce531faf3
Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
1270
diff
changeset
|
20 |
|
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
21 |
#include "inet-socket-address.h" |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
22 |
#include "ns3/assert.h" |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
23 |
|
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
24 |
namespace ns3 { |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
25 |
|
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
26 |
InetSocketAddress::InetSocketAddress (Ipv4Address ipv4, uint16_t port) |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
27 |
: m_ipv4 (ipv4), |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
28 |
m_port (port) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
29 |
{} |
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
30 |
InetSocketAddress::InetSocketAddress (Ipv4Address ipv4) |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
31 |
: m_ipv4 (ipv4), |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
32 |
m_port (0) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
33 |
{} |
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
34 |
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
|
35 |
: m_ipv4 (Ipv4Address (ipv4)), |
618104cbd20d
add extra conveniance constructors and use them
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1164
diff
changeset
|
36 |
m_port (port) |
618104cbd20d
add extra conveniance constructors and use them
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1164
diff
changeset
|
37 |
{} |
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
38 |
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
|
39 |
: m_ipv4 (Ipv4Address (ipv4)), |
618104cbd20d
add extra conveniance constructors and use them
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1164
diff
changeset
|
40 |
m_port (0) |
618104cbd20d
add extra conveniance constructors and use them
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1164
diff
changeset
|
41 |
{} |
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
42 |
InetSocketAddress::InetSocketAddress (uint16_t port) |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
43 |
: m_ipv4 (Ipv4Address::GetAny ()), |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
44 |
m_port (port) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
45 |
{} |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
46 |
uint16_t |
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
47 |
InetSocketAddress::GetPort (void) const |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
48 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
49 |
return m_port; |
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 |
Ipv4Address |
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
52 |
InetSocketAddress::GetIpv4 (void) const |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
53 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
54 |
return m_ipv4; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
55 |
} |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
56 |
|
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
57 |
void |
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
58 |
InetSocketAddress::SetPort (uint16_t port) |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
59 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
60 |
m_port = port; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
61 |
} |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
62 |
void |
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
63 |
InetSocketAddress::SetIpv4 (Ipv4Address address) |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
64 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
65 |
m_ipv4 = address; |
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 |
|
1172
2e5b994330c7
add InetSocketAddress::IsMatchingType and use it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1171
diff
changeset
|
68 |
bool |
2e5b994330c7
add InetSocketAddress::IsMatchingType and use it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1171
diff
changeset
|
69 |
InetSocketAddress::IsMatchingType (const Address &address) |
2e5b994330c7
add InetSocketAddress::IsMatchingType and use it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1171
diff
changeset
|
70 |
{ |
2e5b994330c7
add InetSocketAddress::IsMatchingType and use it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1171
diff
changeset
|
71 |
return address.CheckCompatible (GetType (), 6); |
2e5b994330c7
add InetSocketAddress::IsMatchingType and use it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1171
diff
changeset
|
72 |
} |
2e5b994330c7
add InetSocketAddress::IsMatchingType and use it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1171
diff
changeset
|
73 |
|
1204
d40723d53e3d
InetSocketAddress: replace explicit conversion to implicit conversion
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1172
diff
changeset
|
74 |
InetSocketAddress::operator Address () const |
d40723d53e3d
InetSocketAddress: replace explicit conversion to implicit conversion
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1172
diff
changeset
|
75 |
{ |
d40723d53e3d
InetSocketAddress: replace explicit conversion to implicit conversion
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1172
diff
changeset
|
76 |
return ConvertTo (); |
d40723d53e3d
InetSocketAddress: replace explicit conversion to implicit conversion
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1172
diff
changeset
|
77 |
} |
d40723d53e3d
InetSocketAddress: replace explicit conversion to implicit conversion
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1172
diff
changeset
|
78 |
|
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
79 |
Address |
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
80 |
InetSocketAddress::ConvertTo (void) const |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
81 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
82 |
uint8_t buf[6]; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
83 |
m_ipv4.Serialize (buf); |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
84 |
buf[4] = m_port & 0xff; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
85 |
buf[5] = (m_port >> 8) & 0xff; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
86 |
return Address (GetType (), buf, 6); |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
87 |
} |
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
88 |
InetSocketAddress |
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
89 |
InetSocketAddress::ConvertFrom (const Address &address) |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
90 |
{ |
1159
eef87ec51ad7
improve type checking
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1158
diff
changeset
|
91 |
NS_ASSERT (address.CheckCompatible (GetType (), 6)); |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
92 |
uint8_t buf[6]; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
93 |
address.CopyTo (buf); |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
94 |
Ipv4Address ipv4 = Ipv4Address::Deserialize (buf); |
1268
0cd947bd1419
small bug in InetSocketAddress deserialization
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1172
diff
changeset
|
95 |
uint16_t port = buf[4] | (buf[5] << 8); |
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
96 |
return InetSocketAddress (ipv4, port); |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
97 |
} |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
98 |
uint8_t |
1171
335886fe4ddd
InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1165
diff
changeset
|
99 |
InetSocketAddress::GetType (void) |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
100 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
101 |
static uint8_t type = Address::Register (); |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
102 |
return type; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
103 |
} |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
104 |
|
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
105 |
} // namespace ns3 |