blob: 9cc197e07e819c9c3c25b777b5c4ea45d6f1ff71 [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 Guthrief162f8b2013-02-27 14:13:55 -080010#include "shill/netlink_attribute.h"
Wade Guthrieefe1f0c2013-02-26 17:42:01 -080011#include "shill/refptr_types.h"
Wade Guthrie16196242012-11-20 15:53:52 -080012
13struct nlattr;
14
15namespace shill {
16
Wade Guthrie25cdb382012-12-04 14:04:05 -080017// U8.
Wade Guthrie16196242012-11-20 15:53:52 -080018
Wade Guthrie68da97c2013-02-26 13:09:35 -080019class Nl80211AttributeKeyIdx : public NetlinkU8Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080020 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080021 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080022 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080023 Nl80211AttributeKeyIdx() : NetlinkU8Attribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -080024};
25
Wade Guthrie68da97c2013-02-26 13:09:35 -080026class Nl80211AttributeRegType : public NetlinkU8Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080027 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080028 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080029 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080030 Nl80211AttributeRegType() : NetlinkU8Attribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -080031};
32
33// U16.
34
Wade Guthrie68da97c2013-02-26 13:09:35 -080035class Nl80211AttributeReasonCode : public NetlinkU16Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080036 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080037 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080038 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080039 Nl80211AttributeReasonCode() : NetlinkU16Attribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -080040};
41
Wade Guthrie68da97c2013-02-26 13:09:35 -080042class Nl80211AttributeStatusCode : 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 Nl80211AttributeStatusCode() : NetlinkU16Attribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -080047};
48
49// U32.
50
Wade Guthrie68da97c2013-02-26 13:09:35 -080051class Nl80211AttributeDuration : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080052 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080053 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080054 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080055 Nl80211AttributeDuration() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -080056};
57
Wade Guthrie68da97c2013-02-26 13:09:35 -080058class Nl80211AttributeGeneration : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080059 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080060 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080061 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080062 Nl80211AttributeGeneration() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -080063};
64
Wade Guthrie68da97c2013-02-26 13:09:35 -080065class Nl80211AttributeIfindex : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080066 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080067 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080068 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080069 Nl80211AttributeIfindex() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -080070};
71
Wade Guthrie68da97c2013-02-26 13:09:35 -080072class Nl80211AttributeKeyType : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080073 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080074 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080075 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080076 Nl80211AttributeKeyType() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -080077};
78
Wade Guthrie68da97c2013-02-26 13:09:35 -080079class Nl80211AttributeRegInitiator : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080080 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080081 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080082 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080083 Nl80211AttributeRegInitiator() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -080084};
85
Wade Guthrie68da97c2013-02-26 13:09:35 -080086class Nl80211AttributeWiphy : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080087 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080088 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080089 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080090 Nl80211AttributeWiphy() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -080091};
92
Wade Guthrie68da97c2013-02-26 13:09:35 -080093class Nl80211AttributeWiphyFreq : public NetlinkU32Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -080094 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -080095 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -080096 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -080097 Nl80211AttributeWiphyFreq() : NetlinkU32Attribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -080098};
99
100// U64.
101
Wade Guthrie68da97c2013-02-26 13:09:35 -0800102class Nl80211AttributeCookie : public NetlinkU64Attribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800103 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800104 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800105 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800106 Nl80211AttributeCookie() : NetlinkU64Attribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -0800107};
108
109// Flag.
110
Wade Guthrie68da97c2013-02-26 13:09:35 -0800111class Nl80211AttributeDisconnectedByAp : public NetlinkFlagAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800112 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800113 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800114 static const char kNameString[];
115 Nl80211AttributeDisconnectedByAp() :
Wade Guthrie68da97c2013-02-26 13:09:35 -0800116 NetlinkFlagAttribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -0800117};
118
Wade Guthrie68da97c2013-02-26 13:09:35 -0800119class Nl80211AttributeSupportMeshAuth : public NetlinkFlagAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800120 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800121 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800122 static const char kNameString[];
123 Nl80211AttributeSupportMeshAuth() :
Wade Guthrie68da97c2013-02-26 13:09:35 -0800124 NetlinkFlagAttribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -0800125};
126
Wade Guthrie68da97c2013-02-26 13:09:35 -0800127class Nl80211AttributeTimedOut : public NetlinkFlagAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800128 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800129 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800130 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800131 Nl80211AttributeTimedOut() : NetlinkFlagAttribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -0800132};
133
134// String.
135
Wade Guthrie68da97c2013-02-26 13:09:35 -0800136class Nl80211AttributeRegAlpha2 : public NetlinkStringAttribute {
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 Nl80211AttributeRegAlpha2() : NetlinkStringAttribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -0800141};
142
Wade Guthrie68da97c2013-02-26 13:09:35 -0800143class Nl80211AttributeWiphyName : public NetlinkStringAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800144 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800145 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800146 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800147 Nl80211AttributeWiphyName() : NetlinkStringAttribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -0800148};
149
repo sync12cca802012-12-19 17:34:22 -0800150// Nested.
151
Wade Guthrie68da97c2013-02-26 13:09:35 -0800152class Nl80211AttributeCqm : public NetlinkNestedAttribute {
repo sync12cca802012-12-19 17:34:22 -0800153 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800154 static const int kName;
repo sync12cca802012-12-19 17:34:22 -0800155 static const char kNameString[];
156 Nl80211AttributeCqm();
Wade Guthried3dfd6c2013-02-28 17:40:36 -0800157 virtual bool InitFromNlAttr(const nlattr *data);
158};
159
160class Nl80211AttributeScanFrequencies : public NetlinkNestedAttribute {
161 public:
162 static const int kName;
163 static const char kNameString[];
164 explicit Nl80211AttributeScanFrequencies();
165 virtual bool InitFromNlAttr(const nlattr *const_data);
166};
167
168class Nl80211AttributeScanSsids : public NetlinkNestedAttribute {
169 public:
170 static const int kName;
171 static const char kNameString[];
172 explicit Nl80211AttributeScanSsids();
173 virtual bool InitFromNlAttr(const nlattr *const_data);
repo sync12cca802012-12-19 17:34:22 -0800174};
175
Wade Guthrie68da97c2013-02-26 13:09:35 -0800176class Nl80211AttributeStaInfo : public NetlinkNestedAttribute {
repo sync12cca802012-12-19 17:34:22 -0800177 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800178 static const int kName;
repo sync12cca802012-12-19 17:34:22 -0800179 static const char kNameString[];
Wade Guthried3dfd6c2013-02-28 17:40:36 -0800180 Nl80211AttributeStaInfo();
181 virtual bool InitFromNlAttr(const nlattr *const_data);
repo sync12cca802012-12-19 17:34:22 -0800182};
183
Wade Guthrie25cdb382012-12-04 14:04:05 -0800184// Raw.
185
Wade Guthrie68da97c2013-02-26 13:09:35 -0800186class Nl80211AttributeFrame : public NetlinkRawAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800187 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800188 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800189 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800190 Nl80211AttributeFrame() : NetlinkRawAttribute(kName, kNameString) {}
Wade Guthrie16196242012-11-20 15:53:52 -0800191};
192
Wade Guthrie68da97c2013-02-26 13:09:35 -0800193class Nl80211AttributeKeySeq : public NetlinkRawAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800194 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800195 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800196 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800197 Nl80211AttributeKeySeq() : NetlinkRawAttribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -0800198};
199
Wade Guthrie68da97c2013-02-26 13:09:35 -0800200class Nl80211AttributeMac : public NetlinkRawAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800201 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800202 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800203 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800204 Nl80211AttributeMac() : NetlinkRawAttribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -0800205};
206
Wade Guthrie68da97c2013-02-26 13:09:35 -0800207class Nl80211AttributeRespIe : public NetlinkRawAttribute {
Wade Guthrie25cdb382012-12-04 14:04:05 -0800208 public:
Wade Guthrie68da97c2013-02-26 13:09:35 -0800209 static const int kName;
Wade Guthrie25cdb382012-12-04 14:04:05 -0800210 static const char kNameString[];
Wade Guthrie68da97c2013-02-26 13:09:35 -0800211 Nl80211AttributeRespIe() : NetlinkRawAttribute(kName, kNameString) {}
Wade Guthrie25cdb382012-12-04 14:04:05 -0800212};
213
Wade Guthrie16196242012-11-20 15:53:52 -0800214} // namespace shill
215
216#endif // SHILL_NLATTRIBUTE_H_