├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── Setup.hs ├── cbits ├── .gitignore ├── Makefile ├── ethernet.c ├── ethernet.h ├── receive.c ├── send.c ├── tapdevice.c └── tapdevice.h ├── default.nix ├── examples └── echo-server │ └── Main.hs ├── hans.cabal ├── hans.nix ├── scripts ├── create-tap.sh └── jenkins.sh ├── src ├── Hans.hs └── Hans │ ├── Addr.hs │ ├── Addr │ └── Types.hs │ ├── Buffer │ ├── Datagram.hs │ ├── Signal.hs │ └── Stream.hs │ ├── Checksum.hs │ ├── Config.hs │ ├── Device.hs │ ├── Device │ ├── Loopback.hs │ ├── RawEthernet.hsc │ ├── Tap.hsc │ ├── Types.hs │ └── Xen.hs │ ├── Dns.hs │ ├── Dns │ └── Packet.hs │ ├── Ethernet.hs │ ├── Ethernet │ └── Types.hs │ ├── HashTable.hs │ ├── IP4.hs │ ├── IP4 │ ├── ArpTable.hs │ ├── Dhcp │ │ ├── Client.hs │ │ ├── Codec.hs │ │ ├── Options.hs │ │ └── Packet.hs │ ├── Fragments.hs │ ├── Icmp4.hs │ ├── Input.hs │ ├── Output.hs │ ├── Packet.hs │ ├── RoutingTable.hs │ └── State.hs │ ├── Input.hs │ ├── Lens.hs │ ├── Monad.hs │ ├── Nat.hs │ ├── Nat │ ├── Forward.hs │ └── State.hs │ ├── Network.hs │ ├── Network │ └── Types.hs │ ├── Serialize.hs │ ├── Socket.hs │ ├── Socket │ ├── Handle.hs │ ├── Tcp.hs │ ├── Types.hs │ └── Udp.hs │ ├── Tcp │ ├── Input.hs │ ├── Message.hs │ ├── Output.hs │ ├── Packet.hs │ ├── RecvWindow.hs │ ├── SendWindow.hs │ ├── State.hs │ ├── Tcb.hs │ └── Timers.hs │ ├── Threads.hs │ ├── Time.hs │ ├── Types.hs │ └── Udp │ ├── Input.hs │ ├── Output.hs │ ├── Packet.hs │ └── State.hs └── tests ├── Main.hs └── Tests ├── Checksum.hs ├── Ethernet.hs ├── IP4.hs ├── IP4 ├── Fragmentation.hs ├── Icmp4.hs └── Packet.hs ├── Network.hs └── Utils.hs /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/.gitignore -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/.travis.yml -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/README.md -------------------------------------------------------------------------------- /Setup.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/Setup.hs -------------------------------------------------------------------------------- /cbits/.gitignore: -------------------------------------------------------------------------------- 1 | send 2 | receive 3 | -------------------------------------------------------------------------------- /cbits/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/cbits/Makefile -------------------------------------------------------------------------------- /cbits/ethernet.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/cbits/ethernet.c -------------------------------------------------------------------------------- /cbits/ethernet.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/cbits/ethernet.h -------------------------------------------------------------------------------- /cbits/receive.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/cbits/receive.c -------------------------------------------------------------------------------- /cbits/send.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/cbits/send.c -------------------------------------------------------------------------------- /cbits/tapdevice.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/cbits/tapdevice.c -------------------------------------------------------------------------------- /cbits/tapdevice.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/cbits/tapdevice.h -------------------------------------------------------------------------------- /default.nix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/default.nix -------------------------------------------------------------------------------- /examples/echo-server/Main.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/examples/echo-server/Main.hs -------------------------------------------------------------------------------- /hans.cabal: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/hans.cabal -------------------------------------------------------------------------------- /hans.nix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/hans.nix -------------------------------------------------------------------------------- /scripts/create-tap.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/scripts/create-tap.sh -------------------------------------------------------------------------------- /scripts/jenkins.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/scripts/jenkins.sh -------------------------------------------------------------------------------- /src/Hans.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans.hs -------------------------------------------------------------------------------- /src/Hans/Addr.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Addr.hs -------------------------------------------------------------------------------- /src/Hans/Addr/Types.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Addr/Types.hs -------------------------------------------------------------------------------- /src/Hans/Buffer/Datagram.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Buffer/Datagram.hs -------------------------------------------------------------------------------- /src/Hans/Buffer/Signal.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Buffer/Signal.hs -------------------------------------------------------------------------------- /src/Hans/Buffer/Stream.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Buffer/Stream.hs -------------------------------------------------------------------------------- /src/Hans/Checksum.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Checksum.hs -------------------------------------------------------------------------------- /src/Hans/Config.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Config.hs -------------------------------------------------------------------------------- /src/Hans/Device.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Device.hs -------------------------------------------------------------------------------- /src/Hans/Device/Loopback.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Device/Loopback.hs -------------------------------------------------------------------------------- /src/Hans/Device/RawEthernet.hsc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Device/RawEthernet.hsc -------------------------------------------------------------------------------- /src/Hans/Device/Tap.hsc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Device/Tap.hsc -------------------------------------------------------------------------------- /src/Hans/Device/Types.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Device/Types.hs -------------------------------------------------------------------------------- /src/Hans/Device/Xen.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Device/Xen.hs -------------------------------------------------------------------------------- /src/Hans/Dns.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Dns.hs -------------------------------------------------------------------------------- /src/Hans/Dns/Packet.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Dns/Packet.hs -------------------------------------------------------------------------------- /src/Hans/Ethernet.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Ethernet.hs -------------------------------------------------------------------------------- /src/Hans/Ethernet/Types.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Ethernet/Types.hs -------------------------------------------------------------------------------- /src/Hans/HashTable.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/HashTable.hs -------------------------------------------------------------------------------- /src/Hans/IP4.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/IP4.hs -------------------------------------------------------------------------------- /src/Hans/IP4/ArpTable.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/IP4/ArpTable.hs -------------------------------------------------------------------------------- /src/Hans/IP4/Dhcp/Client.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/IP4/Dhcp/Client.hs -------------------------------------------------------------------------------- /src/Hans/IP4/Dhcp/Codec.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/IP4/Dhcp/Codec.hs -------------------------------------------------------------------------------- /src/Hans/IP4/Dhcp/Options.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/IP4/Dhcp/Options.hs -------------------------------------------------------------------------------- /src/Hans/IP4/Dhcp/Packet.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/IP4/Dhcp/Packet.hs -------------------------------------------------------------------------------- /src/Hans/IP4/Fragments.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/IP4/Fragments.hs -------------------------------------------------------------------------------- /src/Hans/IP4/Icmp4.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/IP4/Icmp4.hs -------------------------------------------------------------------------------- /src/Hans/IP4/Input.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/IP4/Input.hs -------------------------------------------------------------------------------- /src/Hans/IP4/Output.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/IP4/Output.hs -------------------------------------------------------------------------------- /src/Hans/IP4/Packet.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/IP4/Packet.hs -------------------------------------------------------------------------------- /src/Hans/IP4/RoutingTable.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/IP4/RoutingTable.hs -------------------------------------------------------------------------------- /src/Hans/IP4/State.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/IP4/State.hs -------------------------------------------------------------------------------- /src/Hans/Input.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Input.hs -------------------------------------------------------------------------------- /src/Hans/Lens.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Lens.hs -------------------------------------------------------------------------------- /src/Hans/Monad.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Monad.hs -------------------------------------------------------------------------------- /src/Hans/Nat.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Nat.hs -------------------------------------------------------------------------------- /src/Hans/Nat/Forward.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Nat/Forward.hs -------------------------------------------------------------------------------- /src/Hans/Nat/State.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Nat/State.hs -------------------------------------------------------------------------------- /src/Hans/Network.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Network.hs -------------------------------------------------------------------------------- /src/Hans/Network/Types.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Network/Types.hs -------------------------------------------------------------------------------- /src/Hans/Serialize.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Serialize.hs -------------------------------------------------------------------------------- /src/Hans/Socket.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Socket.hs -------------------------------------------------------------------------------- /src/Hans/Socket/Handle.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Socket/Handle.hs -------------------------------------------------------------------------------- /src/Hans/Socket/Tcp.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Socket/Tcp.hs -------------------------------------------------------------------------------- /src/Hans/Socket/Types.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Socket/Types.hs -------------------------------------------------------------------------------- /src/Hans/Socket/Udp.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Socket/Udp.hs -------------------------------------------------------------------------------- /src/Hans/Tcp/Input.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Tcp/Input.hs -------------------------------------------------------------------------------- /src/Hans/Tcp/Message.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Tcp/Message.hs -------------------------------------------------------------------------------- /src/Hans/Tcp/Output.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Tcp/Output.hs -------------------------------------------------------------------------------- /src/Hans/Tcp/Packet.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Tcp/Packet.hs -------------------------------------------------------------------------------- /src/Hans/Tcp/RecvWindow.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Tcp/RecvWindow.hs -------------------------------------------------------------------------------- /src/Hans/Tcp/SendWindow.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Tcp/SendWindow.hs -------------------------------------------------------------------------------- /src/Hans/Tcp/State.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Tcp/State.hs -------------------------------------------------------------------------------- /src/Hans/Tcp/Tcb.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Tcp/Tcb.hs -------------------------------------------------------------------------------- /src/Hans/Tcp/Timers.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Tcp/Timers.hs -------------------------------------------------------------------------------- /src/Hans/Threads.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Threads.hs -------------------------------------------------------------------------------- /src/Hans/Time.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Time.hs -------------------------------------------------------------------------------- /src/Hans/Types.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Types.hs -------------------------------------------------------------------------------- /src/Hans/Udp/Input.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Udp/Input.hs -------------------------------------------------------------------------------- /src/Hans/Udp/Output.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Udp/Output.hs -------------------------------------------------------------------------------- /src/Hans/Udp/Packet.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Udp/Packet.hs -------------------------------------------------------------------------------- /src/Hans/Udp/State.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/src/Hans/Udp/State.hs -------------------------------------------------------------------------------- /tests/Main.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/tests/Main.hs -------------------------------------------------------------------------------- /tests/Tests/Checksum.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/tests/Tests/Checksum.hs -------------------------------------------------------------------------------- /tests/Tests/Ethernet.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/tests/Tests/Ethernet.hs -------------------------------------------------------------------------------- /tests/Tests/IP4.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/tests/Tests/IP4.hs -------------------------------------------------------------------------------- /tests/Tests/IP4/Fragmentation.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/tests/Tests/IP4/Fragmentation.hs -------------------------------------------------------------------------------- /tests/Tests/IP4/Icmp4.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/tests/Tests/IP4/Icmp4.hs -------------------------------------------------------------------------------- /tests/Tests/IP4/Packet.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/tests/Tests/IP4/Packet.hs -------------------------------------------------------------------------------- /tests/Tests/Network.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/tests/Tests/Network.hs -------------------------------------------------------------------------------- /tests/Tests/Utils.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GaloisInc/HaNS/HEAD/tests/Tests/Utils.hs --------------------------------------------------------------------------------