summaryrefslogtreecommitdiffstats
path: root/net/slirp.c
diff options
context:
space:
mode:
authorPeter Maydell2021-04-08 17:45:31 +0200
committerPeter Maydell2021-04-08 17:45:31 +0200
commitce69aa92d71e13db9c3702a8e8305e8d2463aeb8 (patch)
treedb523c9f40dd1e69e3f0a829d20eb36898c25597 /net/slirp.c
parentMerge remote-tracking branch 'remotes/dgilbert/tags/pull-migration-20210407b'... (diff)
parenttap-win32: correctly recycle buffers (diff)
downloadqemu-ce69aa92d71e13db9c3702a8e8305e8d2463aeb8.tar.gz
qemu-ce69aa92d71e13db9c3702a8e8305e8d2463aeb8.tar.xz
qemu-ce69aa92d71e13db9c3702a8e8305e8d2463aeb8.zip
Merge remote-tracking branch 'remotes/jasowang/tags/net-pull-request' into staging
# gpg: Signature made Thu 08 Apr 2021 10:34:24 BST # gpg: using RSA key EF04965B398D6211 # gpg: Good signature from "Jason Wang (Jason Wang on RedHat) <jasowang@redhat.com>" [marginal] # gpg: WARNING: This key is not certified with sufficiently trusted signatures! # gpg: It is not certain that the signature belongs to the owner. # Primary key fingerprint: 215D 46F4 8246 689E C77F 3562 EF04 965B 398D 6211 * remotes/jasowang/tags/net-pull-request: tap-win32: correctly recycle buffers Revert "qapi: net: Add query-netdev command" Revert "tests: Add tests for query-netdev command" Revert "net: Move NetClientState.info_str to dynamic allocations" Revert "hmp: Use QAPI NetdevInfo in hmp_info_network" Revert "net: Do not fill legacy info_str for backends" Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'net/slirp.c')
-rw-r--r--net/slirp.c124
1 files changed, 3 insertions, 121 deletions
diff --git a/net/slirp.c b/net/slirp.c
index a9fdc7a08f..a01a0fccd3 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -387,9 +387,6 @@ static int net_slirp_init(NetClientState *peer, const char *model,
int shift;
char *end;
struct slirp_config_str *config;
- NetdevUserOptions *stored;
- StringList **stored_hostfwd;
- StringList **stored_guestfwd;
if (!ipv4 && (vnetwork || vhost || vnameserver)) {
error_setg(errp, "IPv4 disabled but netmask/host/dns provided");
@@ -565,114 +562,9 @@ static int net_slirp_init(NetClientState *peer, const char *model,
nc = qemu_new_net_client(&net_slirp_info, peer, model, name);
- /* Store startup parameters */
- nc->stored_config = g_new0(NetdevInfo, 1);
- nc->stored_config->type = NET_BACKEND_USER;
- stored = &nc->stored_config->u.user;
-
- if (vhostname) {
- stored->has_hostname = true;
- stored->hostname = g_strdup(vhostname);
- }
-
- stored->has_q_restrict = true;
- stored->q_restrict = restricted;
-
- stored->has_ipv4 = true;
- stored->ipv4 = ipv4;
-
- stored->has_ipv6 = true;
- stored->ipv6 = ipv6;
-
- if (ipv4) {
- uint8_t *net_bytes = (uint8_t *)&net;
- uint8_t *mask_bytes = (uint8_t *)&mask;
-
- stored->has_net = true;
- stored->net = g_strdup_printf("%d.%d.%d.%d/%d.%d.%d.%d",
- net_bytes[0], net_bytes[1],
- net_bytes[2], net_bytes[3],
- mask_bytes[0], mask_bytes[1],
- mask_bytes[2], mask_bytes[3]);
-
- stored->has_host = true;
- stored->host = g_strdup(inet_ntoa(host));
- }
-
- if (tftp_export) {
- stored->has_tftp = true;
- stored->tftp = g_strdup(tftp_export);
- }
-
- if (bootfile) {
- stored->has_bootfile = true;
- stored->bootfile = g_strdup(bootfile);
- }
-
- if (vdhcp_start) {
- stored->has_dhcpstart = true;
- stored->dhcpstart = g_strdup(vdhcp_start);
- }
-
- if (ipv4) {
- stored->has_dns = true;
- stored->dns = g_strdup(inet_ntoa(dns));
- }
-
- if (dnssearch) {
- stored->has_dnssearch = true;
- StringList **stored_list = &stored->dnssearch;
-
- for (int i = 0; dnssearch[i]; i++) {
- String *element = g_new0(String, 1);
-
- element->str = g_strdup(dnssearch[i]);
- QAPI_LIST_APPEND(stored_list, element);
- }
- }
-
- if (vdomainname) {
- stored->has_domainname = true;
- stored->domainname = g_strdup(vdomainname);
- }
-
- if (ipv6) {
- char addrstr[INET6_ADDRSTRLEN];
- const char *res;
-
- stored->has_ipv6_prefix = true;
- stored->ipv6_prefix = g_strdup(vprefix6);
-
- stored->has_ipv6_prefixlen = true;
- stored->ipv6_prefixlen = vprefix6_len;
-
- res = inet_ntop(AF_INET6, &ip6_host,
- addrstr, sizeof(addrstr));
-
- stored->has_ipv6_host = true;
- stored->ipv6_host = g_strdup(res);
-
- res = inet_ntop(AF_INET6, &ip6_dns,
- addrstr, sizeof(addrstr));
-
- stored->has_ipv6_dns = true;
- stored->ipv6_dns = g_strdup(res);
- }
-
- if (smb_export) {
- stored->has_smb = true;
- stored->smb = g_strdup(smb_export);
- }
-
- if (vsmbserver) {
- stored->has_smbserver = true;
- stored->smbserver = g_strdup(vsmbserver);
- }
-
- if (tftp_server_name) {
- stored->has_tftp_server_name = true;
- stored->tftp_server_name = g_strdup(tftp_server_name);
- }
+ snprintf(nc->info_str, sizeof(nc->info_str),
+ "net=%s,restrict=%s", inet_ntoa(net),
+ restricted ? "on" : "off");
s = DO_UPCAST(SlirpState, nc, nc);
@@ -699,25 +591,15 @@ static int net_slirp_init(NetClientState *peer, const char *model,
s->poll_notifier.notify = net_slirp_poll_notify;
main_loop_poll_add_notifier(&s->poll_notifier);
- stored_hostfwd = &stored->hostfwd;
- stored_guestfwd = &stored->guestfwd;
-
for (config = slirp_configs; config; config = config->next) {
- String *element = g_new0(String, 1);
-
- element->str = g_strdup(config->str);
if (config->flags & SLIRP_CFG_HOSTFWD) {
if (slirp_hostfwd(s, config->str, errp) < 0) {
goto error;
}
- stored->has_hostfwd = true;
- QAPI_LIST_APPEND(stored_hostfwd, element);
} else {
if (slirp_guestfwd(s, config->str, errp) < 0) {
goto error;
}
- stored->has_guestfwd = true;
- QAPI_LIST_APPEND(stored_guestfwd, element);
}
}
#ifndef _WIN32