Files
libnftables-dotnet/src/LibNftables/NftApplyRequest.cs
2026-03-11 01:40:27 +00:00

63 lines
2.2 KiB
C#

namespace LibNftables;
/// <summary>
/// Represents an apply/validate request source and execution settings.
/// </summary>
public sealed class NftApplyRequest
{
/// <summary>
/// Gets or sets ruleset command text source.
/// </summary>
/// <remarks>Exactly one of <see cref="RulesetText"/> or <see cref="RulesetFilePath"/> must be provided.</remarks>
public string? RulesetText { get; set; }
/// <summary>
/// Gets or sets ruleset file path source.
/// </summary>
/// <remarks>Exactly one of <see cref="RulesetText"/> or <see cref="RulesetFilePath"/> must be provided.</remarks>
public string? RulesetFilePath { get; set; }
/// <summary>
/// Gets or sets a value indicating whether execution should run in dry-run mode.
/// </summary>
public bool DryRun { get; set; }
/// <summary>
/// Gets or sets input parser flags.
/// </summary>
public NftInputFlags InputFlags { get; set; }
/// <summary>
/// Gets or sets output behavior flags.
/// </summary>
public NftOutputFlags OutputFlags { get; set; }
/// <summary>
/// Gets or sets debug flags.
/// </summary>
public NftDebugLevel DebugFlags { get; set; }
/// <summary>
/// Gets or sets optimize flags.
/// </summary>
public NftOptimizeFlags OptimizeFlags { get; set; }
/// <summary>
/// Creates a request from command text.
/// </summary>
/// <param name="rulesetText">Ruleset command text.</param>
/// <param name="dryRun">Whether the request should run in dry-run mode.</param>
/// <returns>A configured request instance.</returns>
public static NftApplyRequest FromText(string rulesetText, bool dryRun = false)
=> new() { RulesetText = rulesetText, DryRun = dryRun };
/// <summary>
/// Creates a request from a file path.
/// </summary>
/// <param name="rulesetFilePath">Path to file containing ruleset commands.</param>
/// <param name="dryRun">Whether the request should run in dry-run mode.</param>
/// <returns>A configured request instance.</returns>
public static NftApplyRequest FromFile(string rulesetFilePath, bool dryRun = false)
=> new() { RulesetFilePath = rulesetFilePath, DryRun = dryRun };
}