X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fln%2Ffeatures.rs;h=eee534f71087215ff1f00e71be32e314ab44d623;hb=71021fc9d8a6cffe792a906135e3c28c525444a7;hp=816bf1dff1465d578d4e0dae7ae0b962a62a7782;hpb=a252f81477c25bf1248fd9ea5269a6620187c487;p=rust-lightning diff --git a/lightning/src/ln/features.rs b/lightning/src/ln/features.rs index 816bf1df..eee534f7 100644 --- a/lightning/src/ln/features.rs +++ b/lightning/src/ln/features.rs @@ -67,14 +67,6 @@ pub type ChannelFeatures = Features; 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 Features {