Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/if-linux.c
Original file line number Diff line number Diff line change
Expand Up @@ -752,6 +752,9 @@ if_copyrt(struct dhcpcd_ctx *ctx, struct rt *rt, struct nlmsghdr *nlm)
}
break;
}
case RTA_EXPIRES:
rt->rt_expires = *(unsigned int *)RTA_DATA(rta);
break;
}

if (sa != NULL) {
Expand Down Expand Up @@ -1735,6 +1738,10 @@ if_route(unsigned char cmd, const struct rt *rt)
if (!sa_is_loopback(&rt->rt_gateway))
add_attr_32(&nlm.hdr, sizeof(nlm), RTA_OIF, rt->rt_ifp->index);

/* add route lifetime */
logdebugx("Sending RTA_EXPIRES %d", rt->rt_expires);
add_attr_32(&nlm.hdr, sizeof(nlm), RTA_EXPIRES, rt->rt_expires);

if (rt->rt_metric != 0)
add_attr_32(&nlm.hdr, sizeof(nlm), RTA_PRIORITY,
rt->rt_metric);
Expand Down
2 changes: 2 additions & 0 deletions src/ipv6.c
Original file line number Diff line number Diff line change
Expand Up @@ -2370,6 +2370,8 @@ inet6_raroutes(rb_tree_t *routes, struct dhcpcd_ctx *ctx)
#ifdef HAVE_ROUTE_PREF
rt->rt_pref = ipv6nd_rtpref(rap->flags);
#endif
rt->rt_expires = rap->lifetime;

rt_proto_add(routes, rt);
}
return 0;
Expand Down
1 change: 1 addition & 0 deletions src/route.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ struct rt {
#define RTDF_GATELINK 0x40 /* Gateway is on link */
size_t rt_order;
rb_node_t rt_tree;
int rt_expires; /* current lifetime of route */
};

extern const rb_tree_ops_t rt_compare_list_ops;
Expand Down
Loading