do NOT do this: ioctl(sock, SIOCGIFMTU | SIOCGIFHWADDR, &ifr)

Attempting to get more than one value in an ioctl at one time is
bad.  At best, one value will be gotten.  The return values in ifr
are a union, so getting the MTU and hardware address at the same
time will overwrite and corrupt the values.
improved logging for hardware type
updating CHANGES and VERSION for 1.9.7