fix warnings in linux_get_device_address
work around Linux systems that don't provide SOCK_CLOEXEC or SOCK_NONBLOCK