Skip to content
  • Laszlo Ersek's avatar
    convert net_client_init() to OptsVisitor · 6687b79d
    Laszlo Ersek authored
    
    
    The net_client_init() prototype is kept intact.
    
    Based on "is_netdev", the QemuOpts-rooted QemuOpt-list is parsed as a
    Netdev or a NetLegacy. The original meat of net_client_init() is moved to
    and simplified in net_client_init1():
    
    Fields not common between -net and -netdev are clearly separated. Getting
    the name for the init functions is cleaner: Netdev::id is mandatory, and
    all init functions handle a NULL NetLegacy::name. NetLegacy::vlan
    explicitly depends on -net (see below).
    
    Verifying the "type=" option for -netdev can be turned into a switch.
    
    Format validation with qemu_opts_validate() can be removed because the
    visitor covers it. Relatedly, the "net_client_types" array is reduced to
    an array of init functions that can be directly indexed by opts->kind.
    (Help text is available in the schema JSON.)
    
    The outermost negation in the condition around qemu_find_vlan() was
    flattened, because it expresses the dependent code's requirements more
    clearly.
    
    VLAN lookup is avoided if there's no init function to pass the VLAN to.
    
    Whenever the value of type=... is needed, we substitute
    NetClientOptionsKind_lookup[kind].
    
    The individual init functions are not converted yet, thus the original
    QemuOpts instance is passed transparently.
    
    v1->v2:
    - NetLegacy::name is optional. Tracked it through all init functions: they
      all handle a NULL name. Updated commit message accordingly.
    
    v2->v3:
    - NetLegacy::id is allowed and takes precedence over NetLegacy::name.
    
    Signed-off-by: default avatarLaszlo Ersek <lersek@redhat.com>
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
    6687b79d