InterfaceConfiguration.java revision 04808c294027f8bc318643a94c85a999257d7f52
1353ced79b49269151b056c4b06dc632801b59497San Mehat/*
2353ced79b49269151b056c4b06dc632801b59497San Mehat * Copyright (C) 2008 The Android Open Source Project
3353ced79b49269151b056c4b06dc632801b59497San Mehat *
4353ced79b49269151b056c4b06dc632801b59497San Mehat * Licensed under the Apache License, Version 2.0 (the "License");
5353ced79b49269151b056c4b06dc632801b59497San Mehat * you may not use this file except in compliance with the License.
6353ced79b49269151b056c4b06dc632801b59497San Mehat * You may obtain a copy of the License at
7353ced79b49269151b056c4b06dc632801b59497San Mehat *
8353ced79b49269151b056c4b06dc632801b59497San Mehat *      http://www.apache.org/licenses/LICENSE-2.0
9353ced79b49269151b056c4b06dc632801b59497San Mehat *
10353ced79b49269151b056c4b06dc632801b59497San Mehat * Unless required by applicable law or agreed to in writing, software
11353ced79b49269151b056c4b06dc632801b59497San Mehat * distributed under the License is distributed on an "AS IS" BASIS,
12353ced79b49269151b056c4b06dc632801b59497San Mehat * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13353ced79b49269151b056c4b06dc632801b59497San Mehat * See the License for the specific language governing permissions and
14353ced79b49269151b056c4b06dc632801b59497San Mehat * limitations under the License.
15353ced79b49269151b056c4b06dc632801b59497San Mehat */
16353ced79b49269151b056c4b06dc632801b59497San Mehat
17353ced79b49269151b056c4b06dc632801b59497San Mehatpackage android.net;
18353ced79b49269151b056c4b06dc632801b59497San Mehat
19353ced79b49269151b056c4b06dc632801b59497San Mehatimport android.os.Parcelable;
20353ced79b49269151b056c4b06dc632801b59497San Mehatimport android.os.Parcel;
21353ced79b49269151b056c4b06dc632801b59497San Mehat
2204808c294027f8bc318643a94c85a999257d7f52Robert Greenwaltimport java.net.InetAddress;
2304808c294027f8bc318643a94c85a999257d7f52Robert Greenwaltimport java.net.UnknownHostException;
2404808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt
25353ced79b49269151b056c4b06dc632801b59497San Mehat/**
26353ced79b49269151b056c4b06dc632801b59497San Mehat * A simple object for retrieving / setting an interfaces configuration
27353ced79b49269151b056c4b06dc632801b59497San Mehat * @hide
28353ced79b49269151b056c4b06dc632801b59497San Mehat */
29353ced79b49269151b056c4b06dc632801b59497San Mehatpublic class InterfaceConfiguration implements Parcelable {
30353ced79b49269151b056c4b06dc632801b59497San Mehat    public String hwAddr;
3104808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt    public InetAddress addr;
3204808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt    public InetAddress mask;
33353ced79b49269151b056c4b06dc632801b59497San Mehat    public String interfaceFlags;
34353ced79b49269151b056c4b06dc632801b59497San Mehat
35353ced79b49269151b056c4b06dc632801b59497San Mehat    public InterfaceConfiguration() {
36353ced79b49269151b056c4b06dc632801b59497San Mehat        super();
37353ced79b49269151b056c4b06dc632801b59497San Mehat    }
38353ced79b49269151b056c4b06dc632801b59497San Mehat
39353ced79b49269151b056c4b06dc632801b59497San Mehat    public String toString() {
40353ced79b49269151b056c4b06dc632801b59497San Mehat        StringBuffer str = new StringBuffer();
41353ced79b49269151b056c4b06dc632801b59497San Mehat
4204808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt        str.append("ipddress "); str.append(addr.toString());
4304808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt        str.append(" netmask "); str.append(mask.toString());
44353ced79b49269151b056c4b06dc632801b59497San Mehat        str.append(" flags ").append(interfaceFlags);
45353ced79b49269151b056c4b06dc632801b59497San Mehat        str.append(" hwaddr ").append(hwAddr);
46353ced79b49269151b056c4b06dc632801b59497San Mehat
47353ced79b49269151b056c4b06dc632801b59497San Mehat        return str.toString();
48353ced79b49269151b056c4b06dc632801b59497San Mehat    }
49353ced79b49269151b056c4b06dc632801b59497San Mehat
50353ced79b49269151b056c4b06dc632801b59497San Mehat    /** Implement the Parcelable interface {@hide} */
51353ced79b49269151b056c4b06dc632801b59497San Mehat    public int describeContents() {
52353ced79b49269151b056c4b06dc632801b59497San Mehat        return 0;
53353ced79b49269151b056c4b06dc632801b59497San Mehat    }
54353ced79b49269151b056c4b06dc632801b59497San Mehat
55353ced79b49269151b056c4b06dc632801b59497San Mehat    /** Implement the Parcelable interface {@hide} */
56353ced79b49269151b056c4b06dc632801b59497San Mehat    public void writeToParcel(Parcel dest, int flags) {
57353ced79b49269151b056c4b06dc632801b59497San Mehat        dest.writeString(hwAddr);
5804808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt        if (addr != null) {
5904808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt            dest.writeByte((byte)1);
6004808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt            dest.writeByteArray(addr.getAddress());
6104808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt        } else {
6204808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt            dest.writeByte((byte)0);
6304808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt        }
6404808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt        if (mask != null) {
6504808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt            dest.writeByte((byte)1);
6604808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt            dest.writeByteArray(mask.getAddress());
6704808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt        } else {
6804808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt            dest.writeByte((byte)0);
6904808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt        }
70353ced79b49269151b056c4b06dc632801b59497San Mehat        dest.writeString(interfaceFlags);
71353ced79b49269151b056c4b06dc632801b59497San Mehat    }
72353ced79b49269151b056c4b06dc632801b59497San Mehat
73353ced79b49269151b056c4b06dc632801b59497San Mehat    /** Implement the Parcelable interface {@hide} */
74353ced79b49269151b056c4b06dc632801b59497San Mehat    public static final Creator<InterfaceConfiguration> CREATOR =
75353ced79b49269151b056c4b06dc632801b59497San Mehat        new Creator<InterfaceConfiguration>() {
76353ced79b49269151b056c4b06dc632801b59497San Mehat            public InterfaceConfiguration createFromParcel(Parcel in) {
77353ced79b49269151b056c4b06dc632801b59497San Mehat                InterfaceConfiguration info = new InterfaceConfiguration();
78353ced79b49269151b056c4b06dc632801b59497San Mehat                info.hwAddr = in.readString();
7904808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt                if (in.readByte() == 1) {
8004808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt                    try {
8104808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt                        info.addr = InetAddress.getByAddress(in.createByteArray());
8204808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt                    } catch (UnknownHostException e) {}
8304808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt                }
8404808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt                if (in.readByte() == 1) {
8504808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt                    try {
8604808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt                        info.mask = InetAddress.getByAddress(in.createByteArray());
8704808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt                    } catch (UnknownHostException e) {}
8804808c294027f8bc318643a94c85a999257d7f52Robert Greenwalt                }
89353ced79b49269151b056c4b06dc632801b59497San Mehat                info.interfaceFlags = in.readString();
90353ced79b49269151b056c4b06dc632801b59497San Mehat                return info;
91353ced79b49269151b056c4b06dc632801b59497San Mehat            }
92353ced79b49269151b056c4b06dc632801b59497San Mehat
93353ced79b49269151b056c4b06dc632801b59497San Mehat            public InterfaceConfiguration[] newArray(int size) {
94353ced79b49269151b056c4b06dc632801b59497San Mehat                return new InterfaceConfiguration[size];
95353ced79b49269151b056c4b06dc632801b59497San Mehat            }
96353ced79b49269151b056c4b06dc632801b59497San Mehat        };
97353ced79b49269151b056c4b06dc632801b59497San Mehat}
98