Message ID | 1302696804-29684-2-git-send-email-levinsasha928@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 04/13/2011 08:13 PM, Sasha Levin wrote: > Add --host-ip-addr parameter to allow changing the host-side IP address. I'd personally prefer something like this: --network=model=virtio,hostip=x.x.x.x/mask,guestmac=yy:yy:yy:yy Once we can set up ip address for guest, we can use: --network=model=virtio,hostip=x.x.x.x/mask,guestmac=yy:yy:yy:yy,guestip=z.z.z.z/mask,guestgw=v.v.v.v > > Signed-off-by: Sasha Levin <levinsasha928@gmail.com> > --- > tools/kvm/include/kvm/virtio-net.h | 2 +- > tools/kvm/kvm-run.c | 9 ++++++++- > tools/kvm/virtio-net.c | 9 ++++----- > 3 files changed, 13 insertions(+), 7 deletions(-) > > diff --git a/tools/kvm/include/kvm/virtio-net.h b/tools/kvm/include/kvm/virtio-net.h > index a1cab15..03eb623 100644 > --- a/tools/kvm/include/kvm/virtio-net.h > +++ b/tools/kvm/include/kvm/virtio-net.h > @@ -2,6 +2,6 @@ > #define KVM__VIRTIO_NET_H > > struct kvm; > -void virtio_net__init(struct kvm *self); > +void virtio_net__init(struct kvm *self, const char* host_ip_addr); > > #endif /* KVM__VIRTIO_NET_H */ > diff --git a/tools/kvm/kvm-run.c b/tools/kvm/kvm-run.c > index 6046a0a..910a8d8 100644 > --- a/tools/kvm/kvm-run.c > +++ b/tools/kvm/kvm-run.c > @@ -31,6 +31,7 @@ > #define DEFAULT_KVM_DEV "/dev/kvm" > #define DEFAULT_CONSOLE "serial" > #define DEFAULT_NETWORK "none" > +#define DEFAULT_HOST_ADDR "192.168.33.2" > > #define MB_SHIFT (20) > #define MIN_RAM_SIZE_MB (64ULL) > @@ -66,6 +67,7 @@ static const char *image_filename; > static const char *console; > static const char *kvm_dev; > static const char *network; > +static const char *host_ip_addr; > static bool single_step; > static bool readonly_image; > extern bool ioport_debug; > @@ -89,6 +91,8 @@ static const struct option options[] = { > "Console to use"), > OPT_STRING('n', "network", &network, "virtio", > "Network to use"), > + OPT_STRING('\0', "host-ip-addr", &host_ip_addr, "a.b.c.d", > + "Assign this address to the host side networking"), > > OPT_GROUP("Kernel options:"), > OPT_STRING('k', "kernel", &kernel_filename, "kernel", > @@ -218,6 +222,9 @@ int kvm_cmd_run(int argc, const char **argv, const char *prefix) > else > active_console = CONSOLE_8250; > > + if (!host_ip_addr) > + host_ip_addr = DEFAULT_HOST_ADDR; > + > term_init(); > > kvm = kvm__init(kvm_dev, ram_size); > @@ -259,7 +266,7 @@ int kvm_cmd_run(int argc, const char **argv, const char *prefix) > network = DEFAULT_NETWORK; > > if (!strncmp(network, "virtio", 6)) > - virtio_net__init(kvm); > + virtio_net__init(kvm, host_ip_addr); > > kvm__start_timer(kvm); > > diff --git a/tools/kvm/virtio-net.c b/tools/kvm/virtio-net.c > index 5f9bf07..ec65779 100644 > --- a/tools/kvm/virtio-net.c > +++ b/tools/kvm/virtio-net.c > @@ -276,7 +276,7 @@ static struct pci_device_header virtio_net_pci_device = { > .irq_line = VIRTIO_NET_IRQ, > }; > > -static void virtio_net__tap_init(void) > +static void virtio_net__tap_init(const char *host_ip_addr) > { > struct ifreq ifr; > int sock = socket(AF_INET, SOCK_STREAM, 0); > @@ -298,8 +298,7 @@ static void virtio_net__tap_init(void) > > strncpy(ifr.ifr_name, net_device.tap_name, sizeof(net_device.tap_name)); > > - /*FIXME: Remove this after user can specify ip address and netmask*/ > - ((struct sockaddr_in *)(&(ifr.ifr_addr)))->sin_addr.s_addr = inet_addr("192.168.33.2"); > + ((struct sockaddr_in *)(&(ifr.ifr_addr)))->sin_addr.s_addr = inet_addr(host_ip_addr); > ifr.ifr_addr.sa_family = AF_INET; > > if (ioctl(sock, SIOCSIFADDR, &ifr) < 0) > @@ -327,11 +326,11 @@ static void virtio_net__io_thread_init(struct kvm *self) > pthread_create(&net_device.io_tx_thread, NULL, virtio_net_tx_thread, (void *)self); > } > > -void virtio_net__init(struct kvm *self) > +void virtio_net__init(struct kvm *self, const char* host_ip_addr) > { > pci__register(&virtio_net_pci_device, PCI_VIRTIO_NET_DEVNUM); > ioport__register(IOPORT_VIRTIO_NET, &virtio_net_io_ops, IOPORT_VIRTIO_NET_SIZE); > > - virtio_net__tap_init(); > + virtio_net__tap_init(host_ip_addr); > virtio_net__io_thread_init(self); > }
On 4/13/11 3:28 PM, Asias He wrote: > On 04/13/2011 08:13 PM, Sasha Levin wrote: >> Add --host-ip-addr parameter to allow changing the host-side IP address. > > I'd personally prefer something like this: > > --network=model=virtio,hostip=x.x.x.x/mask,guestmac=yy:yy:yy:yy > > Once we can set up ip address for guest, we can use: > > --network=model=virtio,hostip=x.x.x.x/mask,guestmac=yy:yy:yy:yy,guestip=z.z.z.z/mask,guestgw=v.v.v.v What's the benefit over --network=virtio --hostip=x.x.x.x/mask --guestmac= [...] form? Isn't Sasha's form a much better fit with the git-like front end (for parsing and help text)? Pekka -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 04/13/2011 08:28 PM, Asias He wrote: > On 04/13/2011 08:13 PM, Sasha Levin wrote: >> Add --host-ip-addr parameter to allow changing the host-side IP address. > > > I'd personally prefer something like this: > > --network=model=virtio,hostip=x.x.x.x/mask,guestmac=yy:yy:yy:yy > > Once we can set up ip address for guest, we can use: > > --network=model=virtio,hostip=x.x.x.x/mask,guestmac=yy:yy:yy:yy,guestip=z.z.z.z/mask,guestgw=v.v.v.v > Alternatively, we can use an option group like this: Network options: -n --network <virtio> -h --hostip <x.x.x.x/n> -y --guestip <x.x.x.x/n> -z --guestmac <xx:xx:xx:xx:xx:xx>
On Wed, Apr 13, 2011 at 4:28 PM, Asias He <asias.hejun@gmail.com> wrote: > On 04/13/2011 08:28 PM, Asias He wrote: >> On 04/13/2011 08:13 PM, Sasha Levin wrote: >>> Add --host-ip-addr parameter to allow changing the host-side IP address. >> >> >> I'd personally prefer something like this: >> >> --network=model=virtio,hostip=x.x.x.x/mask,guestmac=yy:yy:yy:yy >> >> Once we can set up ip address for guest, we can use: >> >> --network=model=virtio,hostip=x.x.x.x/mask,guestmac=yy:yy:yy:yy,guestip=z.z.z.z/mask,guestgw=v.v.v.v >> > > > Alternatively, we can use an option group like this: > > Network options: > -n --network <virtio> > -h --hostip <x.x.x.x/n> > -y --guestip <x.x.x.x/n> > -z --guestmac <xx:xx:xx:xx:xx:xx> > I agree. We can create a networking group once we start expanding the options. -- Sasha. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, 2011-04-13 at 16:38 +0300, Sasha Levin wrote: > On Wed, Apr 13, 2011 at 4:28 PM, Asias He <asias.hejun@gmail.com> wrote: > > On 04/13/2011 08:28 PM, Asias He wrote: > >> On 04/13/2011 08:13 PM, Sasha Levin wrote: > >>> Add --host-ip-addr parameter to allow changing the host-side IP address. > >> > >> > >> I'd personally prefer something like this: > >> > >> --network=model=virtio,hostip=x.x.x.x/mask,guestmac=yy:yy:yy:yy > >> > >> Once we can set up ip address for guest, we can use: > >> > >> --network=model=virtio,hostip=x.x.x.x/mask,guestmac=yy:yy:yy:yy,guestip=z.z.z.z/mask,guestgw=v.v.v.v > >> > > > > > > Alternatively, we can use an option group like this: > > > > Network options: > > -n --network <virtio> > > -h --hostip <x.x.x.x/n> > > -y --guestip <x.x.x.x/n> > > -z --guestmac <xx:xx:xx:xx:xx:xx> > > > > I agree. We can create a networking group once we start expanding the options. Asias, is the patch OK to merge? -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 04/13/2011 10:07 PM, Pekka Enberg wrote: > On Wed, 2011-04-13 at 16:38 +0300, Sasha Levin wrote: >> On Wed, Apr 13, 2011 at 4:28 PM, Asias He <asias.hejun@gmail.com> wrote: >>> On 04/13/2011 08:28 PM, Asias He wrote: >>>> On 04/13/2011 08:13 PM, Sasha Levin wrote: >>>>> Add --host-ip-addr parameter to allow changing the host-side IP address. >>>> >>>> >>>> I'd personally prefer something like this: >>>> >>>> --network=model=virtio,hostip=x.x.x.x/mask,guestmac=yy:yy:yy:yy >>>> >>>> Once we can set up ip address for guest, we can use: >>>> >>>> --network=model=virtio,hostip=x.x.x.x/mask,guestmac=yy:yy:yy:yy,guestip=z.z.z.z/mask,guestgw=v.v.v.v >>>> >>> >>> >>> Alternatively, we can use an option group like this: >>> >>> Network options: >>> -n --network <virtio> >>> -h --hostip <x.x.x.x/n> >>> -y --guestip <x.x.x.x/n> >>> -z --guestmac <xx:xx:xx:xx:xx:xx> >>> >> >> I agree. We can create a networking group once we start expanding the options. > > Asias, is the patch OK to merge? The first patch is ok. Sasha needs modification for the second patch.
diff --git a/tools/kvm/include/kvm/virtio-net.h b/tools/kvm/include/kvm/virtio-net.h index a1cab15..03eb623 100644 --- a/tools/kvm/include/kvm/virtio-net.h +++ b/tools/kvm/include/kvm/virtio-net.h @@ -2,6 +2,6 @@ #define KVM__VIRTIO_NET_H struct kvm; -void virtio_net__init(struct kvm *self); +void virtio_net__init(struct kvm *self, const char* host_ip_addr); #endif /* KVM__VIRTIO_NET_H */ diff --git a/tools/kvm/kvm-run.c b/tools/kvm/kvm-run.c index 6046a0a..910a8d8 100644 --- a/tools/kvm/kvm-run.c +++ b/tools/kvm/kvm-run.c @@ -31,6 +31,7 @@ #define DEFAULT_KVM_DEV "/dev/kvm" #define DEFAULT_CONSOLE "serial" #define DEFAULT_NETWORK "none" +#define DEFAULT_HOST_ADDR "192.168.33.2" #define MB_SHIFT (20) #define MIN_RAM_SIZE_MB (64ULL) @@ -66,6 +67,7 @@ static const char *image_filename; static const char *console; static const char *kvm_dev; static const char *network; +static const char *host_ip_addr; static bool single_step; static bool readonly_image; extern bool ioport_debug; @@ -89,6 +91,8 @@ static const struct option options[] = { "Console to use"), OPT_STRING('n', "network", &network, "virtio", "Network to use"), + OPT_STRING('\0', "host-ip-addr", &host_ip_addr, "a.b.c.d", + "Assign this address to the host side networking"), OPT_GROUP("Kernel options:"), OPT_STRING('k', "kernel", &kernel_filename, "kernel", @@ -218,6 +222,9 @@ int kvm_cmd_run(int argc, const char **argv, const char *prefix) else active_console = CONSOLE_8250; + if (!host_ip_addr) + host_ip_addr = DEFAULT_HOST_ADDR; + term_init(); kvm = kvm__init(kvm_dev, ram_size); @@ -259,7 +266,7 @@ int kvm_cmd_run(int argc, const char **argv, const char *prefix) network = DEFAULT_NETWORK; if (!strncmp(network, "virtio", 6)) - virtio_net__init(kvm); + virtio_net__init(kvm, host_ip_addr); kvm__start_timer(kvm); diff --git a/tools/kvm/virtio-net.c b/tools/kvm/virtio-net.c index 5f9bf07..ec65779 100644 --- a/tools/kvm/virtio-net.c +++ b/tools/kvm/virtio-net.c @@ -276,7 +276,7 @@ static struct pci_device_header virtio_net_pci_device = { .irq_line = VIRTIO_NET_IRQ, }; -static void virtio_net__tap_init(void) +static void virtio_net__tap_init(const char *host_ip_addr) { struct ifreq ifr; int sock = socket(AF_INET, SOCK_STREAM, 0); @@ -298,8 +298,7 @@ static void virtio_net__tap_init(void) strncpy(ifr.ifr_name, net_device.tap_name, sizeof(net_device.tap_name)); - /*FIXME: Remove this after user can specify ip address and netmask*/ - ((struct sockaddr_in *)(&(ifr.ifr_addr)))->sin_addr.s_addr = inet_addr("192.168.33.2"); + ((struct sockaddr_in *)(&(ifr.ifr_addr)))->sin_addr.s_addr = inet_addr(host_ip_addr); ifr.ifr_addr.sa_family = AF_INET; if (ioctl(sock, SIOCSIFADDR, &ifr) < 0) @@ -327,11 +326,11 @@ static void virtio_net__io_thread_init(struct kvm *self) pthread_create(&net_device.io_tx_thread, NULL, virtio_net_tx_thread, (void *)self); } -void virtio_net__init(struct kvm *self) +void virtio_net__init(struct kvm *self, const char* host_ip_addr) { pci__register(&virtio_net_pci_device, PCI_VIRTIO_NET_DEVNUM); ioport__register(IOPORT_VIRTIO_NET, &virtio_net_io_ops, IOPORT_VIRTIO_NET_SIZE); - virtio_net__tap_init(); + virtio_net__tap_init(host_ip_addr); virtio_net__io_thread_init(self); }
Add --host-ip-addr parameter to allow changing the host-side IP address. Signed-off-by: Sasha Levin <levinsasha928@gmail.com> --- tools/kvm/include/kvm/virtio-net.h | 2 +- tools/kvm/kvm-run.c | 9 ++++++++- tools/kvm/virtio-net.c | 9 ++++----- 3 files changed, 13 insertions(+), 7 deletions(-)