summaryrefslogtreecommitdiff
path: root/src/saprus.zig
diff options
context:
space:
mode:
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;