A Discrete-Event Network Simulator
API
dsr-gratuitous-reply-table.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2011 Yufei Cheng
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Yufei Cheng <yfcheng@ittc.ku.edu>
19  *
20  * James P.G. Sterbenz <jpgs@ittc.ku.edu>, director
21  * ResiliNets Research Group http://wiki.ittc.ku.edu/resilinets
22  * Information and Telecommunication Technology Center (ITTC)
23  * and Department of Electrical Engineering and Computer Science
24  * The University of Kansas Lawrence, KS USA.
25  *
26  * Work supported in part by NSF FIND (Future Internet Design) Program
27  * under grant CNS-0626918 (Postmodern Internet Architecture),
28  * NSF grant CNS-1050226 (Multilayer Network Resilience Analysis and Experimentation on GENI),
29  * US Department of Defense (DoD), and ITTC at The University of Kansas.
30  */
31 
32 #ifndef DSR_GRATUITOUS_REPLY_TABLE_H
33 #define DSR_GRATUITOUS_REPLY_TABLE_H
34 
35 #include "ns3/simulator.h"
36 #include "ns3/timer.h"
37 #include "ns3/ipv4-address.h"
38 #include "ns3/callback.h"
39 #include <vector>
40 
41 namespace ns3 {
42 namespace dsr {
49 {
53 
62  : m_replyTo (t),
63  m_hearFrom (f),
65  {
66  }
67 };
72 class DsrGraReply : public Object
73 {
74 public:
79  static TypeId GetTypeId ();
80 
81  DsrGraReply ();
82  virtual ~DsrGraReply ();
83 
86  void SetGraTableSize (uint32_t g)
87  {
89  }
92  uint32_t GetGraTableSize () const
93  {
94  return GraReplyTableSize;
95  }
99  bool AddEntry (GraReplyEntry & graTableEntry);
105  bool FindAndUpdate (Ipv4Address replyTo, Ipv4Address replyFrom, Time gratReplyHoldoff);
107  void Purge ();
109  void Clear ()
110  {
111  m_graReply.clear ();
112  }
113 
114 private:
116  std::vector<GraReplyEntry> m_graReply;
119 
121  struct IsExpired
122  {
129  bool operator() (const struct GraReplyEntry & b) const
130  {
131  return (b.m_gratReplyHoldoff < Simulator::Now ());
132  }
133  };
134 };
135 } // namespace dsr
136 } // namespace ns3
137 
138 #endif /* DSR_GRATUITOUS_REPLY_TABLE_H */
double f(double x, void *params)
Definition: 80211b.c:70
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:41
A base class which provides memory management and object aggregation.
Definition: object.h:88
static Time Now(void)
Return the current simulation virtual time.
Definition: simulator.cc:195
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:103
a unique identifier for an interface.
Definition: type-id.h:59
maintain the gratuitous reply
bool AddEntry(GraReplyEntry &graTableEntry)
Add a new gratuitous reply entry.
static TypeId GetTypeId()
Get the type ID.
std::vector< GraReplyEntry > m_graReply
Vector of entries.
uint32_t GraReplyTableSize
The max # of gratuitous reply entries to hold.
void SetGraTableSize(uint32_t g)
Set the gratuitous reply table size.
void Purge()
Remove all expired entries.
uint32_t GetGraTableSize() const
Get the gratuitous reply table size.
bool FindAndUpdate(Ipv4Address replyTo, Ipv4Address replyFrom, Time gratReplyHoldoff)
Update the route entry if found.
void Clear()
Remove all entries.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Check if the entry is expired or not.
bool operator()(const struct GraReplyEntry &b) const
Check if the entry is expired.
The gratuitous table entries, it maintains the already sent gratuitous route reply entries.
GraReplyEntry(Ipv4Address t, Ipv4Address f, Time h)
Constructor.
Time m_gratReplyHoldoff
gratuitous reply holdoff time
Ipv4Address m_replyTo
reply to address
Ipv4Address m_hearFrom
heard from address