Fix set_netmask() handling of negative numbers.

If the netmask happens to have the first bit set to 1, which is fairly common
(think 255.255.255.0), struct.pack(...i...) will fail, as 'i' takes signed 32
bit integers, and will refuse to take any integer >= 2^31.

Example:
>>> struct.pack("i", 2**31)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
struct.error: 'i' format requires -2147483648 <= number <= 2147483647
>>> struct.pack("i", 2**31 - 1)
'\0xff\0xff\0xff\0xf7'