View | Details | Raw Unified | Return to bug 2474
Collapse All | Expand All

(-)a/RELEASE_NOTES (+1 lines)
 Lines 93-98    Link Here 
93
- Bug 2454 - DsrRouting::NotifyDataReceipt is also triggered for wifi management packets
93
- Bug 2454 - DsrRouting::NotifyDataReceipt is also triggered for wifi management packets
94
- Bug 2468 - Simulation with A-MPDU enabled hangs when fragmentation threshold is smaller than MSDU size
94
- Bug 2468 - Simulation with A-MPDU enabled hangs when fragmentation threshold is smaller than MSDU size
95
- Bug 2469 - send Block Ack Request upon short/long retry failures
95
- Bug 2469 - send Block Ack Request upon short/long retry failures
96
- Bug 2474 - UdpEchoClient does not call Connect with addresses of type Inet[6]SocketAddress
96
- Bug 2479 - Flow monitor does not a have a "DROP_QUEUE_DISC" drop reason
97
- Bug 2479 - Flow monitor does not a have a "DROP_QUEUE_DISC" drop reason
97
98
98
Known issues
99
Known issues
(-)a/src/applications/helper/udp-client-server-helper.cc (-21 / +4 lines)
 Lines 75-92    Link Here 
75
  SetAttribute ("RemotePort", UintegerValue (port));
75
  SetAttribute ("RemotePort", UintegerValue (port));
76
}
76
}
77
77
78
UdpClientHelper::UdpClientHelper (Ipv4Address address, uint16_t port)
78
UdpClientHelper::UdpClientHelper (Address address)
79
{
79
{
80
  m_factory.SetTypeId (UdpClient::GetTypeId ());
80
  m_factory.SetTypeId (UdpClient::GetTypeId ());
81
  SetAttribute ("RemoteAddress", AddressValue (Address(address)));
81
  SetAttribute ("RemoteAddress", AddressValue (address));
82
  SetAttribute ("RemotePort", UintegerValue (port));
83
}
84
85
UdpClientHelper::UdpClientHelper (Ipv6Address address, uint16_t port)
86
{
87
  m_factory.SetTypeId (UdpClient::GetTypeId ());
88
  SetAttribute ("RemoteAddress", AddressValue (Address(address)));
89
  SetAttribute ("RemotePort", UintegerValue (port));
90
}
82
}
91
83
92
void
84
void
 Lines 121-139    Link Here 
121
  SetAttribute ("TraceFilename", StringValue (filename));
113
  SetAttribute ("TraceFilename", StringValue (filename));
122
}
114
}
123
115
124
UdpTraceClientHelper::UdpTraceClientHelper (Ipv4Address address, uint16_t port, std::string filename)
116
UdpTraceClientHelper::UdpTraceClientHelper (Address address, std::string filename)
125
{
117
{
126
  m_factory.SetTypeId (UdpTraceClient::GetTypeId ());
118
  m_factory.SetTypeId (UdpTraceClient::GetTypeId ());
127
  SetAttribute ("RemoteAddress", AddressValue (Address (address)));
119
  SetAttribute ("RemoteAddress", AddressValue (address));
128
  SetAttribute ("RemotePort", UintegerValue (port));
129
  SetAttribute ("TraceFilename", StringValue (filename));
130
}
131
132
UdpTraceClientHelper::UdpTraceClientHelper (Ipv6Address address, uint16_t port, std::string filename)
133
{
134
  m_factory.SetTypeId (UdpTraceClient::GetTypeId ());
135
  SetAttribute ("RemoteAddress", AddressValue (Address (address)));
136
  SetAttribute ("RemotePort", UintegerValue (port));
137
  SetAttribute ("TraceFilename", StringValue (filename));
120
  SetAttribute ("TraceFilename", StringValue (filename));
138
}
121
}
139
122
(-)a/src/applications/helper/udp-client-server-helper.h (-33 / +21 lines)
 Lines 103-133    Link Here 
