diff options
author | Robert Mustacchi <rm@joyent.com> | 2015-02-23 23:22:14 +0000 |
---|---|---|
committer | Robert Mustacchi <rm@joyent.com> | 2015-02-28 00:21:48 +0000 |
commit | 2817066388ca0763ec573e049af64fe4da218f91 (patch) | |
tree | f80d3e285717fd805a1b39bc3cd54e535e8c6ac0 /usr/src/uts/common/sys/socketvar.h | |
parent | bcb20d39d4ba6e4eeda9ef561d322e62e1965ea7 (diff) | |
download | illumos-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.h | 15 |
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 /* |