code: func getIPTablesVersionString(exec utilexec.Interface, protocol Protocol) (string, error) {
  	// this doesn't access mutable state so we don't need to use the interface / runner
  	iptablesCmd := iptablesCommand(protocol)
  	bytes, err := exec.Command(iptablesCmd, "--version").CombinedOutput()
  	if err != nil {
  		return "", err
  	}
  	versionMatcher := regexp.MustCompile("v([0-9]+(\\.[0-9]+)+)")
  	match := versionMatcher.FindStringSubmatch(string(bytes))
  	if match == nil {
  		return "", fmt.Errorf("no iptables version found in string: %s", bytes)
  	}
  	return match[1], nil
  }
docs: // getIPTablesVersionString runs "iptables --version" to get the version string
  // in the form "X.X.X"