From b8313e4fa4ced3462e2fadaa123c917fcb063c18 Mon Sep 17 00:00:00 2001 From: Robby Zambito Date: Tue, 23 Sep 2025 15:01:12 -0400 Subject: --- src/Client.zig | 81 +++++++++++++++++++++++++++++++++------------------------- 1 file changed, 46 insertions(+), 35 deletions(-) (limited to 'src/Client.zig') diff --git a/src/Client.zig b/src/Client.zig index b200e6a..0c82129 100644 --- a/src/Client.zig +++ b/src/Client.zig @@ -33,23 +33,25 @@ pub fn deinit(self: *Self) void { fn broadcastInitialInterestMessage(self: *Self, msg_bytes: []align(@alignOf(SaprusMessage)) u8) !void { const writer = self.writer; - const EthernetHeaders = packed struct { - dest_mac: @Vector(6, u8), + // const EthernetHeaders = packed struct { + // dest_mac: @Vector(6, u8), - src_mac: @Vector(6, u8), + // src_mac: @Vector(6, u8), - ether_type: u16, - }; + // ether_type: u16, + // }; const IpHeaders = packed struct { - ip_version: u4, - header_length: u4 = 0, + _: u8 = 0x45, + // ip_version: u4, + // header_length: u4 = 0, type_of_service: u8 = 0, - total_length: u16, + total_length: u16 = 0x04, identification: u16 = 0, - ethernet_flags: u3 = 0, - fragment_offset: u13 = 0, + __: u16 = 0x0, + // ethernet_flags: u3 = 0, + // fragment_offset: u13 = 0, ttl: u8 = 0, protocol: u8 = 0, @@ -67,44 +69,53 @@ fn broadcastInitialInterestMessage(self: *Self, msg_bytes: []align(@alignOf(Sapr checksum: @Vector(2, u8) = .{ 0, 0 }, }; - const total_len = (@bitSizeOf(UdpHeaders) / 8) + msg_bytes.len; + // const total_len = ((@bitSizeOf(IpHeaders) + @bitSizeOf(UdpHeaders)) / 8) + msg_bytes.len; + const total_len = 130; std.debug.assert(writer.buffer.len >= total_len); _ = writer.consumeAll(); - var 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; - }, - .ether_type = 0x0800, - }; + // var 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; + // }, + // .ether_type = 0x0800, + // }; - const ip_headers: IpHeaders = .{ - .ip_version = 0x4, - .header_length = 0x5, - .total_length = @intCast(total_len - 8), // 8 is the ethernet frame length (macs + type) + var ip_headers: IpHeaders = .{ + // .ip_version = 0x4, + // .header_length = 0x5, + // .total_length = 130, //@intCast(total_len - 8), // 8 is the ethernet frame length (macs + type) + .total_length = 0x00, + .ttl = 0x64, .protocol = 0x11, - .src_ip = .{ 0, 0, 0, 0 }, - .dest_ip = .{ 0, 0, 0, 0 }, + .src_ip = .{ 0xff, 0x02, 0x03, 0x04 }, + .dest_ip = .{ 0xff, 0xff, 0xff, 0xff }, }; - const udp_headers: UdpHeaders = .{ - .src_port = .{ 0, 0 }, + var udp_headers: UdpHeaders = .{ + .src_port = .{ 0, 0x01 }, .dest_port = .{ 0xb8, 0x22 }, .length = @intCast(msg_bytes.len), }; - _ = ip_headers; - _ = udp_headers; - _ = ðer_headers; + _ = &ip_headers; + _ = &udp_headers; + // _ = ðer_headers; // _ = try writer.write(&@as([@bitSizeOf(UdpHeaders) / 8]u8, @bitCast(headers))); - std.mem.byteSwapAllFields(EthernetHeaders, ðer_headers); - try writer.writeStruct(ether_headers, native_endian); + // std.mem.byteSwapAllFields(EthernetHeaders, ðer_headers); + // try writer.writeStruct(ether_headers, native_endian); + + std.mem.byteSwapAllFields(IpHeaders, &ip_headers); + try writer.writeStruct(ip_headers, native_endian); + + // std.mem.byteSwapAllFields(UdpHeaders, &udp_headers); + // try writer.writeStruct(udp_headers, native_endian); // // Ensure buffer is large enough // std.debug.assert(writer.buffer.len > 38 + msg_bytes.len); -- cgit