Move Router test setup to a helper function
[rust-lightning] / lightning / src / ln / features.rs
index 816bf1dff1465d578d4e0dae7ae0b962a62a7782..eee534f71087215ff1f00e71be32e314ab44d623 100644 (file)
@@ -67,14 +67,6 @@ pub type ChannelFeatures = Features<sealed::ChannelContext>;
 
 impl InitFeatures {
        /// Create a Features with the features we support
-       #[cfg(not(feature = "fuzztarget"))]
-       pub(crate) fn supported() -> InitFeatures {
-               InitFeatures {
-                       flags: vec![2 | 1 << 5],
-                       mark: PhantomData,
-               }
-       }
-       #[cfg(feature = "fuzztarget")]
        pub fn supported() -> InitFeatures {
                InitFeatures {
                        flags: vec![2 | 1 << 5],
@@ -126,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 {
@@ -144,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> {