diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 54 |
1 files changed, 38 insertions, 16 deletions
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::<Ipv4Addr> { + invert: self.invert, + fwmark: self.fwmark, + dst: None, + src: None, + action: self.action, + table: self.table, + } + .blocking_add(c)?; + rsdsl_netlinklib::rule::Rule::<Ipv6Addr> { + 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::<Ipv4Addr> { 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::<Ipv4Addr> { + invert: self.invert, + fwmark: self.fwmark, + dst: None, + src: None, + action: self.action, + table: self.table, + } + .blocking_del(c)?; + rsdsl_netlinklib::rule::Rule::<Ipv6Addr> { + 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::<Ipv4Addr> { invert: self.invert, fwmark: self.fwmark, |