summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/socketvar.h
diff options
context:
space:
mode:
authorRobert Mustacchi <rm@joyent.com>2015-02-23 23:22:14 +0000
committerRobert Mustacchi <rm@joyent.com>2015-02-28 00:21:48 +0000
commit2817066388ca0763ec573e049af64fe4da218f91 (patch)
treef80d3e285717fd805a1b39bc3cd54e535e8c6ac0 /usr/src/uts/common/sys/socketvar.h
parentbcb20d39d4ba6e4eeda9ef561d322e62e1965ea7 (diff)
downloadillumos-joyent-2817066388ca0763ec573e049af64fe4da218f91.tar.gz
OS-3000 I for one, welcome my overlay network overlords
OS-3080 Need direct callbacks from socket upcalls via ksocket OS-3943 want vxlan support OS-3944 snoop should support vxlan OS-3945 want varpd direct plugin OS-3946 want varpd files plugin OS-3947 want varpd svp plugin OS-3948 refhash could be used outside of mpt_sas OS-3949 want string property ranges for mac
Diffstat (limited to 'usr/src/uts/common/sys/socketvar.h')
-rw-r--r--usr/src/uts/common/sys/socketvar.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/usr/src/uts/common/sys/socketvar.h b/usr/src/uts/common/sys/socketvar.h
index 8221c620a8..1aceb0570a 100644
--- a/usr/src/uts/common/sys/socketvar.h
+++ b/usr/src/uts/common/sys/socketvar.h
@@ -21,6 +21,7 @@
/*
* Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2015 Joyent, Inc.
*/
/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
@@ -99,6 +100,7 @@ struct sockaddr_ux {
typedef struct sonodeops sonodeops_t;
typedef struct sonode sonode_t;
+typedef boolean_t (*so_krecv_f)(sonode_t *, mblk_t *, size_t, int, void *);
struct sodirect_s;
@@ -241,6 +243,10 @@ struct sonode {
struct sof_instance *so_filter_top; /* top of stack */
struct sof_instance *so_filter_bottom; /* bottom of stack */
clock_t so_filter_defertime; /* time when deferred */
+
+ /* Kernel direct receive callbacks */
+ so_krecv_f so_krecv_cb; /* recv callback */
+ void *so_krecv_arg; /* recv cb arg */
};
#define SO_HAVE_DATA(so) \
@@ -942,6 +948,15 @@ extern struct sonode *socreate(struct sockparams *, int, int, int, int,
extern int so_copyin(const void *, void *, size_t, int);
extern int so_copyout(const void *, void *, size_t, int);
+/*
+ * Functions to manipulate the use of direct receive callbacks. This should not
+ * be used outside of sockfs and ksocket. These are generally considered a use
+ * once interface for a socket and will cause all outstanding data on the socket
+ * to be flushed.
+ */
+extern int so_krecv_set(sonode_t *, so_krecv_f, void *);
+extern void so_krecv_unblock(sonode_t *);
+
#endif
/*