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}