diff options
| -rw-r--r-- | src/main.zig | 10 | ||||
| -rw-r--r-- | src/message.zig | 2 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/main.zig b/src/main.zig index 3a22a01..03467e1 100644 --- a/src/main.zig +++ b/src/main.zig @@ -189,6 +189,10 @@ pub fn main(init: std.process.Init) !void { }; std.debug.print("full message = {any}\n", .{full_msg}); + + var socket: RawSocket = try .init("enp7s0"); + defer socket.deinit(); + try socket.send(full_msg); } fn parseDest(in: ?[]const u8) [4]u8 { @@ -222,7 +226,7 @@ const RawSocket = struct { fd: i32, sockaddr_ll: std.posix.sockaddr.ll, - fn init(ifname: []const u8) RawSocket { + fn init(ifname: []const u8) !RawSocket { const socket: i32 = @intCast(std.os.linux.socket(AF.PACKET, SOCK.RAW, 0)); var ifr: std.posix.ifreq = std.mem.zeroInit(std.posix.ifreq, .{}); @@ -265,7 +269,9 @@ const RawSocket = struct { }; } - fn deinit() void {} + fn deinit(self: *RawSocket) void { + _ = self; + } fn send(self: RawSocket, payload: []const u8) !void { const sent_bytes = std.os.linux.sendto( diff --git a/src/message.zig b/src/message.zig index 0f7bef5..c843a5a 100644 --- a/src/message.zig +++ b/src/message.zig @@ -123,7 +123,7 @@ const Relay = struct { pub fn toBytes(self: Relay, buf: []u8) []u8 { var out: Writer = .fixed(buf); out.writeInt(u16, @intFromEnum(PacketType.relay), .big) catch unreachable; - out.writeInt(u16, undefined, .big) catch unreachable; // Length field, but unread. Will switch to checksum + out.writeInt(u16, @intCast(self.payload.len), .big) catch unreachable; // Length field, but unread. Will switch to checksum out.writeAll(&self.dest.bytes) catch unreachable; out.writeAll(self.payload) catch unreachable; return out.buffered(); |
