summaryrefslogtreecommitdiffstats
path: root/net/ipv4/ip_sockglue.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1998-03-03 01:22:27 +0000
committerRalf Baechle <ralf@linux-mips.org>1998-03-03 01:22:27 +0000
commitf9bbe9da79dbc8557c74efeb158b431cd67ace52 (patch)
tree3220d014a35f9d88a48668a1468524e988daebff /net/ipv4/ip_sockglue.c
parent3d697109c1ff85ef563aec3d5e113ef225ed2792 (diff)
Upgrade to 2.1.73.
Diffstat (limited to 'net/ipv4/ip_sockglue.c')
-rw-r--r--net/ipv4/ip_sockglue.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
index 080452dd3..2fd2b16ab 100644
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -5,7 +5,7 @@
*
* The IP to API glue.
*
- * Version: $Id: ip_sockglue.c,v 1.28 1997/11/17 17:36:08 kuznet Exp $
+ * Version: $Id: ip_sockglue.c,v 1.3 1997/12/16 05:37:41 ralf Exp $
*
* Authors: see ip.c
*
@@ -229,7 +229,10 @@ int ip_setsockopt(struct sock *sk, int level, int optname, char *optval, int opt
int val=0,err;
#if defined(CONFIG_IP_FIREWALL) || defined(CONFIG_IP_ACCT)
struct ip_fw tmp_fw;
-#endif
+#endif
+#ifdef CONFIG_IP_MASQUERADE
+ char masq_ctl[IP_FW_MASQCTL_MAX];
+#endif
if(optlen>=sizeof(int)) {
if(get_user(val, (int *) optval))
@@ -465,6 +468,20 @@ int ip_setsockopt(struct sock *sk, int level, int optname, char *optval, int opt
return -err; /* -0 is 0 after all */
#endif
+#ifdef CONFIG_IP_MASQUERADE
+ case IP_FW_MASQ_ADD:
+ case IP_FW_MASQ_DEL:
+ case IP_FW_MASQ_FLUSH:
+ if(!suser())
+ return -EPERM;
+ if(optlen>sizeof(masq_ctl) || optlen<1)
+ return -EINVAL;
+ if(copy_from_user(masq_ctl,optval,optlen))
+ return -EFAULT;
+ err=ip_masq_ctl(optname, masq_ctl,optlen);
+ return -err; /* -0 is 0 after all */
+
+#endif
#ifdef CONFIG_IP_ACCT
case IP_ACCT_INSERT:
case IP_ACCT_APPEND: