Adds entry to detect SCADA Siemens PCS7. Signature taken from Jose Ramon Palanco's script https://github.com/drainware/nmap-scada/blob/master/Siemens-PCS7.nse
Adds entry to detect SCADA SIMATIC S7. Signature taken from Jose Ramon Palanco's script https://github.com/drainware/nmap-scada/blob/master/SIEMENS-Simatic-HMI-miniweb.nse
Add metric to struct route_entry.

Actually getting a nonzero value for the metric is supported only on
Linux and Windows.
Add metric to struct sys_route.
Show route metrics in --iflist.
Sort by metric.
CHANGELOG for route metrics.
Remove a too-generic service fingerprint for which we need more data.

It was listed as "Microsoft UPnP", but was also matching a trivial
golang web server.
Typo.
Add a task suggested by David
Remove some old Linux compatibility code from connect scan.

This code was quite old (dating from r854 in 2000) and may not serve a
purpose anymore. Let's try removing it.

Apart from being obsolete, the code had a race condition where the
connection could be closed with a RST before getpeername was called,
leading to a fatal error message.
Don't treat an empty string as an invalid URL.

To me, this is a relative URL with a path of "". I.e., it refers to the
same document as wherever the URL appeared, like when people do
<form action="" enctype="multipart/form-data" method="POST">
URL ports have to be decimal digits.

RFC 3986 section 3.2.3.
Treat empty port in URL the same as absent.

RFC 3986 says that these URLs are equivalent:

http://example.com/
http://example.com:/

url.parse was returning port="" for the latter. Make it instead return
port=nil like the former.
300 and 303 are also HTTP redirects.
Allow empty path in url.parse.

I got a redirect of "?p=indisponible" and url.parse returned
{query="p=indisponible"}. Now it returns
{path="", query="p=indisponible"}.
parse_redirect: fill in port number even if authority but not scheme is present.

For example "//example.com/en/": the function needs to return with
u.port set, just as it would with "http://example.com/en/".
Include the targetname if possible in NSE diagnostic messages.
Lower-case scheme comparisons.

I'm seeing redirects to "HTTP://example.com/".
url.parse should convert all schemes to lower case.

RFC 3986 section 3.1:
Although schemes are case-insensitive, the canonical form is lowercase
and documents that specify schemes must do so with lowercase letters.
An implementation should accept uppercase letters as equivalent to
lowercase in scheme names (e.g., allow "HTTP" as well as "http") for the
sake of robustness but should only produce lowercase scheme names for
consistency.