Files
libnftables-dotnet/docs/low-level-bindings-reference.md
2026-03-11 01:40:27 +00:00

91 lines
2.4 KiB
Markdown

# Low-Level Binding Reference (`LibNftables.Bindings.Generated`)
This document describes the generated low-level .NET bindings for `libnftables`.
## Generation policy
- Source of truth: `/usr/include/nftables/libnftables.h`
- Generator: SWIG C# (`./eng/regen-bindings.sh`)
- Generated files are under `src/LibNftables.Bindings/Generated/`.
- Do not manually edit generated files. Regenerate instead.
## Primary generated types
- `libnftables`: static entrypoint for native calls and exported constants.
- `SWIGTYPE_p_nft_ctx`: opaque native context pointer wrapper.
- `nft_debug_level`: generated native debug enum.
- `nft_optimize_flags`: generated native optimize enum.
## API groups
### 1) Context lifecycle
- `nft_ctx_new(uint flags)`
- `nft_ctx_free(SWIGTYPE_p_nft_ctx ctx)`
These allocate/free the native `nft_ctx` handle.
### 2) Context behavior flags
- Dry-run:
- `nft_ctx_get_dry_run(...)`
- `nft_ctx_set_dry_run(...)`
- Optimize:
- `nft_ctx_get_optimize(...)`
- `nft_ctx_set_optimize(...)`
- Input flags:
- `nft_ctx_input_get_flags(...)`
- `nft_ctx_input_set_flags(...)`
- Output flags:
- `nft_ctx_output_get_flags(...)`
- `nft_ctx_output_set_flags(...)`
- Debug flags:
- `nft_ctx_output_get_debug(...)`
- `nft_ctx_output_set_debug(...)`
### 3) Buffered output/error capture
- Output buffer:
- `nft_ctx_buffer_output(...)`
- `nft_ctx_unbuffer_output(...)`
- `nft_ctx_get_output_buffer(...)`
- Error buffer:
- `nft_ctx_buffer_error(...)`
- `nft_ctx_unbuffer_error(...)`
- `nft_ctx_get_error_buffer(...)`
### 4) Include paths and variables
- Include paths:
- `nft_ctx_add_include_path(...)`
- `nft_ctx_clear_include_paths(...)`
- Variables:
- `nft_ctx_add_var(...)`
- `nft_ctx_clear_vars(...)`
### 5) Command execution
- `nft_run_cmd_from_buffer(...)`
- `nft_run_cmd_from_filename(...)`
These are the low-level command execution entrypoints.
## Constants exposed via generated class
`libnftables` exposes native constants as static readonly fields, including:
- `NFT_CTX_DEFAULT`
- `NFT_CTX_INPUT_*`
- `NFT_CTX_OUTPUT_*`
Use the high-level enums in `LibNftables` when possible.
## Relation to high-level API
Use low-level generated bindings only when you need direct native semantics.
For application code, prefer:
- `NftablesClient` / `INftablesClient` for workflow operations (validate/apply/snapshot/restore)
- `NftContext` for advanced managed control over native context settings