diff options
Diffstat (limited to 'net/decnet/dn_rules.c')
-rw-r--r-- | net/decnet/dn_rules.c | 43 |
1 files changed, 1 insertions, 42 deletions
diff --git a/net/decnet/dn_rules.c b/net/decnet/dn_rules.c index 590e0a72495c..e32d0c3d5a96 100644 --- a/net/decnet/dn_rules.c +++ b/net/decnet/dn_rules.c | |||
@@ -45,10 +45,6 @@ struct dn_fib_rule | |||
45 | __le16 dstmask; | 45 | __le16 dstmask; |
46 | __le16 srcmap; | 46 | __le16 srcmap; |
47 | u8 flags; | 47 | u8 flags; |
48 | #ifdef CONFIG_DECNET_ROUTE_FWMARK | ||
49 | u32 fwmark; | ||
50 | u32 fwmask; | ||
51 | #endif | ||
52 | }; | 48 | }; |
53 | 49 | ||
54 | static struct dn_fib_rule default_rule = { | 50 | static struct dn_fib_rule default_rule = { |
@@ -112,13 +108,9 @@ errout: | |||
112 | } | 108 | } |
113 | 109 | ||
114 | static struct nla_policy dn_fib_rule_policy[FRA_MAX+1] __read_mostly = { | 110 | static struct nla_policy dn_fib_rule_policy[FRA_MAX+1] __read_mostly = { |
115 | [FRA_IFNAME] = { .type = NLA_STRING, .len = IFNAMSIZ - 1 }, | 111 | FRA_GENERIC_POLICY, |
116 | [FRA_PRIORITY] = { .type = NLA_U32 }, | ||
117 | [FRA_SRC] = { .type = NLA_U16 }, | 112 | [FRA_SRC] = { .type = NLA_U16 }, |
118 | [FRA_DST] = { .type = NLA_U16 }, | 113 | [FRA_DST] = { .type = NLA_U16 }, |
119 | [FRA_FWMARK] = { .type = NLA_U32 }, | ||
120 | [FRA_FWMASK] = { .type = NLA_U32 }, | ||
121 | [FRA_TABLE] = { .type = NLA_U32 }, | ||
122 | }; | 114 | }; |
123 | 115 | ||
124 | static int dn_fib_rule_match(struct fib_rule *rule, struct flowi *fl, int flags) | 116 | static int dn_fib_rule_match(struct fib_rule *rule, struct flowi *fl, int flags) |
@@ -131,11 +123,6 @@ static int dn_fib_rule_match(struct fib_rule *rule, struct flowi *fl, int flags) | |||
131 | ((daddr ^ r->dst) & r->dstmask)) | 123 | ((daddr ^ r->dst) & r->dstmask)) |
132 | return 0; | 124 | return 0; |
133 | 125 | ||
134 | #ifdef CONFIG_DECNET_ROUTE_FWMARK | ||
135 | if ((r->fwmark ^ fl->fld_fwmark) & r->fwmask) | ||
136 | return 0; | ||
137 | #endif | ||
138 | |||
139 | return 1; | 126 | return 1; |
140 | } | 127 | } |
141 | 128 | ||
@@ -169,20 +156,6 @@ static int dn_fib_rule_configure(struct fib_rule *rule, struct sk_buff *skb, | |||
169 | if (tb[FRA_DST]) | 156 | if (tb[FRA_DST]) |
170 | r->dst = nla_get_u16(tb[FRA_DST]); | 157 | r->dst = nla_get_u16(tb[FRA_DST]); |
171 | 158 | ||
172 | #ifdef CONFIG_DECNET_ROUTE_FWMARK | ||
173 | if (tb[FRA_FWMARK]) { | ||
174 | r->fwmark = nla_get_u32(tb[FRA_FWMARK]); | ||
175 | if (r->fwmark) | ||
176 | /* compatibility: if the mark value is non-zero all bits | ||
177 | * are compared unless a mask is explicitly specified. | ||
178 | */ | ||
179 | r->fwmask = 0xFFFFFFFF; | ||
180 | } | ||
181 | |||
182 | if (tb[FRA_FWMASK]) | ||
183 | r->fwmask = nla_get_u32(tb[FRA_FWMASK]); | ||
184 | #endif | ||
185 | |||
186 | r->src_len = frh->src_len; | 159 | r->src_len = frh->src_len; |
187 | r->srcmask = dnet_make_mask(r->src_len); | 160 | r->srcmask = dnet_make_mask(r->src_len); |
188 | r->dst_len = frh->dst_len; | 161 | r->dst_len = frh->dst_len; |
@@ -203,14 +176,6 @@ static int dn_fib_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh, | |||
203 | if (frh->dst_len && (r->dst_len != frh->dst_len)) | 176 | if (frh->dst_len && (r->dst_len != frh->dst_len)) |
204 | return 0; | 177 | return 0; |
205 | 178 | ||
206 | #ifdef CONFIG_DECNET_ROUTE_FWMARK | ||
207 | if (tb[FRA_FWMARK] && (r->fwmark != nla_get_u32(tb[FRA_FWMARK]))) | ||
208 | return 0; | ||
209 | |||
210 | if (tb[FRA_FWMASK] && (r->fwmask != nla_get_u32(tb[FRA_FWMASK]))) | ||
211 | return 0; | ||
212 | #endif | ||
213 | |||
214 | if (tb[FRA_SRC] && (r->src != nla_get_u16(tb[FRA_SRC]))) | 179 | if (tb[FRA_SRC] && (r->src != nla_get_u16(tb[FRA_SRC]))) |
215 | return 0; | 180 | return 0; |
216 | 181 | ||
@@ -248,12 +213,6 @@ static int dn_fib_rule_fill(struct fib_rule *rule, struct sk_buff *skb, | |||
248 | frh->src_len = r->src_len; | 213 | frh->src_len = r->src_len; |
249 | frh->tos = 0; | 214 | frh->tos = 0; |
250 | 215 | ||
251 | #ifdef CONFIG_DECNET_ROUTE_FWMARK | ||
252 | if (r->fwmark) | ||
253 | NLA_PUT_U32(skb, FRA_FWMARK, r->fwmark); | ||
254 | if (r->fwmask || r->fwmark) | ||
255 | NLA_PUT_U32(skb, FRA_FWMASK, r->fwmask); | ||
256 | #endif | ||
257 | if (r->dst_len) | 216 | if (r->dst_len) |
258 | NLA_PUT_U16(skb, FRA_DST, r->dst); | 217 | NLA_PUT_U16(skb, FRA_DST, r->dst); |
259 | if (r->src_len) | 218 | if (r->src_len) |