blob: 8d71a3b923a1b08d566ce18fd206bf0084e0623a [file] [log] [blame]
package com.android.server.wifi.anqp;
import java.net.ProtocolException;
import java.nio.ByteBuffer;
/**
* The IP Address Type availability ANQP Element, IEEE802.11-2012 section 8.4.4.9
*/
public class IPAddressTypeAvailabilityElement extends ANQPElement {
public enum IPv4Availability {
NotAvailable, Public, PortRestricted, SingleNAT, DoubleNAT,
PortRestrictedAndSingleNAT, PortRestrictedAndDoubleNAT, Unknown
}
public enum IPv6Availability {NotAvailable, Available, Unknown, Reserved}
private final IPv4Availability mV4Availability;
private final IPv6Availability mV6Availability;
public IPAddressTypeAvailabilityElement(Constants.ANQPElementType infoID, ByteBuffer payload)
throws ProtocolException {
super(infoID);
if (payload.remaining() != 1)
throw new ProtocolException("Bad IP Address Type Availability length: " +
payload.remaining());
int ipField = payload.get();
mV6Availability = IPv6Availability.values()[ipField & 0x3];
ipField = (ipField >> 2) & 0x3f;
mV4Availability = ipField < IPv4Availability.values().length ?
IPv4Availability.values()[ipField] :
IPv4Availability.Unknown;
}
public IPv4Availability getV4Availability() {
return mV4Availability;
}
public IPv6Availability getV6Availability() {
return mV6Availability;
}
@Override
public String toString() {
return "IPAddressTypeAvailability{" +
"mV4Availability=" + mV4Availability +
", mV6Availability=" + mV6Availability +
'}';
}
}