summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorMike Chan <mike@android.com>2009-01-07 11:40:42 -0800
committerArve Hjønnevåg <arve@android.com>2009-04-07 16:43:13 -0700
commit979c1983d7853eff0cead8e3338becfc70e6cf72 (patch)
tree558a2e5acb6f7fececd280f8833c3d7ee44df1ca /net
parent75090d40ffbd9b4863238e1d62b43f8598da5e5e (diff)
uidstat: Adding uid stat driver to collect network statistics.
Signed-off-by: Mike Chan <mike@android.com>
Diffstat (limited to 'net')
-rw-r--r--net/socket.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/net/socket.c b/net/socket.c
index 35dd7371752a..06988a32fc88 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -96,6 +96,10 @@
#include <net/sock.h>
#include <linux/netfilter.h>
+#ifdef CONFIG_UID_STAT
+#include <linux/uid_stat.h>
+#endif
+
static int sock_no_open(struct inode *irrelevant, struct file *dontcare);
static ssize_t sock_aio_read(struct kiocb *iocb, const struct iovec *iov,
unsigned long nr_segs, loff_t pos);
@@ -560,7 +564,12 @@ static inline int __sock_sendmsg(struct kiocb *iocb, struct socket *sock,
if (err)
return err;
- return sock->ops->sendmsg(iocb, sock, msg, size);
+ err = sock->ops->sendmsg(iocb, sock, msg, size);
+#ifdef CONFIG_UID_STAT
+ if (err > 0)
+ update_tcp_snd(current_uid(), err);
+#endif
+ return err;
}
int sock_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
@@ -642,7 +651,12 @@ static inline int __sock_recvmsg(struct kiocb *iocb, struct socket *sock,
if (err)
return err;
- return sock->ops->recvmsg(iocb, sock, msg, size, flags);
+ err = sock->ops->recvmsg(iocb, sock, msg, size, flags);
+#ifdef CONFIG_UID_STAT
+ if (err > 0)
+ update_tcp_rcv(current_uid(), err);
+#endif
+ return err;
}
int sock_recvmsg(struct socket *sock, struct msghdr *msg,