• John Hughes's avatar
    x.25 attempts to negotiate invalid throughput · ddd0451f
    John Hughes authored
    The current X.25 code has some bugs in throughput negotiation:
    
       1. It does negotiation in all cases, usually there is no need
       2. It incorrectly attempts to negotiate the throughput class in one
          direction only.  There are separate throughput classes for input
          and output and if either is negotiated both mist be negotiates.
    
    This is bug https://bugzilla.kernel.org/show_bug.cgi?id=15681
    
    This bug was first reported by Daniel Ferenci to the linux-x25 mailing
    list on 6/8/2004, but is still present.
    
    The current (2.6.34) x.25 code doesn't seem to know that the X.25
    throughput facility includes two values, one for the required
    throughput outbound, one for inbound.
    
    This causes it to attempt to negotiate throughput 0x0A, which is
    throughput 9600 inbound and the illegal value "0" for inbound
    throughput.
    
    Because of this some X.25 devices (e.g. Cisco 1600) refuse to connect
    to Linux X.25.
    
    The following patch fixes this behaviour.  Unless the user specifies a
    required throughput it does not attempt to negotiate.  If the user
    does not specify a throughput it accepts the suggestion of the remote
    X.25 system.  If the user requests a throughput then it validates both
    the input and output throughputs and correctly negotiates them with
    the remote end.
    Signed-off-by: default avatarJohn Hughes <john@calva.com>
    Tested-by: default avatarAndrew Hendry <andrew.hendry@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ddd0451f
x25_facilities.c 8.5 KB