PSARC/2009/590 Socket Filter Framework
6939085 Socket Filter Framework
6802067 connect_failed kernel socket callback is not triggered
6776450 time spent in tcp_close could be reduced/deferred to a worker thread
6828586 assertion failed: family == 26, file: ../../common/fs/sockfs/socksyscalls.c, line: 1608
6802078 kernel socket 'newconn' callback is passing rcv queue size as an argument
diff --git a/usr/src/uts/common/sys/socket_proto.h b/usr/src/uts/common/sys/socket_proto.h
index 56e3129..6bc968b 100644
--- a/usr/src/uts/common/sys/socket_proto.h
+++ b/usr/src/uts/common/sys/socket_proto.h
@@ -19,8 +19,7 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  */
 
 #ifndef _SYS_SOCKET_PROTO_H_
@@ -128,11 +127,15 @@
 typedef sock_lower_handle_t (*so_proto_create_func_t)(int, int, int,
     sock_downcalls_t **, uint_t *, int *, int, cred_t *);
 
-typedef void (*so_proto_quiesced_cb_t)(sock_upper_handle_t, queue_t *,
-    struct T_capability_ack *, struct sockaddr *, socklen_t,
-    struct sockaddr *, socklen_t, short);
+typedef struct sock_quiesce_arg {
+	mblk_t *soqa_exdata_mp;
+	mblk_t *soqa_urgmark_mp;
+} sock_quiesce_arg_t;
+typedef mblk_t *(*so_proto_quiesced_cb_t)(sock_upper_handle_t,
+    sock_quiesce_arg_t *, struct T_capability_ack *, struct sockaddr *,
+    socklen_t, struct sockaddr *, socklen_t, short);
 typedef int (*so_proto_fallback_func_t)(sock_lower_handle_t, queue_t *,
-    boolean_t, so_proto_quiesced_cb_t);
+    boolean_t, so_proto_quiesced_cb_t, sock_quiesce_arg_t *);
 
 /*
  * These functions return EOPNOTSUPP and are intended for the sockfs
@@ -196,6 +199,7 @@
 	void	(*su_signal_oob)(sock_upper_handle_t, ssize_t);
 	void	(*su_zcopy_notify)(sock_upper_handle_t);
 	void	(*su_set_error)(sock_upper_handle_t, int);
+	void	(*su_closed)(sock_upper_handle_t);
 };
 
 #define	SOCK_UC_VERSION		sizeof (sock_upcalls_t)