RFC 8446 provides a table showing where each extensions may appear, and requires stacks to reject extensions appearing in messages where they should not.
This PR refactors code so that the table can be directly embedded in code.
Our previous approach was less intuitive due to two reasons:
it used a different notation than a table (ALLOW() macro)
different handling for SH and HRR was defined within the logic rather than within the rule-based logic
RFC 8446 provides a table showing where each extensions may appear, and requires stacks to reject extensions appearing in messages where they should not.
This PR refactors code so that the table can be directly embedded in code.
Our previous approach was less intuitive due to two reasons:
ALLOW()
macro)