summaryrefslogtreecommitdiff
path: root/src/Client.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/Client.zig')
-rw-r--r--src/Client.zig81
1 files changed, 46 insertions, 35 deletions
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;
- _ = &ether_headers;
+ _ = &ip_headers;
+ _ = &udp_headers;
+ // _ = &ether_headers;
// _ = try writer.write(&@as([@bitSizeOf(UdpHeaders) / 8]u8, @bitCast(headers)));
- std.mem.byteSwapAllFields(EthernetHeaders, &ether_headers);
- try writer.writeStruct(ether_headers, native_endian);
+ // std.mem.byteSwapAllFields(EthernetHeaders, &ether_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);