Skip to content

Commit

Permalink
Merge pull request #1 from yomimono/connect-test
Browse files Browse the repository at this point in the history
make one_stack test buildable/runnable
  • Loading branch information
MagnusS committed Oct 12, 2015
2 parents c55e58f + 9ee63f3 commit e2871a2
Show file tree
Hide file tree
Showing 73 changed files with 2,461 additions and 1,320 deletions.
3 changes: 3 additions & 0 deletions .merlin
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
PKG lwt ipaddr lwt mirage-types cstruct io-page uint mirage-flow oUnit alcotest
PKG mirage-vnetif pcap-format mirage-console.unix

B _build/**
S lib/
S tcp/
S unix/
S dhcp/
1 change: 0 additions & 1 deletion .travis-ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ bash -ex .travis-opam.sh

export OPAMYES=1
eval `opam config env`
prefix=`opam config var prefix`

git clone git://github.com/mirage/mirage-www
cd mirage-www
Expand Down
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ language: c
script: bash -ex .travis-ci.sh
env:
- OCAML_VERSION=4.02 PACKAGE=tcpip MIRAGE_MODE=unix
- OCAML_VERSION=4.01 PACKAGE=tcpip MIRAGE_MODE=xen
- UPDATE_GCC_BINUTILS=1 OCAML_VERSION=4.01 PACKAGE=tcpip MIRAGE_MODE=xen
166 changes: 124 additions & 42 deletions CHANGES → CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,75 @@
2.4.3 (2015-05-05)
### 2.6.1 (2015-09-15)

* Add optional arguments for settings in ip v6 and v4 connects (#170, by @Drup)
* Expose `Ipv4.Routing.No_route_to_destination_address` (#166, by @yomimono)

### 2.6.0 (2015-07-29)

* ARP now handles ARP frames, not Ethernet frames with ARP payload
(#164, by @hannesm)
* Check length of received ethernet frame to avoid cstruct exceptions
(#117, by @hannesm)
* Pull arpv4 module out of ipv4. Also add unit-tests for the newly created
ARP library (#155, by @yomimono)

### 2.5.1 (2015-07-07)

* Fix regression introduced in 2.5.0 where packet loss could lead to the
connection to become very slow (#157, MagnusS, @talex5, @yomimono and
@balrajsingh)
* Improve the tests: more logging, more tracing and compile to native code when
available, etc (@MagnusS and @talex5)
* Do not raise `Invalid_argument("Lwt.wakeup_result")` everytime a connection
is closed. Also now pass the raised exceptions to `Lwt.async_exception_hook`
instead of ignoring them transparently, so the user can decide to shutdown
its application if something wrong happens (#153, #156, @yomomino and @talex5)
* The `channel` library now lives in a separate repository and is released
separately (#159, @samoht)

### 2.5.0 (2015-06-10)

* The test runs now produce `.pcap` files (#141, by @MagnusS)
* Strip trailing bytes from network packets (#145, by @talex5)
* Add tests for uniform packet loss (#147, by @MagnusS)
* fixed bug where in case of out of order packets the ack and window were set
incorrectly (#140, #146)
* Properly handle RST packets (#107, #148)
* Add a `Log` module to control at runtime the debug statements which are
displayed (#142)
* Writing in a PCB which does not have the right state now returns an error
instead of blocking (#150)

### 2.4.3 (2015-05-05)

* Fix infinite loop in `Channel.read_line` when the line does not contain a CRLF
sequence (#131)

2.4.2 (2015-04-29)
### 2.4.2 (2015-04-29)

* Fix a memory leak in `Channel` (#119, by @yomimono)
* Add basic unit-test for channels (#119, by @yomimono)
* Add alcotest testing templates
* Modernize Travis CI scripts

2.4.1 (2015-04-21):
### 2.4.1 (2015-04-21)

* Merge between 2.4.0 and 2.3.1

2.4.0: (2015-03-24)
### 2.4.0: (2015-03-24)

* ARP improvements (#118)

2.3.1 (2015-03-31):
### 2.3.1 (2015-03-31)

* Do not raise an assertion if an IP frame has extra trailing bytes (#221).

2.3.0 (2015-03-09):
* Fix `STACKV4` for the `DEVICE` signature which has `connect` removed (in Mirage types 2.3+).
### 2.3.0 (2015-03-09)

* Fix `STACKV4` for the `DEVICE` signature which has `connect` removed
(in Mirage types 2.3+).

### 2.2.3 (2015-03-09)

2.2.3 (2015-03-09):
* Add ICMPv6 error reporting functions (#101)
* Add universal IP address converters (#108)
* Add `error_message` functions for human-readable errors (#98)
Expand All @@ -29,14 +78,18 @@
* Unhook unused modules `Sliding_window` and `Profiler` from the build. (#112)
* Add an explicit `connect` method to the signatures. (#100)

2.2.2 (2015-01-11):
* Readded tracing and ARP fixes which got accidentally reverted in the IPv6 merge. (#96)
### 2.2.2 (2015-01-11)

* Readded tracing and ARP fixes which got accidentally reverted in the IPv6
merge. (#96)

### 2.2.1 (2014-12-20)

2.2.1 (2014-12-20):
* Use `Bytes` instead of `String` to begin the `-safe-string` migration in OCaml 4.02.0 (#93).
* Use `Bytes` instead of `String` to begin the `-safe-string` migration in OCaml
4.02.0 (#93).
* Remove dependency on `uint` to avoid the need for a C stub (#92).

2.2.0 (2014-12-18):
### 2.2.0 (2014-12-18)

Add IPv6 support. This changeset minimises interface changes to the existing
`STACKV4` interfaces to faciliate a progressive merge. The only visible
Expand All @@ -49,116 +102,142 @@ interface changes are:
* Several types that had `v4` in their names (like `IPV4.ipv4addr`) have lost
that particle.

2.1.1 (2014-12-12):
### 2.1.1 (2014-12-12)

* Improve console printing for the DHCP client to output line
breaks properly on Xen consoles.

2.1.0 (2014-12-07):
### 2.1.0 (2014-12-07)

* Build Xen stubs separately, with `CFLAGS` from `mirage-xen` 2.1.0+.
This allows us to use the red zone under x86_64 Unix again.
* Adding tracing labels and counters, which introduces a new dependency on the
`mirage-profile` package.

2.0.3 (2014-12-05):
### 2.0.3 (2014-12-05)

* Fixed race waiting for ARP response (#86).
* Move the the code that configures IPv4 address, netmask and gateways
after receiving a successful lease out of the `Dhcp_clientv4` module
and into `Stackv4` (#87)

2.0.2 (2014-12-01):
* Add IPv4 multicast to MAC address mapping in IPv4 output processing (#81 from Luke Dunstan).
* Improve formatting of DHCP console logging, including printing out options (#83).
### 2.0.2 (2014-12-01)

* Add IPv4 multicast to MAC address mapping in IPv4 output processing
(#81 from Luke Dunstan).
* Improve formatting of DHCP console logging, including printing out options
(#83).
* Build with -mno-red-zone on x86_64 to avoid stack corruption on Xen (#80).

2.0.1 (2014-11-04):
### 2.0.1 (2014-11-04)

* Fixed race condition in the signalling between the rx/tx threads under load.
* Experimentally switch to immediate ACKs in TCPv4 by default instead of delayed ones.

2.0.0 (2014-11-02):
### 2.0.0 (2014-11-02)

* Moved 1s complement checksum C code here from mirage-platform.
* Depend on `Console_unix` and `Console_xen` instead of `Console`.
* [socket] Do not return an `Eof` when writing 0-length buffer (#76).
* [socket] Accept callbacks now run in async threads instead of being serialised (#75).
* [socket] Accept callbacks now run in async threads instead of being serialised
(#75).

### 1.1.6 (2014-07-20)

1.1.6 (20-July-2014):
* Quieten down the stack logging rate by not announcing IPv6 packet discards.
* Raise exception `Bad_option` for unparseable or invalid TCPv4 options (#57).
* Fix linking error with module `Tcp_checksum` by lifting it into top library (#60).
* Fix linking error with module `Tcp_checksum` by lifting it into top library
(#60).
* Add `opam` file to permit easier local pinning, and fix Travis to use this.

1.1.5 (18-June-2014):
### 1.1.5 (2014-06-18)

* Ensure that DHCP completes before the application is started, so that
unikernels that establish outgoing connections can do so without a race.
(fix from Mindy Preston in #53, followup in #55)
* Add `echo`, `chargen` and `discard` services into the `examples/`
directory. (from Mindy Preston in #52).

1.1.4 (03-June-2014):
### 1.1.4 (2014-06-03)

* [tcp] Fully process the last `ACK` in a 3-way handshake for server connections.
This ensures that a `FIN` is correctly transmitted upon application-initiated
connection close. (fix from Mindy Preston in #51).

1.1.3 (01-April-2014):
### 1.1.3 (2014-03-01)

* Expose IPV4 through the STACKV4 interface.

1.1.2 (27-March-2014):
### 1.1.2 (2014-03-27)

* Fix DHCP variable length option parsing for MTU responses, which
in turns improves robustness on Amazon EC2 (fix from @yomimono
via mirage/mirage-tcpip#48)

1.1.1 (21-February-2014):
### 1.1.1 (2014-02-21)

* Catch and ignore top-level socket exceptions (#219).
* Set `SO_REUSEADDR` on listening sockets for Unix (#218).
* Adapt the Stack interfaces to the v1.1.1 mirage-types interface
(see mirage/mirage#226 for details).

1.1.0 (03-February-2014):
### 1.1.0 (2014-02-03)

* Rewrite of the library as a set of functors that parameterize the
stack across the `V1_LWT` module types from Mirage 1.1.x. This removes
the need to compile separate Xen and Unix versions of the stack.

0.9.5 (08-December-2013):
### 0.9.5 (2013-12-08)

* Build for either Xen or Unix, depending on the value of the `OS` envvar.
* Shift to the `mirage-types` 0.5.0+ interfaces, which breaks the
socket backend (temporarily).
* Port the direct stack to the new interfaces.
* Add Travis CI scripts.

0.9.4 (09-August-2013):
### 0.9.4 (2013-08-09)

* Use the `Ipaddr` external library and remove the Homebrew
equivalents in `Nettypes`.

0.9.3 (18-July-2013):
### 0.9.3 (2013-07-18)

* Changes in module Manager: Removed some functions from the `.mli
(plug/unplug) and added some modifications in the way the Manager
interacts with the underlying module Netif. The Netif.create function
does not take a callback anymore.

0.9.2 (09-July-2013):
### 0.9.2 (2013-07-09)

* Improve TCP state machine for connection teardown.
* Limit fragment number to 8, and coalesce buffers if it goes higher.
* Adapt to mirage-platform-0.9.2 API changes.

0.9.1 (12-Jun-2013):
### 0.9.1 (2013-06-12)

* Depend on mirage-platform-0.9.1 direct tuntap interfaces.
* Version bump to catch up with mirage-platform.

0.5.2 (08-Feb-2013):
### 0.5.2 (08-Feb-2013-02-03)

* Encourage scatter-gather I/O all the time, rather than playing tricks
with packet header buffers. This simplifies the output path considerably
and cuts minor heap allocations down.
* Install the packed `cmx` along with the `cmxa` to ensure that the
compiler can do cross-module optimization (this is not a fatal error,
but will impact performance if the `cmx` file is not present).

0.5.1 (20-Dec-2012):
### 0.5.1 (20-Dec-2012-12-20)

* Update socket stack to use Cstruct 0.6.0 API

0.5.0 (20-Dec-2012):
### 0.5.0 (2012-12-20)

* Update Cstruct API to 0.6.0
* [tcp] write now blocks if the write buffer and write window are full

0.4.1 (14-Dec-2012):
### 0.4.1 (2012-12-14)

* Add iperf self-test that creates two VIFs and transmits across
them. This is a useful local test which stresses the bridge
code using just one VM.
Expand All @@ -171,11 +250,13 @@ interface changes are:
* Fix TCP fast recovery to wait until all in-flight packets are
acked, rather then exiting early.

0.4.0 (11-Dec-2012):
### 0.4.0 (11-Dec-2012-12-11)

* Require OCaml-4.00.0 or higher, and add relevant build fixes
to deal with module packing.

0.3.1 (10-Dec-2012):
### 0.3.1 (2012-12-10)

* Fix the DHCP client marshalling for IPv4 addresses.
* Expose the interface MAC address in the Manager signature.
* Tweak TCP ISN calculation to be more friendly on a 32-bit host.
Expand All @@ -184,5 +265,6 @@ interface changes are:
* Add Ethif.set/disable_promiscuous to permit directly tapping
a network interface.

0.3.0 (04-Sep-2012):
### 0.3.0 (2012-09-04)

* Initial public release.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,7 @@ system that supports IPv4, IPv6, ARPv4, DHCPv4 and TCP/IP.
* WWW: <http://openmirage.org>
* E-mail: <mirageos-devel@lists.xenproject.org>
* Issues: <https://github.com/mirage/mirage-tcpip/issues>

### License

`mirage-tcpip` is distributed under the ISC license.
Loading

0 comments on commit e2871a2

Please sign in to comment.