*     @type contains the requested communications type.
  *     @protocol contains the requested protocol.
  *     @kern set to 1 if a kernel socket.
+ * @socket_socketpair:
+ *     Check permissions before creating a fresh pair of sockets.
+ *     @socka contains the first socket structure.
+ *     @sockb contains the second socket structure.
+ *     Return 0 if permission is granted and the connection was established.
  * @socket_bind:
  *     Check permission before socket protocol layer bind operation is
  *     performed and the socket @sock is bound to the address specified in the
        int (*socket_create)(int family, int type, int protocol, int kern);
        int (*socket_post_create)(struct socket *sock, int family, int type,
                                        int protocol, int kern);
+       int (*socket_socketpair)(struct socket *socka, struct socket *sockb);
        int (*socket_bind)(struct socket *sock, struct sockaddr *address,
                                int addrlen);
        int (*socket_connect)(struct socket *sock, struct sockaddr *address,
        struct hlist_head unix_may_send;
        struct hlist_head socket_create;
        struct hlist_head socket_post_create;
+       struct hlist_head socket_socketpair;
        struct hlist_head socket_bind;
        struct hlist_head socket_connect;
        struct hlist_head socket_listen;
 
 int security_socket_create(int family, int type, int protocol, int kern);
 int security_socket_post_create(struct socket *sock, int family,
                                int type, int protocol, int kern);
+int security_socket_socketpair(struct socket *socka, struct socket *sockb);
 int security_socket_bind(struct socket *sock, struct sockaddr *address, int addrlen);
 int security_socket_connect(struct socket *sock, struct sockaddr *address, int addrlen);
 int security_socket_listen(struct socket *sock, int backlog);
        return 0;
 }
 
+static inline int security_socket_socketpair(struct socket *socka,
+                                            struct socket *sockb)
+{
+       return 0;
+}
+
 static inline int security_socket_bind(struct socket *sock,
                                       struct sockaddr *address,
                                       int addrlen)
 
                                                protocol, kern);
 }
 
+int security_socket_socketpair(struct socket *socka, struct socket *sockb)
+{
+       return call_int_hook(socket_socketpair, 0, socka, sockb);
+}
+EXPORT_SYMBOL(security_socket_socketpair);
+
 int security_socket_bind(struct socket *sock, struct sockaddr *address, int addrlen)
 {
        return call_int_hook(socket_bind, 0, sock, address, addrlen);