The NetworkValidator fails on IPv4-mapped addresses[1], for example ::ffff:198.51.100.0/120. Inferring IPv4 from the presence of a period (.) fails as these IPv6 address forms contain periods. Inferring IPv6 from the presence of a colon (:) should be more robust.
1. https://www.rfc-editor.org/rfc/rfc4291#section-2.2
By ignoring invalid UTF-8 we can get the bulk of the data. It's
not likely we are ever going to get unencoded binary data through
JSON, especially in pluginctl.
PR: https://forum.opnsense.org/index.php?topic=45194.0
In the long run, we should consider moving the bogons alias functionality to our standard table update, perhaps by implementing a "file" type to link a local file.
For now just remove the duplication and make sure bogonsv6 always exists, even when its empty.
Introduces the isBanner property, which explicitly defines the message
as a banner, which doesn't necessarily have a relation to
the persistent property. While here, update the UI to remove
cursor events when the message doesn't have a location set.
above 95% usage triggers a persistent banner.
while here, fix a small issue that excluded persistent notification
types from counting towards the icon color used.
Adhere to standard binding behaviour of other components:
Use the address read to get all addresses and binding ok instead
of using the arcane "interface name" bind option. CARP VIPs are
ignored although allowed to be selected... something we should just
remove since interfaces_addresses() will load all aliases as well.
We also will not get tentative or otherwise unusable addresses.
Next stop for this code is probaby MVC conversion.
It has the downside of losing changes to config.xml but
we are far more likely to run the tests than to change
the file. Ideally, the UUIDs should not shift.
The configd call "filter diag table_size" is quite convenient when inspecting the aliases grid, but if we're only interested in the names and descriptions, it adds quite some overhead.
We can skip the collection of this information by constructing with $skip_dynamic_info set to "true" now, which increases performance quite a bit.