Skip to content

Commit 0588112

Browse files
committed
Minimally add NetworkGraphMonitor use to fuzzer
1 parent 0c9b8f9 commit 0588112

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

fuzz/src/full_stack.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ use lightning::ln::channelmonitor;
2525
use lightning::ln::channelmanager::{ChannelManager, PaymentHash, PaymentPreimage, PaymentSecret};
2626
use lightning::ln::peer_handler::{MessageHandler,PeerManager,SocketDescriptor};
2727
use lightning::ln::router::Router;
28+
use lightning::ln::network_graph_monitor::NetworkGraphMonitor;
2829
use lightning::util::events::{EventsProvider,Event};
2930
use lightning::util::enforcing_trait_impls::EnforcingChannelKeys;
3031
use lightning::util::logger::Logger;
@@ -334,12 +335,13 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
334335
config.channel_options.announced_channel = get_slice!(1)[0] != 0;
335336
config.peer_channel_config_limits.min_dust_limit_satoshis = 0;
336337
let channelmanager = Arc::new(ChannelManager::new(Network::Bitcoin, fee_est.clone(), monitor.clone(), broadcast.clone(), Arc::clone(&logger), keys_manager.clone(), config, 0).unwrap());
337-
let router = Arc::new(Router::new(PublicKey::from_secret_key(&Secp256k1::signing_only(), &keys_manager.get_node_secret()), watch.clone(), Arc::clone(&logger)));
338+
let network_graph_monitor = Arc::new(NetworkGraphMonitor::new(PublicKey::from_secret_key(&Secp256k1::signing_only(), &keys_manager.get_node_secret()), watch.clone(), Arc::clone(&logger)));
339+
let router = Arc::new(Router::new(Arc::clone(&logger)));
338340

339341
let peers = RefCell::new([false; 256]);
340342
let mut loss_detector = MoneyLossDetector::new(&peers, channelmanager.clone(), monitor.clone(), PeerManager::new(MessageHandler {
341343
chan_handler: channelmanager.clone(),
342-
route_handler: router.clone(),
344+
route_handler: network_graph_monitor.clone(),
343345
}, our_network_key, &[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0], Arc::clone(&logger)));
344346

345347
let mut should_forward = false;
@@ -391,7 +393,8 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
391393
},
392394
4 => {
393395
let value = slice_to_be24(get_slice!(3)) as u64;
394-
let route = match router.get_route(&get_pubkey!(), None, &Vec::new(), value, 42) {
396+
let network = network_graph_monitor.network_map.read().unwrap();
397+
let route = match router.get_route(&network, &get_pubkey!(), None, &Vec::new(), value, 42) {
395398
Ok(route) => route,
396399
Err(_) => return,
397400
};
@@ -408,7 +411,8 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
408411
},
409412
15 => {
410413
let value = slice_to_be24(get_slice!(3)) as u64;
411-
let mut route = match router.get_route(&get_pubkey!(), None, &Vec::new(), value, 42) {
414+
let network = network_graph_monitor.network_map.read().unwrap();
415+
let mut route = match router.get_route(&network, &get_pubkey!(), None, &Vec::new(), value, 42) {
412416
Ok(route) => route,
413417
Err(_) => return,
414418
};

fuzz/src/router.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use lightning::ln::msgs::RoutingMessageHandler;
1111
use lightning::ln::router::{Router, RouteHint};
1212
use lightning::util::logger::Logger;
1313
use lightning::util::ser::Readable;
14+
use lightning::ln::network_graph_monitor::NetworkGraphMonitor;
1415

1516
use secp256k1::key::PublicKey;
1617

@@ -156,7 +157,8 @@ pub fn do_test(data: &[u8]) {
156157
});
157158

158159
let our_pubkey = get_pubkey!();
159-
let router = Router::new(our_pubkey.clone(), chain_monitor, Arc::clone(&logger));
160+
let router = Router::new(Arc::clone(&logger));
161+
let network_graph_monitor = NetworkGraphMonitor::new(our_pubkey.clone(), chain_monitor, Arc::clone(&logger));
160162

161163
loop {
162164
match get_slice!(1)[0] {
@@ -166,22 +168,22 @@ pub fn do_test(data: &[u8]) {
166168
if addr_len > (37+1)*4 {
167169
return;
168170
}
169-
let _ = router.handle_node_announcement(&decode_msg_with_len16!(msgs::NodeAnnouncement, 64, 288));
171+
let _ = network_graph_monitor.handle_node_announcement(&decode_msg_with_len16!(msgs::NodeAnnouncement, 64, 288));
170172
},
171173
1 => {
172-
let _ = router.handle_channel_announcement(&decode_msg_with_len16!(msgs::ChannelAnnouncement, 64*4, 32+8+33*4));
174+
let _ = network_graph_monitor.handle_channel_announcement(&decode_msg_with_len16!(msgs::ChannelAnnouncement, 64*4, 32+8+33*4));
173175
},
174176
2 => {
175-
let _ = router.handle_channel_update(&decode_msg!(msgs::ChannelUpdate, 128));
177+
let _ = network_graph_monitor.handle_channel_update(&decode_msg!(msgs::ChannelUpdate, 128));
176178
},
177179
3 => {
178180
match get_slice!(1)[0] {
179181
0 => {
180-
router.handle_htlc_fail_channel_update(&msgs::HTLCFailChannelUpdate::ChannelUpdateMessage {msg: decode_msg!(msgs::ChannelUpdate, 128)});
182+
network_graph_monitor.handle_htlc_fail_channel_update(&msgs::HTLCFailChannelUpdate::ChannelUpdateMessage {msg: decode_msg!(msgs::ChannelUpdate, 128)});
181183
},
182184
1 => {
183185
let short_channel_id = slice_to_be64(get_slice!(8));
184-
router.handle_htlc_fail_channel_update(&msgs::HTLCFailChannelUpdate::ChannelClosed {short_channel_id, is_permanent: false});
186+
network_graph_monitor.handle_htlc_fail_channel_update(&msgs::HTLCFailChannelUpdate::ChannelClosed {short_channel_id, is_permanent: false});
185187
},
186188
_ => return,
187189
}
@@ -225,7 +227,8 @@ pub fn do_test(data: &[u8]) {
225227
}
226228
&last_hops_vec[..]
227229
};
228-
let _ = router.get_route(&target, first_hops, last_hops, slice_to_be64(get_slice!(8)), slice_to_be32(get_slice!(4)));
230+
let network = network_graph_monitor.network_map.read().unwrap();
231+
let _ = router.get_route(&network, &target, first_hops, last_hops, slice_to_be64(get_slice!(8)), slice_to_be32(get_slice!(4)));
229232
},
230233
_ => return,
231234
}

0 commit comments

Comments
 (0)