2013-06-11 09:27:46 +00:00
|
|
|
From 4e7dbf76227e8c7be7897dc81def3011f637864d Mon Sep 17 00:00:00 2001
|
|
|
|
From: Jonas Gorski <jogo@openwrt.org>
|
|
|
|
Date: Thu, 30 May 2013 11:54:04 +0200
|
|
|
|
Subject: [PATCH] add support for dropping with FAILED_POLICY
|
|
|
|
|
|
|
|
---
|
|
|
|
include/linux/fib_rules.h | 4 ++++
|
|
|
|
include/linux/rtnetlink.h | 1 +
|
|
|
|
ip/rtm_map.c | 4 ++++
|
|
|
|
3 files changed, 9 insertions(+)
|
|
|
|
|
|
|
|
--- a/include/linux/fib_rules.h
|
|
|
|
+++ b/include/linux/fib_rules.h
|
2017-03-20 21:53:46 +00:00
|
|
|
@@ -72,6 +72,10 @@ enum {
|
2013-06-11 09:27:46 +00:00
|
|
|
FR_ACT_BLACKHOLE, /* Drop without notification */
|
|
|
|
FR_ACT_UNREACHABLE, /* Drop with ENETUNREACH */
|
|
|
|
FR_ACT_PROHIBIT, /* Drop with EACCES */
|
|
|
|
+ FR_ACT_RES8,
|
|
|
|
+ FR_ACT_RES9,
|
|
|
|
+ FR_ACT_RES10,
|
|
|
|
+ FR_ACT_FAILED_POLICY, /* Drop with EPERM */
|
|
|
|
__FR_ACT_MAX,
|
|
|
|
};
|
|
|
|
|
|
|
|
--- a/include/linux/rtnetlink.h
|
|
|
|
+++ b/include/linux/rtnetlink.h
|
2017-10-01 19:46:27 +00:00
|
|
|
@@ -220,6 +220,7 @@ enum {
|
2013-06-11 09:27:46 +00:00
|
|
|
RTN_THROW, /* Not in this table */
|
|
|
|
RTN_NAT, /* Translate this address */
|
|
|
|
RTN_XRESOLVE, /* Use external resolver */
|
|
|
|
+ RTN_FAILED_POLICY, /* Source address failed policy */
|
|
|
|
__RTN_MAX
|
|
|
|
};
|
|
|
|
|
|
|
|
--- a/ip/rtm_map.c
|
|
|
|
+++ b/ip/rtm_map.c
|
2013-07-28 23:27:35 +00:00
|
|
|
@@ -49,6 +49,8 @@ char *rtnl_rtntype_n2a(int id, char *buf
|
2013-06-11 09:27:46 +00:00
|
|
|
return "nat";
|
|
|
|
case RTN_XRESOLVE:
|
|
|
|
return "xresolve";
|
|
|
|
+ case RTN_FAILED_POLICY:
|
|
|
|
+ return "failed_policy";
|
|
|
|
default:
|
|
|
|
snprintf(buf, len, "%d", id);
|
|
|
|
return buf;
|
|
|
|
@@ -84,6 +86,8 @@ int rtnl_rtntype_a2n(int *id, char *arg)
|
|
|
|
res = RTN_UNICAST;
|
|
|
|
else if (strcmp(arg, "throw") == 0)
|
|
|
|
res = RTN_THROW;
|
|
|
|
+ else if (strcmp(arg, "failed_policy") == 0)
|
|
|
|
+ res = RTN_FAILED_POLICY;
|
|
|
|
else {
|
|
|
|
res = strtoul(arg, &end, 0);
|
|
|
|
if (!end || end == arg || *end || res > 255)
|