Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Jul 2001 17:24:17 -0700 (PDT)
From:      Richard Hodges <rh@matriplex.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   kern/28748: HARP may reject SVCs from certain ATM switches
Message-ID:  <200107060024.f660OHF65335@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         28748
>Category:       kern
>Synopsis:       HARP may reject SVCs from certain ATM switches
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jul 05 17:30:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Richard Hodges
>Release:        FreeBSD 4.x (apparently affects 3.x too)
>Organization:
Matriplex, inc.
>Environment:
All HARP versions are likely to be affected.
>Description:
This problem was first noticed with a Xylan/Omniswitch ATM switch.  In
this case, HARP could not connect to the ARP server.  The switch sent
CALL PROCEEDING and CONNECT, but HARP replied with RELEASE, and cause
code "missing connection ID".  Unlike Fore switches, the Xylan switch
sent the connection ID in the CALL PROCEEDING message, but not CONNECT.
This is allowed (UNI 3.1, 5.3.1.3, page 170).

The CONNECT code in netatm/uni/unisig_vc_state.c checks for the connection ID
from a previous CALL PROCEEDING message, but fails to allow for a VPI value
of zero (!)  It is likely that the HARP authors used exclusively Fore
switches, and this code was probably not tested.
>How-To-Repeat:
To demonstrate this problem, connect a FreeBSD/HARP system to a switch
that does not send the connection ID (VPI and VCI) with CONNECT.  This
is known to be the case with Xylan, and presumably others may also have
this behavior.  HARP will set up an SVC, but disconnect (RELEASE) at the
very end.  This can be seen by configuring an external ARP server.

>Fix:
The following patch allows the VPI to be any value, including zero.  In
fact, zero is probably the most common case for an SVC.

--- /usr/src/sys/netatm/uni/unisig_vc_state.c   Mon Jan 17 12:49:59 2000
+++ /usr/src/sys/netatm/uni/unisig_vc_state.c.new       Thu Jul  5 16:59:50 2001
@@ -645,11 +645,11 @@
                uvp->uv_vci = vci;
        } else {
                /*
                 * No--VPI/VCI must have been specified earlier
                 */
-               if (!uvp->uv_vpi || !uvp->uv_vci) {
+               if (!uvp->uv_vci) {
                        iep = (struct ie_generic *)atm_allocate(
                                        &unisig_iepool);
                        if (!iep)
                                return(ENOMEM);
                        iep->ie_ident = UNI_IE_CNID;

>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200107060024.f660OHF65335>