aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2025-03-18 15:46:57 +0100
committerHimbeer <himbeer@disroot.org>2025-03-18 15:47:50 +0100
commit23c170d7ee9a485f9136dfbf1da02e9a72df1cd0 (patch)
tree3f88117af0a33c7dca53be3319f185d746595df2 /src
parentf023bacabe03d7b522823283f2fb207ee56689bd (diff)
Update netlinklibHEADmaster
This includes assigning metrics to default routes in such a way that native connectivity is always preferred over DS-Lite.
Diffstat (limited to 'src')
-rw-r--r--src/main.rs36
1 files changed, 28 insertions, 8 deletions
diff --git a/src/main.rs b/src/main.rs
index 457930f..b6f44ef 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,4 +1,5 @@
use rsdsl_netlinklib::blocking::Connection;
+use rsdsl_netlinklib::route::{Route4, Route6};
use std::fs::{self, File};
use std::io;
@@ -196,14 +197,30 @@ fn configure_wan(conn: &Connection) -> Result<()> {
if let Some(v4) = ds_config.v4 {
conn.address_add("ppp0".to_string(), v4.addr.into(), 32)?;
- conn.route_add4(Ipv4Addr::UNSPECIFIED, 0, None, "ppp0".to_string())?;
+ conn.route_add4(Route4 {
+ dst: Ipv4Addr::UNSPECIFIED,
+ prefix_len: 0,
+ rtr: None,
+ on_link: false,
+ table: None,
+ metric: Some(100),
+ link: String::from("ppp0"),
+ })?;
println!("[info] config ppp0 {}/32", v4.addr);
}
if let Some(v6) = ds_config.v6 {
conn.address_add_link_local("ppp0".to_string(), v6.laddr.into(), 64)?;
- conn.route_add6(Ipv6Addr::UNSPECIFIED, 0, None, "ppp0".to_string())?;
+ conn.route_add6(Route6 {
+ dst: Ipv6Addr::UNSPECIFIED,
+ prefix_len: 0,
+ rtr: None,
+ on_link: false,
+ table: None,
+ metric: Some(100),
+ link: String::from("ppp0"),
+ })?;
println!("[info] config ppp0 ll {}/64", v6.laddr);
@@ -255,12 +272,15 @@ fn configure_wan(conn: &Connection) -> Result<()> {
conn.address_add("dslite0".to_string(), ADDR_B4.into(), 29)?;
if ds_config.v4.is_none() {
- conn.route_add4(
- Ipv4Addr::UNSPECIFIED,
- 0,
- Some(ADDR_AFTR),
- "dslite0".to_string(),
- )?;
+ conn.route_add4(Route4 {
+ dst: Ipv4Addr::UNSPECIFIED,
+ prefix_len: 0,
+ rtr: Some(ADDR_AFTR),
+ on_link: false,
+ table: None,
+ metric: Some(50),
+ link: String::from("dslite0"),
+ })?;
}
println!("[info] config dslite0 {}/29", ADDR_B4);