blob: 909998d4562c76482beced8b0139825bc1aa93ad [file] [log] [blame]
Aaron Huang17c660d2019-10-02 01:39:46 +08001/*
2 * Copyright (C) 2019 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.net;
18
19import android.annotation.IntDef;
20import android.annotation.SystemApi;
21
22import java.lang.annotation.Retention;
23import java.lang.annotation.RetentionPolicy;
24
25/**
26 * Thrown when a packet is invalid.
27 * @hide
28 */
29@SystemApi
30public class InvalidPacketException extends Exception {
31 public final int error;
32
33 // Must match SocketKeepalive#ERROR_INVALID_IP_ADDRESS.
34 /** Invalid IP address. */
35 public static final int ERROR_INVALID_IP_ADDRESS = -21;
36
37 // Must match SocketKeepalive#ERROR_INVALID_PORT.
38 /** Invalid port number. */
39 public static final int ERROR_INVALID_PORT = -22;
40
41 // Must match SocketKeepalive#ERROR_INVALID_LENGTH.
42 /** Invalid packet length. */
43 public static final int ERROR_INVALID_LENGTH = -23;
44
45 /** @hide */
46 @Retention(RetentionPolicy.SOURCE)
47 @IntDef(prefix = { "ERROR_" }, value = {
48 ERROR_INVALID_IP_ADDRESS,
49 ERROR_INVALID_PORT,
50 ERROR_INVALID_LENGTH
51 })
52 public @interface ErrorCode {}
53
54 /**
55 * This packet is invalid.
56 * See the error code for details.
57 */
58 public InvalidPacketException(@ErrorCode final int error) {
59 this.error = error;
60 }
61}