Update gatorcat dep and use bytes for broadcast message

The latter is helpful for the lifetime of the message.
This commit is contained in:
2025-05-10 22:51:14 -04:00
parent 716fb466fa
commit cde289d648
2 changed files with 10 additions and 8 deletions

View File

@@ -45,8 +45,8 @@
.hash = "clap-0.10.0-oBajB434AQBDh-Ei3YtoKIRxZacVPF1iSwp3IX_ZB8f0", .hash = "clap-0.10.0-oBajB434AQBDh-Ei3YtoKIRxZacVPF1iSwp3IX_ZB8f0",
}, },
.gatorcat = .{ .gatorcat = .{
.url = "git+https://github.com/kj4tmp/gatorcat#bb1847f6c95852e7a0ec8c07870a948c171d5f98", .url = "git+https://github.com/kj4tmp/gatorcat.git#0a97b666677501db4939e3e8245f88a19e015893",
.hash = "gatorcat-0.3.2-WcrpTf1mBwDrmPaIhKCfLJO064v8Sjjn7DBq4CKZSgHH", .hash = "gatorcat-0.3.4-WcrpTcleBwCta_9TjomuIGb3bdg2Pke_FXI_WkMTEivH",
}, },
}, },
.paths = .{ .paths = .{

View File

@@ -19,12 +19,12 @@ pub fn deinit() void {
network.deinit(); network.deinit();
} }
fn broadcastSaprusMessage(msg: *SaprusMessage, udp_port: u16) !void { fn broadcastSaprusMessage(msg_bytes: []align(@alignOf(SaprusMessage)) u8, udp_port: u16) !void {
if (false) { if (false) {
var foo: gcat.nic.RawSocket = try .init("enp7s0"); // /proc/net/dev var foo: gcat.nic.RawSocket = try .init("enp7s0"); // /proc/net/dev
defer foo.deinit(); defer foo.deinit();
} }
const msg_bytes = msg.asBytes(); const msg: *SaprusMessage = try .bytesAsValue(msg_bytes);
try msg.networkFromNativeEndian(); try msg.networkFromNativeEndian();
defer msg.nativeFromNetworkEndian() catch unreachable; defer msg.nativeFromNetworkEndian() catch unreachable;
@@ -46,6 +46,8 @@ fn broadcastSaprusMessage(msg: *SaprusMessage, udp_port: u16) !void {
try sock.bind(bind_addr); try sock.bind(bind_addr);
std.debug.print("{x}\n", .{msg_bytes});
_ = try sock.sendTo(dest_addr, msg_bytes); _ = try sock.sendTo(dest_addr, msg_bytes);
} }
@@ -61,7 +63,7 @@ pub fn sendRelay(payload: []const u8, dest: [4]u8) !void {
relay.dest = dest; relay.dest = dest;
_ = base64Enc.encode(relay.getPayload(), payload); _ = base64Enc.encode(relay.getPayload(), payload);
try broadcastSaprusMessage(msg, 8888); try broadcastSaprusMessage(msg_bytes, 8888);
} }
fn randomPort() u16 { fn randomPort() u16 {
@@ -80,14 +82,14 @@ pub fn sendInitialConnection(payload: []const u8, initial_port: u16) !*SaprusMes
.connection, .connection,
base64Enc.calcSize(payload.len), base64Enc.calcSize(payload.len),
)]; )];
const msg: *SaprusMessage = .init(.relay, msg_bytes); const msg: *SaprusMessage = .init(.connection, msg_bytes);
const connection = (try msg.getSaprusTypePayload()).connection; const connection = (try msg.getSaprusTypePayload()).connection;
connection.src_port = initial_port; connection.src_port = initial_port;
connection.dest_port = dest_port; connection.dest_port = dest_port;
_ = base64Enc.encode(connection.getPayload(), payload); _ = base64Enc.encode(connection.getPayload(), payload);
try broadcastSaprusMessage(msg, 8888); try broadcastSaprusMessage(msg_bytes, 8888);
return msg; return msg;
} }
@@ -120,7 +122,7 @@ pub fn connect(payload: []const u8) !?SaprusConnection {
initial_conn_res = try .networkBytesAsValue(response_buf[0..len]); initial_conn_res = try .networkBytesAsValue(response_buf[0..len]);
// Complete handshake after awaiting response // Complete handshake after awaiting response
try broadcastSaprusMessage(msg, randomPort()); try broadcastSaprusMessage(msg.asBytes(), randomPort());
if (false) { if (false) {
return initial_conn_res.?; return initial_conn_res.?;