code: func setPortForwarding(d *Driver, interfaceNum int, mapName, protocol string, guestPort, desiredHostPort int) (int, error) {
  	actualHostPort, err := getAvailableTCPPort(desiredHostPort)
  	if err != nil {
  		return -1, err
  	}
  	if desiredHostPort != actualHostPort && desiredHostPort != 0 {
  		log.Debugf("NAT forwarding host port for guest port %d (%s) changed from %d to %d",
  			guestPort, mapName, desiredHostPort, actualHostPort)
  	}
  	cmd := fmt.Sprintf("--natpf%d", interfaceNum)
  	d.vbm("modifyvm", d.MachineName, cmd, "delete", mapName)
  	if err := d.vbm("modifyvm", d.MachineName,
  		cmd, fmt.Sprintf("%s,%s,127.0.0.1,%d,,%d", mapName, protocol, actualHostPort, guestPort)); err != nil {
  		return -1, err
  	}
  	return actualHostPort, nil
  }
docs: // Setup a NAT port forwarding entry.