Due: Friday, November 11th, 11:59pm CST
Submit: Turn in your entire kernel source code
using the
turnin command on
the
Systems Lab machines.
Work is to be completed in teams. Only one team member should turnin,
but it would be courteous to notify your teammate(s) when you do this.
Names of authors should be included in all work. You may submit
multiple times, but only the last turnin will be kept. The automatic
submission system will not accept work after the deadline.
Building upon your Embedded Xinu kernel from the previous assignment,
implement a basic routing table that allows your network stack to forward
IP datagrams to a gateway when they are not destined for the local LAN.
Your new component should feature the following:
A shell command "route" that allows the user to view, add, or
delete routing table entries. Each routing table entry needs to
include at least a destination network, netmask, gateway, and
interface. See the command "/sbin/route" on
the Systems Lab Linux boxes as an
example.
A lookup mechanism in your IP component that given a destination IP
addresses uses the routing table to determine the next hop.
When you have this working, configure two routes for testing:
192.168.6.0/24 should be delivered directly on the local network; all other
destinations should be forwarded to the default route, Xinugate (192.168.6.50).
Xinugate (aka Zardoz) will forward your packets using Network Address Translation (NAT -- see Chapter 23) to the production network.
The end result of all of this? Your Xinu backend should be able to ping both machines on the local LAN (192.168.6.* addresses) and the Internet. Good
testcases for external ping include the Systems Lab Linux boxes or Balan.cs.purdue.edu (128.211.1.10).