// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SHILL_EAP_PROTOCOL_H_
#define SHILL_EAP_PROTOCOL_H_

#include <base/basictypes.h>
#include <base/compiler_specific.h>

namespace shill {

namespace eap_protocol {

struct ALIGNAS(1) Ieee8021xHdr {
  uint8 version;
  uint8 type;
  uint16 length;
};

enum IeeeEapolVersion {
  kIeee8021xEapolVersion1 = 1,
  kIeee8021xEapolVersion2 = 2
};

enum IeeeEapolType {
  kIIeee8021xTypeEapPacket = 0,
  kIIeee8021xTypeEapolStart = 1,
  kIIeee8021xTypeEapolLogoff = 2,
  kIIeee8021xTypeEapolKey = 3,
  kIIeee8021xTypeEapolEncapsulatedAsfAlert = 4
};

struct ALIGNAS(1) EapHeader {
  uint8 code;
  uint8 identifier;
  uint16 length;  // including code and identifier; network byte order
};

enum EapCode {
  kEapCodeRequest = 1,
  kEapCodeRespnose = 2,
  kEapCodeSuccess = 3,
  kEapCodeFailure = 4
};

}  // namespace eap_protocol

}  // namespace shill

#endif  // SHILL_EAP_PROTOCOL_H_
