diff --git a/man/systemd.network.xml b/man/systemd.network.xml
index def6ad23154..2d18064e333 100644
--- a/man/systemd.network.xml
+++ b/man/systemd.network.xml
@@ -1091,7 +1091,10 @@
blackhole packets are discarded silently,
unreachable packets are discarded and the ICMP message host unreachable is generated,
prohibit packets are discarded and the ICMP message communication administratively
- prohibited is generated. Defaults to unicast.
+ prohibited is generated,
+ if throw the lookup in current routing table will fail and routing selection process
+ will returns to Routing Policy Database.
+ Defaults to unicast.
diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c
index f0b72c78f4e..e8a0efd076b 100644
--- a/src/network/networkd-route.c
+++ b/src/network/networkd-route.c
@@ -433,7 +433,7 @@ int route_remove(Route *route, Link *link,
if (r < 0)
return log_error_errno(r, "Could not append RTA_PRIORITY attribute: %m");
- if (!IN_SET(route->type, RTN_UNREACHABLE, RTN_PROHIBIT, RTN_BLACKHOLE)) {
+ if (!IN_SET(route->type, RTN_UNREACHABLE, RTN_PROHIBIT, RTN_BLACKHOLE, RTN_THROW)) {
r = sd_netlink_message_append_u32(req, RTA_OIF, link->ifindex);
if (r < 0)
return log_error_errno(r, "Could not append RTA_OIF attribute: %m");
@@ -582,7 +582,7 @@ int route_configure(
if (r < 0)
return log_error_errno(r, "Could not set route type: %m");
- if (!IN_SET(route->type, RTN_UNREACHABLE, RTN_PROHIBIT, RTN_BLACKHOLE)) {
+ if (!IN_SET(route->type, RTN_UNREACHABLE, RTN_PROHIBIT, RTN_BLACKHOLE, RTN_THROW)) {
r = sd_netlink_message_append_u32(req, RTA_OIF, link->ifindex);
if (r < 0)
return log_error_errno(r, "Could not append RTA_OIF attribute: %m");
@@ -1045,6 +1045,8 @@ int config_parse_route_type(
n->type = RTN_UNREACHABLE;
else if (streq(rvalue, "prohibit"))
n->type = RTN_PROHIBIT;
+ else if (streq(rvalue, "throw"))
+ n->type = RTN_THROW;
else {
log_syntax(unit, LOG_ERR, filename, line, r, "Could not parse route type \"%s\", ignoring assignment: %m", rvalue);
return 0;