aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-08-13 20:49:26 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-08-13 20:49:26 +0200
commit7d2f5ea8021e91f97f5a66f5013171594c36d6e6 (patch)
tree4970952702198c6b89dfa00e2ed2755258120ebd /src/main.rs
parent06cddb0b371192f2f28eaa50c201577fa689833f (diff)
flush ipv6 addresses before (re)configuring them
should prevent netlinkd breaking itself upon renewal
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs
index eef8154..d72250d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -180,20 +180,20 @@ fn configure_ipv6() {
}
fn configure_all_v6() -> Result<()> {
- addr::flush6_global()?;
-
let mut file = File::open(rsdsl_pd_config::LOCATION)?;
let pd_config: PdConfig = serde_json::from_reader(&mut file)?;
let prefix = Ipv6Net::new(pd_config.prefix, pd_config.len)?.trunc();
let mut subnets = prefix.subnets(64)?;
+ addr::flush6_global()?;
addr::add("ppp0".into(), IpAddr::V6(next_ifid1(&mut subnets)?), 64)?;
let addr = next_ifid1(&mut subnets)?;
fs::write("/proc/sys/net/ipv6/conf/eth0/accept_ra", "0")?;
+ addr::flush6("eth0".into())?;
addr::add_link_local("eth0".into(), LINK_LOCAL.into(), 64)?;
addr::add("eth0".into(), addr.into(), 64)?;
@@ -210,6 +210,7 @@ fn configure_all_v6() -> Result<()> {
"0",
)?;
+ addr::flush6(vlan_name.clone())?;
addr::add_link_local(vlan_name.clone(), LINK_LOCAL.into(), 64)?;
addr::add(vlan_name.clone(), vlan_addr.into(), 64)?;