The next simplest fix is to ignore the flow ID override unless we're
in "flows" mode. We can then make valid assumptions about what should
go into the host tables.
The *right* fix, if we want to maximise functionality, would be to
pass the result struct by reference into cake_hash(), where it can
override the *host* IDs (not the flow ID). Users can then choose
between using the override as a flow ID (by setting "hosts" mode
instead of "flows"), or retaining the default host-isolation semantics
with a revised definition of "host".
Ah, making it possible to override both host and flow mode is a great
idea! I guess we could use the major/minor distinction in the class to
steer this. I'll see if I can't integrate this.
So, I implemented this; in the latest commit on github it is again
possible to override the flow hashing by setting the class ID with a TC
filter; and the host hash can be overridden by setting the major number
of the class ID. In my testing the hangs from before are gone, but if
anyone else wants to test, please do!
I'll write up a description of the filter overrides in the man page, and
submit the change upstream as well...