diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Client.zig | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/src/Client.zig b/src/Client.zig index 86b08d4..24dbcc0 100644 --- a/src/Client.zig +++ b/src/Client.zig @@ -1,8 +1,6 @@ const base64Enc = std.base64.Base64Encoder.init(std.base64.standard_alphabet_chars, '='); const base64Dec = std.base64.Base64Decoder.init(std.base64.standard_alphabet_chars, '='); -const native_endian = @import("builtin").cpu.arch.endian(); - rand: Random, writer: *std.Io.Writer, @@ -33,26 +31,24 @@ pub fn deinit(self: *Self) void { fn broadcastInitialInterestMessage(self: *Self, msg_bytes: []u8) !void { const writer = self.writer; - const total_len = ((@bitSizeOf(EthernetHeaders) + @bitSizeOf(IpHeaders) + @bitSizeOf(UdpHeaders)) / 8) + msg_bytes.len; + const total_len = @sizeOf(EthernetHeaders) + @sizeOf(IpHeaders) + @sizeOf(UdpHeaders) + msg_bytes.len; + + // Ensure the writer is in a valid state std.debug.assert(writer.buffer.len >= total_len); _ = writer.consumeAll(); const ether_headers: EthernetHeaders = .{ .dest_mac = .{ 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff }, - .src_mac = .{ 0xee, 0xee, 0xee, 0xee, 0xee, 0xee }, - // .src_mac = blk: { - // var output_bytes: [6]u8 = undefined; - // // const r_bytes = try writer.writableArray(6); - // self.rand.bytes(&output_bytes); - // break :blk output_bytes; - // }, + .src_mac = blk: { + var output_bytes: [6]u8 = undefined; + output_bytes[0] = 0xee; + self.rand.bytes(output_bytes[1..]); + break :blk output_bytes; + }, .ether_type = 0x0800, }; - // @compileLog((@bitSizeOf(EthernetHeaders) / 8)); const ip_headers: IpHeaders = .{ - // .ip_version = 0x4, - // .header_length = 0x5, .total_length = @intCast(total_len - 92), .ttl = 0x64, .protocol = 0x11, @@ -75,13 +71,10 @@ fn broadcastInitialInterestMessage(self: *Self, msg_bytes: []u8) !void { @memcpy(msg_target_bytes, msg_bytes); var msg_target: *align(1) SaprusMessage = try .bytesAsValue(msg_target_bytes); try msg_target.networkFromNativeEndian(); - - std.debug.print("bytes: {x}\n", .{writer.buffer[0..writer.end]}); + std.debug.print("{x}\n", .{writer.buffer[0..writer.end]}); try writer.flush(); } -// fn broadcastSaprusMessage(msg_bytes: []align(@alignOf(SaprusMessage)) u8) !void {} - fn broadcastSaprusMessage(msg_bytes: []u8, udp_port: u16) !void { const msg: *align(1) SaprusMessage = try .bytesAsValue(msg_bytes); try msg.networkFromNativeEndian(); |
