Diagnostics / Routes Truncates Destination and Gateway Names
When "resolve names" is enabled, resolved destination and gateway names are truncated to 18 characters (e.g., pfSense.localdomai).
When "resolve names" is not enabled, destination and gateway names are at least 28 characters (e.g., fe80::215:5dff:fe5c:e205%hn0).
Fix #6869 diag_routes resolve names for RELENG_2_3
This code to parse the netstat output and use gethostbyaddr() to reverse resolve names is only needed in RELENG_2_3, so that long names are not truncated. In FreeBSD 10.3 some long resolved names are still being truncated by `netstat`, even though `-W` is specified.
In FreeBSD 11 for pfSense 2.4, `netstat -rW` correctly outputs the full resolved name, even when it is very long. So that all passes through to the Diag Routes GUI display correctly.
#1 Updated by Phillip Davis over 2 years ago
That is a "feature" of the netstat command, which has annoyed me too. With "-W" it does output the full data in some columns, but not for reverse resolved names.
One way around this is to always just do the netstat command without name resolution, then parse the output and "manually" resolve each item that looks like an IP Address. This PR does that:
#4 Updated by Phillip Davis over 2 years ago
Note: This fix has been applied to RELENG_2_3 to fix the issue on FreeBSD 10.3/pfSense 2.3.*
In FreeBSD 11.0 (upcoming pfSense 2.4) the wide output of netstat is improved, the whole text of a reversed-looked-up name is output, and passes through successfully to the GUI. So there is no need for any fix in pfSense master.
In FreeBSD 11.0, netstat has been enhanced to use the "libxo" output formatting, so it can output the data, for example, in JSON format, rather than a text block that has to be carefully parsed. pfSense code that parses and uses netstat output could be re-engineered to output JSON, transfer that to the GUI via AJAX calls... and then have the GUI easily format/display it. But that is an engineering refactoring issue, not this bug fix.