code wiki / _hdl_build / nx_quic_udp_test.nx
nx_quic_udp_test.nx source
↩ module page · 55 lines · 3242 B
1// nx_quic_udp_test.nx -- RUNG 8c.1 gate: the sovereign UDP datagram endpoint. Round-trips a REAL QUIC
2// packet (R3 short header + R1 DATAGRAM frame) through an actual loopback UDP socket -- proving the live
3// QUIC server's network I/O layer works on real sockets, byte-exact. Native, sovereign. license_tier: ORIGINAL
4import "nx_quic_udp.nx"
5import "nx_g_check_lib.nx"
6import "nx_g_puts_lib.nx"
7import "nx_quic_hdr.nx"
8
9func g_pn(v: i64) -> i64 {
10 if v==0 { sys_write(1,"0" as *u8,1); return 0 }
11 let b: *u8 = sys_mmap(28); var x: i64 = v; if x<0 { sys_write(1,"-" as *u8,1); x=0-x }
12 var d: i64=0; var y: i64=x
13 while y>0 { d=d+1; y=y/10 }
14 var i: i64=d-1; y=x
15 while i>=0 { b[i]=(48+(y%10)) as u8; y=y/10; i=i-1 }
16 sys_write(1,b,d); return 0
17}
18func main() -> i64 {
19 g_puts("nx_quic_udp gate -- QUIC packet over a REAL loopback UDP socket\n" as *u8)
20 var pass: i64=0; var total: i64=0
21 let PORT: i64 = 19443
22
23 // build a packet: short header (4-byte DCID) + DATAGRAM(40-byte payload)
24 let dcid: *u8 = sys_mmap(4); dcid[0]=0xab as u8; dcid[1]=0xcd as u8; dcid[2]=0xef as u8; dcid[3]=0x12 as u8
25 let payload: *u8 = sys_mmap(40); var i: i64=0; while i<40 { payload[i]=((i*11+5)&255) as u8; i=i+1 }
26 let pkt: *u8 = sys_mmap(256)
27 let hlen: i64 = quic_shdr_encode(pkt, 0, 0, 1, dcid, 4) // 1 + 4 = 5 bytes
28 let flen: i64 = quic_datagram_encode((pkt as i64 + hlen) as *u8, payload, 40) // 1 + 1 + 40 = 42
29 let pktlen: i64 = hlen + flen // 47
30
31 let rfd: i64 = quic_udp_bind(PORT)
32 pass = pass + g_check("bind UDP receiver on 127.0.0.1:19443" as *u8, (rfd >= 0) as i64); total=total+1
33 if rfd >= 0 {
34 sys_set_socket_timeout(rfd, 3) // best-effort recv timeout
35 let sfd: i64 = quic_udp_socket()
36 let sent: i64 = quic_udp_sendto(sfd, PORT, pkt, pktlen)
37 pass = pass + g_check("sendto QUIC packet over UDP (sent == 47)" as *u8, (sent == pktlen) as i64); total=total+1
38 let rbuf: *u8 = sys_mmap(256)
39 let recvd: i64 = quic_udp_recv(rfd, rbuf, 256)
40 var rt_ok: i64=0
41 if recvd == pktlen { rt_ok=1; var k: i64=0; while k<pktlen { if rbuf[k]!=pkt[k] { rt_ok=0; k=pktlen } else { k=k+1 } } }
42 pass = pass + g_check("recvfrom: QUIC packet round-trips byte-exact through real UDP socket" as *u8, rt_ok); total=total+1
43 let poff: *i64 = sys_mmap(8) as *i64
44 let pp: i64 = quic_datagram_parse((rbuf as i64 + hlen) as *u8, recvd - hlen, poff)
45 var pay_ok: i64=0
46 if pp == 40 { pay_ok=1; var k: i64=0; while k<40 { if rbuf[hlen+poff[0]+k]!=payload[k] { pay_ok=0; k=40 } else { k=k+1 } } }
47 pass = pass + g_check("received DATAGRAM payload byte-exact (FEC'd video survives the wire)" as *u8, pay_ok); total=total+1
48 sys_close(sfd); sys_close(rfd)
49 }
50
51 g_puts("---- quic_udp gate: passed " as *u8); g_pn(pass); g_puts(" / " as *u8); g_pn(total); g_puts(" ----\n" as *u8)
52 if pass == total { g_puts("VERDICT: GREEN (QUIC packet over real UDP socket, byte-exact -- the live server's network I/O layer)\n" as *u8); return 0 }
53 g_puts("VERDICT: RED\n" as *u8)
54 return 1
55}