At least some of the `calloc()` uses are required. Alternatively we could use `malloc()` and only set parts of the struct we've allocated to zero. But in this particular example calloc is really only needed when we're trying to copy an IPv4 address into the space of an IPv6.