From 8b9713a93409d2c6a2faeb31db06e335da16fc2f Mon Sep 17 00:00:00 2001 From: Stephen Akridge Date: Thu, 14 Jun 2018 11:37:45 -0700 Subject: [PATCH] Skip link_local v4 addresses and v6 address when v6 is not enabled --- src/bin/client-demo.rs | 14 +------------- src/crdt.rs | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/bin/client-demo.rs b/src/bin/client-demo.rs index 78974af899..da0813bee7 100644 --- a/src/bin/client-demo.rs +++ b/src/bin/client-demo.rs @@ -8,9 +8,8 @@ extern crate solana; use atty::{is, Stream}; use getopts::Options; -use pnet::datalink; use rayon::prelude::*; -use solana::crdt::{Crdt, ReplicatedData}; +use solana::crdt::{get_ip_addr, Crdt, ReplicatedData}; use solana::mint::MintDemo; use solana::ncp::Ncp; use solana::signature::{GenKeys, KeyPair, KeyPairUtil}; @@ -38,17 +37,6 @@ fn print_usage(program: &str, opts: Options) { print!("{}", opts.usage(&brief)); } -fn get_ip_addr() -> Option { - for iface in datalink::interfaces() { - for p in iface.ips { - if !p.ip().is_loopback() && !p.ip().is_multicast() { - return Some(p.ip()); - } - } - } - None -} - fn main() { env_logger::init().unwrap(); let mut threads = 4usize; diff --git a/src/crdt.rs b/src/crdt.rs index b7e6ef591c..4c9e294870 100644 --- a/src/crdt.rs +++ b/src/crdt.rs @@ -54,7 +54,20 @@ pub fn get_ip_addr() -> Option { for iface in datalink::interfaces() { for p in iface.ips { if !p.ip().is_loopback() && !p.ip().is_multicast() { - return Some(p.ip()); + match p.ip() { + IpAddr::V4(addr) => { + if !addr.is_link_local() { + return Some(p.ip()); + } + } + IpAddr::V6(_addr) => { + // Select an ipv6 address if the config is selected + #[cfg(feature = "ipv6")] + { + return Some(p.ip()); + } + } + } } } }