fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / linux / vs_socket.h
index 9173bfe..d95fcd3 100644 (file)
@@ -1,7 +1,10 @@
-#ifndef _VX_VS_SOCKET_H
-#define _VX_VS_SOCKET_H
+#ifndef _VS_SOCKET_H
+#define _VS_SOCKET_H
 
 #include "vserver/debug.h"
+#include "vserver/base.h"
+#include "vserver/cacct.h"
+#include "vserver/context.h"
 
 
 /* socket accounting */
 
 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) \
@@ -28,8 +38,8 @@ static inline void __vx_acc_sock(struct vx_info *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);
+               atomic_long_inc(&vxi->cacct.sock[type][pos].count);
+               atomic_long_add(size, &vxi->cacct.sock[type][pos].total);
        }
 }