libnm: allow configuring blackhole/unreachable/prohibit routes

(cherry picked from commit 84598adddf)
This commit is contained in:
Thomas Haller 2022-02-07 19:35:05 +01:00
parent 07bdf58856
commit d07e869285
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -1385,7 +1385,12 @@ _ip_route_attribute_validate(const char *name,
string = g_variant_get_string(value, NULL);
type = nm_net_aux_rtnl_rtntype_a2n(string);
if (!NM_IN_SET(type, RTN_UNICAST, RTN_LOCAL)) {
if (!NM_IN_SET(type,
RTN_UNICAST,
RTN_LOCAL,
RTN_BLACKHOLE,
RTN_UNREACHABLE,
RTN_PROHIBIT)) {
g_set_error(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@ -1486,6 +1491,18 @@ _nm_ip_route_attribute_validate_all(const NMIPRoute *route, GError **error)
return FALSE;
}
break;
case RTN_BLACKHOLE:
case RTN_UNREACHABLE:
case RTN_PROHIBIT:
if (route->next_hop) {
g_set_error(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
_("a %s route cannot have a next-hop"),
nm_net_aux_rtnl_rtntype_n2a(parse_data.type));
return FALSE;
}
break;
}
return TRUE;