Andreas Kling
15657f0916
AK: Remove Buffer<T> since it was only ever instantiated with T=byte.
...
Instead make a specialized AK::ByteBufferImpl class for the backing store
of AK::ByteBuffer. This reduces template bloat.
2019-03-16 13:12:13 +01:00
Andreas Kling
aa19735c5a
IRCClient: Start working on a simple graphical IRC client.
...
This will be a nice way to exercise both LibGUI and the TCP/IP support. :^)
2019-03-15 12:14:23 +01:00
Andreas Kling
5dfdcf796d
TCP: Correct checksum for packets with odd number of bytes.
2019-03-14 19:57:54 +01:00
Andreas Kling
f9569db1e5
TCP: Collect the payload if present in a packet with FIN set.
2019-03-14 15:28:23 +01:00
Andreas Kling
25e521f510
TCP: Start working on auto-closing connections when we get FIN.
2019-03-14 15:23:32 +01:00
Andreas Kling
69ffaa366d
Kernel: Handle unaligned ELF segments gracefully in the executable loader.
2019-03-14 14:51:43 +01:00
Andreas Kling
d712d353ac
Kernel: Remove leftover debug spam when returning from mkdir() syscall.
2019-03-14 14:11:35 +01:00
Andreas Kling
edb986c276
IPv4: Factor out UDP parts of IPv4Socket into a UDPSocket class.
2019-03-14 12:43:18 +01:00
Andreas Kling
274b500bac
IPv4: Move more stuff from IPv4Socket to TCPSocket.
2019-03-14 12:28:30 +01:00
Andreas Kling
d2176eddfc
Kernel: Factor out TCP parts of IPv4Socket into a TCPSocket class.
2019-03-14 12:20:38 +01:00
Andreas Kling
8014473918
TCP: Update our side's ack number based on the other side's seq number.
2019-03-14 11:45:22 +01:00
Andreas Kling
54e7df0586
Kernel: Add SocketHandle helper class that wraps locked sockets.
...
This allows us to have a comfy IPv4Socket::from_tcp_port() API that returns
a socket that's locked and safe to access. No need to worry about locking
at the client site.
2019-03-14 09:19:24 +01:00
Andreas Kling
3d5296a901
IPv4: Last burst of TCP hacking for today.
...
Connecting to a test server and exchanging data back and forth works.
2019-03-14 01:44:42 +01:00
Andreas Kling
be46f1bb1f
IPv4: More work on the TCP implementation.
...
Reading from the peer now kinda works. Something still going wrong with
sending packets but it's getting closer.
2019-03-14 01:00:10 +01:00
Andreas Kling
66d55f8e0c
IPv4: More work on the TCP implementation.
...
I can now establish a connection to my little test server on the host.
2019-03-14 00:20:44 +01:00
Andreas Kling
032d9d7065
IPv4: More hacking on bringing up TCP support.
...
This was a bit more complicated than I expected, but it's moving forward.
2019-03-13 23:14:30 +01:00
Andreas Kling
7aba68d51c
Userland+LibC: Add a new little "tc" program for testing TCP.
...
Also added send() and recv() to LibC in support of this. They are just
wrappers around sendto() and recvfrom().
2019-03-13 17:33:40 +01:00
Andreas Kling
c588653f76
IPv4: Begin fleshing out TCP support.
2019-03-13 17:17:07 +01:00
Andreas Kling
ef5d0a397c
IPv4: Do the TCP-to-socket mapping in the same way as UDP.
...
We don't actually have TCP support yet, but we'll get there soon. :^)
2019-03-13 16:43:42 +01:00
Andreas Kling
3ad9561b80
IPv4: Use the UDP-to-socket map to handle incoming UDP packets.
2019-03-13 16:23:22 +01:00
Andreas Kling
209a16bb7f
IPv4: Dynamically allocate the UDP source port if needed.
2019-03-13 16:05:56 +01:00
Andreas Kling
4dddf949c8
IPv4: More work on UDP support.
...
I'm now able to connect to a simple UDP server on my host machine and
exchange some data. Very cool! :^)
2019-03-13 15:40:30 +01:00
Andreas Kling
a9dc332a11
IPv4: recvfrom() shouldn't care about what's in the outparam on entry.
2019-03-13 15:00:28 +01:00
Andreas Kling
ea6a537b70
Userland: Add a simple utility for UDP testing.
2019-03-13 15:00:02 +01:00
Andreas Kling
19a51132f5
Kernel: recvfrom() should treat the address arguments as outparams.
2019-03-13 14:47:21 +01:00
Andreas Kling
b59d588c04
Kernel: Start fleshing out an UDP implementation.
2019-03-13 14:22:27 +01:00
Andreas Kling
562663df7c
Add support for socket send/receive timeouts.
...
Only the receive timeout is hooked up yet. You can change the timeout by
calling setsockopt(..., SOL_SOCKET, SO_RCVTIMEO, ...).
Use this mechanism to make /bin/ping report timeouts.
2019-03-13 13:15:05 +01:00
Andreas Kling
7bcd386338
NetworkAdapter: Use a ByteBuffer instead of kmalloc/kfree in send().
2019-03-13 13:12:29 +01:00
Andreas Kling
cf250e1245
More work on IPv4 sockets and /bin/ping.
...
It's now actually possible to ping other hosts on the network! :^)
I've switched the "run" script over to starting QEMU with user networking
since that works better for my testing needs right now.
2019-03-13 03:26:01 +01:00
Andreas Kling
ce7c302933
Kernel: Oops, gettimeofday()'s tv_usec should be micro, not milliseconds.
2019-03-13 03:25:18 +01:00
Andreas Kling
a7d5e9781a
Kernel+LibC+Userland: Yet more networking bringup hacking.
...
All ICMP sockets now receive all ICMP packets. All this buffering is gonna
need some limits and such.
2019-03-12 17:27:07 +01:00
Andreas Kling
a017a77442
Kernel+LibC+Userland: Start working on an IPv4 socket backend.
...
The first userland networking program will be "ping" :^)
2019-03-12 15:51:42 +01:00
Andreas Kling
8e667747f0
Kernel: Add a way to look up NetworkAdapters by IPv4 address.
2019-03-12 13:30:36 +01:00
Andreas Kling
c6a2012fe9
Kernel: Collect IPv4 stuff in IPv4.h and ARP stuff in ARP.h.
2019-03-12 12:49:01 +01:00
Andreas Kling
87ecf290f4
Kernel: More work on the ICMP and IPv4 support.
2019-03-12 12:43:30 +01:00
Andreas Kling
9858be636f
Kernel: Fix up the ICMP implementation to generate correct Echo replies.
...
Serenity now responds to ping. :^)
2019-03-12 11:44:38 +01:00
Andreas Kling
75e0ddd46a
Kernel: More work on ICMP support.
...
We can now kinda sorta respond to ICMP::EchoRequest although there's
still something not entirely right with the packets.
2019-03-12 04:40:13 +01:00
Andreas Kling
5bd9844dd6
Kernel: Start adding IPv4 support, starting with ICMP echo messages.
...
This doesn't work correctly yet, but it's getting nice enough to commit.
2019-03-12 04:11:20 +01:00
Andreas Kling
d5dbb602b8
Kernel: Tidy up networking code with some named constants.
2019-03-12 01:30:49 +01:00
Andreas Kling
90f60d2f65
Kernel: Cache MAC<->IP mappings (from ARP responses) seen on the wire.
2019-03-12 00:56:33 +01:00
Andreas Kling
05c1a79454
Kernel: Minor style cleanup in NetworkTask.
2019-03-12 00:01:07 +01:00
Andreas Kling
318b01e055
Kernel: Bring up enough networking code that we can respond to ARP requests.
...
This is all pretty rickety but we can now respond to "arping" from the host
while running inside QEMU. Very cool. :^)
2019-03-11 23:21:38 +01:00
Andreas Kling
35098cbde1
Kernel: Add a NetworkTask and a received network packet queue.
...
It will be easier to deal with incoming packets in a separate task.
2019-03-11 12:43:45 +01:00
Andreas Kling
47b096feb4
Kernel: More work on bringing up E1000 support.
2019-03-11 11:11:29 +01:00
Andreas Kling
a36eaeb18c
Kernel: Remove accidentally committed debugging code.
2019-03-11 01:57:34 +01:00
Andreas Kling
1678ac69ef
Kernel: More work on Ethernet support.
2019-03-10 23:40:09 +01:00
Andreas Kling
97664fad60
Kernel: A bunch of hacking towards initial Ethernet support.
2019-03-10 20:59:23 +01:00
Andreas Kling
4641ee49b5
Kernel: Add a simple MACAddress class.
2019-03-10 19:15:22 +01:00
Andreas Kling
405413c354
Kernel: Start adding support for E1000 network adapters.
2019-03-10 15:25:33 +01:00
Andreas Kling
37388b311f
ProcessManager: Show some basic system memory stats below the process table.
...
This really improves the feeling of "system overview" :^)
2019-03-10 12:13:22 +01:00