From 97456fa7bb23c22e2a06ca4a99e62e75529f8a91 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 14 Mar 2012 09:16:03 +0100 Subject: pingu_route: add helper function for generating route string Use for logging. --- pingu_route.c | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) (limited to 'pingu_route.c') diff --git a/pingu_route.c b/pingu_route.c index 2099dbc..2c96a8d 100644 --- a/pingu_route.c +++ b/pingu_route.c @@ -1,4 +1,7 @@ +#include + +#include #include #include @@ -39,14 +42,29 @@ static struct pingu_route *pingu_route_clone(struct pingu_route *gw) return new_gw; } +char *pingu_route_to_string(struct pingu_route *route, + char *buf, size_t bufsize) +{ + char deststr[64] = "", gwstr[64] = "", viastr[68] = ""; + char ifname[IF_NAMESIZE] = "", devstr[IF_NAMESIZE + 5] = ""; + + sockaddr_to_string(&route->dest, deststr, sizeof(deststr)); + sockaddr_to_string(&route->gw_addr, gwstr, sizeof(gwstr)); + if (gwstr[0] != '\0') + snprintf(viastr, sizeof(viastr), "via %s ", gwstr); + if (if_indextoname(route->dev_index, ifname) != NULL) + snprintf(devstr, sizeof(devstr), "dev %s ", ifname); + + snprintf(buf, bufsize, "%s/%i %s%smetric %i", deststr, + route->dst_len, viastr, devstr, route->metric); + return buf; +} + static void log_debug_gw(char *msg, struct pingu_route *gw) { - char destbuf[64], gwaddrbuf[64]; - log_debug("%s: %s/%i via %s metric %i", msg, - sockaddr_to_string(&gw->dest, destbuf, sizeof(destbuf)), - gw->dst_len, - sockaddr_to_string(&gw->gw_addr, gwaddrbuf, sizeof(gwaddrbuf)), - gw->metric); + char routestr[512] = ""; + log_debug("%s: %s", msg, + pingu_route_to_string(gw, routestr, sizeof(routestr))); } static int gateway_cmp(struct pingu_route *a, struct pingu_route *b) -- cgit v1.2.3