Commit Graph

91 Commits

Author SHA1 Message Date
whitequark 0134bb7399 Bump Rust version requirement to 1.27.
This allows us to use:
(1.26)
  - impl Trait
  - autoderef in pattern matching
  - fixed slice patterns
  - inclusive ranges
(1.27)
  - dyn Trait
  - #[must_use] on functions

To prepare for edition change, dyn is added where applicable. Other
edition changes would require bumping the requirement even higher,
and so they are not applied for now.
2019-06-22 08:19:39 +00:00
Kai Lüke 2ac9c77d18 Document that Packetization Layer Path MTU Discovery in TCP is not supported
PLPMTU should be used if ICMP messages are dropped by the network.

Closes: #277
Approved by: whitequark
2019-02-27 00:29:01 +08:00
Kai Lüke 15c6c24a87 Increase number of assembler gaps to 32 for std/alloc targets
Only allowing four missing packets is hurting
performance for large receive windows.

The new value was picked by observing good
performance with 500 kB socket buffers.

Closes: #264
Approved by: whitequark
2018-10-05 18:36:35 +08:00
whitequark b06bb735c7 Bring feature list in README up to date. 2018-08-28 00:13:35 +00:00
jhwgh1968 88016e675f Fully implement TCP Window Scaling
Closes: #253
Approved by: whitequark
2018-08-20 06:57:44 +08:00
Astro a8f2725784 Implement IGMPv1/v2 processing.
Closes: #178
Approved by: whitequark
2018-08-01 10:26:51 +08:00
Valentin Lorentz 2d716883b6 Add support for IPv6 gateways.
Closes: #207
Approved by: dlrobertson
2018-05-14 09:39:39 +08:00
Kai Lüke febe22b578 Mention that Probing Zero Windows is not implemented for TCP
Closes: #201
Approved by: whitequark
2018-05-08 01:47:24 +08:00
Dan Robertson 879e3ea3cd Update README detailing IPv6 support
Add sections detailing the current support for IPv6.

Closes: #196
Approved by: whitequark
2018-05-07 23:49:56 +08:00
Michal Podhradsky 31ab2c788e Update README.md 2018-04-17 18:04:55 +00:00
Adam Greig 96118d370d Use core::time::Duration. Closes #182.
Duration is now in core, so we can use that instead of conditional
compilation on std and std::time::Duration.

Closes: #189
Approved by: whitequark
2018-04-11 07:24:32 +08:00
Herman J. Radtke III d612a93163 Fix mistakes in README
- Fix binary path in tcpdump example
- Fix IP address in ping example
2018-01-13 18:42:17 +00:00
Dan Robertson 439e0a2cc1 Add the proto-ipv4 feature. 2017-12-24 13:28:59 +00:00
whitequark d8685dbb1e Unswitch the IP checksum loop for 30% improvement in performance. 2017-12-23 12:17:39 +00:00
whitequark fb11c4a84d Convert the stress.rs example into a simple benchmark.
There are no more bugs exposed by stress.rs as far as I can tell,
so let's make it do something more useful.
2017-12-22 20:59:30 +00:00
whitequark ae17151f2a Fix a few documentation issues. NFC. 2017-12-22 13:13:43 +00:00
whitequark 8b6050f711 Clean up our feature story and more aggressively test features. 2017-12-22 08:54:58 +00:00
whitequark 8863eb8db1 Add an HTTP client example. 2017-12-18 14:53:09 +00:00
whitequark eaa50d0003 Rewrite the ARP cache to allow for flood protection and expiration. 2017-11-21 10:53:55 +00:00
whitequark cee79f30f3 Update README. 2017-11-10 02:02:17 +00:00
whitequark 5c2deb5dd2 Update README. 2017-10-25 00:30:57 +00:00
whitequark 1cd3625bf4 Small adjustments to TTL code; style, docs, and tests. NFCI. 2017-10-24 23:12:55 +00:00
Dan Robertson eef65d2676 Implement set_ttl for Tcp and Udp sockets
- Add the ttl member to the IpRepr
 - Add the ttl member along with setters and getters to the tcp and udp
   socket types
 - Add unit tests for the new set_ttl parameter
 - Update usage of IpRepr to include the ttl value
