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

(-)a/src/devices/bridge/bridge-net-device.cc (-1 / +1 lines)
 Lines 317-323    Link Here 
317
317
318
318
319
void 
319
void 
320
BridgeNetDevice::SetLinkChangeCallback (Callback<void> callback)
320
BridgeNetDevice::AddLinkChangeCallback (Callback<void> callback)
321
{}
321
{}
322
322
323
323
(-)a/src/devices/bridge/bridge-net-device.h (-1 / +1 lines)
 Lines 96-102    Link Here 
96
  virtual bool SetMtu (const uint16_t mtu);
96
  virtual bool SetMtu (const uint16_t mtu);
97
  virtual uint16_t GetMtu (void) const;
97
  virtual uint16_t GetMtu (void) const;
98
  virtual bool IsLinkUp (void) const;
98
  virtual bool IsLinkUp (void) const;
99
  virtual void SetLinkChangeCallback (Callback<void> callback);
99
  virtual void AddLinkChangeCallback (Callback<void> callback);
100
  virtual bool IsBroadcast (void) const;
100
  virtual bool IsBroadcast (void) const;
101
  virtual Address GetBroadcast (void) const;
101
  virtual Address GetBroadcast (void) const;
102
  virtual bool IsMulticast (void) const;
102
  virtual bool IsMulticast (void) const;
(-)a/src/devices/csma/csma-net-device.cc (-6 / +10 lines)
 Lines 841-850    Link Here 
841
  NS_LOG_FUNCTION_NOARGS ();
841
  NS_LOG_FUNCTION_NOARGS ();
842
842
843
  m_linkUp = true;
843
  m_linkUp = true;
844
  if (m_linkChangeCallback.IsNull () == false)
844
  for (std::list<Callback<void> >::const_iterator it = m_linkChangeCallbacks.begin () ; 
845
    {
845
      it != m_linkChangeCallbacks.end () ; ++it)
846
      m_linkChangeCallback ();
846
  {
847
    }
847
    if ((*it).IsNull () == false)
848
      {
849
        (*it) ();
850
      }
851
  }
848
}
852
}
849
853
850
  void 
854
  void 
 Lines 890-899    Link Here 
890
}
894
}
891
895
892
  void 
896
  void 
893
CsmaNetDevice::SetLinkChangeCallback (Callback<void> callback)
897
CsmaNetDevice::AddLinkChangeCallback (Callback<void> callback)
894
{
898
{
895
  NS_LOG_FUNCTION (&callback);
899
  NS_LOG_FUNCTION (&callback);
896
  m_linkChangeCallback = callback;
900
  m_linkChangeCallbacks.push_back (callback);
897
}
901
}
898
902
899
  bool 
903
  bool 
(-)a/src/devices/csma/csma-net-device.h (-2 / +3 lines)
 Lines 22-27    Link Here 
22
#define CSMA_NET_DEVICE_H
22
#define CSMA_NET_DEVICE_H
23
23
24
#include <string.h>
24
#include <string.h>
25
#include <list>
25
#include "ns3/node.h"
26
#include "ns3/node.h"
26
#include "ns3/backoff.h"
27
#include "ns3/backoff.h"
27
#include "ns3/address.h"
28
#include "ns3/address.h"
 Lines 306-312    Link Here 
306
  virtual void SetAddress (Address address);
307
  virtual void SetAddress (Address address);
307
  virtual Address GetAddress (void) const;
308
  virtual Address GetAddress (void) const;
308
  virtual bool IsLinkUp (void) const;
309
  virtual bool IsLinkUp (void) const;
309
  virtual void SetLinkChangeCallback (Callback<void> callback);
310
  virtual void AddLinkChangeCallback (Callback<void> callback);
310
  virtual bool IsBroadcast (void) const;
311
  virtual bool IsBroadcast (void) const;
311
  virtual Address GetBroadcast (void) const;
312
  virtual Address GetBroadcast (void) const;
312
  virtual bool IsMulticast (void) const;
313
  virtual bool IsMulticast (void) const;
 Lines 808-814    Link Here 
808
  /**
809
  /**
809
   * Callback to fire if the link changes state (up or down).
810
   * Callback to fire if the link changes state (up or down).
810
   */
811
   */
811
  Callback<void> m_linkChangeCallback;
812
  std::list<Callback<void> > m_linkChangeCallbacks;
812
813
813
  static const uint16_t DEFAULT_FRAME_SIZE = 1518;
