From: Marcel Holtmann Date: Sun, 9 Aug 2009 04:11:58 +0000 (-0700) Subject: Fix issue with gateway notification for non default routes X-Git-Tag: 2.0_alpha~3325 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=31b83a676bca0c0da58195aefb6dd2f618cdac17;p=framework%2Fconnectivity%2Fconnman.git Fix issue with gateway notification for non default routes --- diff --git a/src/rtnl.c b/src/rtnl.c index c6fd27e..785a1de 100644 --- a/src/rtnl.c +++ b/src/rtnl.c @@ -425,32 +425,38 @@ static void process_delroute(unsigned char family, unsigned char scope, static void process_newgateway(struct rtmsg *msg, int bytes) { GSList *list; - struct in_addr addr; + struct in_addr dst = { INADDR_ANY }, gateway = { INADDR_ANY }; int index = -1; - extract_route(msg, bytes, &index, NULL, &addr); + extract_route(msg, bytes, &index, &dst, &gateway); + + if (dst.s_addr != INADDR_ANY) + return; for (list = rtnl_list; list; list = list->next) { struct connman_rtnl *rtnl = list->data; if (rtnl->newgateway) - rtnl->newgateway(index, inet_ntoa(addr)); + rtnl->newgateway(index, inet_ntoa(gateway)); } } static void process_delgateway(struct rtmsg *msg, int bytes) { GSList *list; - struct in_addr addr; + struct in_addr dst = { INADDR_ANY }, gateway = { INADDR_ANY }; int index = -1; - extract_route(msg, bytes, &index, NULL, &addr); + extract_route(msg, bytes, &index, &dst, &gateway); + + if (dst.s_addr != INADDR_ANY) + return; for (list = rtnl_list; list; list = list->next) { struct connman_rtnl *rtnl = list->data; if (rtnl->delgateway) - rtnl->delgateway(index, inet_ntoa(addr)); + rtnl->delgateway(index, inet_ntoa(gateway)); } }