COSC 3300 Networks and Internets

Fall 2010

Homework Assignment #7

Due: Friday, December 3rd, 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, and gateway. 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: should be delivered directly on the local network; all other destinations should be forwarded to the default route, Xinugate ( 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 (

    [Revised 2010 Nov 30 16:05 DWB]