diff options
| author | mo khan <mo@mokhan.ca> | 2025-09-30 16:39:47 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-09-30 16:39:47 -0600 |
| commit | ec7125985ef76b73fed496b7526f2949e6b33874 (patch) | |
| tree | 01fc916263f61d05abb4ef278f30efcc6e758ecc /assignments/2 | |
| parent | 277e231fa7810b42768f91ea3f290557d1367870 (diff) | |
fixup ruby code
Diffstat (limited to 'assignments/2')
| -rw-r--r-- | assignments/2/README.md | 36 |
1 files 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%) |
