AnotherTest
7d0bf9b5a9
Kernel+AK: Separate out MACAddress and move it into AK
2020-04-05 09:50:48 +02:00
AnotherTest
2ea934bcfd
Kernel: Do not reject broadcast UDP packets right away
...
This patch relaxes how we think about UDP packets being "for us" a bit;
the proper way to handle this would be to also check if the matched
socket has SO_BROADCAST set, but we don't have that :)
2020-04-04 12:23:46 +02:00
AnotherTest
b3d7c5d9de
Kernel: Send Fragmented IPv4 packets if payload size > mtu
...
This adds IPv4 fragmentation, so now we can send huuuuuuge packets
properly.
2020-04-02 14:38:28 +02:00
Liav A
06e7fc9dee
Kernel: Limit IRQ rate within E1000 network adapter
...
This is not a complete fix, since spurious IRQs under heavy loads can
still occur. However, this fix limits the amount of spurious IRQs.
It is encouraged to provide a better fix in the future, probably
something that takes into account handling of PCI level-triggered
interrupts.
2020-03-24 16:15:33 +01:00
Liav A
893d4a41c2
Kernel: Enable IRQs before sending commands to the E1000 adapter
...
This change prevents a race condition, in which case we send a command
and we are losing an interrupt.
2020-03-24 16:15:33 +01:00
Shannon Booth
81adefef27
Kernel: Run clang-format on files
...
Let's rip off the band-aid
2020-03-22 01:22:32 +01:00
Liav A
e880fe0765
Kernel: Use a const reference to RegisterState in IRQ handling
2020-03-19 15:48:00 +01:00
marprok
0fd5f0e4bd
Userland: ifconfig can change the IP address of the default gateway
...
ioctl can now perform a request for a specific route and change
the address of it's default gateway.
2020-03-15 19:09:31 +01:00
Marios Prokopakis
8cf962a102
Userland: Set the mask of a network adapter with ifconfig ( #1388 )
...
A new IP address or a new network mask can be specified in the command
line arguments of ifconfig to replace the old values of a given network
adapter. Additionally, more information is being printed for each adapter.
2020-03-11 21:30:41 +01:00
Liav A
8639ee2640
PCI: Enable LogStream output for addresses
2020-03-09 10:53:13 +01:00
Liav A
4479e874da
Kernel: Ensure RTL8139NetworkAdapter uses virtual memory correctly
2020-03-08 14:13:30 +01:00
Liav A
9dbc273675
Kernel: Ensure E1000NetworkAdapter uses virtual memory correctly
2020-03-08 14:13:30 +01:00
Andreas Kling
b1058b33fb
AK: Add global FlatPtr typedef. It's u32 or u64, based on sizeof(void*)
...
Use this instead of uintptr_t throughout the codebase. This makes it
possible to pass a FlatPtr to something that has u32 and u64 overloads.
2020-03-08 13:06:51 +01:00
Andreas Kling
f2f16e1c24
IPv4: Keep IPv4 socket locked during receive operations
...
We unlock/relock around blocking, but outside of that we now keep the
socket locked.
This fixes an intermittent ASSERT(m_can_read) failure.
2020-03-07 11:27:55 +01:00
Liav A
773afefe7c
Kernel: Change HandlerPurpose to HandlerType
...
Also, GenericInterruptHandler class requires to implement two new
methods.
2020-03-06 11:19:51 +01:00
Liav A
0fc60e41dd
Kernel: Use klog() instead of kprintf()
...
Also, duplicate data in dbg() and klog() calls were removed.
In addition, leakage of virtual address to kernel log is prevented.
This is done by replacing kprintf() calls to dbg() calls with the
leaked data instead.
Also, other kprintf() calls were replaced with klog().
2020-03-02 22:23:39 +01:00
Liav A
15dfca4a79
Kernel: Use IOAddress class in Network adapters' drivers
...
Also, kprintf() calls were replaced with klog() calls.
2020-03-02 22:23:39 +01:00
Andreas Kling
c3c8eae25a
Kernel: Remove some unnecessary .characters() when doing dbg()<<String
2020-03-01 13:23:26 +01:00
Liav A
97e5ccd984
E1000NetworkAdapter: Use dbg() instead of dbgprintf()
2020-02-27 13:05:12 +01:00
Liav A
b7b2fb083d
LoopbackAdapter: Use dbg() instead of dbgprintf()
2020-02-27 13:05:12 +01:00
Liav A
d6ae2cf46a
IPv4Socket: Use dbg() instead of dbgprintf()
2020-02-27 13:05:12 +01:00
Andreas Kling
ceec1a7d38
AK: Make Vector use size_t for its size and capacity
2020-02-25 14:52:35 +01:00
Liav A
a7d7c0e60c
Kernel: Change get_pci_address() to pci_address() in PCI::Device class
...
The Serenity Coding Style tends to not accept the word "get" in
methods' names if possible.
2020-02-24 11:27:03 +01:00
Liav A
d83a3eff1f
Kernel: Update Network adapter classes to use the PCI::Device class
...
Those classes will inherit from the PCI::Device class, thus,
they can still implement IRQ handling.
2020-02-24 11:27:03 +01:00
Andreas Kling
48f7c28a5c
Kernel: Replace "current" with Thread::current and Process::current
...
Suggested by Sergey. The currently running Thread and Process are now
Thread::current and Process::current respectively. :^)
2020-02-17 15:04:27 +01:00
Andreas Kling
635ae70b8f
Kernel: More header dependency reduction work
2020-02-16 02:15:33 +01:00
Andreas Kling
1d611e4a11
Kernel: Reduce header dependencies of MemoryManager and Region
2020-02-16 01:33:41 +01:00
Andreas Kling
a356e48150
Kernel: Move all code into the Kernel namespace
2020-02-16 01:27:42 +01:00
Andreas Kling
6cbd72f54f
AK: Remove bitrotted Traits::dump() mechanism
...
This was only used by HashTable::dump() which I used when doing the
first HashTable implementation. Removing this allows us to also remove
most includes of <AK/kstdio.h>.
2020-02-10 11:55:34 +01:00
Liav A
e559af2008
Kernel: Apply changes to use LibBareMetal definitions
2020-02-09 19:38:17 +01:00
Andreas Kling
db2ede9427
Net: Short-circuit routing to the IPv4 address of a local adapter
...
This makes it possible to open http://localhost:8000/ in Browser. :^)
2020-02-09 14:15:55 +01:00
Andreas Kling
271bc4b2f2
Net: When routing to loopback, use the loopback adapter's MAC address
...
Otherwise the routing decision gets interpreted as "host unreachable."
2020-02-09 14:15:55 +01:00
Andreas Kling
d8a30e2ad2
Net: Give the LoopbackAdapter a MAC address
...
Since the routing code currently interprets an all-zero MAC address as
an invalid next hop, let's give the loopback adapter an address.
2020-02-09 14:15:55 +01:00
Andreas Kling
70c9a89707
IPv4: Put some TCP close handshake debug spam behind TCP_SOCKET_DEBUG
2020-02-08 16:04:58 +01:00
Andreas Kling
3891e6d739
IPv4: Sockets should say can_read() after reading is shut down
...
This allows clients to get their EOF after shutting down reading.
2020-02-08 16:04:31 +01:00
Andreas Kling
228a1e9099
IPv4: Basic implementation of TCP socket shutdown
...
We can now participate in the TCP connection closing handshake. :^)
This implementation is definitely not complete and needs to handle a
bunch of other cases. But it's a huge improvement over not being able
to close connections at all.
Note that we hold on to pending-close sockets indefinitely, until they
are moved into the Closed state. This should also have a timeout but
that's still a FIXME. :^)
Fixes #428 .
2020-02-08 16:04:27 +01:00
Andreas Kling
1037a1d2ba
IPv4: Don't ACK empty TCP packets
...
Wireshark was complaining about duplicate ACK's and this was why.
2020-02-08 14:09:02 +01:00
Andreas Kling
48f13f2a81
IPv4: Split IPv4Socket::recvfrom() into packet/byte buffered functions
...
This code was really hard to follow since it handles two separate modes
of buffering the data.
2020-02-08 13:09:37 +01:00
Andreas Kling
6be880bd10
IPv4: Send TCP packets right away instead of waiting to "retry"
...
Also be more explicit about zero-initializing OutgoingPacket objects.
2020-02-08 01:45:45 +01:00
Andreas Kling
0c12d9a618
IPv4: Drop incoming packets on sockets that are shut down for reading
2020-02-08 00:58:11 +01:00
Andreas Kling
2b0b7cc5a4
Net: Add a basic sys$shutdown() implementation
...
Calling shutdown prevents further reads and/or writes on a socket.
We should do a few more things based on the type of socket, but this
initial implementation just puts the basic mechanism in place.
Work towards #428 .
2020-02-08 00:54:43 +01:00
Andreas Kling
a3f39fe789
Net: Make NetworkAdapter reference-counted
...
The idea behind WeakPtr<NetworkAdapter> was to support hot-pluggable
network adapters, but on closer thought, that's super impractical so
let's not go down that road.
2020-02-08 00:19:46 +01:00
Andreas Kling
71ca7ba31f
Kernel: Fix three broken format strings in Socket::{get,set}sockopt()
...
These had more %'s than actual arguments, oops!
2020-02-07 23:49:15 +01:00
Andreas Kling
d04fcccc90
Kernel: Truncate addresses stored by getsockname() and getpeername()
...
If there's not enough space in the output buffer for the whole sockaddr
we now simply truncate the address instead of returning EINVAL.
This patch also makes getpeername() actually return the peer address
rather than the local address.. :^)
2020-02-07 23:43:32 +01:00
Liav A
583e9ad372
Kernel: Detect devices when enumerating the PCI bus
...
Instead of making each driver to enumerate the PCI bus itself,
PCI::Initializer will call detect_devices() to do one enumeration
of the bus.
2020-02-02 00:57:13 +01:00
Andreas Kling
625ab1f527
Kernel: LocalSocket should fail with EADDRINUSE for already-bound files
2020-01-30 22:15:45 +01:00
Andreas Kling
164d9ecad7
Kernel: Some more int => size_t in NetworkAdapter and subclasses
2020-01-30 21:51:27 +01:00
Andreas Kling
03837e37a3
Kernel: Make IPv4Socket::protocol_send() use a size_t for buffer size
2020-01-29 12:27:42 +01:00
Andreas Kling
137a45dff2
Kernel: read()/write() should respect timeouts when used on a sockets
...
Move timeout management to the ReadBlocker and WriteBlocker classes.
Also get rid of the specialized ReceiveBlocker since it no longer does
anything that ReadBlocker can't do.
2020-01-26 17:54:23 +01:00
Andreas Kling
2ce9a705e3
IPv4: Mark UDP sockets as connected immediately upon connect()
...
This makes it possible to write() to a blocking UDPSocket. Previously
this was not possible since can_write() depends on is_connected().
2020-01-26 14:43:08 +01:00