summaryrefslogtreecommitdiff
path: root/src/saprus.zig
diff options
context:
space:
mode:
authorRobby Zambito <contact@robbyzambito.me>2025-04-04 23:12:08 -0400
committerRobby Zambito <contact@robbyzambito.me>2025-04-06 13:08:09 -0400
commitefcd866d6ca73dcc3455ad80210c8d8d805a9045 (patch)
tree432089526d56b1e40272691ce5ea5ad5cbb83f9c /src/saprus.zig
parent7b07520adb0191ec70869357aab27b29ee4b94f7 (diff)
Initial testing of connection message
Diffstat (limited to 'src/saprus.zig')
-rw-r--r--src/saprus.zig43
1 files changed, 35 insertions, 8 deletions
diff --git a/src/saprus.zig b/src/saprus.zig
index b51fae7..d591928 100644
--- a/src/saprus.zig
+++ b/src/saprus.zig
@@ -6,14 +6,7 @@ pub fn deinit() void {
network.deinit();
}
-pub fn sendRelay(payload: []const u8, allocator: std.mem.Allocator) !void {
- const msg = SaprusMessage{
- .relay = .{
- .header = .{ .dest = .{ 255, 255, 255, 255 } },
- .payload = payload,
- },
- };
-
+inline fn broadcastSaprusMessage(msg: SaprusMessage, allocator: Allocator) !void {
const msg_bytes = try msg.toBytes(allocator);
defer allocator.free(msg_bytes);
@@ -38,6 +31,40 @@ pub fn sendRelay(payload: []const u8, allocator: std.mem.Allocator) !void {
_ = try sock.sendTo(dest_addr, msg_bytes);
}
+pub fn sendRelay(payload: []const u8, allocator: Allocator) !void {
+ const msg = SaprusMessage{
+ .relay = .{
+ .header = .{ .dest = .{ 255, 255, 255, 255 } },
+ .payload = payload,
+ },
+ };
+
+ try broadcastSaprusMessage(msg, allocator);
+}
+
+pub fn sendInitialConnection(payload: []const u8, initial_port: u16, allocator: Allocator) !void {
+ const msg = SaprusMessage{
+ .connection = .{
+ .header = .{
+ .src_port = initial_port,
+ .dest_port = 6868,
+ .seq_num = 1,
+ .msg_id = 2,
+ .reserved = 5,
+ .options = .{
+ .opt2 = true,
+ .opt8 = true,
+ },
+ },
+ .payload = payload,
+ },
+ };
+
+ try broadcastSaprusMessage(msg, allocator);
+}
+
const SaprusMessage = @import("./saprus_message.zig").SaprusMessage;
const std = @import("std");
const network = @import("network");
+
+const Allocator = std.mem.Allocator;