814
  static const uint16_t DEFAULT_FRAME_SIZE = 1518;
814
  static const uint16_t ETHERNET_OVERHEAD = 18;
815
  static const uint16_t ETHERNET_OVERHEAD = 18;
(-)a/src/devices/emu/emu-net-device.cc (-6 / +10 lines)
 Lines 869-878    Link Here 
869
EmuNetDevice::NotifyLinkUp (void)
869
EmuNetDevice::NotifyLinkUp (void)
870
{
870
{
871
  m_linkUp = true;
871
  m_linkUp = true;
872
  if (!m_linkChangeCallback.IsNull ())
872
  for (std::list<Callback<void> >::const_iterator it = m_linkChangeCallbacks.begin () ;
873
    {
873
      it != m_linkChangeCallbacks.end () ; ++it)
874
      m_linkChangeCallback ();
874
  {
875
    }
875
    if ((*it).IsNull () == false)
876
      {
877
        (*it) ();
878
      }
879
  }
876
}
880
}
877
881
878
void 
882
void 
 Lines 943-951    Link Here 
943
}
947
}
944
948
945
void 
949
void 
946
EmuNetDevice::SetLinkChangeCallback (Callback<void> callback)
950
EmuNetDevice::AddLinkChangeCallback (Callback<void> callback)
947
{
951
{
948
  m_linkChangeCallback = callback;
952
  m_linkChangeCallbacks.push_back (callback);
949
}
953
}
950
954
951
bool 
955
bool 
(-)a/src/devices/emu/emu-net-device.h (-2 / +3 lines)
 Lines 20-25    Link Here 
20
#define EMU_NET_DEVICE_H
20
#define EMU_NET_DEVICE_H
21
21
22
#include <string.h>
22
#include <string.h>
23
#include <list>
23
#include "ns3/address.h"
24
#include "ns3/address.h"
24
#include "ns3/net-device.h"
25
#include "ns3/net-device.h"
25
#include "ns3/node.h"
26
#include "ns3/node.h"
 Lines 110-116    Link Here 
110
111
111
  virtual bool IsLinkUp (void) const;
112
  virtual bool IsLinkUp (void) const;
112
113
113
  virtual void SetLinkChangeCallback (Callback<void> callback);
114
  virtual void AddLinkChangeCallback (Callback<void> callback);
114
115
115
  virtual bool IsBroadcast (void) const;
116
  virtual bool IsBroadcast (void) const;
116
  virtual Address GetBroadcast (void) const;
117
  virtual Address GetBroadcast (void) const;
 Lines 461-467    Link Here 
461
  /**
462
  /**
462
   * Callback to fire if the link changes state (up or down).
463
   * Callback to fire if the link changes state (up or down).
463
   */
464
   */
464
  Callback<void> m_linkChangeCallback;
465
  std::list<Callback<void> > m_linkChangeCallbacks;
