image_type holds the vm name.  This is used to match a config file entry to the running vm.  There are, of course, drawbacks to this binding.  And it might make sense to allow image_type to also hold other values (such as uuid) to permit better matching for cases when you don't want to track the name of a vm.

I must be missing something, but why would name be NULL here?  Is this because you're doing the init with the passed config and not with a config file?  Seems like we should be a little more careful because if name is NULL and there's no passed config, then we are in a bad state, right?  So this simple check may be insufficient.