qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Henrik Carlqvist <hc94@poolhem.se>
To: Henrik Carlqvist <hc981@poolhem.se>
Cc: samuel.thibault@gnu.org, qemu-devel@nongnu.org,
	Henrik Carlqvist <hc981@poolhem.se>
Subject: Ping: [PATCH v2] Allowing setting and overriding parameters in smb.conf
Date: Sun, 10 Sep 2023 13:48:12 +0200	[thread overview]
Message-ID: <20230910134812.7fa3a603.hc94@poolhem.se> (raw)
In-Reply-To: <20230803171256.1d39d71f.hc981@poolhem.se>

I'm just wondering if there are any plans to apply my patch in this version or
if you would like me to change anything more in the patch? I am aware that
during this time of the year many have been away on vacation and it has also
been a new release 8.1 which has blocked any submitted patches but bug fixes.
However, now might be a good time to push this patch towards master?

Best regards Henrik

On Thu, 3 Aug 2023 17:12:56 +0200
Henrik Carlqvist <hc981@poolhem.se> wrote:

> From a6dfb322a88965281e3bba00a92f8d5e437bfa95 Mon Sep 17 00:00:00 2001
> From: Henrik Carlqvist <hc1245@poolhem.se>
> Date: Thu, 3 Aug 2023 16:52:25 +0200
> Subject: [PATCH] Allowing setting and overriding parameters in smb.conf,
>  moving some parameters from the [qemu] section to the [global] section to
>  allow them to get overridden by custom user settings.
> 
> Signed-off-by: Henrik Carlqvist <hc1245@poolhem.se>
> ---
> 
> In this second version of the patch I have moved also the "force user" 
> parameter to the global section of smb.conf. Even though I do not self see
> the usefullness of altering that parameter we might just as well give the
> users the freedom to alter anything in smb.conf. Maybe someone else will see
> the need to alter that parameter.
> 
> Best regards Henrik
> 
>  net/slirp.c     | 50 ++++++++++++++++++++++++++++++++++++++++---------
>  qapi/net.json   |  3 +++
>  qemu-options.hx | 15 ++++++++++++---
>  3 files changed, 56 insertions(+), 12 deletions(-)
> 
> diff --git a/net/slirp.c b/net/slirp.c
> index c33b3e02e7..e27d115bc4 100644
> --- a/net/slirp.c
> +++ b/net/slirp.c
> @@ -106,7 +106,8 @@ static int slirp_guestfwd(SlirpState *s, const char
> *config_str, Error **errp);
>  
>  #if defined(CONFIG_SMBD_COMMAND)
>  static int slirp_smb(SlirpState *s, const char *exported_dir,
> -                     struct in_addr vserver_addr, Error **errp);
> +                     struct in_addr vserver_addr, const char *smbparams,
> +                     Error **errp);
>  static void slirp_smb_cleanup(SlirpState *s);
>  #else
>  static inline void slirp_smb_cleanup(SlirpState *s) { }
> @@ -424,6 +425,7 @@ static int net_slirp_init(NetClientState *peer, const
> char *model,
>                            const char *bootfile, const char *vdhcp_start,
>                            const char *vnameserver, const char
>                            *vnameserver6, const char *smb_export, const char
>                            *vsmbserver,
> +                          const char *smbparams,
>                            const char **dnssearch, const char *vdomainname,
>                            const char *tftp_server_name,
>                            Error **errp)
> @@ -678,7 +680,7 @@ static int net_slirp_init(NetClientState *peer, const
> char *model,
>      }
>  #if defined(CONFIG_SMBD_COMMAND)
>      if (smb_export) {
> -        if (slirp_smb(s, smb_export, smbsrv, errp) < 0) {
> +        if (slirp_smb(s, smb_export, smbsrv, smbparams, errp) < 0) {
>              goto error;
>          }
>      }
> @@ -891,7 +893,8 @@ static void slirp_smb_cleanup(SlirpState *s)
>  }
>  
>  static int slirp_smb(SlirpState* s, const char *exported_dir,
> -                     struct in_addr vserver_addr, Error **errp)
> +                     struct in_addr vserver_addr, const char *smbparams,
> +                     Error **errp)
>  {
>      char *smb_conf;
>      char *smb_cmdline;
> @@ -950,11 +953,12 @@ static int slirp_smb(SlirpState* s, const char
> *exported_dir,
>              "printing = bsd\n"
>              "disable spoolss = yes\n"
>              "usershare max shares = 0\n"
> -            "[qemu]\n"
> -            "path=%s\n"
>              "read only=no\n"
>              "guest ok=yes\n"
> -            "force user=%s\n",
> +            "force user=%s\n"
> +	    "%s"
> +            "[qemu]\n"
> +            "path=%s\n",
>              s->smb_dir,
>              s->smb_dir,
>              s->smb_dir,
> @@ -963,8 +967,9 @@ static int slirp_smb(SlirpState* s, const char
> *exported_dir,
>              s->smb_dir,
>              s->smb_dir,
>              s->smb_dir,
> -            exported_dir,
> -            passwd->pw_name
> +            passwd->pw_name,
> +            smbparams,
> +            exported_dir
>              );
>      fclose(f);
>  
> @@ -1143,6 +1148,29 @@ static const char **slirp_dnssearch(const StringList
> *dnsname)
>      return ret;
>  }
>  
> +static char *slirp_smbparams(const StringList *smbparam)
> +{
> +    const StringList *c = smbparam;
> +    size_t i = 1; /* for string terminating 0 */
> +    char *ret;
> +
> +    while (c) {
> +        i += strlen(c->value->str);
> +        i++; /* for \n */
> +        c = c->next;
> +    }
> +    ret = g_malloc(i * sizeof(*ret));
> +    ret[0]=0; /* Start with empty string */
> +
> +    c = smbparam;
> +    while (c) {
> +        pstrcat(ret, i * sizeof(*ret), c->value->str);
> +        pstrcat(ret, i * sizeof(*ret), "\n");
> +        c = c->next;
> +    }
> +    return ret;
> +}
> +
>  int net_init_slirp(const Netdev *netdev, const char *name,
>                     NetClientState *peer, Error **errp)
>  {
> @@ -1151,6 +1179,7 @@ int net_init_slirp(const Netdev *netdev, const char
> *name,
>      int ret;
>      const NetdevUserOptions *user;
>      const char **dnssearch;
> +    char *smbparams;
>      bool ipv4 = true, ipv6 = true;
>  
>      assert(netdev->type == NET_CLIENT_DRIVER_USER);
> @@ -1170,6 +1199,7 @@ int net_init_slirp(const Netdev *netdev, const char
> *name,
>             NULL;
>  
>      dnssearch = slirp_dnssearch(user->dnssearch);
> +    smbparams = slirp_smbparams(user->smbparam);
>  
>      /* all optional fields are initialized to "all bits zero" */
>  
> @@ -1182,7 +1212,8 @@ int net_init_slirp(const Netdev *netdev, const char
> *name,
>                           user->ipv6_host, user->hostname, user->tftp,
>                           user->bootfile, user->dhcpstart,
>                           user->dns, user->ipv6_dns, user->smb,
> -                         user->smbserver, dnssearch, user->domainname,
> +                         user->smbserver, smbparams,
> +                         dnssearch, user->domainname,
>                           user->tftp_server_name, errp);
>  
>      while (slirp_configs) {
> @@ -1193,6 +1224,7 @@ int net_init_slirp(const Netdev *netdev, const char
> *name,
>  
>      g_free(vnet);
>      g_free(dnssearch);
> +    g_free(smbparams);
>  
>      return ret;
>  }
> diff --git a/qapi/net.json b/qapi/net.json
> index 313c8a606e..163091719c 100644
> --- a/qapi/net.json
> +++ b/qapi/net.json
> @@ -156,6 +156,8 @@
>  #
>  # @smbserver: IP address of the built-in SMB server
>  #
> +# @smbparam: list of parameters with values for smb.conf
> +#
>  # @hostfwd: redirect incoming TCP or UDP host connections to guest
>  #     endpoints
>  #
> @@ -186,6 +188,7 @@
>      '*ipv6-dns':         'str',
>      '*smb':       'str',
>      '*smbserver': 'str',
> +    '*smbparam': ['String'],
>      '*hostfwd':   ['String'],
>      '*guestfwd':  ['String'],
>      '*tftp-server-name': 'str' } }
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 29b98c3d4c..7b92d08c3e 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -2758,9 +2758,9 @@ DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
>      "         [,ipv6=on|off][,ipv6-net=addr[/int]][,ipv6-host=addr]\n"
>      "         [,restrict=on|off][,hostname=host][,dhcpstart=addr]\n"
>      "        
>      [,dns=addr][,ipv6-dns=addr][,dnssearch=domain][,domainname=domain]\n"
> -    "        
> [,tftp=dir][,tftp-server-name=name][,bootfile=f][,hostfwd=rule][,guestfwd=r
> ule]"+    "        
> [,tftp=dir][,tftp-server-name=name][,bootfile=f][,hostfwd=rule][,guestfwd=r
> ule]\n"
>  #ifndef _WIN32
> -                                            
> "[,smb=dir[,smbserver=addr]]\n"+    "        
> [,smb=dir[,smbserver=addr][,smbparam=parameter=value]]\n"
>  #endif
>      "                configure a user mode network backend with ID
>      'str',\n""                its DHCP server and optional services\n"
> @@ -3062,7 +3062,7 @@ SRST
>              |qemu_system| -hda linux.img -boot n -device e1000,netdev=n1 \\
>                  -netdev
>                  user,id=n1,tftp=/path/to/tftp/files,bootfile=/pxelinux.0
>  
> -    ``smb=dir[,smbserver=addr]``
> +    ``smb=dir[,smbserver=addr][,smbparam=parameter=value]``
>          When using the user mode network stack, activate a built-in SMB
>          server so that Windows OSes can access to the host files in
>          ``dir`` transparently. The IP address of the SMB server can be
> @@ -3081,6 +3081,15 @@ SRST
>  
>          Then ``dir`` can be accessed in ``\\smbserver\qemu``.
>  
> +        It is possible to set samba parameters in the generated smb.conf
> +        with one or more ``smbparam=parameter=value``. Example:
> +
> +        .. parsed-literal::
> +
> +            |qemu_system| -nic user,smb=/tmp,smbparam="read
> only"=yes,smbparam="server min protocol"=NT1+
> +        See the man page of smb.conf for a complete listing of parameters.
> +
>          Note that a SAMBA server must be installed on the host OS.
>  
>      ``hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport``
> -- 
> 2.35.1
> 


  reply	other threads:[~2023-09-10 11:49 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-07  2:37 [PATCH qemu v3 0/1] [PATCH v3] Emulate dip switch language layout settings on SUN keyboard ~henca
2023-01-06 21:33 ` [PATCH qemu v3 1/1] Emulating sun keyboard language layout dip switches, taking the value for the dip switches from the "-k" option to qemu ~henca
2023-01-10 23:08   ` Mark Cave-Ayland
2023-01-23 19:09     ` [PATCH v5] Emulate dip switch language layout settings on SUN keyboard Henrik Carlqvist
2023-03-04 21:07       ` Henrik Carlqvist
2023-03-28 14:01         ` Daniel P. Berrangé
2023-03-28 17:19           ` Henrik Carlqvist
2023-03-28 17:59             ` Daniel P. Berrangé
2023-03-28 20:16               ` Henrik Carlqvist
2023-04-30 20:55                 ` [PATCH v6] " Henrik Carlqvist
2023-06-08 16:14                   ` Ping: " Henrik Carlqvist
2023-06-10  7:06                     ` Mark Cave-Ayland
2023-06-10 10:29                       ` Henrik Carlqvist
2023-06-10 23:47                         ` [PATCH v7] " Henrik Carlqvist
2023-06-20  9:22                           ` Daniel P. Berrangé
2023-06-20 19:50                             ` Henrik Carlqvist
2023-06-21  7:09                               ` Daniel P. Berrangé
2023-06-21 18:14                                 ` Henrik Carlqvist
2023-06-23 18:30                                   ` [PATCH v8] " Henrik Carlqvist
2023-06-26  9:42                                     ` Daniel P. Berrangé
2023-06-27  6:33                                     ` Mark Cave-Ayland
2023-06-27 17:18                                       ` Henrik Carlqvist
2023-08-01 21:27                                     ` [PATCH v1] Allowing setting and overriding parameters in smb.conf Henrik Carlqvist
2023-08-02 19:53                                       ` Samuel Thibault
2023-08-02 23:09                                         ` Henrik Carlqvist
2023-08-02 23:13                                           ` Samuel Thibault
2023-08-02 23:26                                             ` Henrik Carlqvist
2023-08-02 23:34                                               ` Samuel Thibault
2023-08-03  0:13                                                 ` Henrik Carlqvist
2023-08-03 15:12                                                 ` [PATCH v2] " Henrik Carlqvist
2023-09-10 11:48                                                   ` Henrik Carlqvist [this message]
2024-02-17 22:28                                                     ` Ping 2: " Henrik Carlqvist
2024-02-18  9:30                                                       ` Michael Tokarev
2024-02-18 14:55                                                         ` Henrik Carlqvist
2023-06-08 16:22                   ` [PATCH v6] Emulate dip switch language layout settings on SUN keyboard Daniel P. Berrangé
2023-06-08 18:12                     ` Henrik Carlqvist
2023-06-09  7:50                       ` Daniel P. Berrangé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230910134812.7fa3a603.hc94@poolhem.se \
    --to=hc94@poolhem.se \
    --cc=hc981@poolhem.se \
    --cc=qemu-devel@nongnu.org \
    --cc=samuel.thibault@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).