>From 814f4d2eab94b75bdd4dce7620580c29de8f0b39 Mon Sep 17 00:00:00 2001 From: Ashish Shukla Date: Sun, 5 Oct 2008 00:26:34 +0530 Subject: [PATCH] 2008-10-05 Ashish Shukla * libroute/bsd_show.c (bsd_parse_msg): Fixed netmask parsing stuff. --- ChangeLog | 4 ++++ libroute/bsd_show.c | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 32afe75..16442f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-10-05 Ashish Shukla + + * libroute/bsd_show.c (bsd_parse_msg): Fixed netmask parsing stuff. + 2008-10-03 Debarshi Ray * NEWS: GNU Inetutils has been forked into Netutils. diff --git a/libroute/bsd_show.c b/libroute/bsd_show.c index 7c6e292..0c49212 100644 --- a/libroute/bsd_show.c +++ b/libroute/bsd_show.c @@ -224,7 +224,10 @@ bsd_parse_msg (const sa_family_t sa_family, strncpy (buffer, (char *) sock_addr, sock_addr->sa_len); ((struct sockaddr *) buffer)->sa_family = sa_family; - s_addr = &(sock_addr->sa_data[2]); + s_addr = ((sa_family == AF_INET) ? + (unsigned char*)&((struct sockaddr_in*)sock_addr)->sin_addr: + (unsigned char*)&((struct sockaddr_in6*)sock_addr)->sin6_addr); + s_len = sock_addr->sa_len; route_info->dest_len = 0; @@ -236,8 +239,8 @@ bsd_parse_msg (const sa_family_t sa_family, * NOTE: the length will be dynamic as this is a netmask represented in a sockaddr. */ s_len -= (sa_family == AF_INET) ? - (socklen_t)((char*)(&((struct sockaddr_in*)sock_addr)->sin_addr) - (char*)sock_addr): - (socklen_t)((char*)(&((struct sockaddr_in6*)sock_addr)->sin6_addr) - (char*)sock_addr); + (socklen_t)((char*)s_addr - (char*)sock_addr): + (socklen_t)((char*)s_addr - (char*)sock_addr); } bsd_conv_addr_to_name ((struct sockaddr *) buffer, -- 1.6.0.2