From 8295db3fbb6717f82b795c0ba4f20eb5d6aa55a2 Mon Sep 17 00:00:00 2001 From: Himbeer Date: Thu, 20 Mar 2025 17:35:50 +0100 Subject: Create/delete IPv4/v6 rules separately for RuleVersion::Both This change is needed because rtnetlink does not support multi-protocol rules. --- src/main.rs | 54 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/main.rs b/src/main.rs index ff0b6ad..0754003 100644 --- a/src/main.rs +++ b/src/main.rs @@ -465,15 +465,26 @@ struct Rule { impl Rule { fn add(self, c: &Connection) -> Result<(), SetupError> { match self.version { - RuleVersion::Both => rsdsl_netlinklib::rule::Rule::<()> { - invert: self.invert, - fwmark: self.fwmark, - dst: None, - src: None, - action: self.action, - table: self.table, + RuleVersion::Both => { + rsdsl_netlinklib::rule::Rule:: { + invert: self.invert, + fwmark: self.fwmark, + dst: None, + src: None, + action: self.action, + table: self.table, + } + .blocking_add(c)?; + rsdsl_netlinklib::rule::Rule:: { + invert: self.invert, + fwmark: self.fwmark, + dst: None, + src: None, + action: self.action, + table: self.table, + } + .blocking_add(c)?; } - .blocking_add(c)?, RuleVersion::Ipv4 => rsdsl_netlinklib::rule::Rule:: { invert: self.invert, fwmark: self.fwmark, @@ -523,15 +534,26 @@ impl Rule { fn delete(self, c: &Connection) -> Result<(), SetupError> { match self.version { - RuleVersion::Both => rsdsl_netlinklib::rule::Rule::<()> { - invert: self.invert, - fwmark: self.fwmark, - dst: None, - src: None, - action: self.action, - table: self.table, + RuleVersion::Both => { + rsdsl_netlinklib::rule::Rule:: { + invert: self.invert, + fwmark: self.fwmark, + dst: None, + src: None, + action: self.action, + table: self.table, + } + .blocking_del(c)?; + rsdsl_netlinklib::rule::Rule:: { + invert: self.invert, + fwmark: self.fwmark, + dst: None, + src: None, + action: self.action, + table: self.table, + } + .blocking_del(c)?; } - .blocking_del(c)?, RuleVersion::Ipv4 => rsdsl_netlinklib::rule::Rule:: { invert: self.invert, fwmark: self.fwmark, -- cgit v1.2.3