module Net.IPv4Link where -- Routing of IP packets in the simple where there is a single -- link which has a router. import Net.Interface as Net import Net.IPv4 initialize net optRouter link = Interface { rx=rx link, tx=tx } where tx = maybe txlocal txr optRouter txr routerIP ip = Net.tx link $ if sameNet net destIP then (destIP,ip) else (routerIP,ip) where destIP = dest ip txlocal ip = if sameNet net destIP then Net.tx link (destIP,ip) else return () -- no route, dropping packet where destIP = dest ip