Cleanup and use random mac

This commit is contained in:
2025-09-23 16:26:05 -04:00
parent b06cb6dada
commit 0da7bbda5b

View File

@@ -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();