Deleted Added
full compact
ng_ksocket.c (88739) ng_ksocket.c (88945)
1
2/*
3 * ng_ksocket.c
4 *
5 * Copyright (c) 1996-1999 Whistle Communications, Inc.
6 * All rights reserved.
7 *
8 * Subject to the following obligations and disclaimer of warranty, use and

--- 22 unchanged lines hidden (view full) ---

31 * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY
32 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34 * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
35 * OF SUCH DAMAGE.
36 *
37 * Author: Archie Cobbs <archie@freebsd.org>
38 *
1
2/*
3 * ng_ksocket.c
4 *
5 * Copyright (c) 1996-1999 Whistle Communications, Inc.
6 * All rights reserved.
7 *
8 * Subject to the following obligations and disclaimer of warranty, use and

--- 22 unchanged lines hidden (view full) ---

31 * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY
32 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34 * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
35 * OF SUCH DAMAGE.
36 *
37 * Author: Archie Cobbs <archie@freebsd.org>
38 *
39 * $FreeBSD: head/sys/netgraph/ng_ksocket.c 88739 2001-12-31 17:45:16Z rwatson $
39 * $FreeBSD: head/sys/netgraph/ng_ksocket.c 88945 2002-01-06 01:08:30Z archie $
40 * $Whistle: ng_ksocket.c,v 1.1 1999/11/16 20:04:40 archie Exp $
41 */
42
43/*
44 * Kernel socket node type. This node type is basically a kernel-mode
45 * version of a socket... kindof like the reverse of the socket node type.
46 */
47

--- 42 unchanged lines hidden (view full) ---

90typedef struct ng_ksocket_private *priv_p;
91
92/* Flags for priv_p */
93#define KSF_CONNECTING 0x00000001 /* Waiting for connection complete */
94#define KSF_ACCEPTING 0x00000002 /* Waiting for accept complete */
95#define KSF_EOFSEEN 0x00000004 /* Have sent 0-length EOF mbuf */
96#define KSF_CLONED 0x00000008 /* Cloned from an accepting socket */
97#define KSF_EMBRYONIC 0x00000010 /* Cloned node with no hooks yet */
40 * $Whistle: ng_ksocket.c,v 1.1 1999/11/16 20:04:40 archie Exp $
41 */
42
43/*
44 * Kernel socket node type. This node type is basically a kernel-mode
45 * version of a socket... kindof like the reverse of the socket node type.
46 */
47

--- 42 unchanged lines hidden (view full) ---

90typedef struct ng_ksocket_private *priv_p;
91
92/* Flags for priv_p */
93#define KSF_CONNECTING 0x00000001 /* Waiting for connection complete */
94#define KSF_ACCEPTING 0x00000002 /* Waiting for accept complete */
95#define KSF_EOFSEEN 0x00000004 /* Have sent 0-length EOF mbuf */
96#define KSF_CLONED 0x00000008 /* Cloned from an accepting socket */
97#define KSF_EMBRYONIC 0x00000010 /* Cloned node with no hooks yet */
98#define KSF_SENDING 0x00000020 /* Sending on socket */
98
99/* Netgraph node methods */
100static ng_constructor_t ng_ksocket_constructor;
101static ng_rcvmsg_t ng_ksocket_rcvmsg;
102static ng_shutdown_t ng_ksocket_shutdown;
103static ng_newhook_t ng_ksocket_newhook;
104static ng_rcvdata_t ng_ksocket_rcvdata;
105static ng_connect_t ng_ksocket_connect;

--- 780 unchanged lines hidden (view full) ---

886 const node_p node = NG_HOOK_NODE(hook);
887 const priv_p priv = NG_NODE_PRIVATE(node);
888 struct socket *const so = priv->so;
889 struct sockaddr *sa = NULL;
890 meta_p meta;
891 int error;
892 struct mbuf *m;
893
99
100/* Netgraph node methods */
101static ng_constructor_t ng_ksocket_constructor;
102static ng_rcvmsg_t ng_ksocket_rcvmsg;
103static ng_shutdown_t ng_ksocket_shutdown;
104static ng_newhook_t ng_ksocket_newhook;
105static ng_rcvdata_t ng_ksocket_rcvdata;
106static ng_connect_t ng_ksocket_connect;

--- 780 unchanged lines hidden (view full) ---

887 const node_p node = NG_HOOK_NODE(hook);
888 const priv_p priv = NG_NODE_PRIVATE(node);
889 struct socket *const so = priv->so;
890 struct sockaddr *sa = NULL;
891 meta_p meta;
892 int error;
893 struct mbuf *m;
894
895 /* Avoid reentrantly sending on the socket */
896 if ((priv->flags & KSF_SENDING) != 0) {
897 NG_FREE_ITEM(item);
898 return (EDEADLK);
899 }
900
894 /* Extract data and meta information */
895 NGI_GET_M(item, m);
896 NGI_GET_META(item, meta);
897 NG_FREE_ITEM(item);
898
899 /* If any meta info, look for peer socket address */
900 if (meta != NULL) {
901 struct meta_field_header *field;

--- 7 unchanged lines hidden (view full) ---

909 || field->type != NG_KSOCKET_META_SOCKADDR)
910 continue;
911 sa = (struct sockaddr *)field->data;
912 break;
913 }
914 }
915
916 /* Send packet */
901 /* Extract data and meta information */
902 NGI_GET_M(item, m);
903 NGI_GET_META(item, meta);
904 NG_FREE_ITEM(item);
905
906 /* If any meta info, look for peer socket address */
907 if (meta != NULL) {
908 struct meta_field_header *field;

--- 7 unchanged lines hidden (view full) ---

916 || field->type != NG_KSOCKET_META_SOCKADDR)
917 continue;
918 sa = (struct sockaddr *)field->data;
919 break;
920 }
921 }
922
923 /* Send packet */
924 priv->flags |= KSF_SENDING;
917 error = (*so->so_proto->pr_usrreqs->pru_sosend)(so, sa, 0, m, 0, 0, td);
925 error = (*so->so_proto->pr_usrreqs->pru_sosend)(so, sa, 0, m, 0, 0, td);
926 priv->flags &= ~KSF_SENDING;
918
919 /* Clean up and exit */
920 NG_FREE_META(meta);
921 return (error);
922}
923
924/*
925 * Destroy node

--- 359 unchanged lines hidden ---
927
928 /* Clean up and exit */
929 NG_FREE_META(meta);
930 return (error);
931}
932
933/*
934 * Destroy node

--- 359 unchanged lines hidden ---