@blockcast/mmt-base 1.0.1 → 2.0.0-main.11614d24ad32

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.
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from './ntp-short.js';
4
4
  export * from './signalling.js';
5
5
  export * from './serial-number.js';
6
6
  export * from './fec-block-profile.js';
7
+ export * from './ip-address.js';
7
8
  export * from './multicast-catalog.js';
8
9
  export * from './fec-catalog.js';
9
10
  export * from './fec-bindings.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA"}
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ export * from './ntp-short.js';
4
4
  export * from './signalling.js';
5
5
  export * from './serial-number.js';
6
6
  export * from './fec-block-profile.js';
7
+ export * from './ip-address.js';
7
8
  export * from './multicast-catalog.js';
8
9
  export * from './fec-catalog.js';
9
10
  export * from './fec-bindings.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * IP address literals as draft-ramadan-moq-multicast-02 7.2.6 requires them of
3
+ * `sourceAddress`, `groupAddress` and `senderAddress`: the IPv4address or
4
+ * IPv6address form of RFC 3986 3.2.2. Dotted decimal with no leading zero in
5
+ * any dec-octet (the ls32 tail of an IPv6 literal included); IPv6 h16 groups
6
+ * may carry leading zeros in either hex case; no brackets, no zone identifier,
7
+ * never a name. Draft: Blockcast/moqcast-draft@5f49172.
8
+ *
9
+ * Addresses compare as IP addresses, never as strings, and an address of one
10
+ * family never matches one of the other: an IPv4-mapped IPv6 address is of the
11
+ * IPv6 family, so it parses to 16 octets and never equals its IPv4 address.
12
+ */
13
+ /** The octets of an RFC 3986 IPv4address (4) or IPv6address (16), or `undefined`. */
14
+ export declare function parseIpAddressLiteral(text: unknown): Uint8Array | undefined;
15
+ /** Whether two address literals name one address of one family. Unparseable never matches. */
16
+ export declare function sameIpAddress(a: unknown, b: unknown): boolean;
17
+ /**
18
+ * One spelling per address: dotted decimal for IPv4, RFC 5952 for IPv6
19
+ * (lowercase, no leading zeros, the longest run of two or more zero groups,
20
+ * leftmost on a tie, as "::"; an IPv4-mapped address in hex like any other).
21
+ * `undefined` for text that is not an address literal.
22
+ */
23
+ export declare function canonicalIpAddress(text: unknown): string | undefined;
24
+ //# sourceMappingURL=ip-address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ip-address.d.ts","sourceRoot":"","sources":["../src/ip-address.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAoDH,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAK3E;AAED,8FAA8F;AAC9F,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAI7D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAmBpE"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * IP address literals as draft-ramadan-moq-multicast-02 7.2.6 requires them of
3
+ * `sourceAddress`, `groupAddress` and `senderAddress`: the IPv4address or
4
+ * IPv6address form of RFC 3986 3.2.2. Dotted decimal with no leading zero in
5
+ * any dec-octet (the ls32 tail of an IPv6 literal included); IPv6 h16 groups
6
+ * may carry leading zeros in either hex case; no brackets, no zone identifier,
7
+ * never a name. Draft: Blockcast/moqcast-draft@5f49172.
8
+ *
9
+ * Addresses compare as IP addresses, never as strings, and an address of one
10
+ * family never matches one of the other: an IPv4-mapped IPv6 address is of the
11
+ * IPv6 family, so it parses to 16 octets and never equals its IPv4 address.
12
+ */
13
+ const DEC_OCTET = /^(?:0|[1-9]\d{0,2})$/;
14
+ const H16 = /^[0-9A-Fa-f]{1,4}$/;
15
+ function parseIpv4(text) {
16
+ const fields = text.split(".");
17
+ if (fields.length !== 4)
18
+ return undefined;
19
+ const octets = [];
20
+ for (const field of fields) {
21
+ if (!DEC_OCTET.test(field))
22
+ return undefined;
23
+ const value = Number(field);
24
+ if (value > 255)
25
+ return undefined;
26
+ octets.push(value);
27
+ }
28
+ return octets;
29
+ }
30
+ function parseIpv6(text) {
31
+ const halves = text.split("::");
32
+ if (halves.length > 2)
33
+ return undefined;
34
+ const groupsOf = (part) => (part === "" ? [] : part.split(":"));
35
+ const left = groupsOf(halves[0]);
36
+ const right = halves.length === 2 ? groupsOf(halves[1]) : [];
37
+ const words = [];
38
+ const all = [...left, ...right];
39
+ // The ls32 dotted tail ends the literal: the last group, never before "::".
40
+ const last = halves.length === 2 && right.length === 0 ? -1 : all.length - 1;
41
+ for (let index = 0; index < all.length; index++) {
42
+ const group = all[index];
43
+ if (index === last && group.includes(".")) {
44
+ const v4 = parseIpv4(group);
45
+ if (!v4)
46
+ return undefined;
47
+ words.push([(v4[0] << 8) | v4[1], (v4[2] << 8) | v4[3]]);
48
+ }
49
+ else if (H16.test(group)) {
50
+ words.push([Number.parseInt(group, 16)]);
51
+ }
52
+ else {
53
+ return undefined;
54
+ }
55
+ }
56
+ const leftWords = words.slice(0, left.length).flat();
57
+ const rightWords = words.slice(left.length).flat();
58
+ const missing = 8 - leftWords.length - rightWords.length;
59
+ if (halves.length === 2 ? missing < 1 : missing !== 0)
60
+ return undefined;
61
+ const out = new Uint8Array(16);
62
+ [...leftWords, ...new Array(missing).fill(0), ...rightWords].forEach((word, index) => {
63
+ out[index * 2] = word >> 8;
64
+ out[index * 2 + 1] = word & 0xff;
65
+ });
66
+ return out;
67
+ }
68
+ /** The octets of an RFC 3986 IPv4address (4) or IPv6address (16), or `undefined`. */
69
+ export function parseIpAddressLiteral(text) {
70
+ if (typeof text !== "string")
71
+ return undefined;
72
+ if (text.includes(":"))
73
+ return parseIpv6(text);
74
+ const v4 = parseIpv4(text);
75
+ return v4 ? Uint8Array.from(v4) : undefined;
76
+ }
77
+ /** Whether two address literals name one address of one family. Unparseable never matches. */
78
+ export function sameIpAddress(a, b) {
79
+ const x = parseIpAddressLiteral(a);
80
+ const y = parseIpAddressLiteral(b);
81
+ return x !== undefined && y !== undefined && x.length === y.length && x.every((octet, index) => octet === y[index]);
82
+ }
83
+ /**
84
+ * One spelling per address: dotted decimal for IPv4, RFC 5952 for IPv6
85
+ * (lowercase, no leading zeros, the longest run of two or more zero groups,
86
+ * leftmost on a tie, as "::"; an IPv4-mapped address in hex like any other).
87
+ * `undefined` for text that is not an address literal.
88
+ */
89
+ export function canonicalIpAddress(text) {
90
+ const bytes = parseIpAddressLiteral(text);
91
+ if (!bytes)
92
+ return undefined;
93
+ if (bytes.length === 4)
94
+ return bytes.join(".");
95
+ const words = Array.from({ length: 8 }, (_, index) => (bytes[index * 2] << 8) | bytes[index * 2 + 1]);
96
+ let bestStart = -1;
97
+ let bestLength = 1;
98
+ for (let start = 0; start < 8;) {
99
+ let end = start;
100
+ while (end < 8 && words[end] === 0)
101
+ end++;
102
+ if (end - start > bestLength) {
103
+ bestStart = start;
104
+ bestLength = end - start;
105
+ }
106
+ start = end === start ? start + 1 : end;
107
+ }
108
+ const hex = words.map(word => word.toString(16));
109
+ if (bestStart < 0)
110
+ return hex.join(":");
111
+ return `${hex.slice(0, bestStart).join(":")}::${hex.slice(bestStart + bestLength).join(":")}`;
112
+ }
113
+ //# sourceMappingURL=ip-address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ip-address.js","sourceRoot":"","sources":["../src/ip-address.ts"],"names":[],"mappings":"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"}
package/dist/mmtp.d.ts CHANGED
@@ -293,4 +293,29 @@ export declare function parseMoqRepairFrame(frame: Uint8Array): MoqRepairFrame |
293
293
  * then identical to `parseMoqRepairFrame(frame)`.
294
294
  */
