From ad7a4f41cfd77c67e5df86b68e14a3fbc6e0c925 Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Sun, 18 Sep 2016 21:03:13 +0200 Subject: [PATCH] Review initialization of local ports --- kernel/include/net/tcp_layer.hpp | 2 ++ kernel/include/net/udp_layer.hpp | 2 ++ kernel/src/net/network.cpp | 5 +++++ kernel/src/net/tcp_layer.cpp | 9 ++++----- kernel/src/net/udp_layer.cpp | 9 ++++----- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/kernel/include/net/tcp_layer.hpp b/kernel/include/net/tcp_layer.hpp index 7df29866..eb158271 100644 --- a/kernel/include/net/tcp_layer.hpp +++ b/kernel/include/net/tcp_layer.hpp @@ -19,6 +19,8 @@ namespace network { namespace tcp { +void init_layer(); + void decode(network::interface_descriptor& interface, network::ethernet::packet& packet); //TODO The parameters should be set in a descriptor diff --git a/kernel/include/net/udp_layer.hpp b/kernel/include/net/udp_layer.hpp index b448179c..682cfbd4 100644 --- a/kernel/include/net/udp_layer.hpp +++ b/kernel/include/net/udp_layer.hpp @@ -25,6 +25,8 @@ struct header { uint16_t checksum; } __attribute__((packed)); +void init_layer(); + void decode(network::interface_descriptor& interface, network::ethernet::packet& packet); std::expected user_prepare_packet(char* buffer, network::socket& sock, const packet_descriptor* descriptor); diff --git a/kernel/src/net/network.cpp b/kernel/src/net/network.cpp index 0ff26a3a..a4efb779 100644 --- a/kernel/src/net/network.cpp +++ b/kernel/src/net/network.cpp @@ -183,6 +183,11 @@ void network::init(){ } } } + + // Initialize the necessary network layers + + network::udp::init_layer(); + network::tcp::init_layer(); } void network::finalize(){ diff --git a/kernel/src/net/tcp_layer.cpp b/kernel/src/net/tcp_layer.cpp index 81e4010c..ec515bd5 100644 --- a/kernel/src/net/tcp_layer.cpp +++ b/kernel/src/net/tcp_layer.cpp @@ -125,6 +125,10 @@ size_t tcp_payload_len(const network::ethernet::packet& packet){ } //end of anonymous namespace +void network::tcp::init_layer(){ + local_port = 1023; +} + void network::tcp::decode(network::interface_descriptor& interface, network::ethernet::packet& packet) { packet.tag(2, packet.index); @@ -360,11 +364,6 @@ std::expected network::tcp::finalize_packet(network::interface_descriptor& } std::expected network::tcp::connect(network::socket& sock, network::interface_descriptor& interface, size_t server_port, network::ip::address server) { - // TODO This is terrible - if(!local_port.load()){ - local_port = 1024; - } - // Create the connection auto& connection = connections.create_connection(); diff --git a/kernel/src/net/udp_layer.cpp b/kernel/src/net/udp_layer.cpp index b44d7e51..e6883b8f 100644 --- a/kernel/src/net/udp_layer.cpp +++ b/kernel/src/net/udp_layer.cpp @@ -72,6 +72,10 @@ void prepare_packet(network::ethernet::packet& packet, size_t source, size_t tar } //end of anonymous namespace +void network::udp::init_layer(){ + local_port = 1023; +} + void network::udp::decode(network::interface_descriptor& interface, network::ethernet::packet& packet){ packet.tag(2, packet.index); @@ -146,11 +150,6 @@ std::expected network::udp::finalize_packet(network::interface_descriptor& } std::expected network::udp::client_bind(network::socket& sock, size_t server_port, network::ip::address server){ - // TODO This is terrible - if(!local_port.load()){ - local_port = 1024; - } - // Create the connection auto& connection = connections.create_connection();