code: func (runner *runner) createSet(set *IPSet, ignoreExistErr bool) error {
  	args := []string{"create", set.Name, string(set.SetType)}
  	if set.SetType == HashIPPortIP || set.SetType == HashIPPort || set.SetType == HashIPPortNet {
  		args = append(args,
  			"family", set.HashFamily,
  			"hashsize", strconv.Itoa(set.HashSize),
  			"maxelem", strconv.Itoa(set.MaxElem),
  		)
  	}
  	if set.SetType == BitmapPort {
  		args = append(args, "range", set.PortRange)
  	}
  	if ignoreExistErr {
  		args = append(args, "-exist")
  	}
  	if _, err := runner.exec.Command(IPSetCmd, args...).CombinedOutput(); err != nil {
  		return fmt.Errorf("error creating ipset %s, error: %v", set.Name, err)
  	}
  	return nil
  }
docs: // If ignoreExistErr is set to true, then the -exist option of ipset will be specified, ipset ignores the error
  // otherwise raised when the same set (setname and create parameters are identical) already exists.