mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-13 16:26:51 +00:00
Merge pull request #38 from donaldsharp/stable_ospf6_fix
ospf6d: resolve problem with area range lsid creation
This commit is contained in:
commit
ccc4bd3062
@ -424,12 +424,9 @@ ospf6_abr_originate_summary_to_area (struct ospf6_route *route,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
summary->path.origin.type = htons (OSPF6_LSTYPE_INTER_PREFIX);
|
summary->path.origin.type = htons (OSPF6_LSTYPE_INTER_PREFIX);
|
||||||
if (route->type == OSPF6_DEST_TYPE_RANGE)
|
summary->path.origin.id =
|
||||||
summary->path.origin.id = route->linkstate_id;
|
ospf6_new_ls_id (summary->path.origin.type,
|
||||||
else
|
summary->path.origin.adv_router, area->lsdb);
|
||||||
summary->path.origin.id =
|
|
||||||
ospf6_new_ls_id (summary->path.origin.type,
|
|
||||||
summary->path.origin.adv_router, area->lsdb);
|
|
||||||
}
|
}
|
||||||
summary = ospf6_route_add (summary, summary_table);
|
summary = ospf6_route_add (summary, summary_table);
|
||||||
}
|
}
|
||||||
|
@ -465,8 +465,6 @@ DEFUN (area_range,
|
|||||||
range->prefix = prefix;
|
range->prefix = prefix;
|
||||||
range->path.area_id = oa->area_id;
|
range->path.area_id = oa->area_id;
|
||||||
range->path.cost = OSPF_AREA_RANGE_COST_UNSPEC;
|
range->path.cost = OSPF_AREA_RANGE_COST_UNSPEC;
|
||||||
range->linkstate_id =
|
|
||||||
(u_int32_t) htonl(ospf6_new_range_ls_id (oa->range_table));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc > 2)
|
if (argc > 2)
|
||||||
@ -577,8 +575,6 @@ DEFUN (no_area_range,
|
|||||||
/* purge the old aggregated summary LSA */
|
/* purge the old aggregated summary LSA */
|
||||||
ospf6_abr_originate_summary(range);
|
ospf6_abr_originate_summary(range);
|
||||||
}
|
}
|
||||||
ospf6_release_range_ls_id(oa->range_table,
|
|
||||||
(u_int32_t) ntohl(range->linkstate_id));
|
|
||||||
ospf6_route_remove (range, oa->range_table);
|
ospf6_route_remove (range, oa->range_table);
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
|
@ -547,24 +547,6 @@ ospf6_lsdb_show (struct vty *vty, enum ospf_lsdb_show_level level,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Decide new Link State ID to originate for the range. */
|
|
||||||
u_int32_t
|
|
||||||
ospf6_new_range_ls_id (struct ospf6_route_table *range_table)
|
|
||||||
{
|
|
||||||
u_int32_t id;
|
|
||||||
|
|
||||||
bf_assign_index(range_table->idspace, id);
|
|
||||||
return (id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Release the LS ID back to the ID pool */
|
|
||||||
void
|
|
||||||
ospf6_release_range_ls_id (struct ospf6_route_table *range_table,
|
|
||||||
u_int32_t id)
|
|
||||||
{
|
|
||||||
bf_release_index(range_table->idspace, id);
|
|
||||||
}
|
|
||||||
|
|
||||||
u_int32_t
|
u_int32_t
|
||||||
ospf6_new_ls_id (u_int16_t type, u_int32_t adv_router,
|
ospf6_new_ls_id (u_int16_t type, u_int32_t adv_router,
|
||||||
struct ospf6_lsdb *lsdb)
|
struct ospf6_lsdb *lsdb)
|
||||||
|
@ -81,9 +81,6 @@ extern void ospf6_lsdb_show (struct vty *vty,
|
|||||||
|
|
||||||
extern u_int32_t ospf6_new_ls_id (u_int16_t type, u_int32_t adv_router,
|
extern u_int32_t ospf6_new_ls_id (u_int16_t type, u_int32_t adv_router,
|
||||||
struct ospf6_lsdb *lsdb);
|
struct ospf6_lsdb *lsdb);
|
||||||
extern u_int32_t ospf6_new_range_ls_id (struct ospf6_route_table *range_table);
|
|
||||||
extern void ospf6_release_range_ls_id (struct ospf6_route_table *range_table,
|
|
||||||
u_int32_t id);
|
|
||||||
extern u_int32_t ospf6_new_ls_seqnum (u_int16_t type, u_int32_t id,
|
extern u_int32_t ospf6_new_ls_seqnum (u_int16_t type, u_int32_t id,
|
||||||
u_int32_t adv_router,
|
u_int32_t adv_router,
|
||||||
struct ospf6_lsdb *lsdb);
|
struct ospf6_lsdb *lsdb);
|
||||||
|
Loading…
Reference in New Issue
Block a user