Revision dd51058d
b/net.c | ||
---|---|---|
1732 | 1732 |
int port, const char *group, int mode) |
1733 | 1733 |
{ |
1734 | 1734 |
VDEState *s; |
1735 |
char *init_group = strlen(group) ? (char *)group : NULL;
|
|
1736 |
char *init_sock = strlen(sock) ? (char *)sock : NULL;
|
|
1735 |
char *init_group = (char *)group;
|
|
1736 |
char *init_sock = (char *)sock;
|
|
1737 | 1737 |
|
1738 | 1738 |
struct vde_open_args args = { |
1739 | 1739 |
.port = port, |
... | ... | |
2718 | 2718 |
return 0; |
2719 | 2719 |
} |
2720 | 2720 |
|
2721 |
#ifdef CONFIG_VDE |
|
2722 |
static int net_init_vde(QemuOpts *opts, Monitor *mon) |
|
2723 |
{ |
|
2724 |
VLANState *vlan; |
|
2725 |
const char *name; |
|
2726 |
const char *sock; |
|
2727 |
const char *group; |
|
2728 |
int port, mode; |
|
2729 |
|
|
2730 |
vlan = qemu_find_vlan(qemu_opt_get_number(opts, "vlan", 0), 1); |
|
2731 |
|
|
2732 |
name = qemu_opt_get(opts, "name"); |
|
2733 |
sock = qemu_opt_get(opts, "sock"); |
|
2734 |
group = qemu_opt_get(opts, "group"); |
|
2735 |
|
|
2736 |
port = qemu_opt_get_number(opts, "port", 0); |
|
2737 |
mode = qemu_opt_get_number(opts, "mode", 0700); |
|
2738 |
|
|
2739 |
if (net_vde_init(vlan, "vde", name, sock, port, group, mode) == -1) { |
|
2740 |
return -1; |
|
2741 |
} |
|
2742 |
|
|
2743 |
vlan->nb_host_devs++; |
|
2744 |
|
|
2745 |
return 0; |
|
2746 |
} |
|
2747 |
#endif |
|
2748 |
|
|
2721 | 2749 |
#define NET_COMMON_PARAMS_DESC \ |
2722 | 2750 |
{ \ |
2723 | 2751 |
.name = "type", \ |
... | ... | |
2904 | 2932 |
}, |
2905 | 2933 |
{ /* end of list */ } |
2906 | 2934 |
}, |
2935 |
#ifdef CONFIG_VDE |
|
2936 |
}, { |
|
2937 |
.type = "vde", |
|
2938 |
.init = net_init_vde, |
|
2939 |
.desc = { |
|
2940 |
NET_COMMON_PARAMS_DESC, |
|
2941 |
{ |
|
2942 |
.name = "sock", |
|
2943 |
.type = QEMU_OPT_STRING, |
|
2944 |
.help = "socket path", |
|
2945 |
}, { |
|
2946 |
.name = "port", |
|
2947 |
.type = QEMU_OPT_NUMBER, |
|
2948 |
.help = "port number", |
|
2949 |
}, { |
|
2950 |
.name = "group", |
|
2951 |
.type = QEMU_OPT_STRING, |
|
2952 |
.help = "group owner of socket", |
|
2953 |
}, { |
|
2954 |
.name = "mode", |
|
2955 |
.type = QEMU_OPT_NUMBER, |
|
2956 |
.help = "permissions for socket", |
|
2957 |
}, |
|
2958 |
{ /* end of list */ } |
|
2959 |
}, |
|
2960 |
#endif |
|
2907 | 2961 |
}, |
2908 | 2962 |
{ /* end of list */ } |
2909 | 2963 |
}; |
... | ... | |
2948 | 3002 |
!strcmp(device, "nic") || |
2949 | 3003 |
!strcmp(device, "user") || |
2950 | 3004 |
!strcmp(device, "tap") || |
2951 |
!strcmp(device, "socket")) { |
|
3005 |
!strcmp(device, "socket") || |
|
3006 |
!strcmp(device, "vde")) { |
|
2952 | 3007 |
QemuOpts *opts; |
2953 | 3008 |
|
2954 | 3009 |
opts = qemu_opts_parse(&qemu_net_opts, p, NULL); |
... | ... | |
2987 | 3042 |
} |
2988 | 3043 |
} else |
2989 | 3044 |
#endif |
2990 |
#ifdef CONFIG_VDE |
|
2991 |
if (!strcmp(device, "vde")) { |
|
2992 |
static const char * const vde_params[] = { |
|
2993 |
"vlan", "name", "sock", "port", "group", "mode", NULL |
|
2994 |
}; |
|
2995 |
char vde_sock[1024], vde_group[512]; |
|
2996 |
int vde_port, vde_mode; |
|
2997 |
|
|
2998 |
if (check_params(buf, sizeof(buf), vde_params, p) < 0) { |
|
2999 |
qemu_error("invalid parameter '%s' in '%s'\n", buf, p); |
|
3000 |
ret = -1; |
|
3001 |
goto out; |
|
3002 |
} |
|
3003 |
vlan->nb_host_devs++; |
|
3004 |
if (get_param_value(vde_sock, sizeof(vde_sock), "sock", p) <= 0) { |
|
3005 |
vde_sock[0] = '\0'; |
|
3006 |
} |
|
3007 |
if (get_param_value(buf, sizeof(buf), "port", p) > 0) { |
|
3008 |
vde_port = strtol(buf, NULL, 10); |
|
3009 |
} else { |
|
3010 |
vde_port = 0; |
|
3011 |
} |
|
3012 |
if (get_param_value(vde_group, sizeof(vde_group), "group", p) <= 0) { |
|
3013 |
vde_group[0] = '\0'; |
|
3014 |
} |
|
3015 |
if (get_param_value(buf, sizeof(buf), "mode", p) > 0) { |
|
3016 |
vde_mode = strtol(buf, NULL, 8); |
|
3017 |
} else { |
|
3018 |
vde_mode = 0700; |
|
3019 |
} |
|
3020 |
ret = net_vde_init(vlan, device, name, vde_sock, vde_port, vde_group, vde_mode); |
|
3021 |
} else |
|
3022 |
#endif |
|
3023 | 3045 |
if (!strcmp(device, "dump")) { |
3024 | 3046 |
int len = 65536; |
3025 | 3047 |
|
Also available in: Unified diff