103
103
104
  /**
104
  /**
105
   *  Create UdpClientHelper which will make life easier for people trying
105
   *  Create UdpClientHelper which will make life easier for people trying
106
   * to set up simulations with udp-client-server.
106
   * to set up simulations with udp-client-server. Use this variant with
107
   *
107
   * addresses that do not include a port value (e.g., Ipv4Address and
108
   * \param ip The IPv4 address of the remote UDP server
108
   * Ipv6Address).
109
   * \param port The port number of the remote UDP server
110
   */
111
112
  UdpClientHelper (Ipv4Address ip, uint16_t port);
113
  /**
114
   *  Create UdpClientHelper which will make life easier for people trying
115
   * to set up simulations with udp-client-server.
116
   *
117
   * \param ip The IPv6 address of the remote UDP server
118
   * \param port The port number of the remote UDP server
119
   */
120
121
  UdpClientHelper (Ipv6Address ip, uint16_t port);
122
  /**
123
   *  Create UdpClientHelper which will make life easier for people trying
124
   * to set up simulations with udp-client-server.
125
   *
109
   *
126
   * \param ip The IP address of the remote UDP server
110
   * \param ip The IP address of the remote UDP server
127
   * \param port The port number of the remote UDP server
111
   * \param port The port number of the remote UDP server
128
   */
112
   */
129
113
130
  UdpClientHelper (Address ip, uint16_t port);
114
  UdpClientHelper (Address ip, uint16_t port);
115
  /**
116
   *  Create UdpClientHelper which will make life easier for people trying
117
   * to set up simulations with udp-client-server. Use this variant with
118
   * addresses that do include a port value (e.g., InetSocketAddress and
119
   * Inet6SocketAddress).
120
   *
121
   * \param addr The address of the remote UDP server
122
   */
123
124
  UdpClientHelper (Address addr);
131
125
132
  /**
126
  /**
133
   * Record an attribute to be set in each Application after it is is created.
127
   * Record an attribute to be set in each Application after it is is created.
 Lines 173-179    Link Here 
173
167
174
  /**
168
  /**
175
   * Create UdpTraceClientHelper which will make life easier for people trying
169
   * Create UdpTraceClientHelper which will make life easier for people trying
176
   * to set up simulations with udp-client-server.
170
   * to set up simulations with udp-client-server. Use this variant with
171
   * addresses that do not include a port value (e.g., Ipv4Address and
172
   * Ipv6Address).
177
   *
173
   *
178
   * \param ip The IP address of the remote UDP server
174
   * \param ip The IP address of the remote UDP server
179
   * \param port The port number of the remote UDP server
175
   * \param port The port number of the remote UDP server
 Lines 182-203    Link Here 
182
  UdpTraceClientHelper (Address ip, uint16_t port, std::string filename);
178
  UdpTraceClientHelper (Address ip, uint16_t port, std::string filename);
183
  /**
179
  /**
184
   * Create UdpTraceClientHelper which will make life easier for people trying
180
   * Create UdpTraceClientHelper which will make life easier for people trying
185
   * to set up simulations with udp-client-server.
181
   * to set up simulations with udp-client-server. Use this variant with
182
   * addresses that do include a port value (e.g., InetSocketAddress and
183
   * Inet6SocketAddress).
186
   *
184
   *
187
   * \param ip The IPv4 address of the remote UDP server
185
   * \param addr The address of the remote UDP server
188
   * \param port The port number of the remote UDP server
189
   * \param filename the file from which packet traces will be loaded
186
   * \param filename the file from which packet traces will be loaded
190
   */
187
   */
191
  UdpTraceClientHelper (Ipv4Address ip, uint16_t port, std::string filename);
188
  UdpTraceClientHelper (Address addr, std::string filename);
192
  /**
193
   * Create UdpTraceClientHelper which will make life easier for people trying
194
   * to set up simulations with udp-client-server.
195
   *
196
   * \param ip The IPv6 address of the remote UDP server
197
   * \param port The port number of the remote UDP server
198
   * \param filename the file from which packet traces will be loaded
199
   */
