code: func newEdns0VariableRule(mode, action, code, variable string) (*edns0VariableRule, error) {
  	c, err := strconv.ParseUint(code, 0, 16)
  	if err != nil {
  		return nil, err
  	}
  	//Validate
  	if !isValidVariable(variable) {
  		return nil, fmt.Errorf("unsupported variable name %q", variable)
  	}
  	return &edns0VariableRule{mode: mode, action: action, code: uint16(c), variable: variable}, nil
  }
docs: // newEdns0VariableRule creates an EDNS0 rule that handles variable substitution