Skip to content

Instantly share code, notes, and snippets.

@kazuho
Created December 28, 2022 09:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kazuho/510d65ee261a729177df371cf18dd75d to your computer and use it in GitHub Desktop.
Save kazuho/510d65ee261a729177df371cf18dd75d to your computer and use it in GitHub Desktop.
diff --git a/reflector.rb b/reflector.rb
index c47370b..39e4115 100644
--- a/reflector.rb
+++ b/reflector.rb
@@ -4,12 +4,17 @@
# sudo ip link set tap-e up
# sudo ip route add 10.1.2.0/24 via 10.1.2.3
+require "fiber_scheduler"
require "./tun"
-TRUE_ADDR = "\xa\1\2\xfe".b
+TRUE_ADDR = "\xa\1\2\3".b
FAKE_ADDR = "\xa\1\2\4".b
-tun = Tun.new("rat")
+tun = Tun.new("tap-e")
+
+Fiber.set_scheduler(FiberScheduler.new)
+
+Fiber.schedule do
loop do
packet = tun.read()
if packet and packet.l4
@@ -25,3 +30,4 @@ loop do
end
end
end
+end
@kazuho
Copy link
Author

kazuho commented Dec 28, 2022

$ /usr/local/ruby-3.2.0/bin/ruby --yjit reflector.rb
Ignoring debug-1.7.1 because its extensions are not built. Try: gem pristine debug --version 1.7.1
Ignoring rbs-2.8.2 because its extensions are not built. Try: gem pristine rbs --version 2.8.2
/usr/local/ruby-3.2.0/lib/ruby/gems/3.2.0/gems/fiber_scheduler-0.13.0/lib/fiber_scheduler.rb:175:in io_read': wrong number of arguments (given 4, expected 3) (ArgumentError) from /home/kazuho/mydev/rat/tun.rb:300:in sysread'
from /home/kazuho/mydev/rat/tun.rb:300:in read' from reflector.rb:19:in block (2 levels) in

'
from reflector.rb:18:in loop' from reflector.rb:18:in block in '
from /usr/local/ruby-3.2.0/lib/ruby/gems/3.2.0/gems/fiber_scheduler-0.13.0/lib/fiber_scheduler.rb:240:in `block in fiber'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment