X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fln%2Ffeatures.rs;h=eee534f71087215ff1f00e71be32e314ab44d623;hb=87a0018e3ebf7d47086032d817a9e671c359214e;hp=c334074871eb486a924da2eabdde30865dc55e22;hpb=09d2a71352f738de1f4f36248a735e6383ee0d8d;p=rust-lightning diff --git a/lightning/src/ln/features.rs b/lightning/src/ln/features.rs index c3340748..eee534f7 100644 --- a/lightning/src/ln/features.rs +++ b/lightning/src/ln/features.rs @@ -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 Features {