200
  UdpTraceClientHelper (Ipv6Address ip, uint16_t port, std::string filename);
201
189
202
  /**
190
  /**
203
    * Record an attribute to be set in each Application after it is is created.
191
    * Record an attribute to be set in each Application after it is is created.
(-)a/src/applications/helper/udp-echo-helper.cc (-10 / +2 lines)
 Lines 80-97    Link Here 
80
  SetAttribute ("RemotePort", UintegerValue (port));
80
  SetAttribute ("RemotePort", UintegerValue (port));
81
}
81
}
82
82
83
UdpEchoClientHelper::UdpEchoClientHelper (Ipv4Address address, uint16_t port)
83
UdpEchoClientHelper::UdpEchoClientHelper (Address address)
84
{
84
{
85
  m_factory.SetTypeId (UdpEchoClient::GetTypeId ());
85
  m_factory.SetTypeId (UdpEchoClient::GetTypeId ());
86
  SetAttribute ("RemoteAddress", AddressValue (Address(address)));
86
  SetAttribute ("RemoteAddress", AddressValue (address));
87
  SetAttribute ("RemotePort", UintegerValue (port));
88
}
89
90
UdpEchoClientHelper::UdpEchoClientHelper (Ipv6Address address, uint16_t port)
91
{
92
  m_factory.SetTypeId (UdpEchoClient::GetTypeId ());
93
  SetAttribute ("RemoteAddress", AddressValue (Address(address)));
94
  SetAttribute ("RemotePort", UintegerValue (port));
95
}
87
}
96
88
97
void 
89
void 
(-)a/src/applications/helper/udp-echo-helper.h (-13 / +6 lines)
 Lines 108-114    Link Here 
108
public:
108
public:
109
  /**
109
  /**
110
   * Create UdpEchoClientHelper which will make life easier for people trying
110
   * Create UdpEchoClientHelper which will make life easier for people trying
111
   * to set up simulations with echos.
111
   * to set up simulations with echos. Use this variant with addresses that do
112
   * not include a port value (e.g., Ipv4Address and Ipv6Address).
112
   *
113
   *
113
   * \param ip The IP address of the remote udp echo server
114
   * \param ip The IP address of the remote udp echo server
114
   * \param port The port number of the remote udp echo server
115
   * \param port The port number of the remote udp echo server
 Lines 116-135    Link Here 
116
  UdpEchoClientHelper (Address ip, uint16_t port);
117
  UdpEchoClientHelper (Address ip, uint16_t port);
117
  /**
118
  /**
118
   * Create UdpEchoClientHelper which will make life easier for people trying
119
   * Create UdpEchoClientHelper which will make life easier for people trying
119
   * to set up simulations with echos.
120
   * to set up simulations with echos. Use this variant with addresses that do
121
   * include a port value (e.g., InetSocketAddress and Inet6SocketAddress).
120
   *
122
   *
121
   * \param ip The IPv4 address of the remote udp echo server
123
   * \param addr The address of the remote udp echo server
122
   * \param port The port number of the remote udp echo server
123
   */
124
   */
124
  UdpEchoClientHelper (Ipv4Address ip, uint16_t port);
125
  UdpEchoClientHelper (Address addr);
125
  /**
126
   * Create UdpEchoClientHelper which will make life easier for people trying
127
   * to set up simulations with echos.
128
   *
129
   * \param ip The IPv6 address of the remote udp echo server
130
   * \param port The port number of the remote udp echo server
131
   */
132
  UdpEchoClientHelper (Ipv6Address ip, uint16_t port);
