diff --git a/zeronsd/src/authority.rs b/zeronsd/src/authority.rs index 1831d0d..dc88aec 100644 --- a/zeronsd/src/authority.rs +++ b/zeronsd/src/authority.rs @@ -163,13 +163,19 @@ impl ZTAuthority { } for member in members { - let record = ZTRecord::new( + let record = match ZTRecord::new( &member, sixplane, rfc4193, self.forward_authority.domain_name.clone().into(), self.wildcard, - )?; + ) { + Ok(record) => record, + Err(e) => { + tracing::warn!("Skipping member with incomplete data: {}", e); + continue; + } + }; self.forward_authority .insert_member(&mut forward_records, record.clone()) @@ -602,7 +608,7 @@ impl ZTRecord { member .clone() .node_id - .expect("Node ID for member does not exist") + .ok_or_else(|| anyhow::anyhow!("member has no node ID"))? ); let fqdn = member_name.to_fqdn(domain_name.clone())?; @@ -620,11 +626,10 @@ impl ZTRecord { let mut ips = member .clone() .config - .expect("Member config does not exist") - .ip_assignments + .and_then(|c| c.ip_assignments) .map_or(Vec::new(), |v| { v.iter() - .map(|s| IpAddr::from_str(s).expect("Could not parse IP address")) + .filter_map(|s| IpAddr::from_str(s).ok()) .collect() });