This file is indexed.

/usr/include/ns3.27/ns3/uan-address.h is in libns3-dev 3.27+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
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
 * Copyright (c) 2009 University of Washington
 *
 * 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: Leonard Tracy <lentracy@gmail.com>
 */

#ifndef UAN_ADDRESS_H
#define UAN_ADDRESS_H

#include "ns3/address.h"
#include <iostream>

namespace ns3 {

/**
 * \ingroup uan
 *
 * A class used for addressing UAN MAC's.
 *
 * This implementation uses a simple 8 bit flat addressing scheme.
 * It is unlikely that perceived underwater networks will soon
 * exceed 200 nodes (or the overlapping of two underwater networks
 * - the ocean is big), so this should provide adequate addressing
 * for most applications.
 */
class UanAddress
{
public:
  /** Constructor */
  UanAddress ();
  /**
   * Create UanAddress object with address addr.
   *
   * \param addr Byte address to assign to this address.
   */
  UanAddress (uint8_t addr);
  /** Destructor */
  virtual ~UanAddress ();

  /**
   * Convert a generic address to a UanAddress.
   *
   * \param address  Address to convert to UAN address.
   * \return UanAddress from Address.
   */
  static UanAddress ConvertFrom (const Address &address);

  /**
   * Check that a generic Address is compatible with UanAddress.
   *
   * \param address  Address to test.
   * \return True if address given is consistant with UanAddress.
   */
  static bool IsMatchingType  (const Address &address);

  /**
   * Create a generic Address.
   *
   * \return The Address.
   */
  operator Address () const;

  /**
   * Sets address to address stored in parameter.
   *
   * \param pBuffer Buffer to extract address from.
   */
  void CopyFrom (const uint8_t *pBuffer);

  /**
   * Writes address to buffer parameter.
   *
   * \param pBuffer
   */
  void CopyTo (uint8_t *pBuffer);

  /**
   * Convert to integer.
   *
   * \return 8 bit integer version of address.
   */
  uint8_t GetAsInt (void) const;

  /**
   * Get the broadcast address (255).
   *
   * \return Broadcast address.
   */
  static UanAddress GetBroadcast (void);

  /**
   * Allocates UanAddress from 0-254
   *
   * Will wrap back to 0 if more than 254 are allocated.
   * Excludes the broadcast address.
   *
   * \return The next sequential UanAddress.
   */
  static UanAddress Allocate ();


private:
  uint8_t m_address;  //!< The address.

  /**
   * Get the UanAddress type.
   *
   * \return The type value.
   */
  static uint8_t GetType (void);
  /**
   * Convert to a generic Address.
   *
   * \return The Address value.
   */
  Address ConvertTo (void) const;

  friend bool operator <  (const UanAddress &a, const UanAddress &b);
  friend bool operator == (const UanAddress &a, const UanAddress &b);
  friend bool operator != (const UanAddress &a, const UanAddress &b);
  friend std::ostream& operator<< (std::ostream& os, const UanAddress & address);
  friend std::istream& operator>> (std::istream& is, UanAddress & address);

};  // class UanAddress


/**
 * Address comparison, less than.
 *
 * \param a First address to compare.
 * \param b Second address to compare.
 * \return True if a < b.
 */
bool operator < (const UanAddress &a, const UanAddress &b);

/**
 * Address comparison, equalit.
 *
 * \param a First address to compare.
 * \param b Second address to compare.
 * \return True if a == b.
 */
bool operator == (const UanAddress &a, const UanAddress &b);

/**
 * Address comparison, unequal.
 *
 * \param a First address to compare.
 * \param b Second address to compare.
 * \return True if a != b.
 */
bool operator != (const UanAddress &a, const UanAddress &b);

/**
 * Write \pname{address} to stream \pname{os} as 8 bit integer.
 *
 * \param os The output stream.
 * \param address The address
 * \return The output stream.
 */
std::ostream& operator<< (std::ostream& os, const UanAddress & address);

/**
 * Read \pname{address} from stream \pname{is} as 8 bit integer.
 *
 * \param is The input stream.
 * \param address The address variable to set.
 * \return The input stream.
 */
std::istream& operator>> (std::istream& is, UanAddress & address);

} // namespace ns3

#endif /* UAN_ADDRESS_H */