* Daniel P. Berrange (berra...@redhat.com) wrote: > Currently creating a QEMUFile instance from a QIOChannel is > quite simple only requiring a single call to > qemu_fopen_channel_input or qemu_fopen_channel_output > depending on the end of migration connection. > > When QEMU gains TLS support, however, there will need to be > a TLS negotiation done inbetween creation of the QIOChannel > and creation of the final QEMUFile. Introduce some helper > methods that will encapsulate this logic, isolating the > migration protocol drivers from knowledge about TLS. > > Signed-off-by: Daniel P. Berrange <berra...@redhat.com> > --- > include/migration/migration.h | 6 ++++++ > migration/migration.c | 21 +++++++++++++++++++++ > 2 files changed, 27 insertions(+) > > diff --git a/include/migration/migration.h b/include/migration/migration.h > index 85b6026..35db68a 100644 > --- a/include/migration/migration.h > +++ b/include/migration/migration.h > @@ -177,6 +177,12 @@ void process_incoming_migration(QEMUFile *f); > > void qemu_start_incoming_migration(const char *uri, Error **errp); > > +void migration_set_incoming_channel(MigrationState *s, > + QIOChannel *ioc); > + > +void migration_set_outgoing_channel(MigrationState *s, > + QIOChannel *ioc); > + > uint64_t migrate_max_downtime(void); > > void exec_start_incoming_migration(const char *host_port, Error **errp); > diff --git a/migration/migration.c b/migration/migration.c > index c173b75..76a4aac 100644 > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -419,6 +419,27 @@ void process_incoming_migration(QEMUFile *f) > qemu_coroutine_enter(co, f); > } > > + > +void migration_set_incoming_channel(MigrationState *s, > + QIOChannel *ioc) > +{ > + QEMUFile *f = qemu_fopen_channel_input(ioc); > + > + process_incoming_migration(f); > +}
It's a bit weird to be passing a MigrationState to an 'incoming' but I can see in your use of it later this is just to get to the parameters which makes sens. Reviewed-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > + > +void migration_set_outgoing_channel(MigrationState *s, > + QIOChannel *ioc) > +{ > + QEMUFile *f = qemu_fopen_channel_output(ioc); > + > + s->to_dst_file = f; > + > + migrate_fd_connect(s); > +} > + > + > /* > * Send a message on the return channel back to the source > * of the migration. > -- > 2.5.0 > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK