Pass node features through to RouteHops
[rust-lightning] / lightning / src / ln / features.rs
index c334074871eb486a924da2eabdde30865dc55e22..eee534f71087215ff1f00e71be32e314ab44d623 100644 (file)
@@ -118,6 +118,13 @@ impl ChannelFeatures {
                        mark: PhantomData,
                }
        }
+
+       /// Takes the flags that we know how to interpret in an init-context features that are also
+       /// relevant in a channel-context features and creates a channel-context features from them.
+       pub(crate) fn with_known_relevant_init_flags(_init_ctx: &InitFeatures) -> Self {
+               // There are currently no channel flags defined that we understand.
+               Self { flags: Vec::new(), mark: PhantomData, }
+       }
 }
 
 impl NodeFeatures {
@@ -136,6 +143,17 @@ impl NodeFeatures {
                        mark: PhantomData,
                }
        }
+
+       /// Takes the flags that we know how to interpret in an init-context features that are also
+       /// relevant in a node-context features and creates a node-context features from them.
+       pub(crate) fn with_known_relevant_init_flags(init_ctx: &InitFeatures) -> Self {
+               let mut flags = Vec::new();
+               if init_ctx.flags.len() > 0 {
+                       // Pull out data_loss_protect and upfront_shutdown_script (bits 0, 1, 4, and 5)
+                       flags.push(init_ctx.flags.last().unwrap() & 0b00110011);
+               }
+               Self { flags, mark: PhantomData, }
+       }
 }
 
 impl<T: sealed::Context> Features<T> {