@push.rocks/smartnftables 4.3.1 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -216,17 +216,39 @@ export interface IManagedNftLocalTcpPortOwner {
216
216
  uid: number;
217
217
  }
218
218
 
219
+ /** One publication an allocation-pool guard admits into a pool: a flow whose original destination lies
220
+ * outside every listed pool, on `hostPort` (or the range `hostPort..hostPortEnd`), translated to exactly
221
+ * `targetAddress` and `targetPort`, and its replies, in the default conntrack zone. The guard checks
222
+ * no link and no uplink address: the scope that translates the flow (`hostTransit.publishedPorts`)
223
+ * binds those. Compile the same publication into the guard and the host-transit scope it crosses. */
224
+ export interface IManagedNftPoolGuardPublishedPort {
225
+ protocol: 'tcp' | 'udp';
226
+ /** Published port, 1–65535; each protocol and port is published at most once per guard. */
227
+ hostPort: number;
228
+ /** Optional last port of a published range, greater than `hostPort`; a range keeps every port,
229
+ * so `targetPort` must equal `hostPort`. Absent for one port, its only canonical form. */
230
+ hostPortEnd?: number;
231
+ targetPort: number;
232
+ /** Exact unicast address inside a listed pool that the publication is translated to. */
233
+ targetAddress: string;
234
+ }
235
+
219
236
  /** Host-wide IPv4 destination denial for caller-authenticated private allocation pools.
220
- * It has no link dependency; exact host grants are its only exceptions. It is not allocation-release or boot-order proof. */
237
+ * It has no link dependency; exact host grants and publications are its only exceptions. It is not
238
+ * allocation-release or boot-order proof. */
221
239
  export interface IManagedNftAllocationPoolGuardScopeV2 {
222
240
  kind: 'allocationPoolGuard';
223
241
  authorityDigest: string;
224
242
  /** Complete current pool list: 1–64 canonical, disjoint RFC1918 prefixes. */
225
243
  prefixes: string[];
226
- /** The only exceptions to the guard: exact host-origin flows whose `destinationAddress` lies in a
227
- * listed pool, and their replies. Absent and empty are the same canonical policy; at most 1024,
228
- * held in a named set behind a constant number of rules. */
244
+ /** Exceptions to the guard: exact host-origin flows whose `destinationAddress` lies in a listed
245
+ * pool, and their replies. Absent and empty are the same canonical policy; at most 1024, held in a
246
+ * named set behind a constant number of rules. */
229
247
  hostGrants?: IManagedNftHostGrant[];
248
+ /** Exceptions to the guard: publications translated from outside every listed pool into one, and
249
+ * their replies. Absent and empty are the same canonical policy, digest and compiled graph; at most
250
+ * 1024, held in a named set behind a constant number of rules. */
251
+ publishedPorts?: IManagedNftPoolGuardPublishedPort[];
230
252
  /** Optional host-wide loopback port ownership, compiled ahead of the guard in the same table.
231
253
  * Absent and empty are the same canonical policy, digest and compiled graph; at most 8, one per
232
254
  * exact address and port. */