mirror of
https://git.robbyzambito.me/zaprus
synced 2026-02-04 00:14: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 mem = std.mem;
|
||||||
|
|
||||||
const NetWriter = @This();
|
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;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
const addr = std.net.Ip4Address.parse(dest, 0) catch return "FAIL".*;
|
const addr = std.Io.net.Ip4Address.parse(dest, 0) catch return "FAIL".*;
|
||||||
return @bitCast(addr.sa.addr);
|
return addr.bytes;
|
||||||
}
|
}
|
||||||
return "zap\x00".*;
|
return "zap\x00".*;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user