def serial_listen_addr(migrate_data):
    """Returns listen address serial from a LibvirtLiveMigrateData"""
    listen_addr = None
    # NOTE (markus_z/dansmith): Our own from_legacy_dict() code can return
    # an object with nothing set here. That can happen based on the
    # compute RPC version pin. Until we can bump that major (which we
    # can do just before Ocata releases), we may still get a legacy
    # dict over the wire, converted to an object, and thus is may be unset
    # here.
    if migrate_data.obj_attr_is_set('serial_listen_addr'):
        # NOTE (markus_z): The value of 'serial_listen_addr' is either
        # an IP address (as string type) or None. There's no need of a
        # conversion, in fact, doing a string conversion of None leads to
        # 'None', which is an invalid (string type) value here.
        listen_addr = migrate_data.serial_listen_addr
    return listen_addr