465
466
466
  /**
467
  /**
467
   * The unix/linux name of the underlying device (e.g., eth0)
468
   * The unix/linux name of the underlying device (e.g., eth0)
(-)a/src/devices/point-to-point/point-to-point-net-device.cc (-6 / +10 lines)
 Lines 366-375    Link Here 
366
PointToPointNetDevice::NotifyLinkUp (void)
366
PointToPointNetDevice::NotifyLinkUp (void)
367
{
367
{
368
  m_linkUp = true;
368
  m_linkUp = true;
369
  if (!m_linkChangeCallback.IsNull ())
369
  for (std::list<Callback<void> >::const_iterator it = m_linkChangeCallbacks.begin () ;
370
    {
370
        it != m_linkChangeCallbacks.end () ; ++it)
371
      m_linkChangeCallback ();
371
  {
372
    }
372
    if (!(*it).IsNull ())
373
      {
374
        (*it) ();
375
      }
376
  }
373
}
377
}
374
378
375
  void 
379
  void 
 Lines 415-423    Link Here 
415
}
419
}
416
420
417
  void 
421
  void 
418
PointToPointNetDevice::SetLinkChangeCallback (Callback<void> callback)
422
PointToPointNetDevice::AddLinkChangeCallback (Callback<void> callback)
419
{
423
{
420
  m_linkChangeCallback = callback;
424
  m_linkChangeCallbacks.push_back (callback);
421
}
425
}
422
426
423
//
427
//
(-)a/src/devices/point-to-point/point-to-point-net-device.h (-2 / +3 lines)
 Lines 20-25    Link Here 
20
#define POINT_TO_POINT_NET_DEVICE_H
20
#define POINT_TO_POINT_NET_DEVICE_H
21
21
22
#include <string.h>
22
#include <string.h>
23
#include <list>
23
#include "ns3/address.h"
24
#include "ns3/address.h"
24
#include "ns3/node.h"
25
#include "ns3/node.h"
25
#include "ns3/net-device.h"
26
#include "ns3/net-device.h"
 Lines 231-237    Link Here 
231
232
232
  virtual bool IsLinkUp (void) const;
233
  virtual bool IsLinkUp (void) const;
233
234
234
  virtual void SetLinkChangeCallback (Callback<void> callback);
235
  virtual void AddLinkChangeCallback (Callback<void> callback);
235
236
236
  virtual bool IsBroadcast (void) const;
237
  virtual bool IsBroadcast (void) const;
237
  virtual Address GetBroadcast (void) const;
238
  virtual Address GetBroadcast (void) const;
 Lines 520-526    Link Here 
520
  NetDevice::PromiscReceiveCallback m_promiscCallback;
521
  NetDevice::PromiscReceiveCallback m_promiscCallback;
521
  uint32_t m_ifIndex;
522
  uint32_t m_ifIndex;
522
  bool m_linkUp;
523
  bool m_linkUp;
523
  Callback<void> m_linkChangeCallback;
524
  std::list<Callback<void> > m_linkChangeCallbacks;
524
525
525
  static const uint16_t DEFAULT_MTU = 1500;
526
  static const uint16_t DEFAULT_MTU = 1500;
526
  static const uint16_t PPP_OVERHEAD = 2;
527
  static const uint16_t PPP_OVERHEAD = 2;
(-)a/src/devices/tap-bridge/tap-bridge.cc (-1 / +1 lines)
 Lines 1026-1032    Link Here 
1026
}
1026
}
1027
1027
1028
void 
1028
void 
1029
TapBridge::SetLinkChangeCallback (Callback<void> callback)
1029
TapBridge::AddLinkChangeCallback (Callback<void> callback)
1030
{
1030
{
1031
  NS_LOG_FUNCTION_NOARGS ();
1031
  NS_LOG_FUNCTION_NOARGS ();
1032
}
1032
}
(-)a/src/devices/tap-bridge/tap-bridge.h (-1 / +1 lines)
 Lines 181-187    Link Here 
181
  virtual bool SetMtu (const uint16_t mtu);
181
  virtual bool SetMtu (const uint16_t mtu);
182
  virtual uint16_t GetMtu (void) const;
182
  virtual uint16_t GetMtu (void) const;
183
  virtual bool IsLinkUp (void) const;
183
  virtual bool IsLinkUp (void) const;
184
  virtual void SetLinkChangeCallback (Callback<void> callback);
184
  virtual void AddLinkChangeCallback (Callback<void> callback);
185
  virtual bool IsBroadcast (void) const;
185
  virtual bool IsBroadcast (void) const;
186
  virtual Address GetBroadcast (void) const;
186
  virtual Address GetBroadcast (void) const;
187
  virtual bool IsMulticast (void) const;
187
  virtual bool IsMulticast (void) const;
(-)a/src/devices/virtual-net-device/virtual-net-device.cc (-1 / +1 lines)
 Lines 194-200    Link Here 
194
}
194
}
195
195
196
void
196
void
197
VirtualNetDevice::SetLinkChangeCallback (Callback<void> callback)
197
VirtualNetDevice::AddLinkChangeCallback (Callback<void> callback)
198
{
198
{
199
}
199
}
200
200
(-)a/src/devices/virtual-net-device/virtual-net-device.h (-1 / +1 lines)
 Lines 122-128    Link Here 
122
  virtual Address GetAddress (void) const;
122
  virtual Address GetAddress (void) const;
123
  virtual uint16_t GetMtu (void) const;
123
  virtual uint16_t GetMtu (void) const;
124
  virtual bool IsLinkUp (void) const;
124
  virtual bool IsLinkUp (void) const;
125
  virtual void SetLinkChangeCallback (Callback<void> callback);
125
  virtual void AddLinkChangeCallback (Callback<void> callback);
126
  virtual bool IsBroadcast (void) const;
126
  virtual bool IsBroadcast (void) const;
127
  virtual Address GetBroadcast (void) const;
127
  virtual Address GetBroadcast (void) const;
128
  virtual bool IsMulticast (void) const;
128
  virtual bool IsMulticast (void) const;
(-)a/src/devices/wifi/wifi-net-device.cc (-10 / +18 lines)
 Lines 196-204    Link Here 
196
  return m_phy != 0 && m_linkUp;
196
  return m_phy != 0 && m_linkUp;
197
}
197
}
198
void 
198
void 
199
WifiNetDevice::SetLinkChangeCallback (Callback<void> callback)
199
WifiNetDevice::AddLinkChangeCallback (Callback<void> callback)
200
{
200
{
201
  m_linkChange = callback;
201
  m_linkChanges.push_back (callback);
202
}
202
}
203
bool 
203
bool 
204
WifiNetDevice::IsBroadcast (void) const
204
WifiNetDevice::IsBroadcast (void) const
 Lines 312-330    Link Here 
312
WifiNetDevice::LinkUp (void)
312
WifiNetDevice::LinkUp (void)
313
{
313
{
314
  m_linkUp = true;
314
  m_linkUp = true;
315
  if (!m_linkChange.IsNull ())
315
  for (std::list<Callback<void> >::const_iterator it = m_linkChanges.begin () ;
316
    {
316
        it != m_linkChanges.end () ; ++it)
317
      m_linkChange ();
317
  {
318
    }
318
    if (!(*it).IsNull ())
319
      {
320
        (*it) ();
321
      }
322
  }
319
}
323
}
320
void
324
void
321
WifiNetDevice::LinkDown (void)
325
WifiNetDevice::LinkDown (void)
322
{
326
{
323
  m_linkUp = false;
327
  m_linkUp = false;
324
  if (!m_linkChange.IsNull ())
328
  for (std::list<Callback<void> >::const_iterator it = m_linkChanges.begin () ;
325
    {
329
        it != m_linkChanges.end () ; ++it)
326
      m_linkChange ();
330
  {
327
    }
331
    if (!(*it).IsNull ())
332
      {
333
        (*it) ();
334
      }
335
  }
328
}
336
}
329
337
330
bool
338
bool
(-)a/src/devices/wifi/wifi-net-device.h (-2 / +3 lines)
 Lines 27-32    Link Here 
27
#include "ns3/mac48-address.h"
27
#include "ns3/mac48-address.h"
28
#include "wifi-remote-station-manager.h"
28
#include "wifi-remote-station-manager.h"
29
#include <string>
29
#include <string>
30
#include <list>
30
31
31
namespace ns3 {
32
namespace ns3 {
32
33
 Lines 83-89    Link Here 
83
  virtual bool SetMtu (const uint16_t mtu);
84
  virtual bool SetMtu (const uint16_t mtu);
84
  virtual uint16_t GetMtu (void) const;
85
  virtual uint16_t GetMtu (void) const;
85
  virtual bool IsLinkUp (void) const;
86
  virtual bool IsLinkUp (void) const;
86
  virtual void SetLinkChangeCallback (Callback<void> callback);
87
  virtual void AddLinkChangeCallback (Callback<void> callback);
87
  virtual bool IsBroadcast (void) const;
88
  virtual bool IsBroadcast (void) const;
88
  virtual Address GetBroadcast (void) const;
89
  virtual Address GetBroadcast (void) const;
89
  virtual bool IsMulticast (void) const;
90
  virtual bool IsMulticast (void) const;
 Lines 123-129    Link Here 
123
124
124
  uint32_t m_ifIndex;
125
  uint32_t m_ifIndex;
125
  bool m_linkUp;
126
  bool m_linkUp;
126
  Callback<void> m_linkChange;
127
  std::list<Callback<void> > m_linkChanges;
127
  mutable uint16_t m_mtu;
128
  mutable uint16_t m_mtu;
128
  bool m_configComplete;
129
  bool m_configComplete;
129
};
130
};
(-)a/src/internet-stack/arp-l3-protocol.cc (-1 / +1 lines)
 Lines 116-122    Link Here 
116
  Ptr<ArpCache> cache = CreateObject<ArpCache> ();
116
  Ptr<ArpCache> cache = CreateObject<ArpCache> ();
117
  cache->SetDevice (device, interface);
117
  cache->SetDevice (device, interface);
118
  NS_ASSERT (device->IsBroadcast ());
118
  NS_ASSERT (device->IsBroadcast ());
119
  device->SetLinkChangeCallback (MakeCallback (&ArpCache::Flush, cache));
119
  device->AddLinkChangeCallback (MakeCallback (&ArpCache::Flush, cache));
120
  cache->SetArpRequestCallback (MakeCallback (&ArpL3Protocol::SendArpRequest, this));
120
  cache->SetArpRequestCallback (MakeCallback (&ArpL3Protocol::SendArpRequest, this));
121
  m_cacheList.push_back (cache);
121
  m_cacheList.push_back (cache);
122
  return cache;
122
  return cache;
(-)a/src/internet-stack/loopback-net-device.cc (-1 / +1 lines)
 Lines 125-131    Link Here 
125
}
125
}
126
126
127
void 
127
void 
128
LoopbackNetDevice::SetLinkChangeCallback (Callback<void> callback)
128
LoopbackNetDevice::AddLinkChangeCallback (Callback<void> callback)
129
{}
129
{}
130
130
131
bool 
131
bool 
(-)a/src/internet-stack/loopback-net-device.h (-1 / +1 lines)
 Lines 50-56    Link Here 
50
  virtual bool SetMtu (const uint16_t mtu);
50
  virtual bool SetMtu (const uint16_t mtu);
51
  virtual uint16_t GetMtu (void) const;
51
  virtual uint16_t GetMtu (void) const;
52
  virtual bool IsLinkUp (void) const;
52
  virtual bool IsLinkUp (void) const;
53
  virtual void SetLinkChangeCallback (Callback<void> callback);
53
  virtual void AddLinkChangeCallback (Callback<void> callback);
54
  virtual bool IsBroadcast (void) const;
54
  virtual bool IsBroadcast (void) const;
55
  virtual Address GetBroadcast (void) const;
55
  virtual Address GetBroadcast (void) const;
56
  virtual bool IsMulticast (void) const;
56
  virtual bool IsMulticast (void) const;
(-)a/src/node/net-device.h (-4 / +4 lines)
 Lines 128-139    Link Here 
128
  /**
128
  /**
129
   * \param callback the callback to invoke
129
   * \param callback the callback to invoke
130
   *
130
   *
131
   * Register a callback invoked whenever the link 
131
   * Add a callback invoked whenever the link 
132
   * status changes to UP. This callback is typically used
132
   * status changes to UP. This callback is typically used
133
   * by the IP/ARP layer to flush the ARP cache 
133
   * by the IP/ARP layer to flush the ARP cache and by IPv6 stack
134
   * whenever the link goes up.
134
   * to flush NDISC cache whenever the link goes up.
135
   */
