since a number of places in the code check for that and assume that it
means an error occurred. On FreeBSD, in particular, the value of
ifr_flags can be negative if multicast is enabled on the socket since
the possible flags have expanded to fill more than a short.
Instead of blindly promoting ifr_flags to an int, which will preserve
the sign, we fill the int return value with ifr_flagshigh in the high
16 bits and ifr_flags in the low 16 bits.
PR: 155186
Reported by: Alex Hayward <xelah-freebsd-pr@xelah.com>