2017-10-24 23:02:18 +00:00
Egor Karavaev 5be76b8dc1 Add support for IPv4 default gateway. 2017-10-03 15:17:29 +00:00
whitequark 4826d37c45 Allow disabling any of: raw, TCP or UDP sockets. 2017-09-25 00:20:22 +00:00
whitequark 0a8a962e94 Reorganize features using namespaces, to match module hierarchy.
I'm about to add a whole lot more features, and it's going to get
quite confusing otherwise.
2017-09-24 23:51:19 +00:00
Egor Karavaev 0e88617b82 Uncomment associated constants. 2017-09-24 23:25:18 +00:00
whitequark 2bb1d1bfc1 Clarify README paragraph about features.
We can easily (although annoyingly) do IP fragmentation with
the assembler now, so I don't see *any* features that are apriori
impossible to implement anymore.
2017-09-24 16:07:24 +00:00
whitequark 42b3a71f72 Add a keep-alive and timeout demo to the examples. 2017-09-24 13:58:53 +00:00
whitequark 73462b9503 Bump version. 2017-09-22 20:01:44 +00:00
whitequark 94e3109ab0 Update features to reflect merge of alloc and collections crates. 2017-09-22 19:54:47 +00:00
whitequark 4f6f6d7610 Update README.
Mention SACKs, don't spend many words on junk no one wants,
reword everything, and reorder the features so that the ones
with a higher cost/benefit ratio are higher up.
2017-09-22 19:49:54 +00:00
whitequark e38ec8f397 Update README.
We don't really care about fast open one way or another, this entry
was a misunderstanding of RFC 793's behavior wrt data in SYN packets.
2017-09-22 19:20:24 +00:00
whitequark 7a2cd7842d Implement reassembly of out-of-order TCP segments. 2017-09-22 10:06:40 +00:00
whitequark 9281733209 Implement TCP timeouts. 2017-09-18 11:05:40 +00:00
whitequark fe80bca19d Implement TCP keep-alive. 2017-09-16 10:54:59 +00:00
whitequark bdb9c03081 Update feature list in README to mention everything from RFC 1122. 2017-09-03 12:03:55 +00:00
whitequark 9a5d056d7f Add a TCP data source endpoint to the server example. 2017-08-31 09:09:16 +00:00
whitequark a9c958612c README: add some notable omissions. 2017-08-30 06:15:39 +00:00
whitequark acf4688ad8 README: fix typo. 2017-08-25 06:20:10 +00:00
whitequark afdf73ffef TcpRepr::push → TcpControl::Psh.
This is done for simplification. FIN implies PSH, RST doesn't have
any meaning with PSH, and SYN|PSH only makes sense in the context
of TCP Fast Open, in the context of which, any data in the original
SYN already implies PSH.
2017-08-25 06:05:17 +00:00
whitequark 66a6dde59c README.md: cleanup. 2017-08-21 07:28:32 +00:00
whitequark e0d8fcfb72 Emit exceptional events with the DEBUG log level, not TRACE. 2017-08-01 11:21:58 +00:00
whitequark 7825bc6070 Implement fmt::Write for TcpSocket. 2017-07-30 06:59:01 +00:00
whitequark ae903e8841 Add UdpSocket::is_open, similar to TcpSocket::is_open in function.
Fixes #31.
2017-07-30 01:17:58 +00:00
whitequark 7b194c5d36 Update README.
Fixes #30.
2017-07-30 00:56:56 +00:00
whitequark bcd9be3d17 Update README. 2017-07-23 22:36:56 +00:00
whitequark 75ddbe9776 Add a bare-metal usage example. 2017-07-14 03:18:11 +00:00
whitequark 62c9b7d6fa In examples, trace the packets being dropped by the fault injector. 2017-06-26 08:44:07 +00:00
Egor Karavaev 8d7fa94a6d Add the `ping` example. 2017-06-21 03:51:02 +00:00