From ec7125985ef76b73fed496b7526f2949e6b33874 Mon Sep 17 00:00:00 2001 From: mo khan Date: Tue, 30 Sep 2025 16:39:47 -0600 Subject: fixup ruby code --- assignments/2/README.md | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/assignments/2/README.md b/assignments/2/README.md index a15d33f..36b810f 100644 --- a/assignments/2/README.md +++ b/assignments/2/README.md @@ -335,21 +335,39 @@ d. 192.53.56.7 -> no /23 match -> forward using Default -> Router 3. ```ruby require 'ipaddr' -routes = [ - IPAddr.new('135.46.56.0/22'), - IPAddr.new('135.46.60.0/22'), - IPAddr.new('192.53.40.0/23'), -] +class RoutingTable + def initialize(default, routes) + @default = default + @routes = routes + end + + def route_to(ip) + @routes.fetch(@routes.keys.find { |route| route.include?(ip) }, @default) + end +end + +table = RoutingTable.new("Router 3", { + IPAddr.new('135.46.56.0/22') => "Interface 0", + IPAddr.new('135.46.60.0/22') => "Interface 1", + IPAddr.new('192.53.40.0/23') => "Router 2", +}) a = IPAddr.new("135.46.61.10") b = IPAddr.new("135.46.53.16") c = IPAddr.new("192.53.40.6") d = IPAddr.new("192.53.56.7") -puts routes.find { |route| route.include?(a) } || "Default" -puts routes.find { |route| route.include?(b) } || "Default" -puts routes.find { |route| route.include?(c) } || "Default" -puts routes.find { |route| route.include?(d) } || "Default" +puts table.route_to(a) +puts table.route_to(b) +puts table.route_to(c) +puts table.route_to(d) +``` + +```bash +Interface 1 +Router 3 +Router 2 +Router 3 ``` ## 2.4 TCP Congestion Control (20%) -- cgit v1.2.3