forked from I2P_Developers/i2p.i2p
CommSystem: Stubs for separate IPv4/v6 status (ticket #1458)
This commit is contained in:
@@ -123,38 +123,197 @@ public abstract class CommSystemFacade implements Service {
|
|||||||
*/
|
*/
|
||||||
public DHSessionKeyBuilder.Factory getDHFactory() { return null; }
|
public DHSessionKeyBuilder.Factory getDHFactory() { return null; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reachability status codes
|
||||||
|
*
|
||||||
|
* IPv4 IPv6 Status
|
||||||
|
* ---- ---- ------
|
||||||
|
* ok ok OK 0
|
||||||
|
* ok x OK 0
|
||||||
|
* ok unk OK/UNKNOWN 1
|
||||||
|
* ok fw OK/FIREWALLED 2
|
||||||
|
*
|
||||||
|
* x ok DISABLED/OK 5
|
||||||
|
* x x HOSED 12
|
||||||
|
* x unk DISABLED/UNKNOWN 10
|
||||||
|
* x fw DISABLED/FIREWALLED 11
|
||||||
|
*
|
||||||
|
* unk ok UNKNOWN/OK 3
|
||||||
|
* unk x UNKNOWN 14
|
||||||
|
* unk unk UNKNOWN 14
|
||||||
|
* unk fw UNKNOWN/FIREWALLED 9
|
||||||
|
*
|
||||||
|
* fw ok FIREWALLED/OK 4
|
||||||
|
* fw x FIREWALLED 8
|
||||||
|
* fw unk FIREWALLED/UNKNOWN 7
|
||||||
|
* fw fw FIREWALLED 8
|
||||||
|
*
|
||||||
|
* sym any DIFFERENT 6 (TODO add IPv6 states or not worth it?)
|
||||||
|
* disconnected DISCONNECTED 12
|
||||||
|
* hosed HOSED 13
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* These must be increasing in "badness" (see TransportManager.java),
|
* These must be increasing in "badness" (see TransportManager.java),
|
||||||
* but UNKNOWN must be last.
|
* but UNKNOWN must be last.
|
||||||
*
|
*
|
||||||
* We are able to receive unsolicited connections
|
* We are able to receive unsolicited connections
|
||||||
|
* on all enabled transports
|
||||||
*/
|
*/
|
||||||
public static final short STATUS_OK = 0;
|
public static final short STATUS_OK = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We have an IPv6 transport enabled and a public IPv6 address.
|
||||||
|
* We can receive unsolicited connections on IPv4.
|
||||||
|
* We might be able to receive unsolicited connections on IPv6.
|
||||||
|
* @since 0.9.20
|
||||||
|
*/
|
||||||
|
public static final short STATUS_IPV4_OK_IPV6_UNKNOWN = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We have an IPv6 transport enabled and a public IPv6 address.
|
||||||
|
* We can receive unsolicited connections on IPv4.
|
||||||
|
* We cannot receive unsolicited connections on IPv6.
|
||||||
|
* @since 0.9.20
|
||||||
|
*/
|
||||||
|
public static final short STATUS_IPV4_OK_IPV6_FIREWALLED = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We have an IPv6 transport enabled and a public IPv6 address.
|
||||||
|
* We may be able to receive unsolicited connections on IPv4.
|
||||||
|
* We can receive unsolicited connections on IPv6.
|
||||||
|
* @since 0.9.20
|
||||||
|
*/
|
||||||
|
public static final short STATUS_IPV4_UNKNOWN_IPV6_OK = 3;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We have an IPv6 transport enabled and a public IPv6 address.
|
||||||
|
* We cannot receive unsolicited connections on IPv4.
|
||||||
|
* We can receive unsolicited connections on IPv6.
|
||||||
|
* @since 0.9.20
|
||||||
|
*/
|
||||||
|
public static final short STATUS_IPV4_FIREWALLED_IPV6_OK = 4;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We have an IPv6 transport enabled and a public IPv6 address.
|
||||||
|
* IPv4 is disabled.
|
||||||
|
* We can receive unsolicited connections on IPv6.
|
||||||
|
* @since 0.9.20
|
||||||
|
*/
|
||||||
|
public static final short STATUS_IPV4_DISABLED_IPV6_OK = 5;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* We are behind a symmetric NAT which will make our 'from' address look
|
* We are behind a symmetric NAT which will make our 'from' address look
|
||||||
* differently when we talk to multiple people
|
* differently when we talk to multiple people
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static final short STATUS_DIFFERENT = 1;
|
public static final short STATUS_DIFFERENT = 6;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We have an IPv6 transport enabled and a public IPv6 address.
|
||||||
|
* We cannot receive unsolicited connections on IPv4.
|
||||||
|
* We might be able to receive unsolicited connections on IPv6.
|
||||||
|
* @since 0.9.20
|
||||||
|
*/
|
||||||
|
public static final short STATUS_IPV4_FIREWALLED_IPV6_UNKNOWN = 7;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* We are able to talk to peers that we initiate communication with, but
|
* We are able to talk to peers that we initiate communication with, but
|
||||||
* cannot receive unsolicited connections
|
* cannot receive unsolicited connections, i.e. Firewalled,
|
||||||
|
* on all enabled transports.
|
||||||
*/
|
*/
|
||||||
public static final short STATUS_REJECT_UNSOLICITED = 2;
|
public static final short STATUS_REJECT_UNSOLICITED = 8;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We have an IPv6 transport enabled and a public IPv6 address.
|
||||||
|
* We may be able to receive unsolicited connections on IPv4.
|
||||||
|
* We cannot receive unsolicited connections on IPv6.
|
||||||
|
* @since 0.9.20
|
||||||
|
*/
|
||||||
|
public static final short STATUS_IPV4_UNKNOWN_IPV6_FIREWALLED = 9;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We have an IPv6 transport enabled and a public IPv6 address.
|
||||||
|
* IPv4 is disabled.
|
||||||
|
* We might be able to receive unsolicited connections on IPv6.
|
||||||
|
* @since 0.9.20
|
||||||
|
*/
|
||||||
|
public static final short STATUS_IPV4_DISABLED_IPV6_UNKNOWN = 10;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We have an IPv6 transport enabled and a public IPv6 address.
|
||||||
|
* IPv4 is disabled.
|
||||||
|
* We can receive unsolicited connections on IPv6.
|
||||||
|
* @since 0.9.20
|
||||||
|
*/
|
||||||
|
public static final short STATUS_IPV4_DISABLED_IPV6_FIREWALLED = 11;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* We have no network interface at all
|
* We have no network interface at all enabled transports
|
||||||
* @since 0.9.4
|
* @since 0.9.4
|
||||||
*/
|
*/
|
||||||
public static final short STATUS_DISCONNECTED = 3;
|
public static final short STATUS_DISCONNECTED = 12;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Our detection system is broken (SSU bind port failed)
|
* Our detection system is broken (SSU bind port failed)
|
||||||
*/
|
*/
|
||||||
public static final short STATUS_HOSED = 4;
|
public static final short STATUS_HOSED = 13;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Our reachability is unknown
|
* Our reachability is unknown on all
|
||||||
*/
|
*/
|
||||||
public static final short STATUS_UNKNOWN = 5;
|
public static final short STATUS_UNKNOWN = 14;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Since the codes may change.
|
||||||
|
* @since 0.9.20
|
||||||
|
*/
|
||||||
|
public enum Status {
|
||||||
|
OK(STATUS_OK, _x("OK")),
|
||||||
|
IPV4_OK_IPV6_UNKNOWN(STATUS_IPV4_OK_IPV6_UNKNOWN, _x("IPv4: OK; IPv6: Testing")),
|
||||||
|
IPV4_OK_IPV6_FIREWALLED(STATUS_IPV4_OK_IPV6_FIREWALLED, _x("IPv4: OK; IPv6: Firewalled")),
|
||||||
|
IPV4_UNKNOWN_IPV6_OK(STATUS_IPV4_UNKNOWN_IPV6_OK, _x("IPv4: Testing; IPv6: OK")),
|
||||||
|
IPV4_FIREWALLED_IPV6_OK(STATUS_IPV4_FIREWALLED_IPV6_OK, _x("IPv4: Firewalled; IPv6: OK")),
|
||||||
|
IPV4_DISABLED_IPV6_OK(STATUS_IPV4_DISABLED_IPV6_OK, _x("IPv4: Disabled; IPv6: OK")),
|
||||||
|
DIFFERENT(STATUS_DIFFERENT, _x("Symmetric NAT")),
|
||||||
|
IPV4_FIREWALLED_IPV6_UNKNOWN(STATUS_IPV4_FIREWALLED_IPV6_UNKNOWN, _x("IPv4: Firewalled; IPv6: Unknown")),
|
||||||
|
REJECT_UNSOLICITED(STATUS_REJECT_UNSOLICITED, _x("Firewalled")),
|
||||||
|
IPV4_UNKNOWN_IPV6_FIREWALLED(STATUS_IPV4_UNKNOWN_IPV6_FIREWALLED, _x("IPv4: Testing; IPv6: Firewalled")),
|
||||||
|
IPV4_DISABLED_IPV6_UNKNOWN(STATUS_IPV4_DISABLED_IPV6_UNKNOWN, _x("IPv4: Disabled; IPv6: Unknown")),
|
||||||
|
IPV4_DISABLED_IPV6_FIREWALLED(STATUS_IPV4_DISABLED_IPV6_FIREWALLED, _x("IPv4: Disabled; IPv6: Firewalled")),
|
||||||
|
DISCONNECTED(STATUS_DISCONNECTED, _x("Disconnected")),
|
||||||
|
HOSED(STATUS_HOSED, _x("Port Conflict")),
|
||||||
|
UNKNOWN(STATUS_UNKNOWN, _x("Testing"));
|
||||||
|
|
||||||
|
private final int code;
|
||||||
|
private final String status;
|
||||||
|
|
||||||
|
Status(int code, String status) {
|
||||||
|
this.code = code;
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Readable status, not translated
|
||||||
|
*/
|
||||||
|
public String toStatusString() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return super.toString() + " (" + toStatusString() + ')';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tag for translation.
|
||||||
|
*/
|
||||||
|
private static String _x(String s) { return s; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** unused
|
/** unused
|
||||||
|
Reference in New Issue
Block a user