summaryrefslogtreecommitdiffstats
path: root/sys/netgraph/ng_UI.c
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>2000-12-12 18:52:14 +0000
committerjulian <julian@FreeBSD.org>2000-12-12 18:52:14 +0000
commit2d1192e61200eb8fc54319899e014acefd14ae74 (patch)
tree7cea4425abc67a898f27d4352a634cfa82aad7cc /sys/netgraph/ng_UI.c
parent66009fc30e546f777cfc59b5d148551c44f649e2 (diff)
downloadFreeBSD-src-2d1192e61200eb8fc54319899e014acefd14ae74.zip
FreeBSD-src-2d1192e61200eb8fc54319899e014acefd14ae74.tar.gz
Reviewed by: Archie@freebsd.org
This clears out my outstanding netgraph changes. There is a netgraph change of design in the offing and this is to some extent a superset of soem of the new functionality and some of the old functionality that may be removed. This code works as before, but allows some new features that I want to work with and evaluate. It is the basis for a version of netgraph with integral locking for SMP use. This is running on my test machine with no new problems :-)
Diffstat (limited to 'sys/netgraph/ng_UI.c')
-rw-r--r--sys/netgraph/ng_UI.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/sys/netgraph/ng_UI.c b/sys/netgraph/ng_UI.c
index b410a51..9d490b9 100644
--- a/sys/netgraph/ng_UI.c
+++ b/sys/netgraph/ng_UI.c
@@ -87,7 +87,6 @@ static struct ng_type typestruct = {
NULL,
NULL,
ng_UI_rcvdata,
- ng_UI_rcvdata,
ng_UI_disconnect,
NULL
};
@@ -151,6 +150,22 @@ static int
ng_UI_rcvmsg(node_p node, struct ng_mesg *msg,
const char *raddr, struct ng_mesg **rp, hook_p lasthook)
{
+ const priv_p priv = node->private;
+
+ if ((msg->header.typecookie == NGM_FLOW_COOKIE) && lasthook) {
+ if (lasthook == priv->downlink) {
+ if (priv->uplink) {
+ return (ng_send_msg(node, msg, NULL,
+ priv->uplink, raddr, rp));
+ }
+ } else {
+ if (priv->downlink) {
+ return (ng_send_msg(node, msg, NULL,
+ priv->downlink, raddr, rp));
+ }
+ }
+ }
+
FREE(msg, M_NETGRAPH);
return (EINVAL);
}
@@ -163,7 +178,7 @@ ng_UI_rcvmsg(node_p node, struct ng_mesg *msg,
*/
static int
ng_UI_rcvdata(hook_p hook, struct mbuf *m, meta_p meta,
- struct mbuf **ret_m, meta_p *ret_meta)
+ struct mbuf **ret_m, meta_p *ret_meta, struct ng_mesg **resp)
{
const node_p node = hook->node;
const priv_p priv = node->private;
OpenPOWER on IntegriCloud