How do I get the category links as I had them in Drupal 6, before migrating the site to Drupal 7?
check this migrate and migrate_extras module, it is very handy framework to migrate content, you can easily migrate 


node  
taxonomy/categories
users


Edited:

Let me clarify with your scenario,
while migrating from source(D6) to destination(D7), 

you have to define source field and destination fields as shown in below code sample.

first you have to migrate Taxonomy terms from D6 to D7.
later on you have to migrate node entity, while preparing node migrate class, you have to migrate term reference field as it is. so that in prepareRow function we can replace with old term_id with new term_id which is already migrated.

For example see sample code.

abstract class JiveBlogMigration extends Migration {

public function __construct() {
// Always call the parent constructor first for basic setup
parent::__construct();

// With migrate_ui enabled, migration pages will indicate people involved in
// the particular migration, with their role and contact info. We default the
// list in the shared class; it can be overridden for specific migrations.

  }

}

/**
 * 
 * Jive Blog Post Information Migration class.
 * 
 */
class JiveBlogPostMigration extends JiveBlogMigration {

  public function __construct() {
  // The basic setup is similar to BeerTermMigraiton
  parent::__construct();
  $this-&gt;description = t('Jive Blog Post Data Migration.');
  $this-&gt;map = new MigrateSQLMap($this-&gt;machineName,
                array('jive_blog_post_id' =&gt; array(
                        'type' =&gt; 'int',
                        'not null' =&gt; TRUE,
                        'description' =&gt; 'Jive Blog Post ID.'
                    )
                ),
                MigrateDestinationNode::getKeySchema()
   );


// Added ContainerType field for mapping   
$query = db_select('migrate_jive_blog_post', 'mjbp')
        -&gt;fields('mjbp', array('jive_blog_post_id', 'jive_user_id', 'jive_group_id', 'jive_container_type', 'subject', 'body', 'permalink', 'minorEdit', 'creationDate', 'modificationDate', 'status', 'displayName', 'blogstatus', 'feedEnabled', 'feedFullContent', 'pingOverride', 'pingServices', 'trackbacksEnabled', 'trackbacksModeration', 'trackbacksNotification')); //SELECT the fields from node
//generate the count for the number of records to be imported
$count_query = db_select('migrate_jive_blog_post', 'b');
$count_query-&gt;addExpression('COUNT(jive_blog_post_id)', 'cnt');
$source_fields = array(
    'jive_blog_post_id' =&gt; t('The id of a particular document in the jive system'),
    'term_data' =&gt; t("The taxonomy terms associated with the node"),
    'jive_container_id' =&gt; t("The social group or space id associated to the node decided in prepareRow()."),
);
$this-&gt;source = new MigrateSourceSQL($query, $source_fields, $count_query);

// Set up our destination - nodes of type blog
$this-&gt;destination = new MigrateDestinationNode('blog');

// Mapped fields
$this-&gt;addFieldMapping('title', 'subject')
        -&gt;description(t('Mapping beer name in source to node title'));

// References to related objects (such as the author of the content) are
// most likely going to be identifiers from the source data, not Drupal
// identifiers (such as uids). You can use the mapping from the relevant
// migration to translate from the old ID to the Drupal identifier.
// Note that we also provide a default value of 1 - if the lookup fails to
// find a corresponding uid for the aid, the owner will be the administrative
// account.
$this-&gt;addFieldMapping('uid', 'jive_user_id')
        -&gt;sourceMigration('JiveUserAccount')
        -&gt;defaultValue(1);
// Mapping for Tags
$this-&gt;addFieldMapping('Tags', 'term_data');

// Additional mapping fields
$this-&gt;addFieldMapping('field_displayname', 'displayname');
$this-&gt;addFieldMapping('field_pingoverride', 'pingoverride');
$this-&gt;addFieldMapping('field_pingservices', 'pingservices');
$this-&gt;addFieldMapping('field_feedenabled', 'feedenabled');
$this-&gt;addFieldMapping('field_feedfullcontent', 'feedfullcontent');
$this-&gt;addFieldMapping('field_status', 'blogstatus');
$this-&gt;addFieldMapping('field_tbmoderation', 'trackbacksmoderation');
$this-&gt;addFieldMapping('field_tbnotification', 'trackbacksnotification');
$this-&gt;addFieldMapping('field_minoredit', 'minoredit');
$this-&gt;addFieldMapping('field_trackbacksenabled', 'trackbacksenabled');

//This is for path
$this-&gt;addFieldMapping('path', 'permalink');
$this-&gt;addFieldMapping('pathauto_perform_alias')
        -&gt;defaultValue(0);


// Group mapping for space, personal, group associated Blog posts
$this-&gt;addFieldMapping('og_groups', 'jive_container_id');


$this-&gt;addFieldMapping('body', 'body');
$this-&gt;addFieldMapping('created', 'creationdate');
$this-&gt;addFieldMapping('changed', 'modificationdate');
$this-&gt;addFieldMapping('status', 'status');



// Unmapped destination fields
$this-&gt;addUnmigratedDestinations(array('revision_uid', 'teaser', 'revision', 'language', 'promote', 'sticky',
    'field_group_sticky', 'field_content_images', 'field_featured_content',));


//specify the unmapped source fields.
$this-&gt;addUnmigratedSources(array('jive_group_id', 'jive_container_type'));
}

public function prepareRow($current_row) {

 $source_id = $current_row-&gt;jive_blog_post_id;

 //populate all the tags associated with a particular node using the getDrupalTags() method
 //that returns an array of all the tags associated with a particular node.
 $term_data = JiveMigrationUtilities::getDrupalTags($source_id, 38); //38 is the object type for the blogpost in jive.
 if ($term_data) {
  $current_row-&gt;term_data = $term_data;
 }
 if ($current_row-&gt;jive_group_id != 'NULL') {
  $current_row-&gt;jive_container_id = JiveMigrationUtilities::getDrupalContainerNid($current_row-&gt;jive_container_type, $current_row-&gt;jive_group_id);
  }
 return TRUE;
}

}


Usual flow of migration module, it will create a mapping table for each migration class like migrate_map_jiveblogmigration, it contains sourceid1 and destid1 columns. for example D6 nid is as sourceid1 and D7 nid is as destid1.

in prepareRow function you can write a logic to replace old term_id with new term_id for each row of node migration.