What programs process a network packet until it is processed?

Could you please describe what programs/configs should I examine when debugging (deterministic/always appearing) packet delivery problems? And in what order do they examine the packets?

So far, I’ve found firewall, the kernel routing tables, and the switch settings. It’s also worth checking /etc/config/network to see what interfaces are defined and how. Any other? Is there a way of temporarily disabling the firewall to see if it is the root cause of all problems? Simple /etc/init.d/firewall stop cuts all connectivity.

The story: after update to 3.6, my TO stopped communicating on IPv4. I can reach it on IPv6, DHCP also seems to do its job, but after getting an address all traffic to or through the router is suddenly rejected and I don’t know why (it seems to be rejected and not dropped, since ping immediately tells me “connection refused”). I even tried tcpdump, and saw the ping (and e.g. http) requests come to the router, but no response was sent.