diff options
Diffstat (limited to 'src/Client.zig')
-rw-r--r-- | src/Client.zig | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/Client.zig b/src/Client.zig index 8e4ced4..b7139d6 100644 --- a/src/Client.zig +++ b/src/Client.zig @@ -19,12 +19,12 @@ pub fn deinit() void { network.deinit(); } -fn broadcastSaprusMessage(msg: *SaprusMessage, udp_port: u16) !void { +fn broadcastSaprusMessage(msg_bytes: []align(@alignOf(SaprusMessage)) u8, udp_port: u16) !void { if (false) { var foo: gcat.nic.RawSocket = try .init("enp7s0"); // /proc/net/dev defer foo.deinit(); } - const msg_bytes = msg.asBytes(); + const msg: *SaprusMessage = try .bytesAsValue(msg_bytes); try msg.networkFromNativeEndian(); defer msg.nativeFromNetworkEndian() catch unreachable; @@ -46,6 +46,8 @@ fn broadcastSaprusMessage(msg: *SaprusMessage, udp_port: u16) !void { try sock.bind(bind_addr); + std.debug.print("{x}\n", .{msg_bytes}); + _ = try sock.sendTo(dest_addr, msg_bytes); } @@ -61,7 +63,7 @@ pub fn sendRelay(payload: []const u8, dest: [4]u8) !void { relay.dest = dest; _ = base64Enc.encode(relay.getPayload(), payload); - try broadcastSaprusMessage(msg, 8888); + try broadcastSaprusMessage(msg_bytes, 8888); } fn randomPort() u16 { @@ -80,14 +82,14 @@ pub fn sendInitialConnection(payload: []const u8, initial_port: u16) !*SaprusMes .connection, base64Enc.calcSize(payload.len), )]; - const msg: *SaprusMessage = .init(.relay, msg_bytes); + const msg: *SaprusMessage = .init(.connection, msg_bytes); const connection = (try msg.getSaprusTypePayload()).connection; connection.src_port = initial_port; connection.dest_port = dest_port; _ = base64Enc.encode(connection.getPayload(), payload); - try broadcastSaprusMessage(msg, 8888); + try broadcastSaprusMessage(msg_bytes, 8888); return msg; } @@ -120,7 +122,7 @@ pub fn connect(payload: []const u8) !?SaprusConnection { initial_conn_res = try .networkBytesAsValue(response_buf[0..len]); // Complete handshake after awaiting response - try broadcastSaprusMessage(msg, randomPort()); + try broadcastSaprusMessage(msg.asBytes(), randomPort()); if (false) { return initial_conn_res.?; |