docs: def _detect(self):
          """Use the netifaces module to detect ifconfig information."""
          theip = None
          try:
              if self.opts_family == AF_INET6:
                  addrlist = netifaces.ifaddresses(self.opts_iface)[netifaces.AF_INET6]
              else:
                  addrlist = netifaces.ifaddresses(self.opts_iface)[netifaces.AF_INET]
          except ValueError as exc:
              LOG.error("netifaces choked while trying to get network interface"
                        " information for interface '%s'", self.opts_iface,
                        exc_info=exc)
          else:  # now we have a list of addresses as returned by netifaces
              for pair in addrlist:
                  try:
                      detip = ipaddress(pair["addr"])
                  except (TypeError, ValueError) as exc:
                      LOG.debug("Found invalid IP '%s' on interface '%s'!?",
                                pair["addr"], self.opts_iface, exc_info=exc)
                      continue
                  if self.netmask is not None:
                      if detip in self.netmask:
                          theip = pair["addr"]
                      else:
                          continue
                  else:
                      theip = pair["addr"]
                  break  # we use the first IP found
          # theip can still be None at this point!
          self.set_current_value(theip)
          return theip