code: func (fw *WatchGuard) Stop(ctx context.Context, info map[string]string) (bool, error) {
  	p := fw.stopRadiusPacket(ctx, info)
  	client := fw.getRadiusClient(ctx)
  
  	var err error
  	client.Dialer.LocalAddr, err = net.ResolveUDPAddr("udp", fw.getSourceIp(ctx).String()+":0")
  	sharedutils.CheckError(err)
  
  	// Use the background context since we don't want the lib to use our context
  	ctx2, cancel := fw.RadiusContextWithTimeout()
  	defer cancel()
  	_, err = client.Exchange(ctx2, p, fw.PfconfigHashNS+":"+fw.Port)
  	if err != nil {
  		log.LoggerWContext(ctx).Error(fmt.Sprintf("Couldn't SSO to the WatchGuard, got the following error: %s", err))
  		return false, err
  	} else {
  		return true, nil
  	}
  }
docs: // Send an SSO stop to the WatchGuard firewall
  // Returns an error unless there is a valid reply from the firewall