code: def connect():
      
      upnp = miniupnpc.UPnP()
      upnp.discoverdelay = 200
      providers = upnp.discover()
      if providers > 1:
          log.debug('multiple upnp providers found', num_providers=providers)
      elif providers < 1:
          log.error('no upnp providers found')
          return None
  
      try:
          location = upnp.selectigd()
          log.debug('connected', upnp=upnp)
      except Exception as e:
          log.error('Error when connecting to uPnP provider', exception_info=e)
          return None
  
      if not valid_mappable_ipv4(upnp.lanaddr):
          log.error('could not query your lanaddr', reported=upnp.lanaddr)
          return None
      try:  # this can fail if router advertises uPnP incorrectly
          if not valid_mappable_ipv4(upnp.externalipaddress()):
              log.error('could not query your externalipaddress', reported=upnp.externalipaddress())
              return None
          return upnp, location
      except Exception:
          log.error('error when connecting with uPnP provider', location=location)
          return None
docs: Try to connect to the router.
  
      Returns:
          u (miniupnc.UPnP): the connected upnp-instance
          router (string): the connection information