Couple things to think of:
shortname - Take it out. It is not needed there. zoneid is enough to identify the zone. If you want the name, get it from the zone table via a join.
port - What use is this? Especially without an IP. Zones do no tneed to be on the host.
Also, zoneid is a int32 where one half is the actually zoneid and the other (if non-zero) is the instance id. So, the way to do this would be to make sure that world is tracking zoneid -> zoneserver by full int32 and to boot zoneservers like normal. Then add some code to zone to query your table on zone bootup if the instance id portion of the zoneis is non-zero.
Also, to do this right you may want to look at the zone->world registration and have them register as "instance" zone servers. so that you can reserve certain zones for instance only. Like, perhaps:
Code:
zone . 1.2.3.4 7000 1.2.3.4
Is still a normal dynamic zone, but maybe
Code:
zone % 1.2.3.4 7000 1.2.3.4
Is an instance zone. This could even be extended to be like
Code:
zone %.% 1.2.3.4 7000 1.2.3.4
to bring up certain instances per main zone, if you wanted to take it that far.