diff options
author | Jan Engelhardt <jengelh@computergmbh.de> | 2007-12-04 23:27:38 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 14:55:55 -0800 |
commit | 0265ab44bacc1a1e0e3f5873d8ca2d5a29e33db2 (patch) | |
tree | 977ab0ae0832876f5e46fb19e0047364e0bcdf45 /net/ipv4/netfilter/ipt_owner.c | |
parent | 9e67d5a739327c44885adebb4f3a538050be73e4 (diff) | |
download | op-kernel-dev-0265ab44bacc1a1e0e3f5873d8ca2d5a29e33db2.zip op-kernel-dev-0265ab44bacc1a1e0e3f5873d8ca2d5a29e33db2.tar.gz |
[NETFILTER]: merge ipt_owner/ip6t_owner in xt_owner
xt_owner merges ipt_owner and ip6t_owner, and adds a flag to match
on socket (non-)existence.
Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/netfilter/ipt_owner.c')
-rw-r--r-- | net/ipv4/netfilter/ipt_owner.c | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/net/ipv4/netfilter/ipt_owner.c b/net/ipv4/netfilter/ipt_owner.c deleted file mode 100644 index 4f1aa89..0000000 --- a/net/ipv4/netfilter/ipt_owner.c +++ /dev/null @@ -1,87 +0,0 @@ -/* Kernel module to match various things tied to sockets associated with - locally generated outgoing packets. */ - -/* (C) 2000 Marc Boucher <marc@mbsi.ca> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/skbuff.h> -#include <linux/file.h> -#include <linux/rcupdate.h> -#include <net/sock.h> - -#include <linux/netfilter_ipv4/ipt_owner.h> -#include <linux/netfilter/x_tables.h> - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Marc Boucher <marc@mbsi.ca>"); -MODULE_DESCRIPTION("iptables owner match"); - -static bool -owner_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 ipt_owner_info *info = matchinfo; - - if (!skb->sk || !skb->sk->sk_socket || !skb->sk->sk_socket->file) - return false; - - if(info->match & IPT_OWNER_UID) { - if ((skb->sk->sk_socket->file->f_uid != info->uid) ^ - !!(info->invert & IPT_OWNER_UID)) - return false; - } - - if(info->match & IPT_OWNER_GID) { - if ((skb->sk->sk_socket->file->f_gid != info->gid) ^ - !!(info->invert & IPT_OWNER_GID)) - return false; - } - - return true; -} - -static bool -owner_mt_check(const char *tablename, const void *ip, - const struct xt_match *match, void *matchinfo, - unsigned int hook_mask) -{ - const struct ipt_owner_info *info = matchinfo; - - if (info->match & (IPT_OWNER_PID|IPT_OWNER_SID|IPT_OWNER_COMM)) { - printk("ipt_owner: pid, sid and command matching " - "not supported anymore\n"); - return false; - } - return true; -} - -static struct xt_match owner_mt_reg __read_mostly = { - .name = "owner", - .family = AF_INET, - .match = owner_mt, - .matchsize = sizeof(struct ipt_owner_info), - .hooks = (1 << NF_INET_LOCAL_OUT) | - (1 << NF_INET_POST_ROUTING), - .checkentry = owner_mt_check, - .me = THIS_MODULE, -}; - -static int __init owner_mt_init(void) -{ - return xt_register_match(&owner_mt_reg); -} - -static void __exit owner_mt_exit(void) -{ - xt_unregister_match(&owner_mt_reg); -} - -module_init(owner_mt_init); -module_exit(owner_mt_exit); |