mirror of
https://github.com/genodelabs/genode.git
synced 2025-05-31 14:40:54 +00:00
When a domain receives a new dynamic router IP address and that domain has active connection states (TCP/UDP/ICMP) from another domain with NAT applied, the connection states used to stay active while becoming obsolete. They become obsolete because their identification and their packet processor use the old routers IP address due to NAT. One consequence was that connections became dysfunctional when the server domain received a new dynamic router IP address. Request packets were still routed from client to server, but when entering the server, their source IP address was the outdated router address. Consequently, the server responses used the outdated address as destination and the router dropped the responses because it did not know this address anymore. This commit fixes the problem by letting a domain destroy all its connection states that were initiated from within other domains whenever it detaches from its current IP configuration. Strictly speaking, it is not necessary to destroy all connection states, only those that the domain applies NAT to. However, the Genode AVL tree is not built for removing a selection of nodes and trying to do it anyways is complicated. So, for now, we simply destroy all connection states. Note that the other way around was handled correctly already. When a domain detaches from its IP config, all interfaces of that domain destroy all the connection states they created (towards other domains). Fixes #4696
This source-code repository contains genuine low-level OS components and interfaces of Genode. It solely depends on the framework's base API.