File tree 2 files changed +17
-5
lines changed
2 files changed +17
-5
lines changed Original file line number Diff line number Diff line change @@ -99,6 +99,7 @@ pub async fn start_wireguard(
99
99
) -> Result < std:: sync:: Arc < WgApiWrapper > , Box < dyn std:: error:: Error + Send + Sync + ' static > > {
100
100
use base64:: { prelude:: BASE64_STANDARD , Engine } ;
101
101
use defguard_wireguard_rs:: { InterfaceConfiguration , WireguardInterfaceApi } ;
102
+ use ip_network:: IpNetwork ;
102
103
use peer_controller:: PeerController ;
103
104
104
105
let mut peers = vec ! [ ] ;
@@ -120,7 +121,18 @@ pub async fn start_wireguard(
120
121
peers,
121
122
} ;
122
123
wg_api. configure_interface ( & interface_config) ?;
123
- // wgapi.configure_peer_routing(&peers)?;
124
+
125
+ // Use a dummy peer to create routing rule for the entire network space
126
+ let mut catch_all_peer = Peer :: new ( Key :: new ( [ 0 ; 32 ] ) ) ;
127
+ let network = IpNetwork :: new_truncate (
128
+ wireguard_data. inner . config ( ) . private_ip ,
129
+ wireguard_data. inner . config ( ) . private_network_prefix ,
130
+ ) ?;
131
+ catch_all_peer. set_allowed_ips ( vec ! [ IpAddrMask :: new(
132
+ network. network_address( ) ,
133
+ network. netmask( ) ,
134
+ ) ] ) ;
135
+ wg_api. configure_peer_routing ( & [ catch_all_peer] ) ?;
124
136
125
137
let wg_api = std:: sync:: Arc :: new ( WgApiWrapper :: new ( wg_api) ) ;
126
138
let mut controller = PeerController :: new ( wg_api. clone ( ) , wireguard_data. peer_rx ) ;
Original file line number Diff line number Diff line change @@ -36,13 +36,13 @@ impl PeerController {
36
36
msg = self . peer_rx. recv( ) => {
37
37
match msg {
38
38
Some ( PeerControlMessage :: AddPeer ( peer) ) => {
39
- if self . wg_api. inner. configure_peer( & peer) . is_err ( ) {
40
- log:: error!( "Could not configure peer {:?}" , peer ) ;
39
+ if let Err ( e ) = self . wg_api. inner. configure_peer( & peer) {
40
+ log:: error!( "Could not configure peer: {:?}" , e ) ;
41
41
}
42
42
}
43
43
Some ( PeerControlMessage :: RemovePeer ( peer_pubkey) ) => {
44
- if self . wg_api. inner. remove_peer( & peer_pubkey) . is_err ( ) {
45
- log:: error!( "Could not remove peer with key {:?}" , peer_pubkey ) ;
44
+ if let Err ( e ) = self . wg_api. inner. remove_peer( & peer_pubkey) {
45
+ log:: error!( "Could not remove peer: {:?}" , e ) ;
46
46
}
47
47
}
48
48
None => {
You can’t perform that action at this time.
0 commit comments