mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 04:37:34 +00:00
Kernel: Run clang-format on everything.
This commit is contained in:
parent
98eeb8f22d
commit
bc951ca565
63 changed files with 974 additions and 856 deletions
|
@ -1,90 +1,90 @@
|
|||
#include <Kernel/IO.h>
|
||||
#include <Kernel/Net/E1000NetworkAdapter.h>
|
||||
#include <Kernel/PCI.h>
|
||||
#include <Kernel/IO.h>
|
||||
|
||||
#define REG_CTRL 0x0000
|
||||
#define REG_STATUS 0x0008
|
||||
#define REG_EEPROM 0x0014
|
||||
#define REG_CTRL_EXT 0x0018
|
||||
#define REG_IMASK 0x00D0
|
||||
#define REG_RCTRL 0x0100
|
||||
#define REG_RXDESCLO 0x2800
|
||||
#define REG_RXDESCHI 0x2804
|
||||
#define REG_RXDESCLEN 0x2808
|
||||
#define REG_RXDESCHEAD 0x2810
|
||||
#define REG_RXDESCTAIL 0x2818
|
||||
#define REG_TCTRL 0x0400
|
||||
#define REG_TXDESCLO 0x3800
|
||||
#define REG_TXDESCHI 0x3804
|
||||
#define REG_TXDESCLEN 0x3808
|
||||
#define REG_TXDESCHEAD 0x3810
|
||||
#define REG_TXDESCTAIL 0x3818
|
||||
#define REG_RDTR 0x2820 // RX Delay Timer Register
|
||||
#define REG_RXDCTL 0x3828 // RX Descriptor Control
|
||||
#define REG_RADV 0x282C // RX Int. Absolute Delay Timer
|
||||
#define REG_RSRPD 0x2C00 // RX Small Packet Detect Interrupt
|
||||
#define REG_TIPG 0x0410 // Transmit Inter Packet Gap
|
||||
#define ECTRL_SLU 0x40 //set link up
|
||||
#define RCTL_EN (1 << 1) // Receiver Enable
|
||||
#define RCTL_SBP (1 << 2) // Store Bad Packets
|
||||
#define RCTL_UPE (1 << 3) // Unicast Promiscuous Enabled
|
||||
#define RCTL_MPE (1 << 4) // Multicast Promiscuous Enabled
|
||||
#define RCTL_LPE (1 << 5) // Long Packet Reception Enable
|
||||
#define RCTL_LBM_NONE (0 << 6) // No Loopback
|
||||
#define RCTL_LBM_PHY (3 << 6) // PHY or external SerDesc loopback
|
||||
#define RTCL_RDMTS_HALF (0 << 8) // Free Buffer Threshold is 1/2 of RDLEN
|
||||
#define RTCL_RDMTS_QUARTER (1 << 8) // Free Buffer Threshold is 1/4 of RDLEN
|
||||
#define RTCL_RDMTS_EIGHTH (2 << 8) // Free Buffer Threshold is 1/8 of RDLEN
|
||||
#define RCTL_MO_36 (0 << 12) // Multicast Offset - bits 47:36
|
||||
#define RCTL_MO_35 (1 << 12) // Multicast Offset - bits 46:35
|
||||
#define RCTL_MO_34 (2 << 12) // Multicast Offset - bits 45:34
|
||||
#define RCTL_MO_32 (3 << 12) // Multicast Offset - bits 43:32
|
||||
#define RCTL_BAM (1 << 15) // Broadcast Accept Mode
|
||||
#define RCTL_VFE (1 << 18) // VLAN Filter Enable
|
||||
#define RCTL_CFIEN (1 << 19) // Canonical Form Indicator Enable
|
||||
#define RCTL_CFI (1 << 20) // Canonical Form Indicator Bit Value
|
||||
#define RCTL_DPF (1 << 22) // Discard Pause Frames
|
||||
#define RCTL_PMCF (1 << 23) // Pass MAC Control Frames
|
||||
#define RCTL_SECRC (1 << 26) // Strip Ethernet CRC
|
||||
#define REG_CTRL 0x0000
|
||||
#define REG_STATUS 0x0008
|
||||
#define REG_EEPROM 0x0014
|
||||
#define REG_CTRL_EXT 0x0018
|
||||
#define REG_IMASK 0x00D0
|
||||
#define REG_RCTRL 0x0100
|
||||
#define REG_RXDESCLO 0x2800
|
||||
#define REG_RXDESCHI 0x2804
|
||||
#define REG_RXDESCLEN 0x2808
|
||||
#define REG_RXDESCHEAD 0x2810
|
||||
#define REG_RXDESCTAIL 0x2818
|
||||
#define REG_TCTRL 0x0400
|
||||
#define REG_TXDESCLO 0x3800
|
||||
#define REG_TXDESCHI 0x3804
|
||||
#define REG_TXDESCLEN 0x3808
|
||||
#define REG_TXDESCHEAD 0x3810
|
||||
#define REG_TXDESCTAIL 0x3818
|
||||
#define REG_RDTR 0x2820 // RX Delay Timer Register
|
||||
#define REG_RXDCTL 0x3828 // RX Descriptor Control
|
||||
#define REG_RADV 0x282C // RX Int. Absolute Delay Timer
|
||||
#define REG_RSRPD 0x2C00 // RX Small Packet Detect Interrupt
|
||||
#define REG_TIPG 0x0410 // Transmit Inter Packet Gap
|
||||
#define ECTRL_SLU 0x40 //set link up
|
||||
#define RCTL_EN (1 << 1) // Receiver Enable
|
||||
#define RCTL_SBP (1 << 2) // Store Bad Packets
|
||||
#define RCTL_UPE (1 << 3) // Unicast Promiscuous Enabled
|
||||
#define RCTL_MPE (1 << 4) // Multicast Promiscuous Enabled
|
||||
#define RCTL_LPE (1 << 5) // Long Packet Reception Enable
|
||||
#define RCTL_LBM_NONE (0 << 6) // No Loopback
|
||||
#define RCTL_LBM_PHY (3 << 6) // PHY or external SerDesc loopback
|
||||
#define RTCL_RDMTS_HALF (0 << 8) // Free Buffer Threshold is 1/2 of RDLEN
|
||||
#define RTCL_RDMTS_QUARTER (1 << 8) // Free Buffer Threshold is 1/4 of RDLEN
|
||||
#define RTCL_RDMTS_EIGHTH (2 << 8) // Free Buffer Threshold is 1/8 of RDLEN
|
||||
#define RCTL_MO_36 (0 << 12) // Multicast Offset - bits 47:36
|
||||
#define RCTL_MO_35 (1 << 12) // Multicast Offset - bits 46:35
|
||||
#define RCTL_MO_34 (2 << 12) // Multicast Offset - bits 45:34
|
||||
#define RCTL_MO_32 (3 << 12) // Multicast Offset - bits 43:32
|
||||
#define RCTL_BAM (1 << 15) // Broadcast Accept Mode
|
||||
#define RCTL_VFE (1 << 18) // VLAN Filter Enable
|
||||
#define RCTL_CFIEN (1 << 19) // Canonical Form Indicator Enable
|
||||
#define RCTL_CFI (1 << 20) // Canonical Form Indicator Bit Value
|
||||
#define RCTL_DPF (1 << 22) // Discard Pause Frames
|
||||
#define RCTL_PMCF (1 << 23) // Pass MAC Control Frames
|
||||
#define RCTL_SECRC (1 << 26) // Strip Ethernet CRC
|
||||
|
||||
// Buffer Sizes
|
||||
#define RCTL_BSIZE_256 (3 << 16)
|
||||
#define RCTL_BSIZE_512 (2 << 16)
|
||||
#define RCTL_BSIZE_1024 (1 << 16)
|
||||
#define RCTL_BSIZE_2048 (0 << 16)
|
||||
#define RCTL_BSIZE_4096 ((3 << 16) | (1 << 25))
|
||||
#define RCTL_BSIZE_8192 ((2 << 16) | (1 << 25))
|
||||
#define RCTL_BSIZE_16384 ((1 << 16) | (1 << 25))
|
||||
#define RCTL_BSIZE_256 (3 << 16)
|
||||
#define RCTL_BSIZE_512 (2 << 16)
|
||||
#define RCTL_BSIZE_1024 (1 << 16)
|
||||
#define RCTL_BSIZE_2048 (0 << 16)
|
||||
#define RCTL_BSIZE_4096 ((3 << 16) | (1 << 25))
|
||||
#define RCTL_BSIZE_8192 ((2 << 16) | (1 << 25))
|
||||
#define RCTL_BSIZE_16384 ((1 << 16) | (1 << 25))
|
||||
|
||||
// Transmit Command
|
||||
|
||||
#define CMD_EOP (1 << 0) // End of Packet
|
||||
#define CMD_IFCS (1 << 1) // Insert FCS
|
||||
#define CMD_IC (1 << 2) // Insert Checksum
|
||||
#define CMD_RS (1 << 3) // Report Status
|
||||
#define CMD_RPS (1 << 4) // Report Packet Sent
|
||||
#define CMD_VLE (1 << 6) // VLAN Packet Enable
|
||||
#define CMD_IDE (1 << 7) // Interrupt Delay Enable
|
||||
#define CMD_EOP (1 << 0) // End of Packet
|
||||
#define CMD_IFCS (1 << 1) // Insert FCS
|
||||
#define CMD_IC (1 << 2) // Insert Checksum
|
||||
#define CMD_RS (1 << 3) // Report Status
|
||||
#define CMD_RPS (1 << 4) // Report Packet Sent
|
||||
#define CMD_VLE (1 << 6) // VLAN Packet Enable
|
||||
#define CMD_IDE (1 << 7) // Interrupt Delay Enable
|
||||
|
||||
// TCTL Register
|
||||
|
||||
#define TCTL_EN (1 << 1) // Transmit Enable
|
||||
#define TCTL_PSP (1 << 3) // Pad Short Packets
|
||||
#define TCTL_CT_SHIFT 4 // Collision Threshold
|
||||
#define TCTL_COLD_SHIFT 12 // Collision Distance
|
||||
#define TCTL_SWXOFF (1 << 22) // Software XOFF Transmission
|
||||
#define TCTL_RTLC (1 << 24) // Re-transmit on Late Collision
|
||||
#define TCTL_EN (1 << 1) // Transmit Enable
|
||||
#define TCTL_PSP (1 << 3) // Pad Short Packets
|
||||
#define TCTL_CT_SHIFT 4 // Collision Threshold
|
||||
#define TCTL_COLD_SHIFT 12 // Collision Distance
|
||||
#define TCTL_SWXOFF (1 << 22) // Software XOFF Transmission
|
||||
#define TCTL_RTLC (1 << 24) // Re-transmit on Late Collision
|
||||
|
||||
#define TSTA_DD (1 << 0) // Descriptor Done
|
||||
#define TSTA_EC (1 << 1) // Excess Collisions
|
||||
#define TSTA_LC (1 << 2) // Late Collision
|
||||
#define LSTA_TU (1 << 3) // Transmit Underrun
|
||||
#define TSTA_DD (1 << 0) // Descriptor Done
|
||||
#define TSTA_EC (1 << 1) // Excess Collisions
|
||||
#define TSTA_LC (1 << 2) // Late Collision
|
||||
#define LSTA_TU (1 << 3) // Transmit Underrun
|
||||
|
||||
OwnPtr<E1000NetworkAdapter> E1000NetworkAdapter::autodetect()
|
||||
{
|
||||
static const PCI::ID qemu_bochs_vbox_id = { 0x8086, 0x100e };
|
||||
PCI::Address found_address;
|
||||
PCI::enumerate_all([&] (const PCI::Address& address, PCI::ID id) {
|
||||
PCI::enumerate_all([&](const PCI::Address& address, PCI::ID id) {
|
||||
if (id == qemu_bochs_vbox_id) {
|
||||
found_address = address;
|
||||
return;
|
||||
|
@ -231,7 +231,7 @@ void E1000NetworkAdapter::initialize_rx_descriptors()
|
|||
out32(REG_RXDESCHEAD, 0);
|
||||
out32(REG_RXDESCTAIL, number_of_rx_descriptors - 1);
|
||||
|
||||
out32(REG_RCTRL, RCTL_EN| RCTL_SBP| RCTL_UPE | RCTL_MPE | RCTL_LBM_NONE | RTCL_RDMTS_HALF | RCTL_BAM | RCTL_SECRC | RCTL_BSIZE_8192);
|
||||
out32(REG_RCTRL, RCTL_EN | RCTL_SBP | RCTL_UPE | RCTL_MPE | RCTL_LBM_NONE | RTCL_RDMTS_HALF | RCTL_BAM | RCTL_SECRC | RCTL_BSIZE_8192);
|
||||
}
|
||||
|
||||
void E1000NetworkAdapter::initialize_tx_descriptors()
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
#include <Kernel/Net/IPv4Socket.h>
|
||||
#include <Kernel/Net/TCPSocket.h>
|
||||
#include <Kernel/Net/UDPSocket.h>
|
||||
#include <Kernel/UnixTypes.h>
|
||||
#include <Kernel/Process.h>
|
||||
#include <Kernel/Net/NetworkAdapter.h>
|
||||
#include <Kernel/Net/IPv4.h>
|
||||
#include <Kernel/Net/ICMP.h>
|
||||
#include <Kernel/Net/TCP.h>
|
||||
#include <Kernel/Net/UDP.h>
|
||||
#include <Kernel/Net/ARP.h>
|
||||
#include <Kernel/Net/Routing.h>
|
||||
#include <LibC/errno_numbers.h>
|
||||
#include <Kernel/FileSystem/FileDescription.h>
|
||||
#include <Kernel/Net/ARP.h>
|
||||
#include <Kernel/Net/ICMP.h>
|
||||
#include <Kernel/Net/IPv4.h>
|
||||
#include <Kernel/Net/IPv4Socket.h>
|
||||
#include <Kernel/Net/NetworkAdapter.h>
|
||||
#include <Kernel/Net/Routing.h>
|
||||
#include <Kernel/Net/TCP.h>
|
||||
#include <Kernel/Net/TCPSocket.h>
|
||||
#include <Kernel/Net/UDP.h>
|
||||
#include <Kernel/Net/UDPSocket.h>
|
||||
#include <Kernel/Process.h>
|
||||
#include <Kernel/UnixTypes.h>
|
||||
#include <LibC/errno_numbers.h>
|
||||
|
||||
#define IPV4_SOCKET_DEBUG
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#include <Kernel/Net/LocalSocket.h>
|
||||
#include <Kernel/UnixTypes.h>
|
||||
#include <Kernel/Process.h>
|
||||
#include <Kernel/FileSystem/FileDescription.h>
|
||||
#include <Kernel/FileSystem/VirtualFileSystem.h>
|
||||
#include <Kernel/Net/LocalSocket.h>
|
||||
#include <Kernel/Process.h>
|
||||
#include <Kernel/UnixTypes.h>
|
||||
#include <LibC/errno_numbers.h>
|
||||
|
||||
//#define DEBUG_LOCAL_SOCKET
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
#include <Kernel/Net/NetworkAdapter.h>
|
||||
#include <Kernel/Net/EthernetFrameHeader.h>
|
||||
#include <Kernel/Net/EtherType.h>
|
||||
#include <Kernel/StdLib.h>
|
||||
#include <Kernel/kmalloc.h>
|
||||
#include <AK/HashTable.h>
|
||||
#include <Kernel/Lock.h>
|
||||
#include <Kernel/Net/EtherType.h>
|
||||
#include <Kernel/Net/EthernetFrameHeader.h>
|
||||
#include <Kernel/Net/NetworkAdapter.h>
|
||||
#include <Kernel/StdLib.h>
|
||||
#include <Kernel/kmalloc.h>
|
||||
|
||||
static Lockable<HashTable<NetworkAdapter*>>& all_adapters()
|
||||
{
|
||||
|
@ -81,7 +81,7 @@ ByteBuffer NetworkAdapter::dequeue_packet()
|
|||
{
|
||||
InterruptDisabler disabler;
|
||||
if (m_packet_queue.is_empty())
|
||||
return { };
|
||||
return {};
|
||||
return m_packet_queue.take_first();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,18 +1,17 @@
|
|||
#include <Kernel/Net/E1000NetworkAdapter.h>
|
||||
#include <Kernel/Net/EthernetFrameHeader.h>
|
||||
#include <Kernel/Lock.h>
|
||||
#include <Kernel/Net/ARP.h>
|
||||
#include <Kernel/Net/E1000NetworkAdapter.h>
|
||||
#include <Kernel/Net/EtherType.h>
|
||||
#include <Kernel/Net/EthernetFrameHeader.h>
|
||||
#include <Kernel/Net/ICMP.h>
|
||||
#include <Kernel/Net/UDP.h>
|
||||
#include <Kernel/Net/TCP.h>
|
||||
#include <Kernel/Net/IPv4.h>
|
||||
#include <Kernel/Net/IPv4Socket.h>
|
||||
#include <Kernel/Net/TCPSocket.h>
|
||||
#include <Kernel/Net/UDPSocket.h>
|
||||
#include <Kernel/Net/LoopbackAdapter.h>
|
||||
#include <Kernel/Net/TCP.h>
|
||||
#include <Kernel/Net/TCPSocket.h>
|
||||
#include <Kernel/Net/UDP.h>
|
||||
#include <Kernel/Net/UDPSocket.h>
|
||||
#include <Kernel/Process.h>
|
||||
#include <Kernel/Net/EtherType.h>
|
||||
#include <Kernel/Lock.h>
|
||||
|
||||
|
||||
//#define ETHERNET_DEBUG
|
||||
#define IPV4_DEBUG
|
||||
|
@ -36,7 +35,7 @@ Lockable<HashMap<IPv4Address, MACAddress>>& arp_table()
|
|||
|
||||
class CombinedPacketQueueAlarm : public Alarm {
|
||||
public:
|
||||
CombinedPacketQueueAlarm() { }
|
||||
CombinedPacketQueueAlarm() {}
|
||||
|
||||
virtual bool is_ringing() const override
|
||||
{
|
||||
|
@ -61,7 +60,7 @@ void NetworkTask_main()
|
|||
if (adapter)
|
||||
adapter->set_ipv4_address(IPv4Address(192, 168, 5, 2));
|
||||
|
||||
auto dequeue_packet = [&] () -> ByteBuffer {
|
||||
auto dequeue_packet = [&]() -> ByteBuffer {
|
||||
auto packet = LoopbackAdapter::the().dequeue_packet();
|
||||
if (!packet.is_null()) {
|
||||
dbgprintf("Receive loopback packet (%d bytes)\n", packet.size());
|
||||
|
@ -69,7 +68,7 @@ void NetworkTask_main()
|
|||
}
|
||||
if (adapter && adapter->has_queued_packets())
|
||||
return adapter->dequeue_packet();
|
||||
return { };
|
||||
return {};
|
||||
};
|
||||
|
||||
CombinedPacketQueueAlarm queue_alarm;
|
||||
|
@ -91,8 +90,7 @@ void NetworkTask_main()
|
|||
eth.source().to_string().characters(),
|
||||
eth.destination().to_string().characters(),
|
||||
eth.ether_type(),
|
||||
packet.size()
|
||||
);
|
||||
packet.size());
|
||||
#endif
|
||||
|
||||
switch (eth.ether_type()) {
|
||||
|
@ -117,15 +115,13 @@ void handle_arp(const EthernetFrameHeader& eth, int frame_size)
|
|||
if (packet.hardware_type() != 1 || packet.hardware_address_length() != sizeof(MACAddress)) {
|
||||
kprintf("handle_arp: Hardware type not ethernet (%w, len=%u)\n",
|
||||
packet.hardware_type(),
|
||||
packet.hardware_address_length()
|
||||
);
|
||||
packet.hardware_address_length());
|
||||
return;
|
||||
}
|
||||
if (packet.protocol_type() != EtherType::IPv4 || packet.protocol_address_length() != sizeof(IPv4Address)) {
|
||||
kprintf("handle_arp: Protocol type not IPv4 (%w, len=%u)\n",
|
||||
packet.hardware_type(),
|
||||
packet.protocol_address_length()
|
||||
);
|
||||
packet.protocol_address_length());
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -135,8 +131,7 @@ void handle_arp(const EthernetFrameHeader& eth, int frame_size)
|
|||
packet.sender_hardware_address().to_string().characters(),
|
||||
packet.sender_protocol_address().to_string().characters(),
|
||||
packet.target_hardware_address().to_string().characters(),
|
||||
packet.target_protocol_address().to_string().characters()
|
||||
);
|
||||
packet.target_protocol_address().to_string().characters());
|
||||
#endif
|
||||
|
||||
if (packet.operation() == ARPOperation::Request) {
|
||||
|
@ -144,7 +139,7 @@ void handle_arp(const EthernetFrameHeader& eth, int frame_size)
|
|||
if (auto* adapter = NetworkAdapter::from_ipv4_address(packet.target_protocol_address())) {
|
||||
// We do!
|
||||
kprintf("handle_arp: Responding to ARP request for my IPv4 address (%s)\n",
|
||||
adapter->ipv4_address().to_string().characters());
|
||||
adapter->ipv4_address().to_string().characters());
|
||||
ARPPacket response;
|
||||
response.set_operation(ARPOperation::Response);
|
||||
response.set_target_hardware_address(packet.sender_hardware_address());
|
||||
|
@ -183,8 +178,7 @@ void handle_ipv4(const EthernetFrameHeader& eth, int frame_size)
|
|||
#ifdef IPV4_DEBUG
|
||||
kprintf("handle_ipv4: source=%s, target=%s\n",
|
||||
packet.source().to_string().characters(),
|
||||
packet.destination().to_string().characters()
|
||||
);
|
||||
packet.destination().to_string().characters());
|
||||
#endif
|
||||
|
||||
switch ((IPv4Protocol)packet.protocol()) {
|
||||
|
@ -210,8 +204,7 @@ void handle_icmp(const EthernetFrameHeader& eth, int frame_size)
|
|||
ipv4_packet.source().to_string().characters(),
|
||||
ipv4_packet.destination().to_string().characters(),
|
||||
icmp_header.type(),
|
||||
icmp_header.code()
|
||||
);
|
||||
icmp_header.code());
|
||||
#endif
|
||||
|
||||
{
|
||||
|
@ -231,10 +224,9 @@ void handle_icmp(const EthernetFrameHeader& eth, int frame_size)
|
|||
if (icmp_header.type() == ICMPType::EchoRequest) {
|
||||
auto& request = reinterpret_cast<const ICMPEchoPacket&>(icmp_header);
|
||||
kprintf("handle_icmp: EchoRequest from %s: id=%u, seq=%u\n",
|
||||
ipv4_packet.source().to_string().characters(),
|
||||
(word)request.identifier,
|
||||
(word)request.sequence_number
|
||||
);
|
||||
ipv4_packet.source().to_string().characters(),
|
||||
(word)request.identifier,
|
||||
(word)request.sequence_number);
|
||||
size_t icmp_packet_size = ipv4_packet.payload_size();
|
||||
auto buffer = ByteBuffer::create_zeroed(icmp_packet_size);
|
||||
auto& response = *(ICMPEchoPacket*)buffer.pointer();
|
||||
|
@ -267,8 +259,7 @@ void handle_udp(const EthernetFrameHeader& eth, int frame_size)
|
|||
udp_packet.source_port(),
|
||||
ipv4_packet.destination().to_string().characters(),
|
||||
udp_packet.destination_port(),
|
||||
udp_packet.length()
|
||||
);
|
||||
udp_packet.length());
|
||||
#endif
|
||||
|
||||
auto socket = UDPSocket::from_port(udp_packet.destination_port());
|
||||
|
@ -308,8 +299,7 @@ void handle_tcp(const EthernetFrameHeader& eth, int frame_size)
|
|||
tcp_packet.has_syn() ? "SYN" : "",
|
||||
tcp_packet.has_ack() ? "ACK" : "",
|
||||
tcp_packet.window_size(),
|
||||
payload_size
|
||||
);
|
||||
payload_size);
|
||||
#endif
|
||||
|
||||
auto socket = TCPSocket::from_port(tcp_packet.destination_port());
|
||||
|
@ -350,12 +340,11 @@ void handle_tcp(const EthernetFrameHeader& eth, int frame_size)
|
|||
|
||||
socket->set_ack_number(tcp_packet.sequence_number() + payload_size);
|
||||
kprintf("Got packet with ack_no=%u, seq_no=%u, payload_size=%u, acking it with new ack_no=%u, seq_no=%u\n",
|
||||
tcp_packet.ack_number(),
|
||||
tcp_packet.sequence_number(),
|
||||
payload_size,
|
||||
socket->ack_number(),
|
||||
socket->sequence_number()
|
||||
);
|
||||
tcp_packet.ack_number(),
|
||||
tcp_packet.sequence_number(),
|
||||
payload_size,
|
||||
socket->ack_number(),
|
||||
socket->sequence_number());
|
||||
socket->send_tcp_packet(TCPFlags::ACK);
|
||||
|
||||
if (payload_size != 0)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#include <Kernel/Net/Routing.h>
|
||||
#include <Kernel/Net/LoopbackAdapter.h>
|
||||
#include <Kernel/Net/Routing.h>
|
||||
|
||||
NetworkAdapter* adapter_for_route_to(const IPv4Address& ipv4_address)
|
||||
{
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#include <Kernel/FileSystem/FileDescription.h>
|
||||
#include <Kernel/Net/Socket.h>
|
||||
#include <Kernel/Net/LocalSocket.h>
|
||||
#include <Kernel/Net/IPv4Socket.h>
|
||||
#include <Kernel/UnixTypes.h>
|
||||
#include <Kernel/Net/LocalSocket.h>
|
||||
#include <Kernel/Net/Socket.h>
|
||||
#include <Kernel/Process.h>
|
||||
#include <Kernel/UnixTypes.h>
|
||||
#include <LibC/errno_numbers.h>
|
||||
|
||||
KResultOr<Retained<Socket>> Socket::create(int domain, int type, int protocol)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#include <Kernel/Net/TCPSocket.h>
|
||||
#include <Kernel/Net/TCP.h>
|
||||
#include <Kernel/Devices/RandomDevice.h>
|
||||
#include <Kernel/Net/NetworkAdapter.h>
|
||||
#include <Kernel/Net/Routing.h>
|
||||
#include <Kernel/Net/TCP.h>
|
||||
#include <Kernel/Net/TCPSocket.h>
|
||||
#include <Kernel/Process.h>
|
||||
#include <Kernel/Devices/RandomDevice.h>
|
||||
|
||||
Lockable<HashMap<word, TCPSocket*>>& TCPSocket::sockets_by_port()
|
||||
{
|
||||
|
@ -20,14 +20,13 @@ TCPSocketHandle TCPSocket::from_port(word port)
|
|||
LOCKER(sockets_by_port().lock());
|
||||
auto it = sockets_by_port().resource().find(port);
|
||||
if (it == sockets_by_port().resource().end())
|
||||
return { };
|
||||
return {};
|
||||
socket = (*it).value;
|
||||
ASSERT(socket);
|
||||
}
|
||||
return { move(socket) };
|
||||
}
|
||||
|
||||
|
||||
TCPSocket::TCPSocket(int protocol)
|
||||
: IPv4Socket(SOCK_STREAM, protocol)
|
||||
{
|
||||
|
@ -102,14 +101,14 @@ void TCPSocket::send_tcp_packet(word flags, const void* payload, int payload_siz
|
|||
tcp_packet.has_syn() ? "SYN" : "",
|
||||
tcp_packet.has_ack() ? "ACK" : "",
|
||||
tcp_packet.sequence_number(),
|
||||
tcp_packet.ack_number()
|
||||
);
|
||||
tcp_packet.ack_number());
|
||||
adapter->send_ipv4(MACAddress(), peer_address(), IPv4Protocol::TCP, move(buffer));
|
||||
}
|
||||
|
||||
NetworkOrdered<word> TCPSocket::compute_tcp_checksum(const IPv4Address& source, const IPv4Address& destination, const TCPPacket& packet, word payload_size)
|
||||
{
|
||||
struct [[gnu::packed]] PseudoHeader {
|
||||
struct [[gnu::packed]] PseudoHeader
|
||||
{
|
||||
IPv4Address source;
|
||||
IPv4Address destination;
|
||||
byte zero;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#include <Kernel/Net/UDPSocket.h>
|
||||
#include <Kernel/Net/UDP.h>
|
||||
#include <Kernel/Net/NetworkAdapter.h>
|
||||
#include <Kernel/Process.h>
|
||||
#include <Kernel/Devices/RandomDevice.h>
|
||||
#include <Kernel/Net/NetworkAdapter.h>
|
||||
#include <Kernel/Net/Routing.h>
|
||||
#include <Kernel/Net/UDP.h>
|
||||
#include <Kernel/Net/UDPSocket.h>
|
||||
#include <Kernel/Process.h>
|
||||
|
||||
Lockable<HashMap<word, UDPSocket*>>& UDPSocket::sockets_by_port()
|
||||
{
|
||||
|
@ -20,14 +20,13 @@ UDPSocketHandle UDPSocket::from_port(word port)
|
|||
LOCKER(sockets_by_port().lock());
|
||||
auto it = sockets_by_port().resource().find(port);
|
||||
if (it == sockets_by_port().resource().end())
|
||||
return { };
|
||||
return {};
|
||||
socket = (*it).value;
|
||||
ASSERT(socket);
|
||||
}
|
||||
return { move(socket) };
|
||||
}
|
||||
|
||||
|
||||
UDPSocket::UDPSocket(int protocol)
|
||||
: IPv4Socket(SOCK_DGRAM, protocol)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue