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.
139 lines
5.4 KiB
139 lines
5.4 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, |
|
|
|
// 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 |
|
// 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 interruped 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_
|
|
|