Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
6109cc7
Update test
GTC6244 Nov 24, 2025
ca553b5
Update tests
GTC6244 Nov 25, 2025
428ae30
Setup
GTC6244 Dec 2, 2025
6019872
restore datil keys into a second keyset
GTC6244 Dec 2, 2025
8ea72fe
remove large binaries
GTC6244 Dec 2, 2025
6490b42
remove large zip
GTC6244 Dec 2, 2025
8d616dd
Merge branch 'keysets' into feature/node-4848-test-datil-keys-in-naga
GTC6244 Dec 4, 2025
368a923
cargo fmt
GTC6244 Dec 4, 2025
0dbb23a
Merge branch 'keysets' into feature/node-4848-test-datil-keys-in-naga
GTC6244 Dec 10, 2025
96894df
Updates to DKG / Epoch change processes + correct saving of data to c…
GTC6244 Dec 11, 2025
d5fb121
Add BLS decryption assertions
hwrdtm Dec 9, 2025
1e63e97
Use correct keyset for assertion
hwrdtm Dec 11, 2025
01a4d07
Update lit-node-testnet to work with ImportedDatilTestnet + start on …
hwrdtm Dec 12, 2025
a72358b
Add notes
hwrdtm Dec 12, 2025
15b46d4
Add notes
hwrdtm Dec 12, 2025
bfa049c
Merge branch 'keysets' into feature/node-4848-test-datil-keys-in-naga
GTC6244 Dec 12, 2025
0903c36
Merge branch 'feature/node-4848-test-datil-keys-in-naga' into hwrdtm/…
GTC6244 Dec 12, 2025
db7c72b
Merge branch 'keysets' into feature/node-4848-test-datil-keys-in-naga
GTC6244 Dec 12, 2025
0fd14d6
fix actions in testnet
GTC6244 Dec 12, 2025
8857561
cargo fmt
GTC6244 Dec 12, 2025
4ef9c85
Add BLS decryption assertions
hwrdtm Dec 9, 2025
6d70c84
Use correct keyset for assertion
hwrdtm Dec 11, 2025
2f4f30f
Update lit-node-testnet to work with ImportedDatilTestnet + start on …
hwrdtm Dec 12, 2025
3932339
Add notes
hwrdtm Dec 12, 2025
11b6983
Add notes
hwrdtm Dec 12, 2025
7fbb120
Update test to interact with ImportedDatilTestnet
hwrdtm Dec 13, 2025
72652f2
Merge branch 'hwrdtm/datil-naga-assertions' of https://github.com/LIT…
GTC6244 Dec 13, 2025
dbbfced
remove unneded code
GTC6244 Dec 13, 2025
e5327e9
refactor & remove duplications
GTC6244 Dec 14, 2025
df2b914
Refactor & add datil node secrets
GTC6244 Dec 15, 2025
334d548
Update rust/lit-node/lit-node/src/tasks/fsm/epoch_change.rs
GTC6244 Dec 15, 2025
1673f58
Update rust/lit-node/lit-node/src/tss/common/restore/eks_and_ds.rs
GTC6244 Dec 15, 2025
9a704bc
Update rust/lit-node/Cargo.toml
GTC6244 Dec 15, 2025
53f2414
whole lotta shaking going on. ( endpoints changed throughout )
GTC6244 Dec 16, 2025
d84b227
PKP sign works.
GTC6244 Dec 17, 2025
82fbfb7
cargo clippy
GTC6244 Dec 17, 2025
057605c
Merge branch 'keysets' into feature/node-4848-test-datil-keys-in-naga
GTC6244 Dec 18, 2025
1ba4370
Merge branch 'feature/node-4848-test-datil-keys-in-naga' into feature…
GTC6244 Dec 18, 2025
95fa620
cargo lock cleanup
GTC6244 Dec 18, 2025
d4a30b1
Merge branch 'feature/node-4848-test-datil-keys-in-naga' into feature…
GTC6244 Dec 18, 2025
dd03544
git merge fixes
GTC6244 Dec 18, 2025
6a23070
cargo toml update ( to trigger cargo.lock update )
GTC6244 Dec 18, 2025
bd7b2a7
cargo.lock update + config.rs in the resolver formatting.
GTC6244 Dec 18, 2025
2e837dc
cargo fmt
GTC6244 Dec 18, 2025
89c0778
fix panic when node was kicked (realmid = 0)
Garandor Dec 18, 2025
14cc553
lit-cli: validator can't be active if realmid = 0 (#45)
Garandor Dec 18, 2025
249d9bf
patch epoch change retries.
GTC6244 Dec 19, 2025
f945eb9
cargo fmt
GTC6244 Dec 19, 2025
80ddcf7
Expose underlying error when peer_connect attestation fails
Garandor Dec 19, 2025
58bea9f
Expose underlying error when peer_connect attestation fails (#46)
Garandor Dec 19, 2025
e9e10ae
Fix failed DKGs when doing restores.
GTC6244 Dec 21, 2025
9a3eb0f
Merge branch 'feature/node-4848-test-datil-keys-in-naga' into feature…
GTC6244 Dec 22, 2025
89309c8
cargo fmt
GTC6244 Dec 22, 2025
4454732
Merge branch 'feature/node-4874-support-multiple-chains-at-anvil-leve…
GTC6244 Dec 22, 2025
71a5972
fix tests !
GTC6244 Dec 22, 2025
cf5a3ef
fix tests
GTC6244 Dec 22, 2025
effcd0f
Logging info for CI datil instances.
GTC6244 Dec 23, 2025
b68f4b0
Open ports for a second instance of anvil in the yml files.
GTC6244 Dec 23, 2025
63150f8
Load hex data from test state into anvil.
GTC6244 Dec 23, 2025
2660543
Feature/price setting script (#43)
glitch003 Dec 24, 2025
c784839
Fix: Add `correlation_id` to `lit-actions` spans (#25)
kapoorabhishek24 Dec 29, 2025
a30b41f
Refactors OsQuery metrics emission to use OpenTelemetry Gauges (#28)
kapoorabhishek24 Dec 30, 2025
0c4e479
remove unused file
GTC6244 Dec 30, 2025
4529990
comment out #if false
GTC6244 Dec 30, 2025
71cf816
take 2?
GTC6244 Dec 30, 2025
454b793
fix test reference
GTC6244 Dec 30, 2025
c58f023
Use HEX file to load state, rather than a JSON file.
GTC6244 Dec 31, 2025
914bae8
Refactor to insure that for Datil tests we don't rely on naga cache'd…
GTC6244 Dec 31, 2025
b8ec0b3
switch lit-recovery binaries for testing
GTC6244 Dec 31, 2025
a5bc324
Remove keyset_identifier as an enum and clean up tests.
GTC6244 Jan 3, 2026
7c5b0cd
Merge branch 'feature/node-4874-support-multiple-chains-at-anvil-leve…
GTC6244 Jan 3, 2026
e0335e0
Fix up tests
GTC6244 Jan 3, 2026
9a1e2ce
cargo fmt
GTC6244 Jan 3, 2026
e065050
fix datil backup selection of binary.
GTC6244 Jan 3, 2026
352f4df
logging, shorten handshake challange value.
GTC6244 Jan 3, 2026
e614317
fix "default" keyset bug :(
GTC6244 Jan 4, 2026
d9cb8ad
cargo fmt
GTC6244 Jan 4, 2026
e3c3ebf
yml test.
GTC6244 Jan 4, 2026
b600ad9
if false yml
GTC6244 Jan 4, 2026
a92abbc
comment out version upgrade
GTC6244 Jan 4, 2026
fda4ba1
yml update
GTC6244 Jan 4, 2026
ee9e64b
Merge branch 'feature/node-4874-support-multiple-chains-at-anvil-leve…
GTC6244 Jan 4, 2026
8429d9d
try a var for the upgrade workflow ?
GTC6244 Jan 4, 2026
3122f36
upgrade yml with default if statement.
GTC6244 Jan 4, 2026
bae3984
Merge branch 'feature/node-4876-adapt-the-end-user-to-support-pkps-in…
GTC6244 Jan 4, 2026
fc6087a
Merge branch 'feature/node-4874-support-multiple-chains-at-anvil-leve…
GTC6244 Jan 4, 2026
ae515a4
cargo clippy.
GTC6244 Jan 4, 2026
230645d
Merge branch 'feature/node-4876-adapt-the-end-user-to-support-pkps-in…
GTC6244 Jan 4, 2026
9f422f3
Update lit-os cargo.lock
GTC6244 Jan 4, 2026
bec959e
update lit-os cargo.lock
GTC6244 Jan 4, 2026
e416b02
Merge branch 'feature/node-4874-support-multiple-chains-at-anvil-leve…
GTC6244 Jan 4, 2026
bff23a8
update gitinfo
GTC6244 Jan 4, 2026
9dd5ab3
Merge branch 'feature/node-4874-support-multiple-chains-at-anvil-leve…
GTC6244 Jan 4, 2026
62e3b8d
fix restore test to use Datil directly.
GTC6244 Jan 5, 2026
1fdb4e2
cargo fmt
GTC6244 Jan 5, 2026
a480f7f
patch so both long running restores work :(
GTC6244 Jan 5, 2026
7ba906d
Update epoch change long to deal with keysets
GTC6244 Jan 5, 2026
53d16df
small shiva refactor
GTC6244 Jan 5, 2026
e2cd720
difference between pkp & root key lookups when getting a keyset.
GTC6244 Jan 5, 2026
774098c
remove datil from lit action testing.
GTC6244 Jan 5, 2026
f3b6617
clean up integration test setup to account for keyset settings.
GTC6244 Jan 5, 2026
cae30c0
limit caches to only active states.
GTC6244 Jan 6, 2026
ade43af
Fix Shadow splicing test, make some integration force builds
GTC6244 Jan 6, 2026
fc89c76
update abis & lit-os lock file
GTC6244 Jan 6, 2026
30e58ba
Merge branch 'keysets' into feature/node-4876-adapt-the-end-user-to-s…
GTC6244 Jan 6, 2026
b227548
cargo fmt + minor cleanup
GTC6244 Jan 6, 2026
8abf4e7
Merge branch 'master' into feature/node-4876-adapt-the-end-user-to-su…
GTC6244 Jan 6, 2026
568dcc0
Refactor one of the last timing related tests.
GTC6244 Jan 7, 2026
270759a
ABI staleness, remove more testing feature flags
GTC6244 Jan 7, 2026
f6ab15d
Make the StakerAccountSetupMapper Send+Sync to allow Shiva to build.
GTC6244 Jan 7, 2026
ea09ab2
Clean up complaints.
GTC6244 Jan 7, 2026
a2ab916
Update to determine key set for recovery (#58)
mikelodder7 Jan 7, 2026
368b873
Better logging.
GTC6244 Jan 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
724 changes: 724 additions & 0 deletions blockchain/contracts/scripts/generatePriceSettingTransactions.ts

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions rust/lit-core/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 24 additions & 6 deletions rust/lit-core/lit-observability/src/net.rs
Original file line number Diff line number Diff line change
Expand Up @@ -176,12 +176,30 @@ pub mod grpc {
propagator.extract(&HttpMetadataMap(req.headers_mut()))
});

// Initialize a new span with the extracted tracing context as the parent.
let info_span = info_span!(
"handle_grpc_request",
method = %req.method(),
path = %req.uri().path(),
);
// Extract correlation ID header (matches lit-api-core's extract_correlation_id implementation).
// Priority: x-correlation-id > x-request-id
let correlation_id = req
.headers()
.get("x-correlation-id")
.or_else(|| req.headers().get("x-request-id"))
.and_then(|h| h.to_str().ok())
.filter(|s| !s.is_empty());

// Initialize a new span with the propagated context as the parent.
let info_span = match correlation_id {
Some(id) => info_span!(
"handle_grpc_request",
method = %req.method(),
path = %req.uri().path(),
correlation_id = %id,
),
None => info_span!(
"handle_grpc_request",
method = %req.method(),
path = %req.uri().path(),
),
};

info_span.set_parent(parent_cx);

service.call(req).instrument(info_span).await
Expand Down
3 changes: 3 additions & 0 deletions rust/lit-core/lit-os-metrics-internal/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ osquery-rs = "0.1"
serde.workspace = true
serde_json.workspace = true

[dependencies.lit-observability]
path = "../../lit-core/lit-observability"

[dependencies.lit-core]
path = "../../lit-core/lit-core"

Expand Down
33 changes: 33 additions & 0 deletions rust/lit-core/lit-os-metrics-internal/src/models.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,40 @@
use lit_observability::opentelemetry::KeyValue;

pub trait OsMetric {
const NAME: &'static str;
}

/// Trait for metrics that have meaningful numeric values.
/// Implementing this trait allows the metric to be emitted as a gauge with a proper numeric value,
/// rather than a counter with an enumeration value.
pub trait GaugeMetric: OsMetric {
/// Returns the primary gauge value for this metric.
/// This should be the most important numeric value that represents the metric.
fn gauge_value(&self) -> Option<f64>;

/// Returns labels (key-value pairs) for this metric.
/// These provide dimensional breakdown of the metric.
fn gauge_labels(&self) -> Vec<KeyValue>;
}

/// Trait for metrics that represent metadata/attributes without meaningful numeric values.
/// Implementing this trait allows the metric to be emitted as an OpenTelemetry Non-Monotonic Sum
/// (Prometheus Info metric) with value 1 to indicate the presence/existence of a system with
/// these attributes.
///
/// This follows the [OpenTelemetry Prometheus compatibility specification](https://opentelemetry.io/docs/specs/otel/compatibility/prometheus_and_openmetrics/#info):
/// - Info metrics are converted to OTLP Non-Monotonic Sum (not Gauge)
/// - The value of 1 is intended to be viewed as a count, which should be summed together
/// when aggregating away labels
/// - Metric names MUST have the `_info` suffix to comply with the specification
///
/// The actual information is conveyed through the metric attributes/labels, not the numeric value.
pub trait InfoMetric: OsMetric {
/// Returns labels (key-value pairs) for this metric.
/// These provide dimensional breakdown of the metric and contain the actual information.
fn info_labels(&self) -> Vec<KeyValue>;
}

mod cpu_info;
mod cron_job;
mod debian_package;
Expand Down
24 changes: 23 additions & 1 deletion rust/lit-core/lit-os-metrics-internal/src/models/cpu_info.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use super::OsMetric;
use super::{GaugeMetric, OsMetric};
use lit_observability::opentelemetry::KeyValue;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;

Expand Down Expand Up @@ -120,3 +121,24 @@ impl From<&CpuInfo> for BTreeMap<String, String> {
impl OsMetric for CpuInfo {
const NAME: &'static str = "os.cpu_info";
}

impl GaugeMetric for CpuInfo {
fn gauge_value(&self) -> Option<f64> {
self.load_percentage.map(|v| v as f64)
}

fn gauge_labels(&self) -> Vec<KeyValue> {
vec![
KeyValue::new("device_id", self.device_id.clone()),
KeyValue::new("model", self.model.clone()),
KeyValue::new("manufacturer", self.manufacturer.clone()),
KeyValue::new("processor_type", self.processor_type.clone()),
KeyValue::new("number_of_cores", self.number_of_cores.clone()),
KeyValue::new(
"logical_processors",
self.logical_processors.map(|v| v.to_string()).unwrap_or_default(),
),
KeyValue::new("socket_designation", self.socket_designation.clone()),
]
}
}
26 changes: 21 additions & 5 deletions rust/lit-core/lit-os-metrics-internal/src/models/cron_job.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use super::OsMetric;
use super::{InfoMetric, OsMetric};
use lit_observability::opentelemetry::KeyValue;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;

Expand Down Expand Up @@ -28,6 +29,25 @@ pub struct CronJob {
pub query_time: Option<usize>,
}

impl OsMetric for CronJob {
const NAME: &'static str = "os.cron_jobs_info";
}

impl InfoMetric for CronJob {
fn info_labels(&self) -> Vec<KeyValue> {
vec![
KeyValue::new("command", self.command.clone()),
KeyValue::new("cron_file", self.cron_file.clone()),
KeyValue::new("day_of_month", self.day_of_month.clone()),
KeyValue::new("day_of_week", self.day_of_week.clone()),
KeyValue::new("event", self.event.clone()),
KeyValue::new("hour", self.hour.clone()),
KeyValue::new("minute", self.minute.clone()),
KeyValue::new("month", self.month.clone()),
]
}
}

impl TryFrom<&BTreeMap<String, String>> for CronJob {
type Error = String;

Expand Down Expand Up @@ -75,7 +95,3 @@ impl From<&CronJob> for BTreeMap<String, String> {
map
}
}

impl OsMetric for CronJob {
const NAME: &'static str = "os.cron_jobs";
}
26 changes: 21 additions & 5 deletions rust/lit-core/lit-os-metrics-internal/src/models/debian_package.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use super::OsMetric;
use super::{InfoMetric, OsMetric};
use lit_observability::opentelemetry::KeyValue;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;

Expand Down Expand Up @@ -27,6 +28,25 @@ pub struct DebianPackage {
pub version: String,
}

impl OsMetric for DebianPackage {
const NAME: &'static str = "os.installed_debian_packages_info";
}

impl InfoMetric for DebianPackage {
fn info_labels(&self) -> Vec<KeyValue> {
vec![
KeyValue::new("arch", self.arch.clone()),
KeyValue::new("name", self.name.clone()),
KeyValue::new("package_source", self.package_source.clone()),
KeyValue::new("priority", self.priority.clone()),
KeyValue::new("revision", self.revision.clone()),
KeyValue::new("section", self.section.clone()),
KeyValue::new("version", self.version.clone()),
KeyValue::new("size", self.size.map(|v| v.to_string()).unwrap_or_default()),
]
}
}

impl TryFrom<&BTreeMap<String, String>> for DebianPackage {
type Error = String;

Expand Down Expand Up @@ -74,7 +94,3 @@ impl From<&DebianPackage> for BTreeMap<String, String> {
map
}
}

impl OsMetric for DebianPackage {
const NAME: &'static str = "os.installed_debian_packages";
}
27 changes: 26 additions & 1 deletion rust/lit-core/lit-os-metrics-internal/src/models/disk_info.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use crate::OsMetric;
use crate::{GaugeMetric, OsMetric};
use lit_observability::opentelemetry::KeyValue;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;

Expand Down Expand Up @@ -85,3 +86,27 @@ impl From<&DiskInfo> for BTreeMap<String, String> {
impl OsMetric for DiskInfo {
const NAME: &'static str = "os.disk_info";
}

impl GaugeMetric for DiskInfo {
fn gauge_value(&self) -> Option<f64> {
self.free_percent
}

fn gauge_labels(&self) -> Vec<KeyValue> {
vec![
KeyValue::new("device", self.device.clone()),
KeyValue::new("path", self.path.clone()),
KeyValue::new("encrypted", self.encrypted.clone()),
KeyValue::new("encryption_status", self.encryption_status.clone()),
KeyValue::new("free_gb", self.free_gb.map(|v| v.to_string()).unwrap_or_default()),
KeyValue::new(
"disk_gb_read",
self.disk_gb_read.map(|v| v.to_string()).unwrap_or_default(),
),
KeyValue::new(
"disk_gb_written",
self.disk_gb_written.map(|v| v.to_string()).unwrap_or_default(),
),
]
}
}
16 changes: 14 additions & 2 deletions rust/lit-core/lit-os-metrics-internal/src/models/docker.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use super::OsMetric;
use super::{InfoMetric, OsMetric};
use lit_observability::opentelemetry::KeyValue;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;

Expand Down Expand Up @@ -145,7 +146,18 @@ impl From<&DockerRunningContainers> for BTreeMap<String, String> {
}

impl OsMetric for DockerRunningContainers {
const NAME: &'static str = "os.running_containers";
const NAME: &'static str = "os.running_containers_info";
}

impl InfoMetric for DockerRunningContainers {
fn info_labels(&self) -> Vec<KeyValue> {
vec![
KeyValue::new("container_name", self.container_name.clone()),
KeyValue::new("image_name", self.image_name.clone()),
KeyValue::new("status", self.status.clone()),
KeyValue::new("container_state", self.container_state.clone()),
]
}
}

/// The structure of a docker container label
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use super::OsMetric;
use super::{InfoMetric, OsMetric};
use lit_observability::opentelemetry::KeyValue;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;

Expand Down Expand Up @@ -161,5 +162,26 @@ impl From<&EstablishedOutbound> for BTreeMap<String, String> {
}

impl OsMetric for EstablishedOutbound {
const NAME: &'static str = "os.established_outbound";
const NAME: &'static str = "os.established_outbound_info";
}

impl InfoMetric for EstablishedOutbound {
fn info_labels(&self) -> Vec<KeyValue> {
vec![
KeyValue::new("dest_connection_ip", self.dest_connection_ip.clone()),
KeyValue::new(
"dest_connection_port",
self.dest_connection_port.map(|v| v.to_string()).unwrap_or_default(),
),
KeyValue::new("src_connection_ip", self.src_connection_ip.clone()),
KeyValue::new(
"src_connection_port",
self.src_connection_port.map(|v| v.to_string()).unwrap_or_default(),
),
KeyValue::new("transport", self.transport.clone()),
KeyValue::new("family", self.family.clone()),
KeyValue::new("username", self.username.clone()),
KeyValue::new("name", self.name.clone()),
]
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use super::OsMetric;
use super::{InfoMetric, OsMetric};
use lit_observability::opentelemetry::KeyValue;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;

Expand All @@ -18,6 +19,20 @@ pub struct InterfaceAddress {
pub query_time: Option<usize>,
}

impl OsMetric for InterfaceAddress {
const NAME: &'static str = "os.interface_addresses_info";
}

impl InfoMetric for InterfaceAddress {
fn info_labels(&self) -> Vec<KeyValue> {
vec![
KeyValue::new("address", self.address.clone()),
KeyValue::new("interface", self.interface.clone()),
KeyValue::new("mac", self.mac.clone()),
]
}
}

impl TryFrom<&BTreeMap<String, String>> for InterfaceAddress {
type Error = String;

Expand Down Expand Up @@ -55,7 +70,3 @@ impl From<&InterfaceAddress> for BTreeMap<String, String> {
map
}
}

impl OsMetric for InterfaceAddress {
const NAME: &'static str = "os.interface_addresses";
}
20 changes: 18 additions & 2 deletions rust/lit-core/lit-os-metrics-internal/src/models/iptables.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use crate::models::OsMetric;
use crate::models::{InfoMetric, OsMetric};
use lit_observability::opentelemetry::KeyValue;
use serde::Serialize;
use std::collections::BTreeMap;

Expand Down Expand Up @@ -47,7 +48,22 @@ pub struct IptablesRule {
}

impl OsMetric for IptablesRule {
const NAME: &'static str = "iptables";
const NAME: &'static str = "iptables_info";
}

impl InfoMetric for IptablesRule {
fn info_labels(&self) -> Vec<KeyValue> {
vec![
KeyValue::new("filter_chain", self.filter_chain.clone()),
KeyValue::new("filter_policy", self.filter_policy.clone()),
KeyValue::new("filter_target", self.filter_target.clone()),
KeyValue::new("filter_protocol", self.filter_protocol.clone()),
KeyValue::new("nat_chain", self.nat_chain.clone()),
KeyValue::new("nat_policy", self.nat_policy.clone()),
KeyValue::new("nat_target", self.nat_target.clone()),
KeyValue::new("nat_protocol", self.nat_protocol.clone()),
]
}
}

impl TryFrom<&BTreeMap<String, String>> for IptablesRule {
Expand Down
Loading
Loading