mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 23:58:44 +00:00
ospf6d: fix logging of border router routes
The prefix of routes to border routers consists of two pieces of information embedded in a single struct (prefix.u.lp): struct prefix { uint8_t family; uint16_t prefixlen; union { [snip] struct { struct in_addr id; struct in_addr adv_router; } lp; } u __attribute__((aligned(8))); }; As such, using prefix2str() (or the %pFX format specifier) isn't correct when logging such routes. This commit adds a few special cases here and there to handle OSPF6_DEST_TYPE_ROUTER routes differently. It'd probably be a good idea to add a helper function to handle all cases in a single place, but that can be left for a second moment. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
6df89791ba
commit
9142948e39
@ -172,9 +172,19 @@ int ospf6_abr_originate_summary_to_area(struct ospf6_route *route,
|
|||||||
uint16_t type;
|
uint16_t type;
|
||||||
int is_debug = 0;
|
int is_debug = 0;
|
||||||
|
|
||||||
if (IS_OSPF6_DEBUG_ABR)
|
if (IS_OSPF6_DEBUG_ABR) {
|
||||||
zlog_debug("%s : start area %s, route %pFX", __func__,
|
char buf[BUFSIZ];
|
||||||
area->name, &route->prefix);
|
|
||||||
|
if (route->type == OSPF6_DEST_TYPE_ROUTER)
|
||||||
|
inet_ntop(AF_INET,
|
||||||
|
&ADV_ROUTER_IN_PREFIX(&route->prefix), buf,
|
||||||
|
sizeof(buf));
|
||||||
|
else
|
||||||
|
prefix2str(&route->prefix, buf, sizeof(buf));
|
||||||
|
|
||||||
|
zlog_debug("%s : start area %s, route %s", __func__, area->name,
|
||||||
|
buf);
|
||||||
|
}
|
||||||
|
|
||||||
if (route->type == OSPF6_DEST_TYPE_ROUTER)
|
if (route->type == OSPF6_DEST_TYPE_ROUTER)
|
||||||
summary_table = area->summary_router;
|
summary_table = area->summary_router;
|
||||||
@ -684,8 +694,18 @@ void ospf6_abr_originate_summary(struct ospf6_route *route, struct ospf6 *ospf6)
|
|||||||
struct ospf6_area *oa;
|
struct ospf6_area *oa;
|
||||||
struct ospf6_route *range = NULL;
|
struct ospf6_route *range = NULL;
|
||||||
|
|
||||||
if (IS_OSPF6_DEBUG_ABR)
|
if (IS_OSPF6_DEBUG_ABR) {
|
||||||
zlog_debug("%s: route %pFX", __func__, &route->prefix);
|
char buf[BUFSIZ];
|
||||||
|
|
||||||
|
if (route->type == OSPF6_DEST_TYPE_ROUTER)
|
||||||
|
inet_ntop(AF_INET,
|
||||||
|
&ADV_ROUTER_IN_PREFIX(&route->prefix), buf,
|
||||||
|
sizeof(buf));
|
||||||
|
else
|
||||||
|
prefix2str(&route->prefix, buf, sizeof(buf));
|
||||||
|
|
||||||
|
zlog_debug("%s: route %s", __func__, buf);
|
||||||
|
}
|
||||||
|
|
||||||
if (route->type == OSPF6_DEST_TYPE_NETWORK) {
|
if (route->type == OSPF6_DEST_TYPE_NETWORK) {
|
||||||
oa = ospf6_area_lookup(route->path.area_id, ospf6);
|
oa = ospf6_area_lookup(route->path.area_id, ospf6);
|
||||||
|
@ -667,6 +667,9 @@ struct ospf6_route *ospf6_route_add(struct ospf6_route *route,
|
|||||||
|
|
||||||
if (route->type == OSPF6_DEST_TYPE_LINKSTATE)
|
if (route->type == OSPF6_DEST_TYPE_LINKSTATE)
|
||||||
ospf6_linkstate_prefix2str(&route->prefix, buf, sizeof(buf));
|
ospf6_linkstate_prefix2str(&route->prefix, buf, sizeof(buf));
|
||||||
|
else if (route->type == OSPF6_DEST_TYPE_ROUTER)
|
||||||
|
inet_ntop(AF_INET, &ADV_ROUTER_IN_PREFIX(&route->prefix), buf,
|
||||||
|
sizeof(buf));
|
||||||
else
|
else
|
||||||
prefix2str(&route->prefix, buf, sizeof(buf));
|
prefix2str(&route->prefix, buf, sizeof(buf));
|
||||||
|
|
||||||
@ -899,6 +902,9 @@ void ospf6_route_remove(struct ospf6_route *route,
|
|||||||
|
|
||||||
if (route->type == OSPF6_DEST_TYPE_LINKSTATE)
|
if (route->type == OSPF6_DEST_TYPE_LINKSTATE)
|
||||||
ospf6_linkstate_prefix2str(&route->prefix, buf, sizeof(buf));
|
ospf6_linkstate_prefix2str(&route->prefix, buf, sizeof(buf));
|
||||||
|
else if (route->type == OSPF6_DEST_TYPE_ROUTER)
|
||||||
|
inet_ntop(AF_INET, &ADV_ROUTER_IN_PREFIX(&route->prefix), buf,
|
||||||
|
sizeof(buf));
|
||||||
else
|
else
|
||||||
prefix2str(&route->prefix, buf, sizeof(buf));
|
prefix2str(&route->prefix, buf, sizeof(buf));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user