doing some shenanigans

trying to start writing my own function to do raw socket connections
This commit is contained in:
2026-01-10 21:17:23 -05:00
parent b39603522f
commit 7a8874ea6a
2 changed files with 27 additions and 2 deletions

View File

@@ -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),
};
}

View File

@@ -82,8 +82,8 @@ fn parseDest(in: ?[]const u8) [4]u8 {
return res;
}
const addr = std.net.Ip4Address.parse(dest, 0) catch return "FAIL".*;
return @bitCast(addr.sa.addr);
const addr = std.Io.net.Ip4Address.parse(dest, 0) catch return "FAIL".*;
return addr.bytes;
}
return "zap\x00".*;
}