1 /*
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 
17 package android.net;
18 
19 import android.annotation.IntDef;
20 import android.annotation.SystemApi;
21 
22 import java.lang.annotation.Retention;
23 import java.lang.annotation.RetentionPolicy;
24 
25 /**
26  * Thrown when a packet is invalid.
27  * @hide
28  */
29 @SystemApi
30 public final class InvalidPacketException extends Exception {
31     private final int mError;
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      */
InvalidPacketException(@rrorCode final int error)58     public InvalidPacketException(@ErrorCode final int error) {
59         this.mError = error;
60     }
61 
62     /** Get error code. */
getError()63     public int getError() {
64         return mError;
65     }
66 }
67