mirror of
https://git.robbyzambito.me/zaprus
synced 2026-02-04 08:24:52 +00:00
doing some shenanigans
trying to start writing my own function to do raw socket connections
This commit is contained in:
@@ -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),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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".*;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user