docs: def set_alert_destination(self, ip=None, acknowledge_required=None,
                                acknowledge_timeout=None, retries=None,
                                destination=0, channel=None):
          """Configure one or more parameters of an alert destination
  
          If any parameter is 'None' (default), that parameter is left unchanged.
          Otherwise, all given parameters are set by this command.
  
          :param ip: IP address of the destination.  It is currently expected
                     that the calling code will handle any name lookup and
                     present this data as IP address.
          :param acknowledge_required: Whether or not the target should expect
                                       an acknowledgement from this alert target.
          :param acknowledge_timeout: Time to wait for acknowledgement if enabled
          :param retries:  How many times to attempt transmit of an alert.
          :param destination:  Destination index, defaults to 0.
          :param channel: The channel to configure the alert on.  Defaults to
                  current
          """
          if channel is None:
              channel = self.get_network_channel()
          if ip is not None:
              destdata = bytearray((channel, 19, destination))
              try:
                  parsedip = socket.inet_aton(ip)
                  destdata.extend((0, 0))
                  destdata.extend(parsedip)
                  destdata.extend(b'\x00\x00\x00\x00\x00\x00')
              except socket.error:
                  if self._supports_standard_ipv6:
                      parsedip = socket.inet_pton(socket.AF_INET6, ip)
                      destdata.append(0b10000000)
                      destdata.extend(parsedip)
                  else:
                      destdata = None
                      self.oem_init()
                      self._oem.set_alert_ipv6_destination(ip, destination,
                                                           channel)
              if destdata:
                  self.xraw_command(netfn=0xc, command=1, data=destdata)
          if (acknowledge_required is not None or retries is not None or
                  acknowledge_timeout is not None):
              currtype = self.xraw_command(netfn=0xc, command=2, data=(
                  channel, 18, destination, 0))
              if currtype['data'][0] != b'\x11':
                  raise exc.PyghmiException("Unknown parameter format")
              currtype = bytearray(currtype['data'][1:])
              if acknowledge_required is not None:
                  if acknowledge_required:
                      currtype[1] |= 0b10000000
                  else:
                      currtype[1] &= 0b1111111
              if acknowledge_timeout is not None:
                  currtype[2] = acknowledge_timeout
              if retries is not None:
                  currtype[3] = retries
              destreq = bytearray((channel, 18))
              destreq.extend(currtype)
              self.xraw_command(netfn=0xc, command=1, data=destreq)
          if not ip == '0.0.0.0':
              self._assure_alert_policy(channel, destination)