summaryrefslogtreecommitdiff
path: root/assignments/2
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-09-30 16:39:47 -0600
committermo khan <mo@mokhan.ca>2025-09-30 16:39:47 -0600
commitec7125985ef76b73fed496b7526f2949e6b33874 (patch)
tree01fc916263f61d05abb4ef278f30efcc6e758ecc /assignments/2
parent277e231fa7810b42768f91ea3f290557d1367870 (diff)
fixup ruby code
Diffstat (limited to 'assignments/2')
-rw-r--r--assignments/2/README.md36
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%)