Mercurial > hg > dhcpcd
changeset 4293:63138e0b8d68 draft
linux: set RTF_HOST correctly when reading kernel routes.
Linux has no real concept of host routes, but dhcpcd does purely
for describing them.
As such, mark them has host routes if the netmask if all ones.
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Mon, 02 Jul 2018 22:36:44 +0100 |
| parents | 3d4667e8f9c9 |
| children | 95fa4f3d6b1a |
| files | src/if-linux.c |
| diffstat | 1 files changed, 2 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/if-linux.c Sun Jul 01 20:46:03 2018 +0100 +++ b/src/if-linux.c Mon Jul 02 22:36:44 2018 +0100 @@ -430,8 +430,6 @@ memset(rt, 0, sizeof(*rt)); if (rtm->rtm_type == RTN_UNREACHABLE) rt->rt_flags |= RTF_REJECT; - if (rtm->rtm_scope == RT_SCOPE_HOST) - rt->rt_flags |= RTF_HOST; rta = (struct rtattr *)RTM_RTA(rtm); len = RTM_PAYLOAD(nlm); @@ -491,6 +489,8 @@ rt->rt_netmask.sa_family = rtm->rtm_family; sa_fromprefix(&rt->rt_netmask, rtm->rtm_dst_len); + if (sa_is_allones(&rt->rt_netmask)) + rt->rt_flags |= RTF_HOST; #if 0 if (rt->rtp_ifp == NULL && rt->src.s_addr != INADDR_ANY) {
