record LibCSockAddrInet6 { u16 family; u16 port; u32 flowinfo; u8[16] address; } @section(".text"); extern u32(u32 domain, u32 type, u32 protocol) socket; extern u32(u32 sockfd, u8* addr, u32 socklen) bind; extern u32(u32 sockfd, u32 backlog) listen; extern u32(u32 sockfd, u8* addr, u32* socklen) accept; extern u32(u32 sockfd, u8* data, u32 length) write; extern u32(u32 sockfd, u8* data, u32 length) read; extern u32(u32 fd) close; main: u0() -> { SERV_SOCKET = socket(10, 1, 0); LibCSockAddrInet6 addr; addr.family = 10; /* AF_INET6 */ addr.port = 43105; /* 25000 in reversed endian */ addr.flowinfo = 0; addr.address[0] = 0; addr.address[1] = 0; addr.address[2] = 0; addr.address[3] = 0; addr.address[4] = 0; addr.address[5] = 0; addr.address[6] = 0; addr.address[7] = 0; addr.address[8] = 0; addr.address[9] = 0; addr.address[10] = 0; addr.address[11] = 0; addr.address[12] = 0; addr.address[13] = 0; addr.address[14] = 0; addr.address[15] = 0; bind(SERV_SOCKET, &addr, @sizeof(addr)); listen(SERV_SOCKET, 16); loop { u32 fd = accept(SERV_SOCKET, &addr, &SOCK_LEN); if(fd == -1) { continue; } read(fd, &BUFFER, @sizeof(BUFFER)); write(fd, &RESPONSE, @sizeof(RESPONSE)); close(fd); } return; }; @section(".data"); u32 SOCK_LEN:; u32 SERV_SOCKET:; u8[?] RESPONSE: "HTTP/1.0 200 OK\r\nServer: NectarTestHTTPFileServer\r\nContent-Type: text/plain\r\n\r\nYo."; u8[1024] BUFFER:;