// GetKVMNetParams returns additional arguments that need to be passed to kernel and lkvm tool to configure networks properly // parameters are based on Network configuration extracted from Networking struct func GetKVMNetArgs(n *networking.Networking) ([]string, []string, error) { lkvmArgs := []string{} kernelParams := []string{} for i, netParams := range n.GetNetworkParameters() { // https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt // ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip> var gw string if netParams.IPMasq { gw = netParams.HostIP.String() } kernelParams = append(kernelParams, "ip="+netParams.GuestIP.String()+"::"+gw+":"+netParams.Mask.String()+":"+fmt.Sprintf(networking.IfNamePattern, i)+":::") lkvmArgs = append(lkvmArgs, "--network", "mode=tap,tapif="+netParams.IfName+",host_ip="+netParams.HostIP.String()+",guest_ip="+netParams.GuestIP.String()) } return lkvmArgs, kernelParams, nil }