This file is indexed.

/usr/include/ns3.26/ns3/lte-anr-sap.h is in libns3-dev 3.26+dfsg-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
 * Copyright (c) 2013 Budiarto Herman
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation;
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * Author: Budiarto Herman <budiarto.herman@magister.fi>
 *
 */

#ifndef LTE_ANR_SAP_H
#define LTE_ANR_SAP_H

#include <ns3/lte-rrc-sap.h>

namespace ns3 {


/**
 * \brief Service Access Point (SAP) offered by the ANR instance to the eNodeB
 *        RRC instance.
 *
 * This is the *ANR SAP Provider*, i.e., the part of the SAP that contains the
 * ANR (Automatic Neighbour Relation) methods called by the eNodeB RRC instance.
 */
class LteAnrSapProvider
{
public:
  virtual ~LteAnrSapProvider ();

  /**
   * \brief Send a UE measurement report to the ANC instance.
   * \param measResults a single report of one measurement identity
   *
   * The received measurement report is a result of the UE measurement
   * configuration previously configured by calling
   * LteAnrSapUser::AddUeMeasReportConfigForAnr. The report may be stored and
   * utilized for the purpose of maintaining Neighbour Relation Table (NRT).
   */
  virtual void ReportUeMeas (LteRrcSap::MeasResults measResults) = 0;

  /**
   * \brief Add a new Neighbour Relation entry.
   * \param cellId the Physical Cell ID of the new neighbouring cell
   */
  virtual void AddNeighbourRelation (uint16_t cellId) = 0;

  /**
   * \brief Get the value of *No Remove* field of a neighbouring cell from the
   *        Neighbour Relation Table (NRT).
   * \param cellId the Physical Cell ID of the neighbouring cell of interest
   * \return if true, the Neighbour Relation shall *not* be removed from the NRT
   */
  virtual bool GetNoRemove (uint16_t cellId) const = 0;

  /**
   * \brief Get the value of *No HO* field of a neighbouring cell from the
   *        Neighbour Relation Table (NRT).
   * \param cellId the Physical Cell ID of the neighbouring cell of interest
   * \return if true, the Neighbour Relation shall *not* be used by the eNodeB
   *         for handover reasons
   */
  virtual bool GetNoHo (uint16_t cellId) const = 0;

  /**
   * \brief Get the value of *No X2* field of a neighbouring cell from the
   *        Neighbour Relation Table (NRT).
   * \param cellId the Physical Cell ID of the neighbouring cell of interest
   * \return if true, the Neighbour Relation shall *not* use an X2 interface in
   *         order to initiate procedures towards the eNodeB parenting the
   *         target cell
   */
  virtual bool GetNoX2 (uint16_t cellId) const = 0;

}; // end of class LteAnrSapProvider



/**
 * \brief Service Access Point (SAP) offered by the eNodeB RRC instance to the
 *        ANR instance.
 *
 * This is the *ANR SAP User*, i.e., the part of the SAP that contains the
 * eNodeB RRC methods called by the ANR (Automatic Neighbour Relation) instance.
 */
class LteAnrSapUser
{
public:
  virtual ~LteAnrSapUser ();

  /**
   * \brief Request a certain reporting configuration to be fulfilled by the UEs
   *        attached to the eNodeB entity.
   * \param reportConfig the UE measurement reporting configuration
   * \return the measurement identity associated with this newly added
   *         reporting configuration
   *
   * The eNodeB RRC entity is expected to configure the same reporting
   * configuration in each of the attached UEs. When later in the simulation a
   * UE measurement report is received from a UE as a result of this
   * configuration, the eNodeB RRC entity shall forward this report to the ANC
   * instance through the LteAnrSapProvider::ReportUeMeas SAP function.
   *
   * \note This function is only valid before the simulation begins.
   */
  virtual uint8_t AddUeMeasReportConfigForAnr (LteRrcSap::ReportConfigEutra reportConfig) = 0;

}; // end of class LteAnrSapUser



/**
 * \brief Template for the implementation of the LteAnrSapProvider as a member
 *        of an owner class of type C to which all methods are forwarded.
 */
template <class C>
class MemberLteAnrSapProvider : public LteAnrSapProvider
{
public:
  MemberLteAnrSapProvider (C* owner);

  // inherited from LteAnrSapProvider
  virtual void ReportUeMeas (LteRrcSap::MeasResults measResults);
  virtual void AddNeighbourRelation (uint16_t cellId);
  virtual bool GetNoRemove (uint16_t cellId) const;
  virtual bool GetNoHo (uint16_t cellId) const;
  virtual bool GetNoX2 (uint16_t cellId) const;

private:
  MemberLteAnrSapProvider ();
  C* m_owner;

}; // end of class MemberLteAnrSapProvider


template <class C>
MemberLteAnrSapProvider<C>::MemberLteAnrSapProvider (C* owner)
  : m_owner (owner)
{
}


template <class C>
void
MemberLteAnrSapProvider<C>::ReportUeMeas (LteRrcSap::MeasResults measResults)
{
  m_owner->DoReportUeMeas (measResults);
}


template <class C>
void
MemberLteAnrSapProvider<C>::AddNeighbourRelation (uint16_t cellId)
{
  m_owner->DoAddNeighbourRelation (cellId);
}


template <class C>
bool
MemberLteAnrSapProvider<C>::GetNoRemove (uint16_t cellId) const
{
  return m_owner->DoGetNoRemove (cellId);
}


template <class C>
bool
MemberLteAnrSapProvider<C>::GetNoHo (uint16_t cellId) const
{
  return m_owner->DoGetNoHo (cellId);
}


template <class C>
bool
MemberLteAnrSapProvider<C>::GetNoX2 (uint16_t cellId) const
{
  return m_owner->DoGetNoX2 (cellId);
}



/**
 * \brief Template for the implementation of the LteAnrSapUser as a member of an
 *        owner class of type C to which all methods are forwarded.
 */
template <class C>
class MemberLteAnrSapUser : public LteAnrSapUser
{
public:
  MemberLteAnrSapUser (C* owner);

  // inherited from LteAnrSapUser
  virtual uint8_t AddUeMeasReportConfigForAnr (LteRrcSap::ReportConfigEutra reportConfig);

private:
  MemberLteAnrSapUser ();
  C* m_owner;

}; // end of class MemberLteAnrSapUser


template <class C>
MemberLteAnrSapUser<C>::MemberLteAnrSapUser (C* owner)
  : m_owner (owner)
{
}


template <class C>
uint8_t
MemberLteAnrSapUser<C>::AddUeMeasReportConfigForAnr (LteRrcSap::ReportConfigEutra reportConfig)
{
  return m_owner->DoAddUeMeasReportConfigForAnr (reportConfig);
}


} // end of namespace ns3


#endif /* LTE_ANR_SAP_H */