code wiki / _hdl_build / _pe_dchan_route.nx

_pe_dchan_route.nx source

↩ module page · 57 lines · 3439 B

1// _pe_dchan_route.nx -- X-ROOM-DC-002 rung-2 INTEGRATION: client-side private routing + ordering 2// over the nx_signaling_v2 DUMB BROADCAST relay (the relay forwards to everyone; PRIVACY is achieved 3// CLIENT-SIDE by the recipient filter). Two ACTIONS: 4// dr_route(to_id, my_id) -> 1 accept iff the frame is addressed to me, else 0 ignore. 5// dr_seq_ok(prev, new) -> 1 iff per-from seq is strictly monotonic (ordered; rejects replay/regress). 6// Self-validating E2E gate (3 peers A=1,B=2,C=3; A sends a D frame to B): B ACCEPTS, C IGNORES 7// (private achieved on a broadcast relay) + a monotonic per-from seq stream is accepted while a 8// regression is rejected (neg-control = the ordering check actually discriminates, no false-green). 9// FOUNDED on _pe_dchan (frame layer, DONE) + the DC-003 reliability data plane (_pe_dchan_reorder). 10import "nx_syscalls.nx" 11 12func rt_w(fd: i64, s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(fd, s, n); return 0 } 13func rt_n(fd: i64, v: i64) -> i64 { 14 let bb: *u8 = sys_mmap(28); var m: i64 = v; if m < 0 { sys_write(fd, "-" as *u8, 1); m = 0 - m } 15 let t: *u8 = sys_mmap(28); var k: i64 = 0; if m == 0 { t[0] = 48 as u8; k = 1 } 16 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 17 var i: i64 = 0; while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } sys_write(fd, bb, k); return 0 18} 19// accept iff addressed to me (the client-side privacy filter on a broadcast relay). 20func dr_route(to_id: i64, my_id: i64) -> i64 { if to_id == my_id { return 1 } return 0 } 21// per-from ordering: strictly monotonic seq (rejects replay/regression/reorder at the routing layer). 22func dr_seq_ok(prev: i64, new: i64) -> i64 { if new > prev { return 1 } return 0 } 23func main(argc: i64, argv: *i64) -> i64 { 24 let A: i64 = 1 25 let B: i64 = 2 26 let C: i64 = 3 27 // A sends a D frame addressed to B (to_id = B). On the broadcast relay every peer sees it. 28 let to_id: i64 = B 29 var route_ok: i64 = 1 30 if dr_route(to_id, B) != 1 { route_ok = 0 } // B: accept (to == my-id) 31 if dr_route(to_id, C) != 0 { route_ok = 0 } // C: ignore (private achieved) 32 if dr_route(to_id, A) != 0 { route_ok = 0 } // A: not its own delivery target 33 34 // per-from seq ordering: an increasing stream is accepted; a regression/replay is rejected. 35 var ord_ok: i64 = 1 36 if dr_seq_ok(0, 1) != 1 { ord_ok = 0 } 37 if dr_seq_ok(1, 2) != 1 { ord_ok = 0 } 38 if dr_seq_ok(2, 3) != 1 { ord_ok = 0 } 39 // neg-control: a backward seq (replay/regress) MUST be rejected. 40 var neg_ok: i64 = 0 41 if dr_seq_ok(3, 2) == 0 { neg_ok = 1 } 42 if dr_seq_ok(3, 3) == 0 { if neg_ok == 1 { neg_ok = 1 } else { neg_ok = 0 } } // equal = not strictly monotonic 43 44 let ok: i64 = route_ok * ord_ok * neg_ok 45 rt_w(1, "DCHAN-ROUTE route_ok=" as *u8); rt_n(1, route_ok) 46 rt_w(1, " ord_ok=" as *u8); rt_n(1, ord_ok); rt_w(1, " neg_ok=" as *u8); rt_n(1, neg_ok); rt_w(1, "\n" as *u8) 47 let lf: i64 = sys_openat_append("knowledge/status/dchan_route.log" as *u8, 420) 48 if lf >= 0 { 49 rt_w(lf, "DCHAN-ROUTE X-ROOM-DC-002 route_ok=" as *u8); rt_n(lf, route_ok) 50 rt_w(lf, " ord_ok=" as *u8); rt_n(lf, ord_ok); rt_w(lf, " neg_ok=" as *u8); rt_n(lf, neg_ok) 51 if ok == 1 { rt_w(lf, " verdict=GREEN\n" as *u8) } else { rt_w(lf, " verdict=RED\n" as *u8) } 52 sys_close(lf) 53 } 54 if ok == 1 { sys_exit(0) } 55 sys_exit(1) 56 return 1 57}