295
295
  export declare function parseMoqRepairFrameWithHeader(frame: Uint8Array, header: MMTPHeader): MoqRepairFrame | null;
296
+ /**
297
+ * Why a repair object of an mmtp track is discarded on admission:
298
+ * `repairLength` -- the object is not exactly 12 + 13 + T bytes with a
299
+ * 12-byte MMTP header (C = 0, X = 0; draft-ramadan-moq-mmt-02 7.3, judged
300
+ * before any Repair FEC Payload ID field is read); `repairRsId` -- RS_ID is not
301
+ * below RSB_length, under every scheme; `repairSchemeBound` -- the object
302
+ * breaks its scheme's bound: reed-solomon SSB_length + RSB_length > 255, which
303
+ * also caps RS_ID at 253, or raptorq SSB_length + RSB_length - 1 > 2^24 - 1
304
+ * (draft-ramadan-moq-fec-core-00 7.5 and 10.3, -block-codes-00 7).
305
+ */
306
+ export type RepairObjectReject = 'repairLength' | 'repairRsId' | 'repairSchemeBound';
307
+ /**
308
+ * Admission of one mmtp repair object under its instance's T and scheme. The
309
+ * caller names the instance (by the repair track it subscribed); nothing here
310
+ * infers it from the fields. `repairRsId` and `repairSchemeBound` carry the
311
+ * frame so the caller can first route an RSB_length below a held layer's
312
+ * O_i + P_i to the 7.3.2 stop, which takes precedence over the discard.
313
+ * `null`: not an iso repair packet, or SSB_length 0.
314
+ */
315
+ export declare function admitMmtpRepairObject(packet: Uint8Array, header: MMTPHeader, symbolSize: number, algorithm: string | undefined): {
316
+ frame: MoqRepairFrame;
317
+ reject?: Exclude<RepairObjectReject, 'repairLength'>;
318
+ } | {
319
+ reject: 'repairLength';
320
+ } | null;
296
321
  //# sourceMappingURL=mmtp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mmtp.d.ts","sourceRoot":"","sources":["../src/mmtp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mmtp.d.ts","sourceRoot":"","sources":["../src/mmtp.ts"],"names":[],"mappings":"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"}
