From owner-freebsd-bugs@FreeBSD.ORG Fri Aug 14 17:20:09 2009 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 44C8D10656CD for ; Fri, 14 Aug 2009 17:20:09 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 225B08FC69 for ; Fri, 14 Aug 2009 17:20:09 +0000 (UTC) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.3/8.14.3) with ESMTP id n7EHK8bX015776 for ; Fri, 14 Aug 2009 17:20:08 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.3/8.14.3/Submit) id n7EHK8Aa015775; Fri, 14 Aug 2009 17:20:08 GMT (envelope-from gnats) Resent-Date: Fri, 14 Aug 2009 17:20:08 GMT Resent-Message-Id: <200908141720.n7EHK8Aa015775@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Maxim Ignatenko Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7738210656A5 for ; Fri, 14 Aug 2009 17:15:31 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21]) by mx1.freebsd.org (Postfix) with ESMTP id 4CFC88FC52 for ; Fri, 14 Aug 2009 17:15:31 +0000 (UTC) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.14.3/8.14.3) with ESMTP id n7EHFVwI093142 for ; Fri, 14 Aug 2009 17:15:31 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.14.3/8.14.3/Submit) id n7EHFUWS093141; Fri, 14 Aug 2009 17:15:30 GMT (envelope-from nobody) Message-Id: <200908141715.n7EHFUWS093141@www.freebsd.org> Date: Fri, 14 Aug 2009 17:15:30 GMT From: Maxim Ignatenko To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: kern/137775: [patch] Add XMIT_FAILOVER to ng_one2many X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Aug 2009 17:20:09 -0000 >Number: 137775 >Category: kern >Synopsis: [patch] Add XMIT_FAILOVER to ng_one2many >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Fri Aug 14 17:20:08 UTC 2009 >Closed-Date: >Last-Modified: >Originator: Maxim Ignatenko >Release: 8-CURRENT >Organization: Kiev National Taras Shevchenko University >Environment: FreeBSD imax 8.0-CURRENT FreeBSD 8.0-CURRENT #82 r195339M: Sat Jul 4 17:53:30 EEST 2009 root@imax:/usr/obj/usr/src/sys/HEAD i386 >Description: Sending packets to first active "many" hook is more adequate for simulating lagg(4) with "laggproto failover". >How-To-Repeat: >Fix: Patch attached with submission follows: Index: sys/netgraph/ng_one2many.c =================================================================== --- sys/netgraph/ng_one2many.c (revision 195339) +++ sys/netgraph/ng_one2many.c (working copy) @@ -278,6 +278,7 @@ 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_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 @@ priv->nextMany %= priv->numActiveMany; break; case NG_ONE2MANY_XMIT_ALL: + case NG_ONE2MANY_XMIT_FAILOVER: break; #ifdef INVARIANTS default: Index: sys/netgraph/ng_one2many.h =================================================================== --- sys/netgraph/ng_one2many.h (revision 195339) +++ sys/netgraph/ng_one2many.h (working copy) @@ -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 */ Index: share/man/man4/ng_one2many.4 =================================================================== --- share/man/man4/ng_one2many.4 (revision 195339) +++ share/man/man4/ng_one2many.4 (working copy) @@ -96,6 +96,10 @@ 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. >Release-Note: >Audit-Trail: >Unformatted: