diff --git a/kernel/include/net/dns_layer.hpp b/kernel/include/net/dns_layer.hpp index f47bb303..359bab41 100644 --- a/kernel/include/net/dns_layer.hpp +++ b/kernel/include/net/dns_layer.hpp @@ -22,8 +22,8 @@ static_assert(sizeof(header) == 12, "DNS flags must be 96 bits"); void decode(network::interface_descriptor& interface, network::ethernet::packet& packet); -std::expected prepare_packet_query(network::interface_descriptor& interface, network::ip::address target_ip, uint16_t source_port, uint16_t identification, size_t payload_size); -std::expected prepare_packet_query(char* buffer, network::interface_descriptor& interface, network::ip::address target_ip, uint16_t source_port, uint16_t identification, size_t payload_size); +std::expected kernel_prepare_packet_query(network::interface_descriptor& interface, network::ip::address target_ip, uint16_t source_port, uint16_t identification, size_t payload_size); +std::expected user_prepare_packet_query(char* buffer, network::interface_descriptor& interface, network::ip::address target_ip, uint16_t source_port, uint16_t identification, size_t payload_size); std::expected finalize_packet(network::interface_descriptor& interface, network::ethernet::packet& p); diff --git a/kernel/include/net/ethernet_layer.hpp b/kernel/include/net/ethernet_layer.hpp index c0033122..576144e5 100644 --- a/kernel/include/net/ethernet_layer.hpp +++ b/kernel/include/net/ethernet_layer.hpp @@ -26,8 +26,9 @@ void mac64_to_mac6(uint64_t input, char* mac); void decode(network::interface_descriptor& interface, packet& packet); -std::expected prepare_packet(network::interface_descriptor& interface, size_t size, size_t destination, ether_type type); -std::expected prepare_packet(char* buffer, network::interface_descriptor& interface, size_t size, size_t destination, ether_type type); +std::expected kernel_prepare_packet(network::interface_descriptor& interface, size_t size, size_t destination, ether_type type); + +std::expected user_prepare_packet(char* buffer, network::interface_descriptor& interface, size_t size, size_t destination, ether_type type); std::expected finalize_packet(network::interface_descriptor& interface, packet& p); diff --git a/kernel/include/net/icmp_layer.hpp b/kernel/include/net/icmp_layer.hpp index 062a2837..ea2d4914 100644 --- a/kernel/include/net/icmp_layer.hpp +++ b/kernel/include/net/icmp_layer.hpp @@ -24,8 +24,8 @@ static_assert(sizeof(echo_request_header) == sizeof(header::rest), "Invalid size void decode(network::interface_descriptor& interface, network::ethernet::packet& packet); -std::expected prepare_packet(network::interface_descriptor& interface, network::ip::address target_ip, size_t payload_size, type t, size_t code); -std::expected prepare_packet(char* buffer, network::interface_descriptor& interface, network::ip::address target_ip, size_t payload_size, type t, size_t code); +std::expected kernel_prepare_packet(network::interface_descriptor& interface, network::ip::address target_ip, size_t payload_size, type t, size_t code); +std::expected user_prepare_packet(char* buffer, network::interface_descriptor& interface, network::ip::address target_ip, size_t payload_size, type t, size_t code); std::expected finalize_packet(network::interface_descriptor& interface, network::ethernet::packet& p); diff --git a/kernel/include/net/ip_layer.hpp b/kernel/include/net/ip_layer.hpp index c47ae95b..a5e2e90d 100644 --- a/kernel/include/net/ip_layer.hpp +++ b/kernel/include/net/ip_layer.hpp @@ -28,8 +28,9 @@ static_assert(sizeof(header) == 20, "The size of an IPv4 header must be 20 bytes void decode(network::interface_descriptor& interface, network::ethernet::packet& packet); -std::expected prepare_packet(network::interface_descriptor& interface, size_t size, address& destination, size_t protocol); -std::expected prepare_packet(char* buffer, network::interface_descriptor& interface, size_t size, address& destination, size_t protocol); +std::expected kernel_prepare_packet(network::interface_descriptor& interface, size_t size, address& destination, size_t protocol); +std::expected user_prepare_packet(char* buffer, network::interface_descriptor& interface, size_t size, address& destination, size_t protocol); + std::expected finalize_packet(network::interface_descriptor& interface, network::ethernet::packet& p); } // end of ip namespace diff --git a/kernel/include/net/tcp_layer.hpp b/kernel/include/net/tcp_layer.hpp index 0a3e21e8..d0a828a5 100644 --- a/kernel/include/net/tcp_layer.hpp +++ b/kernel/include/net/tcp_layer.hpp @@ -21,8 +21,8 @@ namespace tcp { void decode(network::interface_descriptor& interface, network::ethernet::packet& packet); -std::expected prepare_packet(network::interface_descriptor& interface, network::ip::address target_ip, size_t source, size_t target, size_t payload_size); -std::expected prepare_packet(char* buffer, network::socket& socket, size_t payload_size); +std::expected kernel_prepare_packet(network::interface_descriptor& interface, network::ip::address target_ip, size_t source, size_t target, size_t payload_size); +std::expected user_prepare_packet(char* buffer, network::socket& socket, size_t payload_size); std::expected finalize_packet(network::interface_descriptor& interface, network::ethernet::packet& p); std::expected finalize_packet(network::interface_descriptor& interface, network::socket& socket, network::ethernet::packet& p); diff --git a/kernel/include/net/udp_layer.hpp b/kernel/include/net/udp_layer.hpp index 6d217f32..94041630 100644 --- a/kernel/include/net/udp_layer.hpp +++ b/kernel/include/net/udp_layer.hpp @@ -27,8 +27,8 @@ struct header { void decode(network::interface_descriptor& interface, network::ethernet::packet& packet); -std::expected prepare_packet(network::interface_descriptor& interface, network::ip::address target_ip, size_t source, size_t target, size_t payload_size); -std::expected prepare_packet(char* buffer, network::interface_descriptor& interface, network::ip::address target_ip, size_t source, size_t target, size_t payload_size); +std::expected kernel_prepare_packet(network::interface_descriptor& interface, network::ip::address target_ip, size_t source, size_t target, size_t payload_size); +std::expected user_prepare_packet(char* buffer, network::interface_descriptor& interface, network::ip::address target_ip, size_t source, size_t target, size_t payload_size); std::expected finalize_packet(network::interface_descriptor& interface, network::ethernet::packet& p); } // end of upd namespace diff --git a/kernel/src/net/alpha.cpp b/kernel/src/net/alpha.cpp index afe5b5d4..054574c7 100644 --- a/kernel/src/net/alpha.cpp +++ b/kernel/src/net/alpha.cpp @@ -31,7 +31,7 @@ void network::alpha(){ size_t payload_size = labels + characters + 1 + 2 * 2; // Ask the DNS layer to craft a packet - auto packet = network::dns::prepare_packet_query(interface, target_ip, 3456, 0x666, payload_size); + auto packet = network::dns::kernel_prepare_packet_query(interface, target_ip, 3456, 0x666, payload_size); if(packet){ auto* payload = reinterpret_cast(packet->payload + packet->index); diff --git a/kernel/src/net/arp_cache.cpp b/kernel/src/net/arp_cache.cpp index bd91f226..c95ca477 100644 --- a/kernel/src/net/arp_cache.cpp +++ b/kernel/src/net/arp_cache.cpp @@ -33,7 +33,7 @@ std::vector cache; std::expected arp_request(network::interface_descriptor& interface, network::ip::address ip){ // Ask the ethernet layer to craft a packet - auto packet = network::ethernet::prepare_packet(interface, sizeof(network::arp::header), 0xFFFFFFFFFFFF, network::ethernet::ether_type::ARP); + auto packet = network::ethernet::kernel_prepare_packet(interface, sizeof(network::arp::header), 0xFFFFFFFFFFFF, network::ethernet::ether_type::ARP); if(packet){ auto* arp_request_header = reinterpret_cast(packet->payload + packet->index); diff --git a/kernel/src/net/arp_layer.cpp b/kernel/src/net/arp_layer.cpp index e47e0532..48f0ee56 100644 --- a/kernel/src/net/arp_layer.cpp +++ b/kernel/src/net/arp_layer.cpp @@ -121,7 +121,7 @@ void network::arp::decode(network::interface_descriptor& interface, network::eth logging::logf(logging::log_level::TRACE, "arp: Reply to Request for own IP\n"); // Ask the ethernet layer to craft a packet - auto packet = network::ethernet::prepare_packet(interface, sizeof(header), source_hw, ethernet::ether_type::ARP); + auto packet = network::ethernet::kernel_prepare_packet(interface, sizeof(header), source_hw, ethernet::ether_type::ARP); if(packet){ auto* arp_reply_header = reinterpret_cast(packet->payload + packet->index); diff --git a/kernel/src/net/dns_layer.cpp b/kernel/src/net/dns_layer.cpp index 276ad979..02bfea1f 100644 --- a/kernel/src/net/dns_layer.cpp +++ b/kernel/src/net/dns_layer.cpp @@ -192,9 +192,9 @@ void network::dns::decode(network::interface_descriptor& /*interface*/, network: network::propagate_packet(packet, network::socket_protocol::DNS); } -std::expected network::dns::prepare_packet_query(network::interface_descriptor& interface, network::ip::address target_ip, uint16_t source_port, uint16_t identification, size_t payload_size) { +std::expected network::dns::kernel_prepare_packet_query(network::interface_descriptor& interface, network::ip::address target_ip, uint16_t source_port, uint16_t identification, size_t payload_size) { // Ask the UDP layer to craft a packet - auto packet = network::udp::prepare_packet(interface, target_ip, source_port, 53, sizeof(header) + payload_size); + auto packet = network::udp::kernel_prepare_packet(interface, target_ip, source_port, 53, sizeof(header) + payload_size); if (packet) { ::prepare_packet_query(*packet, identification); @@ -203,9 +203,9 @@ std::expected network::dns::prepare_packet_query(netw return packet; } -std::expected network::dns::prepare_packet_query(char* buffer, network::interface_descriptor& interface, network::ip::address target_ip, uint16_t source_port, uint16_t identification, size_t payload_size) { +std::expected network::dns::user_prepare_packet_query(char* buffer, network::interface_descriptor& interface, network::ip::address target_ip, uint16_t source_port, uint16_t identification, size_t payload_size) { // Ask the UDP layer to craft a packet - auto packet = network::udp::prepare_packet(buffer, interface, target_ip, source_port, 53, sizeof(header) + payload_size); + auto packet = network::udp::user_prepare_packet(buffer, interface, target_ip, source_port, 53, sizeof(header) + payload_size); if (packet) { ::prepare_packet_query(*packet, identification); diff --git a/kernel/src/net/ethernet_layer.cpp b/kernel/src/net/ethernet_layer.cpp index 6ea2d441..2f4555ad 100644 --- a/kernel/src/net/ethernet_layer.cpp +++ b/kernel/src/net/ethernet_layer.cpp @@ -123,7 +123,7 @@ void network::ethernet::decode(network::interface_descriptor& interface, packet& logging::logf(logging::log_level::TRACE, "ethernet: Finished decoding packet\n"); } -std::expected network::ethernet::prepare_packet(network::interface_descriptor& interface, size_t size, size_t destination, ether_type type){ +std::expected network::ethernet::kernel_prepare_packet(network::interface_descriptor& interface, size_t size, size_t destination, ether_type type){ auto total_size = size + sizeof(header); network::ethernet::packet p(new char[total_size], total_size); @@ -133,7 +133,7 @@ std::expected network::ethernet::prepare_packet(netwo return p; } -std::expected network::ethernet::prepare_packet(char* buffer, network::interface_descriptor& interface, size_t size, size_t destination, ether_type type){ +std::expected network::ethernet::user_prepare_packet(char* buffer, network::interface_descriptor& interface, size_t size, size_t destination, ether_type type){ auto total_size = size + sizeof(header); network::ethernet::packet p(buffer, total_size); diff --git a/kernel/src/net/icmp_layer.cpp b/kernel/src/net/icmp_layer.cpp index 5830c491..f6e6076f 100644 --- a/kernel/src/net/icmp_layer.cpp +++ b/kernel/src/net/icmp_layer.cpp @@ -81,7 +81,7 @@ void network::icmp::decode(network::interface_descriptor& interface, network::et if(target_ip == interface.ip_address){ logging::logf(logging::log_level::TRACE, "icmp: Reply to Echo Request for own IP\n"); - auto reply_packet = network::icmp::prepare_packet(interface, source_ip, 0x0, type::ECHO_REPLY, 0x0); + auto reply_packet = network::icmp::kernel_prepare_packet(interface, source_ip, 0x0, type::ECHO_REPLY, 0x0); if(reply_packet){ auto* command_header = reinterpret_cast(packet.payload + command_index); @@ -114,9 +114,9 @@ void network::icmp::decode(network::interface_descriptor& interface, network::et network::propagate_packet(packet, network::socket_protocol::ICMP); } -std::expected network::icmp::prepare_packet(network::interface_descriptor& interface, network::ip::address target_ip, size_t payload_size, type t, size_t code){ +std::expected network::icmp::kernel_prepare_packet(network::interface_descriptor& interface, network::ip::address target_ip, size_t payload_size, type t, size_t code){ // Ask the IP layer to craft a packet - auto packet = network::ip::prepare_packet(interface, sizeof(header) + payload_size, target_ip, 0x01); + auto packet = network::ip::kernel_prepare_packet(interface, sizeof(header) + payload_size, target_ip, 0x01); if(packet){ ::prepare_packet(*packet, t, code); @@ -125,9 +125,9 @@ std::expected network::icmp::prepare_packet(network:: return packet; } -std::expected network::icmp::prepare_packet(char* buffer, network::interface_descriptor& interface, network::ip::address target_ip, size_t payload_size, type t, size_t code){ +std::expected network::icmp::user_prepare_packet(char* buffer, network::interface_descriptor& interface, network::ip::address target_ip, size_t payload_size, type t, size_t code){ // Ask the IP layer to craft a packet - auto packet = network::ip::prepare_packet(buffer, interface, sizeof(header) + payload_size, target_ip, 0x01); + auto packet = network::ip::user_prepare_packet(buffer, interface, sizeof(header) + payload_size, target_ip, 0x01); if(packet){ ::prepare_packet(*packet, t, code); @@ -162,7 +162,7 @@ void network::icmp::ping(network::interface_descriptor& interface, network::ip:: logging::logf(logging::log_level::TRACE, "icmp: Target MAC Address: %h\n", *target_mac); // Ask the ICMP layer to craft a packet - auto packet = network::icmp::prepare_packet(interface, target_ip, 0, type::ECHO_REQUEST, 0); + auto packet = network::icmp::kernel_prepare_packet(interface, target_ip, 0, type::ECHO_REQUEST, 0); if(packet){ // Set the Command header diff --git a/kernel/src/net/ip_layer.cpp b/kernel/src/net/ip_layer.cpp index b96c07e9..0a2926aa 100644 --- a/kernel/src/net/ip_layer.cpp +++ b/kernel/src/net/ip_layer.cpp @@ -152,7 +152,7 @@ void network::ip::decode(network::interface_descriptor& interface, network::ethe } } -std::expected network::ip::prepare_packet(network::interface_descriptor& interface, size_t size, address& target_ip, size_t protocol){ +std::expected network::ip::kernel_prepare_packet(network::interface_descriptor& interface, size_t size, address& target_ip, size_t protocol){ auto target_mac = get_target_mac(interface, target_ip); if(!target_mac){ @@ -160,7 +160,7 @@ std::expected network::ip::prepare_packet(network::in } // Ask the ethernet layer to craft a packet - auto packet = network::ethernet::prepare_packet(interface, size + sizeof(header), *target_mac, ethernet::ether_type::IPV4); + auto packet = network::ethernet::kernel_prepare_packet(interface, size + sizeof(header), *target_mac, ethernet::ether_type::IPV4); if(packet){ ::prepare_packet(*packet, interface, size, target_ip, protocol); @@ -169,7 +169,7 @@ std::expected network::ip::prepare_packet(network::in return packet; } -std::expected network::ip::prepare_packet(char* buffer, network::interface_descriptor& interface, size_t size, address& target_ip, size_t protocol){ +std::expected network::ip::user_prepare_packet(char* buffer, network::interface_descriptor& interface, size_t size, address& target_ip, size_t protocol){ auto target_mac = get_target_mac(interface, target_ip); if(!target_mac){ @@ -177,7 +177,7 @@ std::expected network::ip::prepare_packet(char* buffe } // Ask the ethernet layer to craft a packet - auto packet = network::ethernet::prepare_packet(buffer, interface, size + sizeof(header), *target_mac, ethernet::ether_type::IPV4); + auto packet = network::ethernet::user_prepare_packet(buffer, interface, size + sizeof(header), *target_mac, ethernet::ether_type::IPV4); if(packet){ ::prepare_packet(*packet, interface, size, target_ip, protocol); diff --git a/kernel/src/net/network.cpp b/kernel/src/net/network.cpp index 4c3143d7..ece9ded3 100644 --- a/kernel/src/net/network.cpp +++ b/kernel/src/net/network.cpp @@ -301,14 +301,14 @@ std::tuple network::prepare_packet(socket_fd_t socket_fd, void* case network::socket_protocol::ICMP: { auto descriptor = static_cast(desc); auto& interface = select_interface(descriptor->target_ip); - auto packet = network::icmp::prepare_packet(buffer, interface, descriptor->target_ip, descriptor->payload_size, descriptor->type, descriptor->code); + auto packet = network::icmp::user_prepare_packet(buffer, interface, descriptor->target_ip, descriptor->payload_size, descriptor->type, descriptor->code); return return_from_packet(packet); } case network::socket_protocol::TCP: { auto descriptor = static_cast(desc); - auto packet = network::tcp::prepare_packet(buffer, socket, descriptor->payload_size); + auto packet = network::tcp::user_prepare_packet(buffer, socket, descriptor->payload_size); return return_from_packet(packet); } @@ -319,7 +319,7 @@ std::tuple network::prepare_packet(socket_fd_t socket_fd, void* if(descriptor->query){ auto source_port = get_port(descriptor->source_port); - auto packet = network::dns::prepare_packet_query(buffer, interface, descriptor->target_ip, source_port, descriptor->identification, descriptor->payload_size); + auto packet = network::dns::user_prepare_packet_query(buffer, interface, descriptor->target_ip, source_port, descriptor->identification, descriptor->payload_size); return return_from_packet(packet); } else { diff --git a/kernel/src/net/tcp_layer.cpp b/kernel/src/net/tcp_layer.cpp index b4c43f8d..f0180a8d 100644 --- a/kernel/src/net/tcp_layer.cpp +++ b/kernel/src/net/tcp_layer.cpp @@ -232,7 +232,7 @@ void network::tcp::decode(network::interface_descriptor& interface, network::eth // Acknowledge if necessary if (*flag_psh(&flags)) { - auto p = tcp::prepare_packet(interface, switch_endian_32(ip_header->source_ip), target_port, source_port, 0); + auto p = tcp::kernel_prepare_packet(interface, switch_endian_32(ip_header->source_ip), target_port, source_port, 0); if (!p) { logging::logf(logging::log_level::ERROR, "tcp: Impossible to prepare TCP packet for ACK\n"); @@ -252,9 +252,9 @@ void network::tcp::decode(network::interface_descriptor& interface, network::eth } } -std::expected network::tcp::prepare_packet(network::interface_descriptor& interface, network::ip::address target_ip, size_t source, size_t target, size_t payload_size) { +std::expected network::tcp::kernel_prepare_packet(network::interface_descriptor& interface, network::ip::address target_ip, size_t source, size_t target, size_t payload_size) { // Ask the IP layer to craft a packet - auto packet = network::ip::prepare_packet(interface, sizeof(header) + payload_size, target_ip, 0x06); + auto packet = network::ip::kernel_prepare_packet(interface, sizeof(header) + payload_size, target_ip, 0x06); if (packet) { ::prepare_packet(*packet, source, target); @@ -263,7 +263,7 @@ std::expected network::tcp::prepare_packet(network::i return packet; } -std::expected network::tcp::prepare_packet(char* buffer, network::socket& socket, size_t payload_size) { +std::expected network::tcp::user_prepare_packet(char* buffer, network::socket& socket, size_t payload_size) { auto& connection = socket.get_data(); // Make sure stream sockets are connected @@ -275,7 +275,7 @@ std::expected network::tcp::prepare_packet(char* buff auto& interface = network::select_interface(target_ip); // Ask the IP layer to craft a packet - auto packet = network::ip::prepare_packet(buffer, interface, sizeof(header) + payload_size, target_ip, 0x06); + auto packet = network::ip::user_prepare_packet(buffer, interface, sizeof(header) + payload_size, target_ip, 0x06); if (packet) { auto source = connection.local_port; @@ -414,7 +414,7 @@ std::expected network::tcp::connect(network::socket& sock, network::interf auto target_ip = connection.server_address; - auto packet = tcp::prepare_packet(interface, target_ip, local_port, server_port, 0); + auto packet = tcp::kernel_prepare_packet(interface, target_ip, local_port, server_port, 0); if (!packet) { return std::make_unexpected(packet.error()); @@ -469,7 +469,7 @@ std::expected network::tcp::connect(network::socket& sock, network::interf // At this point we have received the SYN/ACK, only remains to ACK { - auto packet = tcp::prepare_packet(interface, target_ip, connection.local_port, connection.server_port, 0); + auto packet = tcp::kernel_prepare_packet(interface, target_ip, connection.local_port, connection.server_port, 0); if (!packet) { return std::make_unexpected(packet.error()); @@ -508,7 +508,7 @@ std::expected network::tcp::disconnect(network::socket& sock) { auto& interface = network::select_interface(target_ip); - auto packet = tcp::prepare_packet(interface, target_ip, source, target, 0); + auto packet = tcp::kernel_prepare_packet(interface, target_ip, source, target, 0); if (!packet) { return std::make_unexpected(packet.error()); @@ -576,7 +576,7 @@ std::expected network::tcp::disconnect(network::socket& sock) { // At this point we have received the FIN/ACK, only remains to ACK { - auto packet = tcp::prepare_packet(interface, target_ip, source, target, 0); + auto packet = tcp::kernel_prepare_packet(interface, target_ip, source, target, 0); if (!packet) { return std::make_unexpected(packet.error()); diff --git a/kernel/src/net/udp_layer.cpp b/kernel/src/net/udp_layer.cpp index 88abea3f..7d0abe07 100644 --- a/kernel/src/net/udp_layer.cpp +++ b/kernel/src/net/udp_layer.cpp @@ -75,9 +75,9 @@ void network::udp::decode(network::interface_descriptor& interface, network::eth } } -std::expected network::udp::prepare_packet(network::interface_descriptor& interface, network::ip::address target_ip, size_t source, size_t target, size_t payload_size){ +std::expected network::udp::kernel_prepare_packet(network::interface_descriptor& interface, network::ip::address target_ip, size_t source, size_t target, size_t payload_size){ // Ask the IP layer to craft a packet - auto packet = network::ip::prepare_packet(interface, sizeof(header) + payload_size, target_ip, 0x11); + auto packet = network::ip::kernel_prepare_packet(interface, sizeof(header) + payload_size, target_ip, 0x11); if(packet){ ::prepare_packet(*packet, source, target, payload_size); @@ -86,9 +86,9 @@ std::expected network::udp::prepare_packet(network::i return packet; } -std::expected network::udp::prepare_packet(char* buffer, network::interface_descriptor& interface, network::ip::address target_ip, size_t source, size_t target, size_t payload_size){ +std::expected network::udp::user_prepare_packet(char* buffer, network::interface_descriptor& interface, network::ip::address target_ip, size_t source, size_t target, size_t payload_size){ // Ask the IP layer to craft a packet - auto packet = network::ip::prepare_packet(buffer, interface, sizeof(header) + payload_size, target_ip, 0x11); + auto packet = network::ip::user_prepare_packet(buffer, interface, sizeof(header) + payload_size, target_ip, 0x11); if(packet){ ::prepare_packet(*packet, source, target, payload_size);