summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Client.zig27
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();