summaryrefslogtreecommitdiffstats
path: root/lib/route
diff options
context:
space:
mode:
authorBen Gamsa <ben@somanetworks.com>2008-05-08 11:42:51 -0400
committerThomas Graf <tgr@lsx.localdomain>2008-05-08 17:56:11 +0200
commit107dc162c56ace6eea5a167b7881520e6cecb831 (patch)
tree5c1c4a51f23aa3960ea394d0e7772db50d4dda6c /lib/route
parentcc9c6d63848400b77906a4a9df0be826dfc21b72 (diff)
downloadandroid_external_libnl-107dc162c56ace6eea5a167b7881520e6cecb831.tar.gz
android_external_libnl-107dc162c56ace6eea5a167b7881520e6cecb831.tar.bz2
android_external_libnl-107dc162c56ace6eea5a167b7881520e6cecb831.zip
patch: fixed up support for tables in rules
Diffstat (limited to 'lib/route')
-rw-r--r--lib/route/rule.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/route/rule.c b/lib/route/rule.c
index 38944d3..0493818 100644
--- a/lib/route/rule.c
+++ b/lib/route/rule.c
@@ -107,7 +107,8 @@ static int rule_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who,
rule->r_dst_len = r->rtm_dst_len;
rule->r_table = r->rtm_table;
rule->ce_mask = (RULE_ATTR_FAMILY | RULE_ATTR_TYPE | RULE_ATTR_DSFIELD |
- RULE_ATTR_SRC_LEN | RULE_ATTR_DST_LEN |RULE_ATTR_TYPE);
+ RULE_ATTR_SRC_LEN | RULE_ATTR_DST_LEN |RULE_ATTR_TYPE |
+ RULE_ATTR_TABLE);
if (tb[RTA_PRIORITY]) {
rule->r_prio = nla_get_u32(tb[RTA_PRIORITY]);
@@ -158,6 +159,11 @@ static int rule_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who,
rule->ce_mask |= RULE_ATTR_SRCMAP;
}
+ if (tb[RTA_TABLE]) {
+ rule->r_table = nla_get_u32(tb[RTA_TABLE]);
+ rule->ce_mask |= RULE_ATTR_TABLE;
+ }
+
err = pp->pp_cb((struct nl_object *) rule, pp);
if (err < 0)
goto errout;