You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
5.7 KiB
152 lines
5.7 KiB
//
|
|
// Copyright (C) 2013 The Android Open Source Project
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
|
|
#ifndef UPDATE_ENGINE_COMMON_ERROR_CODE_H_
|
|
#define UPDATE_ENGINE_COMMON_ERROR_CODE_H_
|
|
|
|
#include <ostream> // NOLINT(readability/streams)
|
|
|
|
namespace chromeos_update_engine {
|
|
|
|
// Action exit codes.
|
|
enum class ErrorCode : int {
|
|
kSuccess = 0,
|
|
kError = 1,
|
|
kOmahaRequestError = 2,
|
|
kOmahaResponseHandlerError = 3,
|
|
kFilesystemCopierError = 4,
|
|
kPostinstallRunnerError = 5,
|
|
kPayloadMismatchedType = 6,
|
|
kInstallDeviceOpenError = 7,
|
|
kKernelDeviceOpenError = 8,
|
|
kDownloadTransferError = 9,
|
|
kPayloadHashMismatchError = 10,
|
|
kPayloadSizeMismatchError = 11,
|
|
kDownloadPayloadVerificationError = 12,
|
|
kDownloadNewPartitionInfoError = 13,
|
|
kDownloadWriteError = 14,
|
|
kNewRootfsVerificationError = 15,
|
|
kNewKernelVerificationError = 16,
|
|
kSignedDeltaPayloadExpectedError = 17,
|
|
kDownloadPayloadPubKeyVerificationError = 18,
|
|
kPostinstallBootedFromFirmwareB = 19,
|
|
kDownloadStateInitializationError = 20,
|
|
kDownloadInvalidMetadataMagicString = 21,
|
|
kDownloadSignatureMissingInManifest = 22,
|
|
kDownloadManifestParseError = 23,
|
|
kDownloadMetadataSignatureError = 24,
|
|
kDownloadMetadataSignatureVerificationError = 25,
|
|
kDownloadMetadataSignatureMismatch = 26,
|
|
kDownloadOperationHashVerificationError = 27,
|
|
kDownloadOperationExecutionError = 28,
|
|
kDownloadOperationHashMismatch = 29,
|
|
kOmahaRequestEmptyResponseError = 30,
|
|
kOmahaRequestXMLParseError = 31,
|
|
kDownloadInvalidMetadataSize = 32,
|
|
kDownloadInvalidMetadataSignature = 33,
|
|
kOmahaResponseInvalid = 34,
|
|
kOmahaUpdateIgnoredPerPolicy = 35,
|
|
kOmahaUpdateDeferredPerPolicy = 36,
|
|
kOmahaErrorInHTTPResponse = 37,
|
|
kDownloadOperationHashMissingError = 38,
|
|
kDownloadMetadataSignatureMissingError = 39,
|
|
kOmahaUpdateDeferredForBackoff = 40,
|
|
kPostinstallPowerwashError = 41,
|
|
kUpdateCanceledByChannelChange = 42,
|
|
kPostinstallFirmwareRONotUpdatable = 43,
|
|
kUnsupportedMajorPayloadVersion = 44,
|
|
kUnsupportedMinorPayloadVersion = 45,
|
|
kOmahaRequestXMLHasEntityDecl = 46,
|
|
kFilesystemVerifierError = 47,
|
|
kUserCanceled = 48,
|
|
kNonCriticalUpdateInOOBE = 49,
|
|
kOmahaUpdateIgnoredOverCellular = 50,
|
|
kPayloadTimestampError = 51,
|
|
kUpdatedButNotActive = 52,
|
|
kNoUpdate = 53,
|
|
kRollbackNotPossible = 54,
|
|
kFirstActiveOmahaPingSentPersistenceError = 55,
|
|
kVerityCalculationError = 56,
|
|
kInternalLibCurlError = 57,
|
|
kUnresolvedHostError = 58,
|
|
kUnresolvedHostRecovered = 59,
|
|
kNotEnoughSpace = 60,
|
|
kDeviceCorrupted = 61,
|
|
kPackageExcludedFromUpdate = 62,
|
|
kPostInstallMountError = 63,
|
|
|
|
// VERY IMPORTANT! When adding new error codes:
|
|
//
|
|
// 1) Update tools/metrics/histograms/enums.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
|
|
// kOmahaErrorInHTTPResponse (see error code 2000 for more details).
|
|
// Codes/flags below this line is sent only to Omaha and not to UMA.
|
|
|
|
// kUmaReportedMax 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
|
|
// metrics::ReportUpdateAttemptMetrics() on how this enum is used.
|
|
kUmaReportedMax,
|
|
|
|
// 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: kOmahaErrorInHTTPResponse.
|
|
kOmahaRequestHTTPResponseBase = 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.
|
|
// TODO(garnold) This is very debatable value to use, knowing that the
|
|
// underlying type is a signed int (often, 32-bit). However, at this point
|
|
// there are parts of the ecosystem that expect this to be a negative value,
|
|
// so we preserve this semantics. This should be reconsidered if/when we
|
|
// modify the implementation of ErrorCode into a properly encapsulated class.
|
|
kDevModeFlag = 1 << 31,
|
|
|
|
// Set if resuming an interrupted update.
|
|
kResumedFlag = 1 << 30,
|
|
|
|
// Set if using a dev/test image as opposed to an MP-signed image.
|
|
kTestImageFlag = 1 << 29,
|
|
|
|
// Set if using devserver or Omaha sandbox (using crosh autest).
|
|
kTestOmahaUrlFlag = 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.
|
|
kSpecialFlags =
|
|
(kDevModeFlag | kResumedFlag | kTestImageFlag | kTestOmahaUrlFlag)
|
|
};
|
|
|
|
inline std::ostream& operator<<(std::ostream& os, ErrorCode val) {
|
|
return os << static_cast<int>(val);
|
|
}
|
|
|
|
} // namespace chromeos_update_engine
|
|
|
|
#endif // UPDATE_ENGINE_COMMON_ERROR_CODE_H_
|