[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH COLO-Frame v8 23/34] tap: Make launch_script() p
From: |
Jason Wang |
Subject: |
Re: [Qemu-devel] [PATCH COLO-Frame v8 23/34] tap: Make launch_script() public |
Date: |
Thu, 30 Jul 2015 11:32:00 +0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 |
On 07/29/2015 05:43 PM, zhanghailiang wrote:
> On 2015/7/29 17:24, Jason Wang wrote:
>>
>>
>> On 07/29/2015 05:17 PM, zhanghailiang wrote:
>>> On 2015/7/29 16:57, Jason Wang wrote:
>>>>
>>>>
>>>> On 07/29/2015 04:45 PM, zhanghailiang wrote:
>>>>> We also change the parameters of launch_script().
>>>>
>>>> A quick question (I don't go through the codes tough). What's the plan
>>>> for management(libvirt)? I believe some setup (iptables, fd creation)
>>>> should be offloaded to management (libvirt)?
>>>>
>>>
>>> Er, yes, the better way for setup is in libvirt, we didn't look into it
>>> deeply, but it was in our TODO list before, since our first step is to
>>> merge colo's qemu part,
>>> if we realize colo proxy in qemu, it seems to be more simple than this
>>> inconvenient way.
>>
>>
>> Please consider this as early as possible. The issue is probably not
>> convenience but security. Running qemu as root is dangerous, that's why
>> most of the setup was done through management.
>>
>
> Agreed, but if we totally convert proxy to userspace, we will not use
> this setup way (Using
> iptables command), it will be no problem, is it?
Confused, at least patch 24 has bash script to configure host iptables
and tcs?
>
> Thanks.
>
>>>> Thanks
>>>>
>>>>> Cc: Stefan Hajnoczi <address@hidden>
>>>>> Cc: Jason Wang <address@hidden>
>>>>> Signed-off-by: zhanghailiang <address@hidden>
>>>>> Signed-off-by: Li Zhijian <address@hidden>
>>>>> ---
>>>>> include/net/tap.h | 2 ++
>>>>> net/tap.c | 31 ++++++++++++++++++-------------
>>>>> 2 files changed, 20 insertions(+), 13 deletions(-)
>>>>>
>>>>> diff --git a/include/net/tap.h b/include/net/tap.h
>>>>> index 5da4edc..ac99b31 100644
>>>>> --- a/include/net/tap.h
>>>>> +++ b/include/net/tap.h
>>>>> @@ -38,4 +38,6 @@ int tap_get_fd(NetClientState *nc);
>>>>> struct vhost_net;
>>>>> struct vhost_net *tap_get_vhost_net(NetClientState *nc);
>>>>>
>>>>> +void launch_script(char *const args[], int fd, Error **errp);
>>>>> +
>>>>> #endif /* QEMU_NET_TAP_H */
>>>>> diff --git a/net/tap.c b/net/tap.c
>>>>> index c2135cd..a715636 100644
>>>>> --- a/net/tap.c
>>>>> +++ b/net/tap.c
>>>>> @@ -60,9 +60,6 @@ typedef struct TAPState {
>>>>> unsigned host_vnet_hdr_len;
>>>>> } TAPState;
>>>>>
>>>>> -static void launch_script(const char *setup_script, const char
>>>>> *ifname,
>>>>> - int fd, Error **errp);
>>>>> -
>>>>> static void tap_send(void *opaque);
>>>>> static void tap_writable(void *opaque);
>>>>>
>>>>> @@ -305,7 +302,14 @@ static void tap_cleanup(NetClientState *nc)
>>>>> qemu_purge_queued_packets(nc);
>>>>>
>>>>> if (s->down_script[0]) {
>>>>> - launch_script(s->down_script, s->down_script_arg, s->fd,
>>>>> &err);
>>>>> + char *args[3];
>>>>> + char **parg;
>>>>> +
>>>>> + parg = args;
>>>>> + *parg++ = (char *)s->down_script;
>>>>> + *parg++ = (char *)s->down_script_arg;
>>>>> + *parg = NULL;
>>>>> + launch_script(args, s->fd, &err);
>>>>> if (err) {
>>>>> error_report_err(err);
>>>>> }
>>>>> @@ -382,12 +386,10 @@ static TAPState
>>>>> *net_tap_fd_init(NetClientState *peer,
>>>>> return s;
>>>>> }
>>>>>
>>>>> -static void launch_script(const char *setup_script, const char
>>>>> *ifname,
>>>>> - int fd, Error **errp)
>>>>> +void launch_script(char *const args[], int fd, Error **errp)
>>>>> {
>>>>> int pid, status;
>>>>> - char *args[3];
>>>>> - char **parg;
>>>>> + const char *setup_script = args[0];
>>>>>
>>>>> /* try to launch network script */
>>>>> pid = fork();
>>>>> @@ -404,10 +406,6 @@ static void launch_script(const char
>>>>> *setup_script, const char *ifname,
>>>>> close(i);
>>>>> }
>>>>> }
>>>>> - parg = args;
>>>>> - *parg++ = (char *)setup_script;
>>>>> - *parg++ = (char *)ifname;
>>>>> - *parg = NULL;
>>>>> execv(setup_script, args);
>>>>> _exit(1);
>>>>> } else {
>>>>> @@ -611,7 +609,14 @@ static int net_tap_init(const NetdevTapOptions
>>>>> *tap, int *vnet_hdr,
>>>>> if (setup_script &&
>>>>> setup_script[0] != '\0' &&
>>>>> strcmp(setup_script, "no") != 0) {
>>>>> - launch_script(setup_script, ifname, fd, &err);
>>>>> + char *args[3];
>>>>> + char **parg;
>>>>> + parg = args;
>>>>> + *parg++ = (char *)setup_script;
>>>>> + *parg++ = (char *)ifname;
>>>>> + *parg = NULL;
>>>>> +
>>>>> + launch_script(args, fd, &err);
>>>>> if (err) {
>>>>> error_propagate(errp, err);
>>>>> close(fd);
>>>>
>>>>
>>>> .
>>>>
>>>
>>>
>>
>>
>> .
>>
>
>
>
- [Qemu-devel] [PATCH COLO-Frame v8 13/34] COLO VMstate: Load VM state into qsb before restore it, (continued)
- [Qemu-devel] [PATCH COLO-Frame v8 13/34] COLO VMstate: Load VM state into qsb before restore it, zhanghailiang, 2015/07/29
- [Qemu-devel] [PATCH COLO-Frame v8 22/34] COLO NIC: Init/remove colo nic devices when add/cleanup tap devices, zhanghailiang, 2015/07/29
- [Qemu-devel] [PATCH COLO-Frame v8 16/34] COLO failover: Introduce a new command to trigger a failover, zhanghailiang, 2015/07/29
- [Qemu-devel] [PATCH COLO-Frame v8 14/34] arch_init: Start to trace dirty pages of SVM, zhanghailiang, 2015/07/29
- [Qemu-devel] [PATCH COLO-Frame v8 20/34] COLO failover: Don't do failover during loading VM's state, zhanghailiang, 2015/07/29
- [Qemu-devel] [PATCH COLO-Frame v8 23/34] tap: Make launch_script() public, zhanghailiang, 2015/07/29
- Re: [Qemu-devel] [PATCH COLO-Frame v8 23/34] tap: Make launch_script() public, Daniel P. Berrange, 2015/07/29
- Re: [Qemu-devel] [PATCH COLO-Frame v8 23/34] tap: Make launch_script() public, Dr. David Alan Gilbert, 2015/07/29
[Qemu-devel] [PATCH COLO-Frame v8 04/34] colo-comm/migration: skip colo info section for special cases, zhanghailiang, 2015/07/29
[Qemu-devel] [PATCH COLO-Frame v8 15/34] COLO RAM: Flush cached RAM into SVM's memory, zhanghailiang, 2015/07/29
[Qemu-devel] [PATCH COLO-Frame v8 25/34] colo-nic: Handle secondary VM's original net device configure, zhanghailiang, 2015/07/29
[Qemu-devel] [PATCH COLO-Frame v8 26/34] COLO NIC: Implement colo nic init/destroy function, zhanghailiang, 2015/07/29
[Qemu-devel] [PATCH COLO-Frame v8 18/34] COLO failover: Implement COLO primary/secondary vm failover work, zhanghailiang, 2015/07/29
[Qemu-devel] [PATCH COLO-Frame v8 33/34] COLO: Implement shutdown checkpoint, zhanghailiang, 2015/07/29
[Qemu-devel] [PATCH COLO-Frame v8 29/34] COLO: Do checkpoint according to the result of packets comparation, zhanghailiang, 2015/07/29