blob: fc66ac9e74111f03aab4b29a7efaddeec22559dd [file] [log] [blame]
// 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 CHROMEOS_PLATFORM_UPDATE_ENGINE_ERROR_CODE_H_
#define CHROMEOS_PLATFORM_UPDATE_ENGINE_ERROR_CODE_H_
namespace chromeos_update_engine {
// Action exit codes.
enum ErrorCode {
kErrorCodeSuccess = 0,
kErrorCodeError = 1,
kErrorCodeOmahaRequestError = 2,
kErrorCodeOmahaResponseHandlerError = 3,
kErrorCodeFilesystemCopierError = 4,
kErrorCodePostinstallRunnerError = 5,
kErrorCodePayloadMismatchedType = 6,
kErrorCodeInstallDeviceOpenError = 7,
kErrorCodeKernelDeviceOpenError = 8,
kErrorCodeDownloadTransferError = 9,
kErrorCodePayloadHashMismatchError = 10,
kErrorCodePayloadSizeMismatchError = 11,
kErrorCodeDownloadPayloadVerificationError = 12,
kErrorCodeDownloadNewPartitionInfoError = 13,
kErrorCodeDownloadWriteError = 14,
kErrorCodeNewRootfsVerificationError = 15,
kErrorCodeNewKernelVerificationError = 16,
kErrorCodeSignedDeltaPayloadExpectedError = 17,
kErrorCodeDownloadPayloadPubKeyVerificationError = 18,
kErrorCodePostinstallBootedFromFirmwareB = 19,
kErrorCodeDownloadStateInitializationError = 20,
kErrorCodeDownloadInvalidMetadataMagicString = 21,
kErrorCodeDownloadSignatureMissingInManifest = 22,
kErrorCodeDownloadManifestParseError = 23,
kErrorCodeDownloadMetadataSignatureError = 24,
kErrorCodeDownloadMetadataSignatureVerificationError = 25,
kErrorCodeDownloadMetadataSignatureMismatch = 26,
kErrorCodeDownloadOperationHashVerificationError = 27,
kErrorCodeDownloadOperationExecutionError = 28,
kErrorCodeDownloadOperationHashMismatch = 29,
kErrorCodeOmahaRequestEmptyResponseError = 30,
kErrorCodeOmahaRequestXMLParseError = 31,
kErrorCodeDownloadInvalidMetadataSize = 32,
kErrorCodeDownloadInvalidMetadataSignature = 33,
kErrorCodeOmahaResponseInvalid = 34,
kErrorCodeOmahaUpdateIgnoredPerPolicy = 35,
kErrorCodeOmahaUpdateDeferredPerPolicy = 36,
kErrorCodeOmahaErrorInHTTPResponse = 37,
kErrorCodeDownloadOperationHashMissingError = 38,
kErrorCodeDownloadMetadataSignatureMissingError = 39,
kErrorCodeOmahaUpdateDeferredForBackoff = 40,
kErrorCodePostinstallPowerwashError = 41,
kErrorCodeUpdateCanceledByChannelChange = 42,
kErrorCodePostinstallFirmwareRONotUpdatable = 43,
kErrorCodeUnsupportedMajorPayloadVersion = 44,
kErrorCodeUnsupportedMinorPayloadVersion = 45,
// VERY IMPORTANT! When adding new error codes:
//
// 1) Update tools/metrics/histograms/histograms.xml in Chrome.
//
// 2) Update the assorted switch statements in update_engine which won't
// build until this case is added.
// Any code above this is sent to both Omaha and UMA as-is, except
// kErrorCodeOmahaErrorInHTTPResponse (see error code 2000 for more details).
// Codes/flags below this line is sent only to Omaha and not to UMA.
// kErrorCodeUmaReportedMax is not an error code per se, it's just the count
// of the number of enums above. Add any new errors above this line if you
// want them to show up on UMA. Stuff below this line will not be sent to UMA
// but is used for other errors that are sent to Omaha. We don't assign any
// particular value for this enum so that it's just one more than the last
// one above and thus always represents the correct count of UMA metrics
// buckets, even when new enums are added above this line in future. See
// utils::SendErrorCodeToUma on how this enum is used.
kErrorCodeUmaReportedMax,
// use the 2xxx range to encode HTTP errors. These errors are available in
// Dremel with the individual granularity. But for UMA purposes, all these
// errors are aggregated into one: kErrorCodeOmahaErrorInHTTPResponse.
kErrorCodeOmahaRequestHTTPResponseBase = 2000, // + HTTP response code
// TODO(jaysri): Move out all the bit masks into separate constants
// outside the enum as part of fixing bug 34369.
// Bit flags. Remember to update the mask below for new bits.
// Set if boot mode not normal.
kErrorCodeDevModeFlag = 1 << 31,
// Set if resuming an interruped update.
kErrorCodeResumedFlag = 1 << 30,
// Set if using a dev/test image as opposed to an MP-signed image.
kErrorCodeTestImageFlag = 1 << 29,
// Set if using devserver or Omaha sandbox (using crosh autest).
kErrorCodeTestOmahaUrlFlag = 1 << 28,
// Mask that indicates bit positions that are used to indicate special flags
// that are embedded in the error code to provide additional context about
// the system in which the error was encountered.
kErrorCodeSpecialFlags = (kErrorCodeDevModeFlag |
kErrorCodeResumedFlag |
kErrorCodeTestImageFlag |
kErrorCodeTestOmahaUrlFlag)
};
} // namespace chromeos_update_engine
#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_ERROR_CODE_H_