Search in sources :

Example 1 with NetworkAdminNetworkInterfaceAddress

use of com.biglybt.core.networkmanager.admin.NetworkAdminNetworkInterfaceAddress in project BiglyBT by BiglySoftware.

the class NetworkAdminDistributedNATTester method runChecks.

private void runChecks(TimerEvent ev) {
    if (!enabled) {
        return;
    }
    synchronized (this) {
        if (check_running) {
            return;
        }
        check_running = true;
    }
    boolean async = false;
    logMessage("Running checks");
    try {
        NetworkAdminNetworkInterface[] interfaces = admin.getInterfaces();
        List<InetAddress> global_ipv6 = new ArrayList<>();
        for (NetworkAdminNetworkInterface intf : interfaces) {
            NetworkAdminNetworkInterfaceAddress[] addresses = intf.getAddresses();
            for (NetworkAdminNetworkInterfaceAddress address : addresses) {
                InetAddress a = address.getAddress();
                if (AddressUtils.isGlobalAddressV6(a)) {
                    global_ipv6.add(a);
                }
            }
        }
        if (global_ipv6.size() > 1) {
            DHT[] dhts = dht_plugin.getDHTs();
            DHT target_dht = null;
            for (int i = 0; i < dhts.length; i++) {
                if (dhts[i].getTransport().getNetwork() == DHT.NW_AZ_MAIN_V6) {
                    target_dht = dhts[i];
                    break;
                }
            }
            if (target_dht != null) {
                DHTTransport transport = target_dht.getTransport();
                InetAddress bind_address = transport.getCurrentBindAddress();
                if (bind_address == null) {
                    logMessage("DHT bind address invalid, not testing");
                } else if (!bind_address.isAnyLocalAddress()) {
                    logMessage("DHT already bound, not testing");
                } else {
                    DHT f_target_dht = target_dht;
                    AEThread2.createAndStartDaemon("DistributedNATCheck", () -> {
                        try {
                            test(f_target_dht, global_ipv6);
                        } finally {
                            synchronized (NetworkAdminDistributedNATTester.this) {
                                check_running = false;
                            }
                        }
                    });
                    async = true;
                }
            } else {
                logMessage("No DHT");
            }
        } else {
            logMessage("Insufficient V6 addresses");
        }
    } finally {
        if (!async) {
            synchronized (this) {
                check_running = false;
            }
        }
    }
}
Also used : DHT(com.biglybt.core.dht.DHT) DHTTransport(com.biglybt.core.dht.transport.DHTTransport) NetworkAdminNetworkInterface(com.biglybt.core.networkmanager.admin.NetworkAdminNetworkInterface) InetAddress(java.net.InetAddress) NetworkAdminNetworkInterfaceAddress(com.biglybt.core.networkmanager.admin.NetworkAdminNetworkInterfaceAddress)

Example 2 with NetworkAdminNetworkInterfaceAddress

use of com.biglybt.core.networkmanager.admin.NetworkAdminNetworkInterfaceAddress in project BiglyBT by BiglySoftware.

the class PMSWTImpl method updateLocalAddresses.

private void updateLocalAddresses(NetworkAdmin network_admin) {
    NetworkAdminNetworkInterface[] interfaces = network_admin.getInterfaces();
    Set<String> ias = new HashSet<>();
    for (NetworkAdminNetworkInterface intf : interfaces) {
        NetworkAdminNetworkInterfaceAddress[] addresses = intf.getAddresses();
        for (NetworkAdminNetworkInterfaceAddress address : addresses) {
            InetAddress ia = address.getAddress();
            ias.add(ia.getHostAddress());
        }
    }
    local_addresses = ias;
}
Also used : NetworkAdminNetworkInterface(com.biglybt.core.networkmanager.admin.NetworkAdminNetworkInterface) InetAddress(java.net.InetAddress) NetworkAdminNetworkInterfaceAddress(com.biglybt.core.networkmanager.admin.NetworkAdminNetworkInterfaceAddress)

Aggregations

NetworkAdminNetworkInterface (com.biglybt.core.networkmanager.admin.NetworkAdminNetworkInterface)2 NetworkAdminNetworkInterfaceAddress (com.biglybt.core.networkmanager.admin.NetworkAdminNetworkInterfaceAddress)2 InetAddress (java.net.InetAddress)2 DHT (com.biglybt.core.dht.DHT)1 DHTTransport (com.biglybt.core.dht.transport.DHTTransport)1