133
126
134
  /**
127
  /**
135
   * Record an attribute to be set in each Application after it is is created.
128
   * Record an attribute to be set in each Application after it is is created.
(-)a/src/applications/model/udp-client.cc (-16 / +21 lines)
 Lines 87-108    Link Here 
87
}
87
}
88
88
89
void
89
void
90
UdpClient::SetRemote (Ipv4Address ip, uint16_t port)
91
{
92
  NS_LOG_FUNCTION (this << ip << port);
93
  m_peerAddress = Address(ip);
94
  m_peerPort = port;
95
}
96
97
void
98
UdpClient::SetRemote (Ipv6Address ip, uint16_t port)
99
{
100
  NS_LOG_FUNCTION (this << ip << port);
101
  m_peerAddress = Address(ip);
102
  m_peerPort = port;
103
}
104
105
void
106
UdpClient::SetRemote (Address ip, uint16_t port)
90
UdpClient::SetRemote (Address ip, uint16_t port)
107
{
91
{
108
  NS_LOG_FUNCTION (this << ip << port);
92
  NS_LOG_FUNCTION (this << ip << port);
 Lines 111-116    Link Here 
111
}
95
}
112
96
113
void
97
void
98
UdpClient::SetRemote (Address addr)
99
{
100
  NS_LOG_FUNCTION (this << addr);
101
  m_peerAddress = addr;
102
}
103
104
void
114
UdpClient::DoDispose (void)
105
UdpClient::DoDispose (void)
115
{
106
{
116
  NS_LOG_FUNCTION (this);
107
  NS_LOG_FUNCTION (this);
 Lines 136-141    Link Here 
136
          m_socket->Bind6 ();
127
          m_socket->Bind6 ();
137
          m_socket->Connect (Inet6SocketAddress (Ipv6Address::ConvertFrom(m_peerAddress), m_peerPort));
128
          m_socket->Connect (Inet6SocketAddress (Ipv6Address::ConvertFrom(m_peerAddress), m_peerPort));
138
        }
129
        }
130
      else if (InetSocketAddress::IsMatchingType (m_peerAddress) == true)
131
        {
132
          m_socket->Bind ();
133
          m_socket->Connect (m_peerAddress);
134
        }
135
      else if (Inet6SocketAddress::IsMatchingType (m_peerAddress) == true)
136
        {
137
          m_socket->Bind6 ();
138
          m_socket->Connect (m_peerAddress);
139
        }
140
      else
141
        {
142
          NS_ASSERT_MSG (false, "Incompatible address type: " << m_peerAddress);
143
        }
139
    }
144
    }
140
145
141
  m_socket->SetRecvCallback (MakeNullCallback<void, Ptr<Socket> > ());
146
  m_socket->SetRecvCallback (MakeNullCallback<void, Ptr<Socket> > ());
(-)a/src/applications/model/udp-client.h (-12 / +5 lines)
 Lines 55-76    Link Here 
55
55
56
  /**
56
  /**
57
   * \brief set the remote address and port
57
   * \brief set the remote address and port
58
   * \param ip remote IPv4 address
59
   * \param port remote port
60
   */
61
  void SetRemote (Ipv4Address ip, uint16_t port);
62
  /**
63
   * \brief set the remote address and port
64
   * \param ip remote IPv6 address
65
   * \param port remote port
66
   */
67
  void SetRemote (Ipv6Address ip, uint16_t port);
68
  /**
69
   * \brief set the remote address and port
70
   * \param ip remote IP address
58
   * \param ip remote IP address
71
   * \param port remote port
59
   * \param port remote port
72
   */
60
   */
73
  void SetRemote (Address ip, uint16_t port);
61
  void SetRemote (Address ip, uint16_t port);
62
  /**
63
   * \brief set the remote address
64
   * \param addr remote address
65
   */
66
  void SetRemote (Address addr);
74
67
75
protected:
68
protected:
76
  virtual void DoDispose (void);
69
  virtual void DoDispose (void);
(-)a/src/applications/model/udp-echo-client.cc (-12 / +27 lines)
 Lines 103-121    Link Here 
