- r = sd_rtnl_message_append(req, RTA_DST, &route->dst_addr);
- if (r < 0) {
- log_error("Could not append RTA_DST attribute: %s", strerror(-r));
- return r;
+ if (route->dst_prefixlen) {
+ if (route->family == AF_INET)
+ r = sd_rtnl_message_append_in_addr(req, RTA_DST, &route->dst_addr.in);
+ else if (route->family == AF_INET6)
+ r = sd_rtnl_message_append_in6_addr(req, RTA_DST, &route->dst_addr.in6);
+ if (r < 0) {
+ log_error("Could not append RTA_DST attribute: %s", strerror(-r));
+ return r;
+ }
+
+ r = sd_rtnl_message_route_set_dst_prefixlen(req, route->dst_prefixlen);
+ if (r < 0) {
+ log_error("Could not set destination prefix length: %s", strerror(-r));
+ return r;
+ }