-#ifndef _VX_VS_LIMIT_H
-#define _VX_VS_LIMIT_H
+#ifndef _VX_VS_SOCKET_H
+#define _VX_VS_SOCKET_H
-
-// #define VX_DEBUG
-
-#include <linux/kernel.h>
-#include <linux/rcupdate.h>
-#include <linux/sched.h>
-
-#include "vserver/context.h"
-#include "vserver/network.h"
+#include "vserver/debug.h"
/* socket accounting */
#include <linux/socket.h>
+#include <linux/vserver/cacct.h>
static inline int vx_sock_type(int family)
{
- int type = 4;
-
- if (family > 0 && family < 3)
- type = family;
- else if (family == PF_INET6)
- type = 3;
- return type;
+ switch (family) {
+ case PF_UNSPEC:
+ return VXA_SOCK_UNSPEC;
+ case PF_UNIX:
+ return VXA_SOCK_UNIX;
+ case PF_INET:
+ return VXA_SOCK_INET;
+ case PF_INET6:
+ return VXA_SOCK_INET6;
+ case PF_PACKET:
+ return VXA_SOCK_PACKET;
+ default:
+ return VXA_SOCK_OTHER;
+ }
}
#define vx_acc_sock(v,f,p,s) \
static inline void __vx_acc_sock(struct vx_info *vxi,
int family, int pos, int size, char *file, int line)
{
- if (vxi) {
+ if (vxi) {
int type = vx_sock_type(family);
atomic_inc(&vxi->cacct.sock[type][pos].count);
atomic_add(size, &vxi->cacct.sock[type][pos].total);
- }
+ }
}
#define vx_sock_recv(sk,s) \
vx_acc_sock((sk)->sk_vx_info, (sk)->sk_family, 2, (s))
-#define sock_vx_init(s) do { \
+#define sock_vx_init(s) do { \
(s)->sk_xid = 0; \
(s)->sk_vx_info = NULL; \
} while (0)
-#define sock_nx_init(s) do { \
+#define sock_nx_init(s) do { \
(s)->sk_nid = 0; \
(s)->sk_nx_info = NULL; \
} while (0)