aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs
index dad2847..46864f5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,6 +1,5 @@
-use rsdsl_dslite::{Error, Result};
-
use std::fs::File;
+use std::io;
use std::net::{Ipv6Addr, SocketAddr};
use std::thread;
use std::time::Duration;
@@ -10,12 +9,35 @@ use rsdsl_netlinklib::tunnel::IpIp6;
use rsdsl_pd_config::PdConfig;
use signal_hook::{consts::SIGUSR1, iterator::Signals};
use sysinfo::{ProcessExt, Signal, System, SystemExt};
+use thiserror::Error;
use trust_dns_resolver::config::{NameServerConfig, Protocol, ResolverConfig, ResolverOpts};
use trust_dns_resolver::Resolver;
const MAX_ATTEMPTS: usize = 3;
const BACKOFF: u64 = 900;
+#[derive(Debug, Error)]
+pub enum Error {
+ #[error("no address associated with aftr name")]
+ NoDnsRecord,
+ #[error("not enough ipv6 subnets")]
+ NotEnoughIpv6Subnets,
+
+ #[error("io: {0}")]
+ Io(#[from] io::Error),
+
+ #[error("ipnet prefix len: {0}")]
+ IpnetPrefixLen(#[from] ipnet::PrefixLenError),
+ #[error("netlinklib error: {0}")]
+ Netlinklib(#[from] rsdsl_netlinklib::Error),
+ #[error("serde_json: {0}")]
+ SerdeJson(#[from] serde_json::Error),
+ #[error("trust_dns_resolver resolve: {0}")]
+ TrustDnsResolverResolve(#[from] trust_dns_resolver::error::ResolveError),
+}
+
+pub type Result<T> = std::result::Result<T, Error>;
+
fn main() -> Result<()> {
println!("[info] init");