Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 78291
b: refs/heads/master
c: f1095ab
h: refs/heads/master
i:
  78289: d495b71
  78287: 6151adb
v: v3
  • Loading branch information
Jan Engelhardt authored and David S. Miller committed Jan 28, 2008
1 parent 93ae562 commit 67f0779
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c9fd49680954714473d6cbd2546d6ff120f96840
refs/heads/master: f1095ab51d4297d4a84b64a65c71054183a73486
6 changes: 6 additions & 0 deletions trunk/include/linux/netfilter/xt_dscp.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,10 @@ struct xt_dscp_info {
u_int8_t invert;
};

struct xt_tos_match_info {
u_int8_t tos_mask;
u_int8_t tos_value;
u_int8_t invert;
};

#endif /* _XT_DSCP_H */
32 changes: 32 additions & 0 deletions trunk/net/netfilter/xt_dscp.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ MODULE_LICENSE("GPL");
MODULE_ALIAS("ipt_dscp");
MODULE_ALIAS("ip6t_dscp");
MODULE_ALIAS("ipt_tos");
MODULE_ALIAS("ip6t_tos");

static bool
dscp_mt(const struct sk_buff *skb, const struct net_device *in,
Expand Down Expand Up @@ -72,6 +73,21 @@ static bool tos_mt_v0(const struct sk_buff *skb, const struct net_device *in,
return (ip_hdr(skb)->tos == info->tos) ^ info->invert;
}

static bool tos_mt(const struct sk_buff *skb, const struct net_device *in,
const struct net_device *out, const struct xt_match *match,
const void *matchinfo, int offset, unsigned int protoff,
bool *hotdrop)
{
const struct xt_tos_match_info *info = matchinfo;

if (match->family == AF_INET)
return ((ip_hdr(skb)->tos & info->tos_mask) ==
info->tos_value) ^ !!info->invert;
else
return ((ipv6_get_dsfield(ipv6_hdr(skb)) & info->tos_mask) ==
info->tos_value) ^ !!info->invert;
}

static struct xt_match dscp_mt_reg[] __read_mostly = {
{
.name = "dscp",
Expand All @@ -97,6 +113,22 @@ static struct xt_match dscp_mt_reg[] __read_mostly = {
.matchsize = sizeof(struct ipt_tos_info),
.me = THIS_MODULE,
},
{
.name = "tos",
.revision = 1,
.family = AF_INET,
.match = tos_mt,
.matchsize = sizeof(struct xt_tos_match_info),
.me = THIS_MODULE,
},
{
.name = "tos",
.revision = 1,
.family = AF_INET6,
.match = tos_mt,
.matchsize = sizeof(struct xt_tos_match_info),
.me = THIS_MODULE,
},
};

static int __init dscp_mt_init(void)
Expand Down

0 comments on commit 67f0779

Please sign in to comment.