This file is indexed.

/usr/include/ns3.27/ns3/vht-operation.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
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
 * Copyright (c) 2016 Sébastien Deronne
 *
 * 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: Sébastien Deronne <sebastien.deronne@gmail.com>
 */

#ifndef VHT_OPERATION_H
#define VHT_OPERATION_H

#include "wifi-information-element.h"

namespace ns3 {

/**
 * \brief The VHT Operation Information Element
 * \ingroup wifi
 *
 * This class knows how to serialise and deserialise
 * the VHT Operation Information Element
 *
 * \see attribute_VhtOperation
 */
class VhtOperation : public WifiInformationElement
{
public:
  VhtOperation ();
  /**
   * Set the VHT supported information element.
   *
   * \param vhtsupported the VHT supported information element
   */
  void SetVhtSupported (uint8_t vhtsupported);

  /**
   * Set the Channel Width field in the VHT Operation information element.
   *
   * \param channelWidth the Channel Width field in the VHT Operation information element
   */
  void SetChannelWidth (uint8_t channelWidth);
  /**
   * Set the Channel Center Frequency Segment 0 field in the VHT Operation information element.
   *
   * \param channelCenterFrequencySegment0 the Channel Center Frequency Segment 0 field in the VHT Operation information element
   */
  void SetChannelCenterFrequencySegment0 (uint8_t channelCenterFrequencySegment0);
  /**
   * Set the Channel Center Frequency Segment 1 field in the VHT Operation information element.
   *
   * \param channelCenterFrequencySegment1 the Channel Center Frequency Segment 1 field in the VHT Operation information element
   */
  void SetChannelCenterFrequencySegment1 (uint8_t channelCenterFrequencySegment1);
  /**
   * Set the Basic VHT-MCS and NSS field in the VHT Operation information element.
   *
   * \param basicVhtMcsAndNssSet the Basic VHT-MCS and NSS field in the VHT Operation information element
   */
  void SetBasicVhtMcsAndNssSet (uint16_t basicVhtMcsAndNssSet);
  /**
   * Set the Basic VHT-MCS and NSS field in the VHT Operation information element
   * by specifying the tuple (nss, maxMcs).
   *
   * \param nss the NSS
   * \param maxVhtMcs the maximum supported VHT-MCS value corresponding to that NSS
   */
  void SetMaxVhtMcsPerNss (uint8_t nss, uint8_t maxVhtMcs);

  /**
   * Return the Channel Width field in the VHT Operation information element.
   *
   * \return the Channel Width field in the VHT Operation information element
   */
  uint8_t GetChannelWidth (void) const;
  /**
   * Return the Channel Center Frequency Segment 0 field in the VHT Operation information element.
   *
   * \return the Channel Center Frequency Segment 0 field in the VHT Operation information element
   */
  uint8_t GetChannelCenterFrequencySegment0 (void) const;
  /**
   * Return the Channel Center Frequency Segment 1 field in the VHT Operation information element.
   *
   * \return the Channel Center Frequency Segment 1 field in the VHT Operation information element
   */
  uint8_t GetChannelCenterFrequencySegment1 (void) const;
  /**
   * Return the Basic VHT-MCS And Nss field in the VHT Operation information element.
   *
   * \return the Basic VHT-MCS And Nss field in the VHT Operation information element
   */
  uint16_t GetBasicVhtMcsAndNssSet (void) const;

  /**
   * Return the element ID.
   *
   * \returns the element ID
   */
  WifiInformationElementId ElementId () const;
  /**
   * Return the information field size.
   *
   * \returns the information field size
   */
  uint8_t GetInformationFieldSize () const;
  /**
   * Serialize the information field.
   *
   * \param start the information field iterator
   */
  void SerializeInformationField (Buffer::Iterator start) const;
  /**
   * Deserialize the information field.
   *
   * \param start the iterator
   * \param length the length
   * \returns the information field size
   */
  uint8_t DeserializeInformationField (Buffer::Iterator start, uint8_t length);
  /**
   * This information element is a bit special in that it is only
   * included if the STA is an HT STA. To support this we
   * override the Serialize and GetSerializedSize methods of
   * WifiInformationElement.
   *
   * \param start
   *
   * \return an iterator
   */
  Buffer::Iterator Serialize (Buffer::Iterator start) const;
  /**
   * Return the serialized size of this HT Operations IE.
   *
   * \return the serialized size of this HT Operations IE
   */
  uint16_t GetSerializedSize () const;


private:
  //VHT Operation Information
  uint8_t m_channelWidth; ///< channel width
  uint8_t m_channelCenterFrequencySegment0; ///< channel center frequency segment 0
  uint8_t m_channelCenterFrequencySegment1; ///< channel center frequency segment 0

  //Basic VHT-MCSS and NSS Set
  uint16_t m_basicVhtMcsAndNssSet; ///< basic VHT MCS NSS set

  /// This is used to decide whether this element should be added to the frame or not
  uint8_t m_vhtSupported;
};

/**
 * output stream output operator
 *
 * \param os output stream
 * \param VhtOperation
 *
 * \returns output stream
 */
std::ostream &operator << (std::ostream &os, const VhtOperation &VhtOperation);
/**
 * input stream input operator
 *
 * \param is input stream
 * \param VhtOperation
 *
 * \returns input stream
 */
std::istream &operator >> (std::istream &is, VhtOperation &VhtOperation);

ATTRIBUTE_HELPER_HEADER (VhtOperation);

} //namespace ns3

#endif /* VHT_OPERATION_H */