103
}
103
}
104
104
105
void 
105
void 
106
UdpEchoClient::SetRemote (Ipv4Address ip, uint16_t port)
106
UdpEchoClient::SetRemote (Address addr)
107
{
107
{
108
  NS_LOG_FUNCTION (this << ip << port);
108
  NS_LOG_FUNCTION (this << addr);
109
  m_peerAddress = Address (ip);
109
  m_peerAddress = addr;
110
  m_peerPort = port;
111
}
112
113
void 
114
UdpEchoClient::SetRemote (Ipv6Address ip, uint16_t port)
115
{
116
  NS_LOG_FUNCTION (this << ip << port);
117
  m_peerAddress = Address (ip);
118
  m_peerPort = port;
119
}
110
}
120
111
121
void
112
void
 Lines 144-149    Link Here 
144
          m_socket->Bind6();
135
          m_socket->Bind6();
145
          m_socket->Connect (Inet6SocketAddress (Ipv6Address::ConvertFrom(m_peerAddress), m_peerPort));
136
          m_socket->Connect (Inet6SocketAddress (Ipv6Address::ConvertFrom(m_peerAddress), m_peerPort));
146
        }
137
        }
138
      else if (InetSocketAddress::IsMatchingType (m_peerAddress) == true)
139
        {
140
          m_socket->Bind ();
141
          m_socket->Connect (m_peerAddress);
142
        }
143
      else if (Inet6SocketAddress::IsMatchingType (m_peerAddress) == true)
144
        {
145
          m_socket->Bind6 ();
146
          m_socket->Connect (m_peerAddress);
147
        }
148
      else
149
        {
150
          NS_ASSERT_MSG (false, "Incompatible address type: " << m_peerAddress);
151
        }
147
    }
152
    }
148
153
149
  m_socket->SetRecvCallback (MakeCallback (&UdpEchoClient::HandleRead, this));
154
  m_socket->SetRecvCallback (MakeCallback (&UdpEchoClient::HandleRead, this));
 Lines 324-329    Link Here 
324
      NS_LOG_INFO ("At time " << Simulator::Now ().GetSeconds () << "s client sent " << m_size << " bytes to " <<
329
      NS_LOG_INFO ("At time " << Simulator::Now ().GetSeconds () << "s client sent " << m_size << " bytes to " <<
325
                   Ipv6Address::ConvertFrom (m_peerAddress) << " port " << m_peerPort);
330
                   Ipv6Address::ConvertFrom (m_peerAddress) << " port " << m_peerPort);
326
    }
331
    }
332
  else if (InetSocketAddress::IsMatchingType (m_peerAddress))
333
    {
334
      NS_LOG_INFO ("At time " << Simulator::Now ().GetSeconds () << "s client sent " << m_size << " bytes to " <<
335
                   InetSocketAddress::ConvertFrom (m_peerAddress).GetIpv4 () << " port " << InetSocketAddress::ConvertFrom (m_peerAddress).GetPort ());
336
    }
337
  else if (Inet6SocketAddress::IsMatchingType (m_peerAddress))
338
    {
339
      NS_LOG_INFO ("At time " << Simulator::Now ().GetSeconds () << "s client sent " << m_size << " bytes to " <<
340
                   Inet6SocketAddress::ConvertFrom (m_peerAddress).GetIpv6 () << " port " << Inet6SocketAddress::ConvertFrom (m_peerAddress).GetPort ());
341
    }
327
342
328
  if (m_sent < m_count) 
343
  if (m_sent < m_count) 
