Теперь я читаю код ipv6 в ядре Linux. Я обнаружил, что есть много функций, которые одна вызывает другую, для обработки skb. Код такой:
Func1(skb) { Func2(skb) }
Func2(skb) { Func3(skb) }
Func3(skb) { Func4(skb) }
...
Итак, проблема в том, что в этом процессе будет DEEP CALL TRACE , например:
Func4
Func3
Func2
Func1
Так почему бы не написать такой код:
Func(skb) { Subfunc1(skb); Subfunc2(skb); Subfunc3(skb); ...}
И CALL TRACE - это всего 2 слоя.
SubfuncX
Func
Если CALL TRACE слишком глубокий, я думаю, что 1) трудно отладить, 2) могут возникнуть проблемы при использовании устройства с парой VETH.
Так что, если это правда, то с чем это связано?
Это вызовы функции ipv6:
![enter image description here](https://i.stack.imgur.com/Be2Mi.png)