qemu: don't use char device protocol telnets and tls

Software environment

  • Operating system: Fedora 37
  • Architecture: x86_64
  • kernel version: kernel-6.0.9-300.fc37.x86_64
  • libvirt version: v8.9.0-279-g4b90adf65a
  • Hypervisor and version: qemu-7.0.0-11.fc37.x86_64

Description of problem

The char device source protocol VIR_DOMAIN_CHR_TCP_PROTOCOL_TLS and VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNETS are not implemented in qemu driver:

src/conf/domain_conf.h:    VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNETS, /* secure telnet */
src/conf/domain_conf.h:    VIR_DOMAIN_CHR_TCP_PROTOCOL_TLS,
src/vmx/vmx.c:                = VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNETS;
src/vmx/vmx.c:            (*def)->source->data.tcp.protocol = VIR_DOMAIN_CHR_TCP_PROTOCOL_TLS;
src/vmx/vmx.c:          case VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNETS:
src/vmx/vmx.c:          case VIR_DOMAIN_CHR_TCP_PROTOCOL_TLS:

Please disallow them when validating in case of misusage.

Steps to reproduce

Check chardev protocol tls and telnets by redirdev

  1. Start an VM with redirdev of protocol=tls or protocol=telnets. The device XML:
<redirdev bus="usb" type="tcp">
  <source mode="bind" host="localhost" service="4001" tls="no"/>
  <protocol type="tls"/>
  <alias name="redir2"/>
  <address type="usb" bus="0" port="6"/>
</redirdev>
<redirdev bus="usb" type="tcp">
  <source mode="bind" host="localhost" service="4002" tls="no"/>
  <protocol type="telnets"/>
  <alias name="redir3"/>
  <address type="usb" bus="0" port="7"/>
</redirdev>
  1. Check the qemu cmdline:

-chardev spicevmc,id=charredir1,name=usbredir -device {"driver":"usb-redir","chardev":"charredir1","id":"redir1","bus":"usb.0","port":"5"} -chardev socket,id=charredir2,host=localhost,port=4001,server=on,wait=off -device {"driver":"usb-redir","chardev":"charredir2","id":"redir2","bus":"usb.0","port":"6"} -chardev socket,id=charredir3,host=localhost,port=4002,server=on,wait=off -device {"driver":"usb-redir","chardev":"charredir3","id":"redir3","bus":"usb.0","port":"7"}

No much difference with the cmdline of <protocol type="raw"/>

Additional information

BTW, since the telnet protocol does not make sense to redirdev. Please disallow telnet for rediedev as well