From 7a8874ea6ac846eea3bdc35be2f46501877df87c Mon Sep 17 00:00:00 2001 From: Robby Zambito Date: Sat, 10 Jan 2026 21:17:23 -0500 Subject: doing some shenanigans trying to start writing my own function to do raw socket connections --- src/NetWriter.zig | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/NetWriter.zig') diff --git a/src/NetWriter.zig b/src/NetWriter.zig index 9f06823..f0f617d 100644 --- a/src/NetWriter.zig +++ b/src/NetWriter.zig @@ -211,3 +211,28 @@ const Writer = std.Io.Writer; const mem = std.mem; const NetWriter = @This(); + +const saprusOptions: std.Io.net.BindOptions = .{ + .mode = .raw, + .protocol = 0, +}; + +fn netSaprusBindIpPosix( + userdata: ?*anyopaque, + address: *const IpAddress, + options: IpAddress.BindOptions, +) IpAddress.BindError!net.Socket { + if (!have_networking) return error.NetworkDown; + const t: *Threaded = @ptrCast(@alignCast(userdata)); + const family = std.os.linux.PF.PACKET; + const socket_fd = try openSocketPosix(t, family, options); + errdefer posix.close(socket_fd); + var storage: PosixAddress = undefined; + var addr_len = addressToPosix(address, &storage); + try posixBind(t, socket_fd, &storage.any, addr_len); + try posixGetSockName(t, socket_fd, &storage.any, &addr_len); + return .{ + .handle = socket_fd, + .address = addressFromPosix(&storage), + }; +} -- cgit