135
   */
136
  virtual void SetLinkChangeCallback (Callback<void> callback) = 0;
136
  virtual void AddLinkChangeCallback (Callback<void> callback) = 0;
137
  /**
137
  /**
138
   * \return true if this interface supports a broadcast address,
138
   * \return true if this interface supports a broadcast address,
139
   *         false otherwise.
139
   *         false otherwise.
(-)a/src/node/simple-net-device.cc (-1 / +1 lines)
 Lines 121-127    Link Here 
121
  return true;
121
  return true;
122
}
122
}
123
void 
123
void 
124
SimpleNetDevice::SetLinkChangeCallback (Callback<void> callback)
124
SimpleNetDevice::AddLinkChangeCallback (Callback<void> callback)
125
{}
125
{}
126
bool 
126
bool 
127
SimpleNetDevice::IsBroadcast (void) const
127
SimpleNetDevice::IsBroadcast (void) const
(-)a/src/node/simple-net-device.h (-1 / +1 lines)
 Lines 53-59    Link Here 
53
  virtual bool SetMtu (const uint16_t mtu);
53
  virtual bool SetMtu (const uint16_t mtu);
54
  virtual uint16_t GetMtu (void) const;
54
  virtual uint16_t GetMtu (void) const;
55
  virtual bool IsLinkUp (void) const;
55
  virtual bool IsLinkUp (void) const;
56
  virtual void SetLinkChangeCallback (Callback<void> callback);
56
  virtual void AddLinkChangeCallback (Callback<void> callback);
57
  virtual bool IsBroadcast (void) const;
57
  virtual bool IsBroadcast (void) const;
58
  virtual Address GetBroadcast (void) const;
58
  virtual Address GetBroadcast (void) const;
59
  virtual bool IsMulticast (void) const;
59
  virtual bool IsMulticast (void) const;

Return to bug 653