blob: 8952ae7019a2681a256b2ddbf5ff506f0b64c155 [file] [log] [blame]
Wade Guthrie16196242012-11-20 15:53:52 -08001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Wade Guthrief162f8b2013-02-27 14:13:55 -08005#ifndef SHILL_NL80211_ATTRIBUTE_H_
6#define SHILL_NL80211_ATTRIBUTE_H_
Wade Guthrie16196242012-11-20 15:53:52 -08007
Wade Guthrie8343f7f2012-12-04 13:52:32 -08008#include <netlink/attr.h>
Wade Guthrie16196242012-11-20 15:53:52 -08009
Wade Guthrie89e6cb32013-03-07 08:03:45 -080010#include <base/basictypes.h>
11
Wade Guthrief162f8b2013-02-27 14:13:55 -080012#include "shill/netlink_attribute.h"
Wade Guthrie16196242012-11-20 15:53:52 -080013
14struct nlattr;
15
16namespace shill {
17
Wade Guthrie25cdb382012-12-04 14:04:05 -080018// U8.
Wade Guthrie16196242012-11-20 15:53:52 -080019
Wade Guthrie68da97c2013-02-26 13:09:35 -080020class Nl80211AttributeKeyIdx : public NetlinkU8Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080021 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080022 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080023 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080024 Nl80211AttributeKeyIdx() : NetlinkU8Attribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -080025
26 private:
27 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeKeyIdx);
Wade Guthrie25cdb382012-12-04 14:04:05 -080028};
29
Wade Guthrie68da97c2013-02-26 13:09:35 -080030class Nl80211AttributeRegType : public NetlinkU8Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080031 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080032 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080033 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080034 Nl80211AttributeRegType() : NetlinkU8Attribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -080035
36 private:
37 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeRegType);
Wade Guthrie25cdb382012-12-04 14:04:05 -080038};
39
40// U16.
41
Wade Guthrie68da97c2013-02-26 13:09:35 -080042class Nl80211AttributeReasonCode : public NetlinkU16Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080043 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080044 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080045 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080046 Nl80211AttributeReasonCode() : NetlinkU16Attribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -080047
48 private:
49 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeReasonCode);
Wade Guthrie25cdb382012-12-04 14:04:05 -080050};
51
Wade Guthrie68da97c2013-02-26 13:09:35 -080052class Nl80211AttributeStatusCode : public NetlinkU16Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080053 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080054 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080055 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080056 Nl80211AttributeStatusCode() : NetlinkU16Attribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -080057
58 private:
59 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeStatusCode);
Wade Guthrie25cdb382012-12-04 14:04:05 -080060};
61
62// U32.
63
Wade Guthrie68da97c2013-02-26 13:09:35 -080064class Nl80211AttributeDuration : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080065 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080066 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080067 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080068 Nl80211AttributeDuration() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -080069
70 private:
71 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeDuration);
Wade Guthrie25cdb382012-12-04 14:04:05 -080072};
73
Wade Guthrie68da97c2013-02-26 13:09:35 -080074class Nl80211AttributeGeneration : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080075 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080076 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080077 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080078 Nl80211AttributeGeneration() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -080079
80 private:
81 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeGeneration);
Wade Guthrie25cdb382012-12-04 14:04:05 -080082};
83
Wade Guthrie68da97c2013-02-26 13:09:35 -080084class Nl80211AttributeIfindex : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080085 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080086 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080087 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080088 Nl80211AttributeIfindex() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -080089
90 private:
91 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeIfindex);
Wade Guthrie25cdb382012-12-04 14:04:05 -080092};
93
Wade Guthrie68da97c2013-02-26 13:09:35 -080094class Nl80211AttributeKeyType : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080095 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080096 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080097 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080098 Nl80211AttributeKeyType() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -080099
100 private:
101 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeKeyType);
Wade Guthrie25cdb382012-12-04 14:04:05 -0800102};
103
Wade Guthrie68da97c2013-02-26 13:09:35 -0800104class Nl80211AttributeRegInitiator : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800105 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800106 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800107 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800108 Nl80211AttributeRegInitiator() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800109
110 private:
111 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeRegInitiator);
Wade Guthrie25cdb382012-12-04 14:04:05 -0800112};
113
Wade Guthrie68da97c2013-02-26 13:09:35 -0800114class Nl80211AttributeWiphy : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800115 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800116 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800117 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800118 Nl80211AttributeWiphy() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800119
120 private:
121 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeWiphy);
Wade Guthrie25cdb382012-12-04 14:04:05 -0800122};
123
Wade Guthrie68da97c2013-02-26 13:09:35 -0800124class Nl80211AttributeWiphyFreq : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800125 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800126 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800127 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800128 Nl80211AttributeWiphyFreq() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800129
130 private:
131 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeWiphyFreq);
Wade Guthrie25cdb382012-12-04 14:04:05 -0800132};
133
134// U64.
135
Wade Guthrie68da97c2013-02-26 13:09:35 -0800136class Nl80211AttributeCookie : public NetlinkU64Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800137 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800138 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800139 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800140 Nl80211AttributeCookie() : NetlinkU64Attribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800141
142 private:
143 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeCookie);
Wade Guthrie25cdb382012-12-04 14:04:05 -0800144};
145
146// Flag.
147
Wade Guthrie68da97c2013-02-26 13:09:35 -0800148class Nl80211AttributeDisconnectedByAp : public NetlinkFlagAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800149 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800150 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800151 static const char kNameString[];
152 Nl80211AttributeDisconnectedByAp() :
Wade Guthrie68da97c2013-02-26 13:09:35 -0800153 NetlinkFlagAttribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800154
155 private:
156 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeDisconnectedByAp);
Wade Guthrie25cdb382012-12-04 14:04:05 -0800157};
158
Wade Guthrie68da97c2013-02-26 13:09:35 -0800159class Nl80211AttributeSupportMeshAuth : public NetlinkFlagAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800160 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800161 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800162 static const char kNameString[];
163 Nl80211AttributeSupportMeshAuth() :
Wade Guthrie68da97c2013-02-26 13:09:35 -0800164 NetlinkFlagAttribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800165
166 private:
167 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeSupportMeshAuth);
Wade Guthrie25cdb382012-12-04 14:04:05 -0800168};
169
Wade Guthrie68da97c2013-02-26 13:09:35 -0800170class Nl80211AttributeTimedOut : public NetlinkFlagAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800171 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800172 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800173 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800174 Nl80211AttributeTimedOut() : NetlinkFlagAttribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800175
176 private:
177 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeTimedOut);
Wade Guthrie25cdb382012-12-04 14:04:05 -0800178};
179
180// String.
181
Wade Guthrie68da97c2013-02-26 13:09:35 -0800182class Nl80211AttributeRegAlpha2 : public NetlinkStringAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800183 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800184 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800185 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800186 Nl80211AttributeRegAlpha2() : NetlinkStringAttribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800187
188 private:
189 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeRegAlpha2);
Wade Guthrie25cdb382012-12-04 14:04:05 -0800190};
191
Wade Guthrie68da97c2013-02-26 13:09:35 -0800192class Nl80211AttributeWiphyName : public NetlinkStringAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800193 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800194 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800195 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800196 Nl80211AttributeWiphyName() : NetlinkStringAttribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800197
198 private:
199 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeWiphyName);
Wade Guthrie25cdb382012-12-04 14:04:05 -0800200};
201
repo sync12cca802012-12-19 17:34:22 -0800202// Nested.
203
Wade Guthrie68da97c2013-02-26 13:09:35 -0800204class Nl80211AttributeCqm : public NetlinkNestedAttribute {
repo sync12cca802012-12-19 17:34:22 -0800205 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800206 static const int kName;
repo sync12cca802012-12-19 17:34:22 -0800207 static const char kNameString[];
208 Nl80211AttributeCqm();
Wade Guthried3dfd6c2013-02-28 17:40:36 -0800209 virtual bool InitFromNlAttr(const nlattr *data);
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800210
211 private:
212 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeCqm);
Wade Guthried3dfd6c2013-02-28 17:40:36 -0800213};
214
215class Nl80211AttributeScanFrequencies : public NetlinkNestedAttribute {
216 public:
217 static const int kName;
218 static const char kNameString[];
219 explicit Nl80211AttributeScanFrequencies();
220 virtual bool InitFromNlAttr(const nlattr *const_data);
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800221
222 private:
223 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeScanFrequencies);
Wade Guthried3dfd6c2013-02-28 17:40:36 -0800224};
225
226class Nl80211AttributeScanSsids : public NetlinkNestedAttribute {
227 public:
228 static const int kName;
229 static const char kNameString[];
230 explicit Nl80211AttributeScanSsids();
231 virtual bool InitFromNlAttr(const nlattr *const_data);
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800232
233 private:
234 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeScanSsids);
repo sync12cca802012-12-19 17:34:22 -0800235};
236
Wade Guthrie68da97c2013-02-26 13:09:35 -0800237class Nl80211AttributeStaInfo : public NetlinkNestedAttribute {
repo sync12cca802012-12-19 17:34:22 -0800238 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800239 static const int kName;
repo sync12cca802012-12-19 17:34:22 -0800240 static const char kNameString[];
Wade Guthried3dfd6c2013-02-28 17:40:36 -0800241 Nl80211AttributeStaInfo();
242 virtual bool InitFromNlAttr(const nlattr *const_data);
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800243
244 private:
245 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeStaInfo);
repo sync12cca802012-12-19 17:34:22 -0800246};
247
Wade Guthrie25cdb382012-12-04 14:04:05 -0800248// Raw.
249
Wade Guthrie68da97c2013-02-26 13:09:35 -0800250class Nl80211AttributeFrame : public NetlinkRawAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800251 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800252 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800253 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800254 Nl80211AttributeFrame() : NetlinkRawAttribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800255
256 private:
257 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeFrame);
Wade Guthrie16196242012-11-20 15:53:52 -0800258};
259
Wade Guthrie68da97c2013-02-26 13:09:35 -0800260class Nl80211AttributeKeySeq : public NetlinkRawAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800261 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800262 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800263 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800264 Nl80211AttributeKeySeq() : NetlinkRawAttribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800265
266 private:
267 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeKeySeq);
Wade Guthrie25cdb382012-12-04 14:04:05 -0800268};
269
Wade Guthrie68da97c2013-02-26 13:09:35 -0800270class Nl80211AttributeMac : public NetlinkRawAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800271 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800272 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800273 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800274 Nl80211AttributeMac() : NetlinkRawAttribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800275
276 private:
277 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeMac);
Wade Guthrie25cdb382012-12-04 14:04:05 -0800278};
279
Wade Guthrie68da97c2013-02-26 13:09:35 -0800280class Nl80211AttributeRespIe : public NetlinkRawAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800281 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800282 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800283 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800284 Nl80211AttributeRespIe() : NetlinkRawAttribute(kName, kNameString) {}
Wade Guthrie89e6cb32013-03-07 08:03:45 -0800285
286 private:
287 DISALLOW_COPY_AND_ASSIGN(Nl80211AttributeRespIe);
Wade Guthrie25cdb382012-12-04 14:04:05 -0800288};
289
Wade Guthrie16196242012-11-20 15:53:52 -0800290} // namespace shill
291
Wade Guthriebb9fca22013-04-10 17:21:42 -0700292#endif // SHILL_NL80211_ATTRIBUTE_H_