Add typed high-level ruleset and set API
This commit is contained in:
@@ -56,10 +56,21 @@ public sealed class NftablesClient : INftablesClient
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public NftValidationResult ValidateRuleset(NftRuleset ruleset, CancellationToken ct = default)
|
||||
{
|
||||
ct.ThrowIfCancellationRequested();
|
||||
return Validate(CreateTypedRequest(ruleset), ct);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<NftValidationResult> ValidateAsync(NftApplyRequest request, CancellationToken ct = default)
|
||||
=> Task.FromResult(Validate(request, ct));
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<NftValidationResult> ValidateRulesetAsync(NftRuleset ruleset, CancellationToken ct = default)
|
||||
=> Task.FromResult(ValidateRuleset(ruleset, ct));
|
||||
|
||||
/// <inheritdoc />
|
||||
public void Apply(NftApplyRequest request, CancellationToken ct = default)
|
||||
{
|
||||
@@ -68,6 +79,13 @@ public sealed class NftablesClient : INftablesClient
|
||||
_ = Execute(request, forceDryRun: null, ct);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public void ApplyRuleset(NftRuleset ruleset, CancellationToken ct = default)
|
||||
{
|
||||
ct.ThrowIfCancellationRequested();
|
||||
Apply(CreateTypedRequest(ruleset), ct);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task ApplyAsync(NftApplyRequest request, CancellationToken ct = default)
|
||||
{
|
||||
@@ -75,6 +93,13 @@ public sealed class NftablesClient : INftablesClient
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task ApplyRulesetAsync(NftRuleset ruleset, CancellationToken ct = default)
|
||||
{
|
||||
ApplyRuleset(ruleset, ct);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public NftSnapshot Snapshot(CancellationToken ct = default)
|
||||
{
|
||||
@@ -210,5 +235,8 @@ public sealed class NftablesClient : INftablesClient
|
||||
return false;
|
||||
}
|
||||
|
||||
private static NftApplyRequest CreateTypedRequest(NftRuleset ruleset)
|
||||
=> NftApplyRequest.FromText(NftRulesetRenderer.Render(ruleset), dryRun: false);
|
||||
|
||||
private sealed record CommandExecutionResult(string? Output, string? Error);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user