COSC 4300 Networks and Internets

Fall 2014

Homework Assignment #6

"If you don't know what to do with many of the papers piled on your desk,
stick a dozen colleagues' initials on them and pass them along.
When in doubt, route."
-- Malcolm Forbes
Due: Wednesday, October 29th, 11:59pm CDT
Submit: Turn in your entire kernel source code using the turnin command on the Systems Lab machines.
Please run "make clean" in your compile/ subdirectory before submitting. 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:

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 18) 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 (

Your DHCP daemon should automatically configure the two default routes when it has received enough information from the server to bind to an IP address.

[Revised 2012 Oct 05 10:20 DWB]