package/dist/mmtp.js CHANGED
@@ -611,13 +611,12 @@ export function parseMoqRepairFrame(frame) {
611
611
  export function parseMoqRepairFrameWithHeader(frame, header) {
612
612
  return moqRepairFrameFrom(frame, readRepairFecPayloadIdFields(frame, header));
613
613
  }
614
- function moqRepairFrameFrom(frame, repairId) {
614
+ function moqRepairFrameFrom(frame, repairId, checkRsId = true) {
615
615
  if (!repairId)
616
616
  return null;
617
617
  const symbolData = frame.subarray(repairId.dataOffset);
618
- if (repairId.rsbLength === 0 ||
619
- repairId.ssbLength === 0 ||
620
- repairId.rsId >= repairId.rsbLength ||
618
+ if (repairId.ssbLength === 0 ||
619
+ (checkRsId && repairId.rsId >= repairId.rsbLength) ||
621
620
  symbolData.length === 0)
622
621
  return null;
623
622
  return {
@@ -629,6 +628,31 @@ function moqRepairFrameFrom(frame, repairId) {
629
628
  symbolData,
630
629
  };
631
630
  }
631
+ /**
632
+ * Admission of one mmtp repair object under its instance's T and scheme. The
633
+ * caller names the instance (by the repair track it subscribed); nothing here
634
+ * infers it from the fields. `repairRsId` and `repairSchemeBound` carry the
635
+ * frame so the caller can first route an RSB_length below a held layer's
636
+ * O_i + P_i to the 7.3.2 stop, which takes precedence over the discard.
637
+ * `null`: not an iso repair packet, or SSB_length 0.
638
+ */
639
+ export function admitMmtpRepairObject(packet, header, symbolSize, algorithm) {
640
+ if (header.packetType !== PACKET_TYPE_REPAIR || header.fecType !== 2)
641
+ return null;
642
+ if (header.headerLength !== MMTP_HEADER_SIZE || packet.length !== MMTP_HEADER_SIZE + REPAIR_FEC_PID_SIZE + symbolSize) {
643
+ return { reject: 'repairLength' };
644
+ }
645
+ const frame = moqRepairFrameFrom(packet, readRepairFecPayloadIdFields(packet, header), false);
646
+ if (!frame)
647
+ return null;
648
+ if (frame.rsId >= frame.rsbLength)
649
+ return { frame, reject: 'repairRsId' };
650
+ const blockSymbols = frame.ssbLength + frame.rsbLength;
651
+ if (algorithm === 'reed-solomon' ? blockSymbols > 255 : algorithm === 'raptorq' && blockSymbols - 1 > 0xffffff) {
652
+ return { frame, reject: 'repairSchemeBound' };
653
+ }
654
+ return { frame };
655
+ }
632
656
  // The signalling-message parsers (9.3.4.2 payload header, AL-FEC message,
633
657
  // PA/MPT) live in ./signalling.ts.
634
658
  //# sourceMappingURL=mmtp.js.map
package/dist/mmtp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mmtp.js","sourceRoot":"","sources":["../src/mmtp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mmtp.js","sourceRoot":"","sources":["../src/mmtp.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  /**
2
- * The draft-ramadan-moq-multicast-01 endpoint and `auth` rules, written once
3
- * for both sides of the catalog: `validateCmsfMmtpCatalog` in
4
- * `@blockcast/mmt-container` throws the first issue, and the receivers in
5
- * `@blockcast/mmt-transport` ignore every endpoint an issue names (all of
6
- * them when the issue is catalog-level). It lives here because mmt-base is
7
- * the only package both depend on.
2
+ * The draft-ramadan-moq-multicast-02 endpoint and `auth` rules, written once
3
+ * for every receiver of the catalog: the receivers in `@blockcast/mmt-transport`
4
+ * and the container resolver ignore every endpoint an issue names (all of
5
+ * them when the issue is catalog-level, which leaves the broadcast no data).
6
+ * `validateCmsfMmtpCatalog` reports none of them as a catalog fault, so MoQ
7
+ * unicast stays usable. It lives here because mmt-base is the only package
8
+ * every receiver depends on.
8
9
  *
9
- * Draft: Blockcast/moqcast-draft@fd962fd73d21ed281b60219c11ea61cc9e4e91c4
10
- * (PR #2 head; normative text equal to 3162ef93), sections 4.1 and 7.2.6.
10
+ * Draft: Blockcast/moqcast-draft@5f49172 (draft-ramadan-moq-multicast-02 as
11
+ * posted 2026-11-02), sections 4.1 and 7.2.6.
11
12
  */
12
13
  export type MulticastJoinMode = "ssm" | "asm";
13
14
  /** An endpoint's join mode and `S` (4.1): `sourceAddress` on SSM,
@@ -28,6 +29,24 @@ export interface MulticastCatalogIssue {
28
29
  }
29
30
  /** Canonical unpadded base64url of exactly 32 octets. */
30
31
  export declare const ED25519_PUBLIC_KEY_BASE64URL: RegExp;
32
+ /** Defaults of an endpoint's `auth.maxAuthDelayMs` and `auth.manifestTimerMs` (7.2.6). */
33
+ export declare const BCP_DEFAULT_MAX_AUTH_DELAY_MS = 200;
34
+ export declare const BCP_DEFAULT_MANIFEST_TIMER_MS = 20;
35
+ /** The timing and mirror members of an endpoint's `auth` as a receiver uses them. */
36
+ export interface EndpointAuthTiming {
37
+ maxAuthDelayMs: number;
38
+ manifestTimerMs: number;
39
+ manifestTrack?: string;
40
+ }
41
+ /**
42
+ * 7.2.6: a `maxAuthDelayMs` outside 50..1000 is clamped to the nearer bound;
43
+ * one that is not a JSON number, or an in-range one that is not an integer,
44
+ * is absent (200). A `manifestTimerMs` that is not a JSON number, or an
45
+ * integer-free value of at least 1, is absent (20); one below 1 makes the
46
+ * endpoint ignored, so it is returned here as is for the caller to refuse. A
47
+ * `manifestTrack` that is not a string is absent.
48
+ */
49
+ export declare function endpointAuthTiming(auth: unknown): EndpointAuthTiming;
31
50
  /**
32
51
  * Join mode and `S` of one endpoint, or `undefined` when its fields disagree
33
52
  * and a receiver must ignore it (4.1). `sourceAddress` alone selects the mode;
@@ -50,7 +69,7 @@ export declare const CATALOG_NAMESPACE: unique symbol;
50
69
  */
51
70
  export declare function withCatalogNamespace<T extends object>(catalog: T, namespace: string): T;
52
71
  /**
53
- * Every draft -01 4.1 / 7.2.6 violation in `catalog.multicast`, in document
72
+ * Every draft -02 4.1 / 7.2.6 violation in `catalog.multicast`, in document
54
73
  * order. Packet-id, group-address and track-existence rules are not here; the
55
74
  * container validator and the receivers already check those.
56
75
  *
@@ -1 +1 @@
1
- {"version":3,"file":"multicast-catalog.d.ts","sourceRoot":"","sources":["../src/multicast-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,CAAC;AAE9C;uEACuE;AACvE,MAAM,WAAW,uBAAuB;IACvC,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,yBAAyB,GAClC,gBAAgB,GAChB,oBAAoB,GACpB,yBAAyB,GACzB,iBAAiB,CAAC;AAErB,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,yBAAyB,CAAC;IAChC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB;sEACkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,yDAAyD;AACzD,eAAO,MAAM,4BAA4B,QAA0C,CAAC;AA4BpF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,CAY9F;AAqFD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,MAA2D,CAAC;AAEnG;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,CAEvF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GACzC,qBAAqB,EAAE,CAkIzB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GACzC,WAAW,CAAC,MAAM,CAAC,CAOrB"}
1
+ {"version":3,"file":"multicast-catalog.d.ts","sourceRoot":"","sources":["../src/multicast-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,CAAC;AAE9C;uEACuE;AACvE,MAAM,WAAW,uBAAuB;IACvC,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,yBAAyB,GAClC,gBAAgB,GAChB,oBAAoB,GACpB,yBAAyB,GACzB,iBAAiB,CAAC;AAErB,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,yBAAyB,CAAC;IAChC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB;sEACkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,yDAAyD;AACzD,eAAO,MAAM,4BAA4B,QAA0C,CAAC;AAyBpF,0FAA0F;AAC1F,eAAO,MAAM,6BAA6B,MAAM,CAAC;AACjD,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,qFAAqF;AACrF,MAAM,WAAW,kBAAkB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,CAgBpE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,CAY9F;AA8ED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,MAA2D,CAAC;AAEnG;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,CAEvF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GACzC,qBAAqB,EAAE,CAuIzB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GACzC,WAAW,CAAC,MAAM,CAAC,CAOrB"}
@@ -1,21 +1,24 @@
1
1
  /**
2
- * The draft-ramadan-moq-multicast-01 endpoint and `auth` rules, written once
3
- * for both sides of the catalog: `validateCmsfMmtpCatalog` in
4
- * `@blockcast/mmt-container` throws the first issue, and the receivers in
5
- * `@blockcast/mmt-transport` ignore every endpoint an issue names (all of
6
- * them when the issue is catalog-level). It lives here because mmt-base is
7
- * the only package both depend on.
2
+ * The draft-ramadan-moq-multicast-02 endpoint and `auth` rules, written once
3
+ * for every receiver of the catalog: the receivers in `@blockcast/mmt-transport`
4
+ * and the container resolver ignore every endpoint an issue names (all of
5
+ * them when the issue is catalog-level, which leaves the broadcast no data).
6
+ * `validateCmsfMmtpCatalog` reports none of them as a catalog fault, so MoQ
7
+ * unicast stays usable. It lives here because mmt-base is the only package
8
+ * every receiver depends on.
8
9
  *
9
- * Draft: Blockcast/moqcast-draft@fd962fd73d21ed281b60219c11ea61cc9e4e91c4
10
- * (PR #2 head; normative text equal to 3162ef93), sections 4.1 and 7.2.6.
10
+ * Draft: Blockcast/moqcast-draft@5f49172 (draft-ramadan-moq-multicast-02 as
11
+ * posted 2026-11-02), sections 4.1 and 7.2.6.
11
12
  */
13
+ import { parseIpAddressLiteral } from "./ip-address.js";
12
14
  /** Canonical unpadded base64url of exactly 32 octets. */
13
15
  export const ED25519_PUBLIC_KEY_BASE64URL = /^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$/;
14
16
  const UINT32_MAX = 0xffff_ffff;
15
17
  const AUTH_MEMBERS = new Set(["scheme", "version", "sig", "keys", "minEpoch"]);
16
18
  const KEY_MEMBERS = new Set(["kid", "publicKey", "firstEpoch"]);
19
+ // Draft -01's separate record port is no member here: a leftover one is an
20
+ // unknown member, so the endpoint is ignored (libmmt policy, fails closed).
17
21
  const ENDPOINT_AUTH_MEMBERS = new Set([
18
- "manifestPort",
19
22
  "streamId",
20
23
  "senderAddress",
21
24
  "maxAuthDelayMs",
@@ -25,12 +28,40 @@ const ENDPOINT_AUTH_MEMBERS = new Set([
25
28
  function isObject(value) {
26
29
  return typeof value === "object" && value !== null && !Array.isArray(value);
27
30
  }
28
- function isNonEmptyString(value) {
29
- return typeof value === "string" && value.trim().length > 0;
30
- }
31
31
  function isIntegerIn(value, min, max) {
32
32
  return Number.isSafeInteger(value) && value >= min && value <= max;
33
33
  }
34
+ /** Defaults of an endpoint's `auth.maxAuthDelayMs` and `auth.manifestTimerMs` (7.2.6). */
35
+ export const BCP_DEFAULT_MAX_AUTH_DELAY_MS = 200;
36
+ export const BCP_DEFAULT_MANIFEST_TIMER_MS = 20;
37
+ function isFiniteNumber(value) {
38
+ return typeof value === "number" && Number.isFinite(value);
39
+ }
40
+ /**
41
+ * 7.2.6: a `maxAuthDelayMs` outside 50..1000 is clamped to the nearer bound;
42
+ * one that is not a JSON number, or an in-range one that is not an integer,
43
+ * is absent (200). A `manifestTimerMs` that is not a JSON number, or an
44
+ * integer-free value of at least 1, is absent (20); one below 1 makes the
45
+ * endpoint ignored, so it is returned here as is for the caller to refuse. A
46
+ * `manifestTrack` that is not a string is absent.
47
+ */
48
+ export function endpointAuthTiming(auth) {
49
+ const record = isObject(auth) ? auth : {};
50
+ const delay = record["maxAuthDelayMs"];
51
+ const timer = record["manifestTimerMs"];
52
+ const track = record["manifestTrack"];
53
+ const maxAuthDelayMs = !isFiniteNumber(delay)
54
+ ? BCP_DEFAULT_MAX_AUTH_DELAY_MS
55
+ : delay < 50 ? 50 : delay > 1000 ? 1000 : Number.isInteger(delay) ? delay : BCP_DEFAULT_MAX_AUTH_DELAY_MS;
56
+ const manifestTimerMs = !isFiniteNumber(timer)
57
+ ? BCP_DEFAULT_MANIFEST_TIMER_MS
58
+ : timer < 1 || Number.isSafeInteger(timer) ? timer : BCP_DEFAULT_MANIFEST_TIMER_MS;
59
+ return {
60
+ maxAuthDelayMs,
61
+ manifestTimerMs,
62
+ ...(typeof track === "string" && track.length > 0 ? { manifestTrack: track } : {}),
63
+ };
64
+ }
34
65
  /**
35
66
  * Join mode and `S` of one endpoint, or `undefined` when its fields disagree
36
67
  * and a receiver must ignore it (4.1). `sourceAddress` alone selects the mode;
@@ -41,7 +72,7 @@ export function multicastEndpointSource(endpoint) {
41
72
  if (!isObject(endpoint))
42
73
  return undefined;
43
74
  const sourceAddress = endpoint["sourceAddress"];
44
- if (sourceAddress !== undefined && !isNonEmptyString(sourceAddress))
75
+ if (sourceAddress !== undefined && !parseIpAddressLiteral(sourceAddress))
45
76
  return undefined;
46
77
  const mode = sourceAddress === undefined ? "asm" : "ssm";
47
78
  const protocol = endpoint["protocol"];
@@ -53,7 +84,7 @@ export function multicastEndpointSource(endpoint) {
53
84
  return senderAddress === undefined ? { mode, source: sourceAddress } : undefined;
54
85
  if (auth === undefined)
55
86
  return { mode };
56
- return isNonEmptyString(senderAddress) ? { mode, source: senderAddress } : undefined;
87
+ return parseIpAddressLiteral(senderAddress) ? { mode, source: senderAddress } : undefined;
57
88
  }
58
89
  function authIssues(auth) {
59
90
  const base = "$.multicast.auth";
@@ -64,12 +95,12 @@ function authIssues(auth) {
64
95
  return issue("", "auth must be an object");
65
96
  const unknown = Object.keys(auth).filter(key => !AUTH_MEMBERS.has(key));
66
97
  if (unknown.length > 0) {
67
- return issue("", `auth has unknown member(s) ${unknown.join(", ")}; draft -01 7.2.6 defines scheme, version, sig, keys and minEpoch`);
98
+ return issue("", `auth has unknown member(s) ${unknown.join(", ")}; draft -02 7.2.6 defines scheme, version, sig, keys and minEpoch`);
68
99
  }
69
100
  if (auth["scheme"] !== "bc-provenance")
70
101
  return issue(".scheme", 'scheme must be "bc-provenance"');
71
102
  if (auth["version"] !== 2)
72
- return issue(".version", "version must be 2 (bc-provenance version 2, draft -01 7.2)");
103
+ return issue(".version", "version must be 2 (bc-provenance version 2, draft -02 7.2)");
73
104
  if (auth["sig"] !== "ed25519")
74
105
  return issue(".sig", 'sig must be "ed25519"');
75
106
  const keys = auth["keys"];
@@ -114,26 +145,19 @@ function endpointAuthIssue(endpoint, mode, at) {
114
145
  const unknown = Object.keys(auth).filter(key => !ENDPOINT_AUTH_MEMBERS.has(key));
115
146
  if (unknown.length > 0)
116
147
  return { path: `${at}.auth`, message: `auth has unknown member(s) ${unknown.join(", ")}` };
117
- if (!isIntegerIn(auth["manifestPort"], 1, 65535)) {
118
- return { path: `${at}.auth.manifestPort`, message: "manifestPort must be an integer from 1 to 65535" };
119
- }
120
148
  if (!isIntegerIn(auth["streamId"], 0, UINT32_MAX)) {
121
149
  return { path: `${at}.auth.streamId`, message: "streamId must be an unsigned 32-bit integer" };
122
150
  }
123
151
  if (mode === "ssm" && auth["senderAddress"] !== undefined) {
124
152
  return { path: `${at}.auth.senderAddress`, message: "senderAddress must not appear on an SSM endpoint; S is sourceAddress" };
125
153
  }
126
- if (mode === "asm" && !isNonEmptyString(auth["senderAddress"])) {
127
- return { path: `${at}.auth.senderAddress`, message: "a protected ASM endpoint requires senderAddress" };
128
- }
129
- if (auth["maxAuthDelayMs"] !== undefined && !isIntegerIn(auth["maxAuthDelayMs"], 50, 1000)) {
130
- return { path: `${at}.auth.maxAuthDelayMs`, message: "maxAuthDelayMs must be an integer from 50 to 1000" };
131
- }
132
- if (auth["manifestTimerMs"] !== undefined && !isIntegerIn(auth["manifestTimerMs"], 1, Number.MAX_SAFE_INTEGER)) {
133
- return { path: `${at}.auth.manifestTimerMs`, message: "manifestTimerMs must be an integer of at least 1" };
154
+ if (mode === "asm" && !parseIpAddressLiteral(auth["senderAddress"])) {
155
+ return { path: `${at}.auth.senderAddress`, message: "a protected ASM endpoint requires senderAddress, an RFC 3986 IP address literal" };
134
156
  }
135
- if (auth["manifestTrack"] !== undefined && !isNonEmptyString(auth["manifestTrack"])) {
136
- return { path: `${at}.auth.manifestTrack`, message: "manifestTrack must be a non-empty string" };
157
+ // maxAuthDelayMs never ignores the endpoint (clamped or absent) and
158
+ // manifestTrack is absent when it is not a string: endpointAuthTiming.
159
+ if (endpointAuthTiming(auth).manifestTimerMs < 1) {
160
+ return { path: `${at}.auth.manifestTimerMs`, message: "manifestTimerMs must be at least 1" };
137
161
  }
138
162
  if (!isIntegerIn(endpoint["bandwidth"], 1, Number.MAX_SAFE_INTEGER)) {
139
163
  return { path: `${at}.bandwidth`, message: "a protected endpoint requires bandwidth, which bounds the receiver's hold queues" };
@@ -157,7 +181,7 @@ export function withCatalogNamespace(catalog, namespace) {
157
181
  return { ...catalog, [CATALOG_NAMESPACE]: namespace };
158
182
  }
159
183
  /**
160
- * Every draft -01 4.1 / 7.2.6 violation in `catalog.multicast`, in document
184
+ * Every draft -02 4.1 / 7.2.6 violation in `catalog.multicast`, in document
161
185
  * order. Packet-id, group-address and track-existence rules are not here; the
162
186
  * container validator and the receivers already check those.
163
187
  *
@@ -178,7 +202,7 @@ export function multicastCatalogIssues(catalog, options = {}) {
178
202
  issues.push({
179
203
  code: "multicast_auth",
180
204
  path: '$["multicast.auth"]',
181
- message: 'the root "multicast.auth" key is retired; declare auth as multicast.auth (draft -01 7.2.6)',
205
+ message: 'the root "multicast.auth" key is retired; declare auth as multicast.auth (draft -02 7.2.6)',
182
206
  });
183
207
  }
184
208
  const multicast = catalog["multicast"];
@@ -212,7 +236,7 @@ export function multicastCatalogIssues(catalog, options = {}) {
212
236
  }
213
237
  const protocol = endpoint["protocol"];
214
238
  if (protocol !== undefined && protocol !== "ssm" && protocol !== "asm") {
215
- fail("multicast_endpoint", `${at}.protocol`, `protocol must be "ssm" or "asm"; a bearer such as ${JSON.stringify(protocol)} is a networkSource entry (draft -01 4.2)`);
239
+ fail("multicast_endpoint", `${at}.protocol`, `protocol must be "ssm" or "asm"; a bearer such as ${JSON.stringify(protocol)} is a networkSource entry (draft -02 4.2)`);
216
240
  continue;
217
241
  }
218
242
  const hasAuth = endpoint["auth"] !== undefined;
@@ -222,9 +246,21 @@ export function multicastCatalogIssues(catalog, options = {}) {
222
246
  : "auth names no key without multicast.auth; a receiver ignores this endpoint");
223
247
  continue;
224
248
  }
249
+ // 7.2.6: addresses are RFC 3986 IP literals, never names; 4.1: S and G
250
+ // of one family, or the endpoint's fields are mutually inconsistent.
225
251
  const sourceAddress = endpoint["sourceAddress"];
226
- if (sourceAddress !== undefined && !isNonEmptyString(sourceAddress)) {
227
- fail("multicast_endpoint", `${at}.sourceAddress`, "sourceAddress must be a non-empty string");
252
+ const sourceBytes = sourceAddress === undefined ? undefined : parseIpAddressLiteral(sourceAddress);
253
+ if (sourceAddress !== undefined && !sourceBytes) {
254
+ fail("multicast_endpoint", `${at}.sourceAddress`, "sourceAddress must be an RFC 3986 IPv4address or IPv6address literal");
255
+ continue;
256
+ }
257
+ const groupBytes = parseIpAddressLiteral(endpoint["groupAddress"]);
258
+ if (!groupBytes) {
259
+ fail("multicast_endpoint", `${at}.groupAddress`, "groupAddress must be an RFC 3986 IPv4address or IPv6address literal");
260
+ continue;
261
+ }
262
+ if (sourceBytes && sourceBytes.length !== groupBytes.length) {
263
+ fail("multicast_endpoint", `${at}.sourceAddress`, "sourceAddress and groupAddress are of different address families");
228
264
  continue;
229
265
  }
230
266
  const mode = sourceAddress === undefined ? "asm" : "ssm";
@@ -245,7 +281,13 @@ export function multicastCatalogIssues(catalog, options = {}) {
245
281
  continue;
246
282
  }
247
283
  }
248
- sources[index] = multicastEndpointSource(endpoint);
284
+ const source = multicastEndpointSource(endpoint);
285
+ const senderBytes = source?.mode === "asm" && source.source !== undefined ? parseIpAddressLiteral(source.source) : undefined;
286
+ if (senderBytes && senderBytes.length !== groupBytes.length) {
287
+ fail("multicast_endpoint_auth", `${at}.auth.senderAddress`, "senderAddress and groupAddress are of different address families");
288
+ continue;
289
+ }
290
+ sources[index] = source;
249
291
  const refs = Array.isArray(endpoint["tracks"]) ? endpoint["tracks"] : [];
250
292
  for (let refIndex = 0; refIndex < refs.length; refIndex++) {
251
293
  const ref = refs[refIndex];
@@ -261,42 +303,28 @@ export function multicastCatalogIssues(catalog, options = {}) {
261
303
  }
262
304
  }
263
305
  }
264
- // One endpoint object per (S, G, port), and a manifestPort that is no port
265
- // and no other manifestPort of its (S, G) (4.1, 7.2.6). The rule binds the
266
- // endpoint whose manifestPort clashes; two equal tuples or two equal
267
- // manifestPorts break it on both sides, so both are named.
306
+ // One endpoint object per (S, G, port) (4.1), and every protected endpoint
307
+ // sharing its (S, G, port) with another is ignored (7.2.6), so both sides
308
+ // are named. The key is the parsed addresses, never their spelling: an
309
+ // address of one family never matches the other (an IPv4-mapped address
310
+ // is IPv6), and "232.0.0.1" and "ff3e::1" never collide with each other.
311
+ const addressKey = (text) => {
312
+ const bytes = text === undefined ? undefined : parseIpAddressLiteral(text);
313
+ return bytes ? `${bytes.length}:${bytes.join(".")}` : "-";
314
+ };
268
315
  const tupleOf = (index) => {
269
316
  const endpoint = endpoints[index];
270
- const auth = endpoint["auth"];
271
- return {
272
- sg: JSON.stringify([sources[index].source ?? null, endpoint["groupAddress"]]),
273
- port: endpoint["port"],
274
- manifestPort: isObject(auth) ? auth["manifestPort"] : undefined,
275
- };
317
+ return `${addressKey(sources[index].source)}|${addressKey(endpoint["groupAddress"])}|${endpoint["port"]}`;
276
318
  };
277
319
  for (let index = 0; index < endpoints.length; index++) {
278
320
  if (!sources[index])
279
321
  continue;
280
322
  const own = tupleOf(index);
281
- const at = `$.multicast.endpoints[${index}]`;
282
- if (own.manifestPort !== undefined && own.manifestPort === own.port) {
283
- issues.push({ code: "multicast_endpoint_auth", path: `${at}.auth.manifestPort`, message: "manifestPort must differ from the endpoint's own port", endpointIndex: index });
284
- continue;
285
- }
286
323
  for (let other = 0; other < endpoints.length; other++) {
287
- if (other === index || !sources[other])
288
- continue;
289
- const peer = tupleOf(other);
290
- if (peer.sg !== own.sg)
324
+ if (other === index || !sources[other] || tupleOf(other) !== own)
291
325
  continue;
292
- if (peer.port === own.port) {
293
- issues.push({ code: "multicast_endpoint", path: `${at}.port`, message: `(S, G, port) is shared with endpoint ${other}; one endpoint object per multicast tuple`, endpointIndex: index });
294
- break;
295
- }
296
- if (own.manifestPort !== undefined && (own.manifestPort === peer.port || own.manifestPort === peer.manifestPort)) {
297
- issues.push({ code: "multicast_endpoint_auth", path: `${at}.auth.manifestPort`, message: `manifestPort is a port or manifestPort of endpoint ${other} on the same (S, G)`, endpointIndex: index });
298
- break;
299
- }
326
+ issues.push({ code: "multicast_endpoint", path: `$.multicast.endpoints[${index}].port`, message: `(S, G, port) is shared with endpoint ${other}; one endpoint object per multicast tuple`, endpointIndex: index });
327
+ break;
300
328
  }
301
329
  }
302
330
  return issues;
@@ -1 +1 @@
1
- {"version":3,"file":"multicast-catalog.js","sourceRoot":"","sources":["../src/multicast-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multicast-catalog.js","sourceRoot":"","sources":["../src/multicast-catalog.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blockcast/mmt-base",
3
- "version": "1.0.1",
3
+ "version": "2.0.0-main.11614d24ad32",
4
4
  "description": "Shared MMTP parsing primitives and protocol constants (zero FEC dependency). Hosts MMTP_HEADER_SIZE, parseMMTPHeader, extractMFUPayload and friends, plus wire constants such as DEFAULT_AMT_RELAY_PORT, so @blockcast/mmt-fec, @blockcast/mmt-container and @blockcast/mmt-transport can share one definition without a circular dep.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@ export * from './ntp-short.js'
4
4
  export * from './signalling.js'
5
5
  export * from './serial-number.js'
6
6
  export * from './fec-block-profile.js'
7
+ export * from './ip-address.js'
7
8
  export * from './multicast-catalog.js'
8
9
  export * from './fec-catalog.js'
9
10
  export * from './fec-bindings.js'
@@ -0,0 +1,104 @@
1
+ /**
2
+ * IP address literals as draft-ramadan-moq-multicast-02 7.2.6 requires them of
3
+ * `sourceAddress`, `groupAddress` and `senderAddress`: the IPv4address or
4
+ * IPv6address form of RFC 3986 3.2.2. Dotted decimal with no leading zero in
5
+ * any dec-octet (the ls32 tail of an IPv6 literal included); IPv6 h16 groups
6
+ * may carry leading zeros in either hex case; no brackets, no zone identifier,
7
+ * never a name. Draft: Blockcast/moqcast-draft@5f49172.
8
+ *
9
+ * Addresses compare as IP addresses, never as strings, and an address of one
10
+ * family never matches one of the other: an IPv4-mapped IPv6 address is of the
11
+ * IPv6 family, so it parses to 16 octets and never equals its IPv4 address.
12
+ */
13
+
14
+ const DEC_OCTET = /^(?:0|[1-9]\d{0,2})$/;
15
+ const H16 = /^[0-9A-Fa-f]{1,4}$/;
16
+
17
+ function parseIpv4(text: string): number[] | undefined {
18
+ const fields = text.split(".");
19
+ if (fields.length !== 4) return undefined;
20
+ const octets: number[] = [];
21
+ for (const field of fields) {
22
+ if (!DEC_OCTET.test(field)) return undefined;
23
+ const value = Number(field);
24
+ if (value > 255) return undefined;
25
+ octets.push(value);
26
+ }
27
+ return octets;
28
+ }
29
+
30
+ function parseIpv6(text: string): Uint8Array | undefined {
31
+ const halves = text.split("::");
32
+ if (halves.length > 2) return undefined;
33
+ const groupsOf = (part: string) => (part === "" ? [] : part.split(":"));
34
+ const left = groupsOf(halves[0]!);
35
+ const right = halves.length === 2 ? groupsOf(halves[1]!) : [];
36
+ const words: number[][] = [];
37
+ const all = [...left, ...right];
38
+ // The ls32 dotted tail ends the literal: the last group, never before "::".
39
+ const last = halves.length === 2 && right.length === 0 ? -1 : all.length - 1;
40
+ for (let index = 0; index < all.length; index++) {
41
+ const group = all[index]!;
42
+ if (index === last && group.includes(".")) {
43
+ const v4 = parseIpv4(group);
44
+ if (!v4) return undefined;
45
+ words.push([(v4[0]! << 8) | v4[1]!, (v4[2]! << 8) | v4[3]!]);
46
+ } else if (H16.test(group)) {
47
+ words.push([Number.parseInt(group, 16)]);
48
+ } else {
49
+ return undefined;
50
+ }
51
+ }
52
+ const leftWords = words.slice(0, left.length).flat();
53
+ const rightWords = words.slice(left.length).flat();
54
+ const missing = 8 - leftWords.length - rightWords.length;
55
+ if (halves.length === 2 ? missing < 1 : missing !== 0) return undefined;
56
+ const out = new Uint8Array(16);
57
+ [...leftWords, ...new Array<number>(missing).fill(0), ...rightWords].forEach((word, index) => {
58
+ out[index * 2] = word >> 8;
59
+ out[index * 2 + 1] = word & 0xff;
60
+ });
61
+ return out;
62
+ }
63
+
64
+ /** The octets of an RFC 3986 IPv4address (4) or IPv6address (16), or `undefined`. */
65
+ export function parseIpAddressLiteral(text: unknown): Uint8Array | undefined {
66
+ if (typeof text !== "string") return undefined;
67
+ if (text.includes(":")) return parseIpv6(text);
68
+ const v4 = parseIpv4(text);
69
+ return v4 ? Uint8Array.from(v4) : undefined;
70
+ }
71
+
72
+ /** Whether two address literals name one address of one family. Unparseable never matches. */
73
+ export function sameIpAddress(a: unknown, b: unknown): boolean {
74
+ const x = parseIpAddressLiteral(a);
75
+ const y = parseIpAddressLiteral(b);
76
+ return x !== undefined && y !== undefined && x.length === y.length && x.every((octet, index) => octet === y[index]);
77
+ }
78
+
79
+ /**
80
+ * One spelling per address: dotted decimal for IPv4, RFC 5952 for IPv6
81
+ * (lowercase, no leading zeros, the longest run of two or more zero groups,
82
+ * leftmost on a tie, as "::"; an IPv4-mapped address in hex like any other).
83
+ * `undefined` for text that is not an address literal.
84
+ */
85
+ export function canonicalIpAddress(text: unknown): string | undefined {
86
+ const bytes = parseIpAddressLiteral(text);
87
+ if (!bytes) return undefined;
88
+ if (bytes.length === 4) return bytes.join(".");
89
+ const words = Array.from({ length: 8 }, (_, index) => (bytes[index * 2]! << 8) | bytes[index * 2 + 1]!);
90
+ let bestStart = -1;
91
+ let bestLength = 1;
92
+ for (let start = 0; start < 8; ) {
93
+ let end = start;
94
+ while (end < 8 && words[end] === 0) end++;
95
+ if (end - start > bestLength) {
96
+ bestStart = start;
97
+ bestLength = end - start;
98
+ }
99
+ start = end === start ? start + 1 : end;
100
+ }
101
+ const hex = words.map(word => word.toString(16));
102
+ if (bestStart < 0) return hex.join(":");
103
+ return `${hex.slice(0, bestStart).join(":")}::${hex.slice(bestStart + bestLength).join(":")}`;
104
+ }
package/src/mmtp.ts CHANGED
@@ -886,14 +886,14 @@ export function parseMoqRepairFrameWithHeader(
886
886
  function moqRepairFrameFrom(
887
887
  frame: Uint8Array,
888
888
  repairId: ReturnType<typeof readRepairFecPayloadIdFields>,
889
+ checkRsId = true,
889
890
  ): MoqRepairFrame | null {
890
891
  if (!repairId) return null
891
892
 
892
893
  const symbolData = frame.subarray(repairId.dataOffset)
893
894
  if (
894
- repairId.rsbLength === 0 ||
895
895
  repairId.ssbLength === 0 ||
896
- repairId.rsId >= repairId.rsbLength ||
896
+ (checkRsId && repairId.rsId >= repairId.rsbLength) ||
897
897
  symbolData.length === 0
898
898
  ) return null
899
899
 
@@ -907,5 +907,45 @@ function moqRepairFrameFrom(
907
907
  }
908
908
  }
909
909
 
910
+ /**
911
+ * Why a repair object of an mmtp track is discarded on admission:
912
+ * `repairLength` -- the object is not exactly 12 + 13 + T bytes with a
913
+ * 12-byte MMTP header (C = 0, X = 0; draft-ramadan-moq-mmt-02 7.3, judged
914
+ * before any Repair FEC Payload ID field is read); `repairRsId` -- RS_ID is not
915
+ * below RSB_length, under every scheme; `repairSchemeBound` -- the object
916
+ * breaks its scheme's bound: reed-solomon SSB_length + RSB_length > 255, which
917
+ * also caps RS_ID at 253, or raptorq SSB_length + RSB_length - 1 > 2^24 - 1
918
+ * (draft-ramadan-moq-fec-core-00 7.5 and 10.3, -block-codes-00 7).
919
+ */
920
+ export type RepairObjectReject = 'repairLength' | 'repairRsId' | 'repairSchemeBound'
921
+
922
+ /**
923
+ * Admission of one mmtp repair object under its instance's T and scheme. The
924
+ * caller names the instance (by the repair track it subscribed); nothing here
925
+ * infers it from the fields. `repairRsId` and `repairSchemeBound` carry the
926
+ * frame so the caller can first route an RSB_length below a held layer's
927
+ * O_i + P_i to the 7.3.2 stop, which takes precedence over the discard.
928
+ * `null`: not an iso repair packet, or SSB_length 0.
929
+ */
930
+ export function admitMmtpRepairObject(
931
+ packet: Uint8Array,
932
+ header: MMTPHeader,
933
+ symbolSize: number,
934
+ algorithm: string | undefined,
935
+ ): { frame: MoqRepairFrame; reject?: Exclude<RepairObjectReject, 'repairLength'> } | { reject: 'repairLength' } | null {
936
+ if (header.packetType !== PACKET_TYPE_REPAIR || header.fecType !== 2) return null
937
+ if (header.headerLength !== MMTP_HEADER_SIZE || packet.length !== MMTP_HEADER_SIZE + REPAIR_FEC_PID_SIZE + symbolSize) {
938
+ return { reject: 'repairLength' }
939
+ }
940
+ const frame = moqRepairFrameFrom(packet, readRepairFecPayloadIdFields(packet, header), false)
941
+ if (!frame) return null
942
+ if (frame.rsId >= frame.rsbLength) return { frame, reject: 'repairRsId' }
943
+ const blockSymbols = frame.ssbLength + frame.rsbLength
944
+ if (algorithm === 'reed-solomon' ? blockSymbols > 255 : algorithm === 'raptorq' && blockSymbols - 1 > 0xffffff) {
945
+ return { frame, reject: 'repairSchemeBound' }
946
+ }
947
+ return { frame }
948
+ }
949
+
910
950
  // The signalling-message parsers (9.3.4.2 payload header, AL-FEC message,
911
951
  // PA/MPT) live in ./signalling.ts.
@@ -1,15 +1,18 @@
1
1
  /**
2
- * The draft-ramadan-moq-multicast-01 endpoint and `auth` rules, written once
3
- * for both sides of the catalog: `validateCmsfMmtpCatalog` in
4
- * `@blockcast/mmt-container` throws the first issue, and the receivers in
5
- * `@blockcast/mmt-transport` ignore every endpoint an issue names (all of
6
- * them when the issue is catalog-level). It lives here because mmt-base is
7
- * the only package both depend on.
2
+ * The draft-ramadan-moq-multicast-02 endpoint and `auth` rules, written once
3
+ * for every receiver of the catalog: the receivers in `@blockcast/mmt-transport`
4
+ * and the container resolver ignore every endpoint an issue names (all of
5
+ * them when the issue is catalog-level, which leaves the broadcast no data).
6
+ * `validateCmsfMmtpCatalog` reports none of them as a catalog fault, so MoQ
7
+ * unicast stays usable. It lives here because mmt-base is the only package
8
+ * every receiver depends on.
8
9
  *
9
- * Draft: Blockcast/moqcast-draft@fd962fd73d21ed281b60219c11ea61cc9e4e91c4
10
- * (PR #2 head; normative text equal to 3162ef93), sections 4.1 and 7.2.6.
10
+ * Draft: Blockcast/moqcast-draft@5f49172 (draft-ramadan-moq-multicast-02 as
11
+ * posted 2026-11-02), sections 4.1 and 7.2.6.
11
12
  */
12
13
 
14
+ import { parseIpAddressLiteral } from "./ip-address.js";
15
+
13
16
  export type MulticastJoinMode = "ssm" | "asm";
14
17
 
15
18
  /** An endpoint's join mode and `S` (4.1): `sourceAddress` on SSM,
@@ -41,8 +44,9 @@ export const ED25519_PUBLIC_KEY_BASE64URL = /^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048
41
44
  const UINT32_MAX = 0xffff_ffff;
42
45
  const AUTH_MEMBERS = new Set(["scheme", "version", "sig", "keys", "minEpoch"]);
43
46
  const KEY_MEMBERS = new Set(["kid", "publicKey", "firstEpoch"]);
47
+ // Draft -01's separate record port is no member here: a leftover one is an
48
+ // unknown member, so the endpoint is ignored (libmmt policy, fails closed).
44
49
  const ENDPOINT_AUTH_MEMBERS = new Set([
45
- "manifestPort",
46
50
  "streamId",
47
51
  "senderAddress",
48
52
  "maxAuthDelayMs",
@@ -56,14 +60,51 @@ function isObject(value: unknown): value is JsonObject {
56
60
  return typeof value === "object" && value !== null && !Array.isArray(value);
57
61
  }
58
62
 
59
- function isNonEmptyString(value: unknown): value is string {
60
- return typeof value === "string" && value.trim().length > 0;
61
- }
62
-
63
63
  function isIntegerIn(value: unknown, min: number, max: number): value is number {
64
64
  return Number.isSafeInteger(value) && (value as number) >= min && (value as number) <= max;
65
65
  }
66
66
 
67
+ /** Defaults of an endpoint's `auth.maxAuthDelayMs` and `auth.manifestTimerMs` (7.2.6). */
68
+ export const BCP_DEFAULT_MAX_AUTH_DELAY_MS = 200;
69
+ export const BCP_DEFAULT_MANIFEST_TIMER_MS = 20;
70
+
71
+ /** The timing and mirror members of an endpoint's `auth` as a receiver uses them. */
72
+ export interface EndpointAuthTiming {
73
+ maxAuthDelayMs: number;
74
+ manifestTimerMs: number;
75
+ manifestTrack?: string;
76
+ }
77
+
78
+ function isFiniteNumber(value: unknown): value is number {
79
+ return typeof value === "number" && Number.isFinite(value);
80
+ }
81
+
82
+ /**
83
+ * 7.2.6: a `maxAuthDelayMs` outside 50..1000 is clamped to the nearer bound;
84
+ * one that is not a JSON number, or an in-range one that is not an integer,
85
+ * is absent (200). A `manifestTimerMs` that is not a JSON number, or an
86
+ * integer-free value of at least 1, is absent (20); one below 1 makes the
87
+ * endpoint ignored, so it is returned here as is for the caller to refuse. A
88
+ * `manifestTrack` that is not a string is absent.
89
+ */
90
+ export function endpointAuthTiming(auth: unknown): EndpointAuthTiming {
91
+ const record = isObject(auth) ? auth : {};
92
+ const delay = record["maxAuthDelayMs"];
93
+ const timer = record["manifestTimerMs"];
94
+ const track = record["manifestTrack"];
95
+ const maxAuthDelayMs = !isFiniteNumber(delay)
96
+ ? BCP_DEFAULT_MAX_AUTH_DELAY_MS
97
+ : delay < 50 ? 50 : delay > 1000 ? 1000 : Number.isInteger(delay) ? delay : BCP_DEFAULT_MAX_AUTH_DELAY_MS;
98
+ const manifestTimerMs = !isFiniteNumber(timer)
99
+ ? BCP_DEFAULT_MANIFEST_TIMER_MS
100
+ : timer < 1 || Number.isSafeInteger(timer) ? timer : BCP_DEFAULT_MANIFEST_TIMER_MS;
101
+ return {
102
+ maxAuthDelayMs,
103
+ manifestTimerMs,
104
+ ...(typeof track === "string" && track.length > 0 ? { manifestTrack: track } : {}),
105
+ };
106
+ }
107
+
67
108
  /**
68
109
  * Join mode and `S` of one endpoint, or `undefined` when its fields disagree
69
110
  * and a receiver must ignore it (4.1). `sourceAddress` alone selects the mode;
@@ -73,7 +114,7 @@ function isIntegerIn(value: unknown, min: number, max: number): value is number
73
114
  export function multicastEndpointSource(endpoint: unknown): MulticastEndpointSource | undefined {
74
115
  if (!isObject(endpoint)) return undefined;
75
116
  const sourceAddress = endpoint["sourceAddress"];
76
- if (sourceAddress !== undefined && !isNonEmptyString(sourceAddress)) return undefined;
117
+ if (sourceAddress !== undefined && !parseIpAddressLiteral(sourceAddress)) return undefined;
77
118
  const mode: MulticastJoinMode = sourceAddress === undefined ? "asm" : "ssm";
78
119
  const protocol = endpoint["protocol"];
79
120
  if (protocol !== undefined && protocol !== mode) return undefined;
@@ -81,7 +122,7 @@ export function multicastEndpointSource(endpoint: unknown): MulticastEndpointSou
81
122
  const senderAddress = isObject(auth) ? auth["senderAddress"] : undefined;
82
123
  if (mode === "ssm") return senderAddress === undefined ? { mode, source: sourceAddress as string } : undefined;
83
124
  if (auth === undefined) return { mode };
84
- return isNonEmptyString(senderAddress) ? { mode, source: senderAddress } : undefined;
125
+ return parseIpAddressLiteral(senderAddress) ? { mode, source: senderAddress as string } : undefined;
85
126
  }
86
127
 
87
128
  function authIssues(auth: unknown): MulticastCatalogIssue[] {
@@ -92,10 +133,10 @@ function authIssues(auth: unknown): MulticastCatalogIssue[] {
92
133
  if (!isObject(auth)) return issue("", "auth must be an object");
93
134
  const unknown = Object.keys(auth).filter(key => !AUTH_MEMBERS.has(key));
94
135
  if (unknown.length > 0) {
95
- return issue("", `auth has unknown member(s) ${unknown.join(", ")}; draft -01 7.2.6 defines scheme, version, sig, keys and minEpoch`);
136
+ return issue("", `auth has unknown member(s) ${unknown.join(", ")}; draft -02 7.2.6 defines scheme, version, sig, keys and minEpoch`);
96
137
  }
97
138
  if (auth["scheme"] !== "bc-provenance") return issue(".scheme", 'scheme must be "bc-provenance"');
98
- if (auth["version"] !== 2) return issue(".version", "version must be 2 (bc-provenance version 2, draft -01 7.2)");
139
+ if (auth["version"] !== 2) return issue(".version", "version must be 2 (bc-provenance version 2, draft -02 7.2)");
99
140
  if (auth["sig"] !== "ed25519") return issue(".sig", 'sig must be "ed25519"');
100
141
  const keys = auth["keys"];
101
142
  if (!Array.isArray(keys) || keys.length < 1 || keys.length > 4) {
@@ -140,26 +181,19 @@ function endpointAuthIssue(
140
181
  if (!isObject(auth)) return { path: `${at}.auth`, message: "auth must be an object" };
141
182
  const unknown = Object.keys(auth).filter(key => !ENDPOINT_AUTH_MEMBERS.has(key));
142
183
  if (unknown.length > 0) return { path: `${at}.auth`, message: `auth has unknown member(s) ${unknown.join(", ")}` };
143
- if (!isIntegerIn(auth["manifestPort"], 1, 65535)) {
144
- return { path: `${at}.auth.manifestPort`, message: "manifestPort must be an integer from 1 to 65535" };
145
- }
146
184
  if (!isIntegerIn(auth["streamId"], 0, UINT32_MAX)) {
147
185
  return { path: `${at}.auth.streamId`, message: "streamId must be an unsigned 32-bit integer" };
148
186
  }
149
187
  if (mode === "ssm" && auth["senderAddress"] !== undefined) {
150
188
  return { path: `${at}.auth.senderAddress`, message: "senderAddress must not appear on an SSM endpoint; S is sourceAddress" };
151
189
  }
152
- if (mode === "asm" && !isNonEmptyString(auth["senderAddress"])) {
153
- return { path: `${at}.auth.senderAddress`, message: "a protected ASM endpoint requires senderAddress" };
154
- }
155
- if (auth["maxAuthDelayMs"] !== undefined && !isIntegerIn(auth["maxAuthDelayMs"], 50, 1000)) {
156
- return { path: `${at}.auth.maxAuthDelayMs`, message: "maxAuthDelayMs must be an integer from 50 to 1000" };
190
+ if (mode === "asm" && !parseIpAddressLiteral(auth["senderAddress"])) {
191
+ return { path: `${at}.auth.senderAddress`, message: "a protected ASM endpoint requires senderAddress, an RFC 3986 IP address literal" };
157
192
  }
158
- if (auth["manifestTimerMs"] !== undefined && !isIntegerIn(auth["manifestTimerMs"], 1, Number.MAX_SAFE_INTEGER)) {
159
- return { path: `${at}.auth.manifestTimerMs`, message: "manifestTimerMs must be an integer of at least 1" };
160
- }
161
- if (auth["manifestTrack"] !== undefined && !isNonEmptyString(auth["manifestTrack"])) {
162
- return { path: `${at}.auth.manifestTrack`, message: "manifestTrack must be a non-empty string" };
193
+ // maxAuthDelayMs never ignores the endpoint (clamped or absent) and
194
+ // manifestTrack is absent when it is not a string: endpointAuthTiming.
195
+ if (endpointAuthTiming(auth).manifestTimerMs < 1) {
196
+ return { path: `${at}.auth.manifestTimerMs`, message: "manifestTimerMs must be at least 1" };
163
197
  }
164
198
  if (!isIntegerIn(endpoint["bandwidth"], 1, Number.MAX_SAFE_INTEGER)) {
165
199
  return { path: `${at}.bandwidth`, message: "a protected endpoint requires bandwidth, which bounds the receiver's hold queues" };
@@ -186,7 +220,7 @@ export function withCatalogNamespace<T extends object>(catalog: T, namespace: st
186
220
  }
187
221
 
188
222
  /**
189
- * Every draft -01 4.1 / 7.2.6 violation in `catalog.multicast`, in document
223
+ * Every draft -02 4.1 / 7.2.6 violation in `catalog.multicast`, in document
190
224
  * order. Packet-id, group-address and track-existence rules are not here; the
191
225
  * container validator and the receivers already check those.
192
226
  *
@@ -209,7 +243,7 @@ export function multicastCatalogIssues(
209
243
  issues.push({
210
244
  code: "multicast_auth",
211
245
  path: '$["multicast.auth"]',
212
- message: 'the root "multicast.auth" key is retired; declare auth as multicast.auth (draft -01 7.2.6)',
246
+ message: 'the root "multicast.auth" key is retired; declare auth as multicast.auth (draft -02 7.2.6)',
213
247
  });
214
248
  }
215
249
  const multicast = catalog["multicast"];
@@ -241,7 +275,7 @@ export function multicastCatalogIssues(
241
275
  }
242
276
  const protocol = endpoint["protocol"];
243
277
  if (protocol !== undefined && protocol !== "ssm" && protocol !== "asm") {
244
- fail("multicast_endpoint", `${at}.protocol`, `protocol must be "ssm" or "asm"; a bearer such as ${JSON.stringify(protocol)} is a networkSource entry (draft -01 4.2)`);
278
+ fail("multicast_endpoint", `${at}.protocol`, `protocol must be "ssm" or "asm"; a bearer such as ${JSON.stringify(protocol)} is a networkSource entry (draft -02 4.2)`);
245
279
  continue;
246
280
  }
247
281
  const hasAuth = endpoint["auth"] !== undefined;
@@ -255,9 +289,21 @@ export function multicastCatalogIssues(
255
289
  );
256
290
  continue;
257
291
  }
292
+ // 7.2.6: addresses are RFC 3986 IP literals, never names; 4.1: S and G
293
+ // of one family, or the endpoint's fields are mutually inconsistent.
258
294
  const sourceAddress = endpoint["sourceAddress"];
259
- if (sourceAddress !== undefined && !isNonEmptyString(sourceAddress)) {
260
- fail("multicast_endpoint", `${at}.sourceAddress`, "sourceAddress must be a non-empty string");
295
+ const sourceBytes = sourceAddress === undefined ? undefined : parseIpAddressLiteral(sourceAddress);
296
+ if (sourceAddress !== undefined && !sourceBytes) {
297
+ fail("multicast_endpoint", `${at}.sourceAddress`, "sourceAddress must be an RFC 3986 IPv4address or IPv6address literal");
298
+ continue;
299
+ }
300
+ const groupBytes = parseIpAddressLiteral(endpoint["groupAddress"]);
301
+ if (!groupBytes) {
302
+ fail("multicast_endpoint", `${at}.groupAddress`, "groupAddress must be an RFC 3986 IPv4address or IPv6address literal");
303
+ continue;
304
+ }
305
+ if (sourceBytes && sourceBytes.length !== groupBytes.length) {
306
+ fail("multicast_endpoint", `${at}.sourceAddress`, "sourceAddress and groupAddress are of different address families");
261
307
  continue;
262
308
  }
263
309
  const mode: MulticastJoinMode = sourceAddress === undefined ? "asm" : "ssm";
@@ -278,7 +324,13 @@ export function multicastCatalogIssues(
278
324
  continue;
279
325
  }
280
326
  }
281
- sources[index] = multicastEndpointSource(endpoint);
327
+ const source = multicastEndpointSource(endpoint);
328
+ const senderBytes = source?.mode === "asm" && source.source !== undefined ? parseIpAddressLiteral(source.source) : undefined;
329
+ if (senderBytes && senderBytes.length !== groupBytes.length) {
330
+ fail("multicast_endpoint_auth", `${at}.auth.senderAddress`, "senderAddress and groupAddress are of different address families");
331
+ continue;
332
+ }
333
+ sources[index] = source;
282
334
 
283
335
  const refs = Array.isArray(endpoint["tracks"]) ? endpoint["tracks"] : [];
284
336
  for (let refIndex = 0; refIndex < refs.length; refIndex++) {
@@ -294,39 +346,26 @@ export function multicastCatalogIssues(
294
346
  }
295
347
  }
296
348
 
297
- // One endpoint object per (S, G, port), and a manifestPort that is no port
298
- // and no other manifestPort of its (S, G) (4.1, 7.2.6). The rule binds the
299
- // endpoint whose manifestPort clashes; two equal tuples or two equal
300
- // manifestPorts break it on both sides, so both are named.
349
+ // One endpoint object per (S, G, port) (4.1), and every protected endpoint
350
+ // sharing its (S, G, port) with another is ignored (7.2.6), so both sides
351
+ // are named. The key is the parsed addresses, never their spelling: an
352
+ // address of one family never matches the other (an IPv4-mapped address
353
+ // is IPv6), and "232.0.0.1" and "ff3e::1" never collide with each other.
354
+ const addressKey = (text: unknown) => {
355
+ const bytes = text === undefined ? undefined : parseIpAddressLiteral(text);
356
+ return bytes ? `${bytes.length}:${bytes.join(".")}` : "-";
357
+ };
301
358
  const tupleOf = (index: number) => {
302
359
  const endpoint = endpoints[index] as JsonObject;
303
- const auth = endpoint["auth"];
304
- return {
305
- sg: JSON.stringify([sources[index]!.source ?? null, endpoint["groupAddress"]]),
306
- port: endpoint["port"],
307
- manifestPort: isObject(auth) ? auth["manifestPort"] : undefined,
308
- };
360
+ return `${addressKey(sources[index]!.source)}|${addressKey(endpoint["groupAddress"])}|${endpoint["port"]}`;
309
361
  };
310
362
  for (let index = 0; index < endpoints.length; index++) {
311
363
  if (!sources[index]) continue;
312
364
  const own = tupleOf(index);
313
- const at = `$.multicast.endpoints[${index}]`;
314
- if (own.manifestPort !== undefined && own.manifestPort === own.port) {
315
- issues.push({ code: "multicast_endpoint_auth", path: `${at}.auth.manifestPort`, message: "manifestPort must differ from the endpoint's own port", endpointIndex: index });
316
- continue;
317
- }
318
365
  for (let other = 0; other < endpoints.length; other++) {
319
- if (other === index || !sources[other]) continue;
320
- const peer = tupleOf(other);
321
- if (peer.sg !== own.sg) continue;
322
- if (peer.port === own.port) {
323
- issues.push({ code: "multicast_endpoint", path: `${at}.port`, message: `(S, G, port) is shared with endpoint ${other}; one endpoint object per multicast tuple`, endpointIndex: index });
324
- break;
325
- }
326
- if (own.manifestPort !== undefined && (own.manifestPort === peer.port || own.manifestPort === peer.manifestPort)) {
327
- issues.push({ code: "multicast_endpoint_auth", path: `${at}.auth.manifestPort`, message: `manifestPort is a port or manifestPort of endpoint ${other} on the same (S, G)`, endpointIndex: index });
328
- break;
329
- }
366
+ if (other === index || !sources[other] || tupleOf(other) !== own) continue;
367
+ issues.push({ code: "multicast_endpoint", path: `$.multicast.endpoints[${index}].port`, message: `(S, G, port) is shared with endpoint ${other}; one endpoint object per multicast tuple`, endpointIndex: index });
368
+ break;
330
369
  }
331
370
  }
332
371
  return issues;