[libvirt] [PATCH 4/4] net: Remove the deprecated -tftp, -bootp, -redir and -smb options

Samuel Thibault samuel.thibault at gnu.org
Mon Aug 27 19:12:38 UTC 2018


Thomas Huth, le lun. 27 août 2018 16:54:12 +0200, a ecrit:
> These options likely do not work as expected as soon as the user
> tries to use more than one network interface at once. The parameters
> have been marked as deprecated since QEMU v2.6, so users had plenty
> of time to move their scripts to the new syntax. Time to remove the
> old parameters now.
> 
> Signed-off-by: Thomas Huth <thuth at redhat.com>

Reviewed-by: Samuel Thibault <samuel.thibault at ens-lyon.org>

> ---
>  include/net/net.h    |   3 --
>  include/net/slirp.h  |   4 --
>  net/slirp.c          | 132 +++++++++++----------------------------------------
>  os-posix.c           |   8 ----
>  qemu-deprecated.texi |  34 -------------
>  qemu-options.hx      |  15 ------
>  vl.c                 |  18 -------
>  7 files changed, 29 insertions(+), 185 deletions(-)
> 
> diff --git a/include/net/net.h b/include/net/net.h
> index 1425960..7936d53 100644
> --- a/include/net/net.h
> +++ b/include/net/net.h
> @@ -201,9 +201,6 @@ extern NICInfo nd_table[MAX_NICS];
>  extern const char *host_net_devices[];
>  
>  /* from net.c */
> -extern const char *legacy_tftp_prefix;
> -extern const char *legacy_bootp_filename;
> -
>  int net_client_parse(QemuOptsList *opts_list, const char *str);
>  int net_init_clients(Error **errp);
>  void net_check_clients(void);
> diff --git a/include/net/slirp.h b/include/net/slirp.h
> index 4d63d74..bad3e1e 100644
> --- a/include/net/slirp.h
> +++ b/include/net/slirp.h
> @@ -30,10 +30,6 @@
>  void hmp_hostfwd_add(Monitor *mon, const QDict *qdict);
>  void hmp_hostfwd_remove(Monitor *mon, const QDict *qdict);
>  
> -int net_slirp_redir(const char *redir_str);
> -
> -int net_slirp_smb(const char *exported_dir);
> -
>  void hmp_info_usernet(Monitor *mon, const QDict *qdict);
>  
>  #endif
> diff --git a/net/slirp.c b/net/slirp.c
> index 1e14318..c18060f 100644
> --- a/net/slirp.c
> +++ b/net/slirp.c
> @@ -67,13 +67,11 @@ static int get_str_sep(char *buf, int buf_size, const char **pp, int sep)
>  /* slirp network adapter */
>  
>  #define SLIRP_CFG_HOSTFWD 1
> -#define SLIRP_CFG_LEGACY  2
>  
>  struct slirp_config_str {
>      struct slirp_config_str *next;
>      int flags;
>      char str[1024];
> -    int legacy_format;
>  };
>  
>  typedef struct SlirpState {
> @@ -87,19 +85,13 @@ typedef struct SlirpState {
>  } SlirpState;
>  
>  static struct slirp_config_str *slirp_configs;
> -const char *legacy_tftp_prefix;
> -const char *legacy_bootp_filename;
>  static QTAILQ_HEAD(slirp_stacks, SlirpState) slirp_stacks =
>      QTAILQ_HEAD_INITIALIZER(slirp_stacks);
>  
> -static int slirp_hostfwd(SlirpState *s, const char *redir_str,
> -                         int legacy_format, Error **errp);
> -static int slirp_guestfwd(SlirpState *s, const char *config_str,
> -                          int legacy_format, Error **errp);
> +static int slirp_hostfwd(SlirpState *s, const char *redir_str, Error **errp);
> +static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **errp);
>  
>  #ifndef _WIN32
> -static const char *legacy_smb_export;
> -
>  static int slirp_smb(SlirpState *s, const char *exported_dir,
>                       struct in_addr vserver_addr, Error **errp);
>  static void slirp_smb_cleanup(SlirpState *s);
> @@ -196,13 +188,6 @@ static int net_slirp_init(NetClientState *peer, const char *model,
>          return -1;
>      }
>  
> -    if (!tftp_export) {
> -        tftp_export = legacy_tftp_prefix;
> -    }
> -    if (!bootfile) {
> -        bootfile = legacy_bootp_filename;
> -    }
> -
>      if (vnetwork) {
>          if (get_str_sep(buf, sizeof(buf), &vnetwork, '/') < 0) {
>              if (!inet_aton(vnetwork, &net)) {
> @@ -382,21 +367,16 @@ static int net_slirp_init(NetClientState *peer, const char *model,
>  
>      for (config = slirp_configs; config; config = config->next) {
>          if (config->flags & SLIRP_CFG_HOSTFWD) {
> -            if (slirp_hostfwd(s, config->str,
> -                              config->flags & SLIRP_CFG_LEGACY, errp) < 0) {
> +            if (slirp_hostfwd(s, config->str, errp) < 0) {
>                  goto error;
>              }
>          } else {
> -            if (slirp_guestfwd(s, config->str,
> -                               config->flags & SLIRP_CFG_LEGACY, errp) < 0) {
> +            if (slirp_guestfwd(s, config->str, errp) < 0) {
>                  goto error;
>              }
>          }
>      }
>  #ifndef _WIN32
> -    if (!smb_export) {
> -        smb_export = legacy_smb_export;
> -    }
>      if (smb_export) {
>          if (slirp_smb(s, smb_export, smbsrv, errp) < 0) {
>              goto error;
> @@ -506,8 +486,7 @@ void hmp_hostfwd_remove(Monitor *mon, const QDict *qdict)
>      monitor_printf(mon, "invalid format\n");
>  }
>  
> -static int slirp_hostfwd(SlirpState *s, const char *redir_str,
> -                         int legacy_format, Error **errp)
> +static int slirp_hostfwd(SlirpState *s, const char *redir_str, Error **errp)
>  {
>      struct in_addr host_addr = { .s_addr = INADDR_ANY };
>      struct in_addr guest_addr = { .s_addr = 0 };
> @@ -532,18 +511,16 @@ static int slirp_hostfwd(SlirpState *s, const char *redir_str,
>          goto fail_syntax;
>      }
>  
> -    if (!legacy_format) {
> -        if (get_str_sep(buf, sizeof(buf), &p, ':') < 0) {
> -            fail_reason = "Missing : separator";
> -            goto fail_syntax;
> -        }
> -        if (buf[0] != '\0' && !inet_aton(buf, &host_addr)) {
> -            fail_reason = "Bad host address";
> -            goto fail_syntax;
> -        }
> +    if (get_str_sep(buf, sizeof(buf), &p, ':') < 0) {
> +        fail_reason = "Missing : separator";
> +        goto fail_syntax;
> +    }
> +    if (buf[0] != '\0' && !inet_aton(buf, &host_addr)) {
> +        fail_reason = "Bad host address";
> +        goto fail_syntax;
>      }
>  
> -    if (get_str_sep(buf, sizeof(buf), &p, legacy_format ? ':' : '-') < 0) {
> +    if (get_str_sep(buf, sizeof(buf), &p, '-') < 0) {
>          fail_reason = "Bad host port separator";
>          goto fail_syntax;
>      }
> @@ -602,35 +579,13 @@ void hmp_hostfwd_add(Monitor *mon, const QDict *qdict)
>      }
>      if (s) {
>          Error *err = NULL;
> -        if (slirp_hostfwd(s, redir_str, 0, &err) < 0) {
> +        if (slirp_hostfwd(s, redir_str, &err) < 0) {
>              error_report_err(err);
>          }
>      }
>  
>  }
>  
> -int net_slirp_redir(const char *redir_str)
> -{
> -    struct slirp_config_str *config;
> -    Error *err = NULL;
> -    int res;
> -
> -    if (QTAILQ_EMPTY(&slirp_stacks)) {
> -        config = g_malloc(sizeof(*config));
> -        pstrcpy(config->str, sizeof(config->str), redir_str);
> -        config->flags = SLIRP_CFG_HOSTFWD | SLIRP_CFG_LEGACY;
> -        config->next = slirp_configs;
> -        slirp_configs = config;
> -        return 0;
> -    }
> -
> -    res = slirp_hostfwd(QTAILQ_FIRST(&slirp_stacks), redir_str, 1, &err);
> -    if (res < 0) {
> -        error_report_err(err);
> -    }
> -    return res;
> -}
> -
>  #ifndef _WIN32
>  
>  /* automatic user mode samba server configuration */
> @@ -746,28 +701,6 @@ static int slirp_smb(SlirpState* s, const char *exported_dir,
>      return 0;
>  }
>  
> -/* automatic user mode samba server configuration (legacy interface) */
> -int net_slirp_smb(const char *exported_dir)
> -{
> -    struct in_addr vserver_addr = { .s_addr = 0 };
> -
> -    if (legacy_smb_export) {
> -        fprintf(stderr, "-smb given twice\n");
> -        return -1;
> -    }
> -    legacy_smb_export = exported_dir;
> -    if (!QTAILQ_EMPTY(&slirp_stacks)) {
> -        Error *err = NULL;
> -        int res = slirp_smb(QTAILQ_FIRST(&slirp_stacks), exported_dir,
> -                            vserver_addr, &err);
> -        if (res < 0) {
> -            error_report_err(err);
> -        }
> -        return res;
> -    }
> -    return 0;
> -}
> -
>  #endif /* !defined(_WIN32) */
>  
>  struct GuestFwd {
> @@ -789,8 +722,7 @@ static void guestfwd_read(void *opaque, const uint8_t *buf, int size)
>      slirp_socket_recv(fwd->slirp, fwd->server, fwd->port, buf, size);
>  }
>  
> -static int slirp_guestfwd(SlirpState *s, const char *config_str,
> -                          int legacy_format, Error **errp)
> +static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **errp)
>  {
>      struct in_addr server = { .s_addr = 0 };
>      struct GuestFwd *fwd;
> @@ -800,26 +732,20 @@ static int slirp_guestfwd(SlirpState *s, const char *config_str,
>      int port;
>  
>      p = config_str;
> -    if (legacy_format) {
> -        if (get_str_sep(buf, sizeof(buf), &p, ':') < 0) {
> -            goto fail_syntax;
> -        }
> -    } else {
> -        if (get_str_sep(buf, sizeof(buf), &p, ':') < 0) {
> -            goto fail_syntax;
> -        }
> -        if (strcmp(buf, "tcp") && buf[0] != '\0') {
> -            goto fail_syntax;
> -        }
> -        if (get_str_sep(buf, sizeof(buf), &p, ':') < 0) {
> -            goto fail_syntax;
> -        }
> -        if (buf[0] != '\0' && !inet_aton(buf, &server)) {
> -            goto fail_syntax;
> -        }
> -        if (get_str_sep(buf, sizeof(buf), &p, '-') < 0) {
> -            goto fail_syntax;
> -        }
> +    if (get_str_sep(buf, sizeof(buf), &p, ':') < 0) {
> +        goto fail_syntax;
> +    }
> +    if (strcmp(buf, "tcp") && buf[0] != '\0') {
> +        goto fail_syntax;
> +    }
> +    if (get_str_sep(buf, sizeof(buf), &p, ':') < 0) {
> +        goto fail_syntax;
> +    }
> +    if (buf[0] != '\0' && !inet_aton(buf, &server)) {
> +        goto fail_syntax;
> +    }
> +    if (get_str_sep(buf, sizeof(buf), &p, '-') < 0) {
> +        goto fail_syntax;
>      }
>      port = strtol(buf, &end, 10);
>      if (*end != '\0' || port < 1 || port > 65535) {
> diff --git a/os-posix.c b/os-posix.c
> index 9ce6f74..8f39447 100644
> --- a/os-posix.c
> +++ b/os-posix.c
> @@ -168,14 +168,6 @@ static bool os_parse_runas_uid_gid(const char *optarg)
>  int os_parse_cmd_args(int index, const char *optarg)
>  {
>      switch (index) {
> -#ifdef CONFIG_SLIRP
> -    case QEMU_OPTION_smb:
> -        error_report("The -smb option is deprecated. "
> -                     "Please use '-netdev user,smb=...' instead.");
> -        if (net_slirp_smb(optarg) < 0)
> -            exit(1);
> -        break;
> -#endif
>      case QEMU_OPTION_runas:
>          user_pwd = getpwnam(optarg);
>          if (user_pwd) {
> diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
> index ca52e83..8a2e399 100644
> --- a/qemu-deprecated.texi
> +++ b/qemu-deprecated.texi
> @@ -40,40 +40,6 @@ which is the default.
>  The ``-no-kvm'' argument is now a synonym for setting
>  ``-machine accel=tcg''.
>  
> - at subsection -tftp (since 2.6.0)
> -
> -The ``-tftp /some/dir'' argument is replaced by either
> -``-netdev user,id=x,tftp=/some/dir '' (for pluggable NICs, accompanied
> -with ``-device ...,netdev=x''), or ``-nic user,tftp=/some/dir''
> -(for embedded NICs). The new syntax allows different settings to be
> -provided per NIC.
> -
> - at subsection -bootp (since 2.6.0)
> -
> -The ``-bootp /some/file'' argument is replaced by either
> -``-netdev user,id=x,bootp=/some/file '' (for pluggable NICs, accompanied
> -with ``-device ...,netdev=x''), or ``-nic user,bootp=/some/file''
> -(for embedded NICs). The new syntax allows different settings to be
> -provided per NIC.
> -
> - at subsection -redir (since 2.6.0)
> -
> -The ``-redir [tcp|udp]:hostport:[guestaddr]:guestport'' argument is
> -replaced by either
> -``-netdev user,id=x,hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport''
> -(for pluggable NICs, accompanied with ``-device ...,netdev=x'') or
> -``-nic user,hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport''
> -(for embedded NICs). The new syntax allows different settings to be
> -provided per NIC.
> -
> - at subsection -smb (since 2.6.0)
> -
> -The ``-smb /some/dir'' argument is replaced by either
> -``-netdev user,id=x,smb=/some/dir '' (for pluggable NICs, accompanied
> -with ``-device ...,netdev=x''), or ``-nic user,smb=/some/dir''
> -(for embedded NICs). The new syntax allows different settings to be
> -provided per NIC.
> -
>  @subsection -usbdevice (since 2.10.0)
>  
>  The ``-usbdevice DEV'' argument is now a synonym for setting
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 7ca539a..a642ad2 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -1813,16 +1813,6 @@ STEXI
>  @table @option
>  ETEXI
>  
> -HXCOMM Legacy slirp options (now moved to -net user):
> -#ifdef CONFIG_SLIRP
> -DEF("tftp", HAS_ARG, QEMU_OPTION_tftp, "", QEMU_ARCH_ALL)
> -DEF("bootp", HAS_ARG, QEMU_OPTION_bootp, "", QEMU_ARCH_ALL)
> -DEF("redir", HAS_ARG, QEMU_OPTION_redir, "", QEMU_ARCH_ALL)
> -#ifndef _WIN32
> -DEF("smb", HAS_ARG, QEMU_OPTION_smb, "", QEMU_ARCH_ALL)
> -#endif
> -#endif
> -
>  DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
>  #ifdef CONFIG_SLIRP
>      "-netdev user,id=str[,ipv4[=on|off]][,net=addr[/mask]][,host=addr]\n"
> @@ -2150,11 +2140,6 @@ qemu-system-i386 -nic  'user,id=n1,guestfwd=tcp:10.0.2.100:1234-cmd:netcat 10.10
>  
>  @end table
>  
> -Note: Legacy stand-alone options -tftp, -bootp, -smb and -redir are still
> -processed and applied to -net user. Mixing them with the new configuration
> -syntax gives undefined results. Their use for new applications is discouraged
> -as they will be removed from future versions.
> -
>  @item -netdev tap,id=@var{id}[,fd=@var{h}][,ifname=@var{name}][,script=@var{file}][,downscript=@var{dfile}][,br=@var{bridge}][,helper=@var{helper}]
>  Configure a host TAP network backend with ID @var{id}.
>  
> diff --git a/vl.c b/vl.c
> index cfeee0d..1b8ff85 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -3168,24 +3168,6 @@ int main(int argc, char **argv, char **envp)
>                  }
>                  break;
>  #endif
> -#ifdef CONFIG_SLIRP
> -            case QEMU_OPTION_tftp:
> -                error_report("The -tftp option is deprecated. "
> -                             "Please use '-netdev user,tftp=...' instead.");
> -                legacy_tftp_prefix = optarg;
> -                break;
> -            case QEMU_OPTION_bootp:
> -                error_report("The -bootp option is deprecated. "
> -                             "Please use '-netdev user,bootfile=...' instead.");
> -                legacy_bootp_filename = optarg;
> -                break;
> -            case QEMU_OPTION_redir:
> -                error_report("The -redir option is deprecated. "
> -                             "Please use '-netdev user,hostfwd=...' instead.");
> -                if (net_slirp_redir(optarg) < 0)
> -                    exit(1);
> -                break;
> -#endif
>              case QEMU_OPTION_bt:
>                  add_device_config(DEV_BT, optarg);
>                  break;
> -- 
> 1.8.3.1
> 

-- 
Samuel
"c'est pas nous qui sommes à la rue, c'est la rue qui est à nous"




More information about the libvir-list mailing list