329
    {
344
    {
(-)a/src/applications/model/udp-echo-client.h (-12 / +5 lines)
 Lines 51-72    Link Here 
51
51
52
  /**
52
  /**
53
   * \brief set the remote address and port
53
   * \brief set the remote address and port
54
   * \param ip remote IPv4 address
55
   * \param port remote port
56
   */
57
  void SetRemote (Ipv4Address ip, uint16_t port);
58
  /**
59
   * \brief set the remote address and port
60
   * \param ip remote IPv6 address
61
   * \param port remote port
62
   */
63
  void SetRemote (Ipv6Address ip, uint16_t port);
64
  /**
65
   * \brief set the remote address and port
66
   * \param ip remote IP address
54
   * \param ip remote IP address
67
   * \param port remote port
55
   * \param port remote port
68
   */
56
   */
69
  void SetRemote (Address ip, uint16_t port);
57
  void SetRemote (Address ip, uint16_t port);
58
  /**
59
   * \brief set the remote address
60
   * \param addr remote address
61
   */
62
  void SetRemote (Address addr);
70
63
71
  /**
64
  /**
72
   * Set the data size of the packet (the number of bytes that are sent as data
65
   * Set the data size of the packet (the number of bytes that are sent as data
(-)a/src/applications/model/udp-trace-client.cc (-13 / +17 lines)
 Lines 131-151    Link Here 
131
}
131
}
132
132
133
void
133
void
134
UdpTraceClient::SetRemote (Ipv4Address ip, uint16_t port)
134
UdpTraceClient::SetRemote (Address addr)
135
{
135
{
136
  NS_LOG_FUNCTION (this << ip << port);
136
  NS_LOG_FUNCTION (this << addr);
137
  m_entries.clear ();
137
  m_entries.clear ();
138
  m_peerAddress = Address (ip);
138
  m_peerAddress = addr;
139
  m_peerPort = port;
140
}
141
142
void
143
UdpTraceClient::SetRemote (Ipv6Address ip, uint16_t port)
144
{
145
  NS_LOG_FUNCTION (this << ip << port);
146
  m_entries.clear ();
147
  m_peerAddress = Address (ip);
148
  m_peerPort = port;
149
}
139
}
150
140
151
void
141
void
 Lines 260-265    Link Here 
260
          m_socket->Bind6 ();
250
          m_socket->Bind6 ();
261
          m_socket->Connect (Inet6SocketAddress (Ipv6Address::ConvertFrom (m_peerAddress), m_peerPort));
251
          m_socket->Connect (Inet6SocketAddress (Ipv6Address::ConvertFrom (m_peerAddress), m_peerPort));
262
        }
252
        }
253
      else if (InetSocketAddress::IsMatchingType (m_peerAddress) == true)
254
        {
255
          m_socket->Bind ();
256
          m_socket->Connect (m_peerAddress);
257
        }
258
      else if (Inet6SocketAddress::IsMatchingType (m_peerAddress) == true)
259
        {
260
          m_socket->Bind6 ();
261
          m_socket->Connect (m_peerAddress);
262
        }
263
      else
264
        {
265
          NS_ASSERT_MSG (false, "Incompatible address type: " << m_peerAddress);
266
        }
263
    }
267
    }
264
  m_socket->SetRecvCallback (MakeNullCallback<void, Ptr<Socket> > ());
268
  m_socket->SetRecvCallback (MakeNullCallback<void, Ptr<Socket> > ());
265
  m_socket->SetAllowBroadcast (true);
269
  m_socket->SetAllowBroadcast (true);
(-)a/src/applications/model/udp-trace-client.h (-12 / +5 lines)
 Lines 78-99    Link Here 
78
78
79
  /**
79
  /**
80
   * \brief set the remote address and port
80
   * \brief set the remote address and port
81
   * \param ip remote IPv4 address
82
   * \param port remote port
83
   */
84
  void SetRemote (Ipv4Address ip, uint16_t port);
85
  /**
86
   * \brief set the remote address and port
87
   * \param ip remote IPv6 address
88
   * \param port remote port
89
   */
90
  void SetRemote (Ipv6Address ip, uint16_t port);
91
  /**
92
   * \brief set the remote address and port
93
   * \param ip remote IP address
81
   * \param ip remote IP address
94
   * \param port remote port
82
   * \param port remote port
95
   */
83
   */
96
  void SetRemote (Address ip, uint16_t port);
84
  void SetRemote (Address ip, uint16_t port);
85
  /**
86
   * \brief set the remote address
87
   * \param addr remote address
88
   */
89
  void SetRemote (Address addr);
97
90
98
  /**
91
  /**
99
   * \brief Set the trace file to be used by the application
92
   * \brief Set the trace file to be used by the application

Return to bug 2474