Add XMIT_FAILOVER transmit algorithm to ng_one2many node. Packets are

delivered out the first active "many" hook.

PR:		kern/137775
Submitted by:	Maxim Ignatenko
MFC after:	2 weeks
This commit is contained in:
Andrey V. Elsukov 2011-03-01 13:10:56 +00:00
parent ac095af538
commit 633c5bdac8
3 changed files with 11 additions and 1 deletions

View File

@ -34,7 +34,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd February 19, 2006
.Dd March 1, 2011
.Dt NG_ONE2MANY 4
.Os
.Sh NAME
@ -96,6 +96,10 @@ hooks.
Each packet goes out each
.Dv many
hook.
.It Dv NG_ONE2MANY_XMIT_FAILOVER
Packets are delivered out the first active
.Dv many
hook.
.El
.Pp
In the future other algorithms may be added as well.

View File

@ -278,6 +278,7 @@ ng_one2many_rcvmsg(node_p node, item_p item, hook_p lasthook)
switch (conf->xmitAlg) {
case NG_ONE2MANY_XMIT_ROUNDROBIN:
case NG_ONE2MANY_XMIT_ALL:
case NG_ONE2MANY_XMIT_FAILOVER:
break;
default:
error = EINVAL;
@ -473,6 +474,9 @@ ng_one2many_rcvdata(hook_p hook, item_p item)
NG_SEND_DATA_ONLY(error, mdst->hook, m2);
}
break;
case NG_ONE2MANY_XMIT_FAILOVER:
dst = &priv->many[priv->activeMany[0]];
break;
#ifdef INVARIANTS
default:
panic("%s: invalid xmitAlg", __func__);
@ -583,6 +587,7 @@ ng_one2many_update_many(priv_p priv)
priv->nextMany %= priv->numActiveMany;
break;
case NG_ONE2MANY_XMIT_ALL:
case NG_ONE2MANY_XMIT_FAILOVER:
break;
#ifdef INVARIANTS
default:

View File

@ -61,6 +61,7 @@
/* Algorithms for outgoing packet distribution (XXX only one so far) */
#define NG_ONE2MANY_XMIT_ROUNDROBIN 1 /* round-robin delivery */
#define NG_ONE2MANY_XMIT_ALL 2 /* send packets to all many hooks */
#define NG_ONE2MANY_XMIT_FAILOVER 3 /* send packets to first active "many" */
/* Algorithms for detecting link failure (XXX only one so far) */
#define NG_ONE2MANY_FAIL_MANUAL 1 /* use enabledLinks[] array */