Index: linux-atm/configure.in
===================================================================
RCS file: /afs/cmf/project/cvsroot/linux-atm/configure.in,v
retrieving revision 1.2
diff -urNp -x '*.orig' linux-atm-2.5.2.org/configure.in linux-atm-2.5.2/configure.in
--- linux-atm-2.5.2.org/configure.in	2010-12-28 16:36:07.000000000 +0100
+++ linux-atm-2.5.2/configure.in	2026-03-03 00:07:31.692017335 +0100
@@ -13,7 +13,7 @@ AC_CANONICAL_SYSTEM
 
 AM_INIT_AUTOMAKE(linux-atm,2.5.2)
 
-LIBVER_CURRENT="1"
+LIBVER_CURRENT="2"
 LIBVER_REVISION="0"
 LIBVER_AGE="0"
 AC_SUBST(LIBVER_CURRENT)
diff -urNp -x '*.orig' linux-atm-2.5.2.org/src/include/atm.h linux-atm-2.5.2/src/include/atm.h
--- linux-atm-2.5.2.org/src/include/atm.h	2008-01-01 01:14:50.000000000 +0100
+++ linux-atm-2.5.2/src/include/atm.h	2026-03-03 00:07:31.692229489 +0100
@@ -86,7 +86,7 @@ extern "C" {
 #define MAX_ATM_ADDR_LEN (2*ATM_ESA_LEN+ATM_E164_LEN+5)
 				/* 4 dots, 1 plus */
 #define MAX_ATM_NAME_LEN 256	/* wild guess */
-#define MAX_ATM_QOS_LEN 116	/* 5+4+2*(3+3*(7+9)+2)+1 */
+#define MAX_ATM_QOS_LEN 191	/* 7+1+4+2*(1+3+5*(8+8+1))+1 */
 #define MAX_ATM_SAP_LEN	255	/* BHLI(27)+1+3*BLLI(L2=33,L3=41,+1)+2 */
 
 
diff -urNp -x '*.orig' linux-atm-2.5.2.org/src/lib/qos2text.c linux-atm-2.5.2/src/lib/qos2text.c
--- linux-atm-2.5.2.org/src/lib/qos2text.c	2001-10-10 00:33:07.000000000 +0200
+++ linux-atm-2.5.2/src/lib/qos2text.c	2026-03-03 00:07:31.692388157 +0100
@@ -2,6 +2,7 @@
 		representation */
 
 /* Written 1996-2000 by Werner Almesberger, EPFL-LRC */
+/* VBR support added, kaczor@dgt-lab.com.pl */ 
 
 #if HAVE_CONFIG_H
 #include <config.h>
@@ -33,6 +34,8 @@ static void params(char *buffer,char **p
     FLD(pcr);
     FLD(min_pcr);
     FLD(max_sdu);
+    FLD(scr);
+    FLD(mbs);
 }
 
 
@@ -71,8 +74,16 @@ int qos2text(char *buffer,int length,con
 	case ATM_CBR:
 	    strcpy(buffer,"cbr");
 	    pos += 3;
+	    break;            
+        case ATM_VBR_RT:
+	    strcpy(buffer,"rt-vbr");
+	    pos += 6;
 	    break;
-	case ATM_ABR:
+	case ATM_VBR_NRT:
+	    strcpy(buffer,"nrt-vbr");
+	    pos += 7;
+	    break;	
+        case ATM_ABR:
 	    strcpy(buffer,"abr");
 	    pos += 3;
 	    break;
diff -urNp -x '*.orig' linux-atm-2.5.2.org/src/lib/text2qos.c linux-atm-2.5.2/src/lib/text2qos.c
--- linux-atm-2.5.2.org/src/lib/text2qos.c	2001-10-10 00:33:07.000000000 +0200
+++ linux-atm-2.5.2/src/lib/text2qos.c	2026-03-03 00:07:31.692580601 +0100
@@ -2,6 +2,9 @@
 		encoding */
 
 /* Written 1996-2000 by Werner Almesberger, EPFL-LRC/ICA */
+/* VBR support added,  kaczor@dgt-lab.com.pl */
+
+
 
 #if HAVE_CONFIG_H
 #include <config.h>
@@ -12,6 +15,7 @@
 #include <string.h>
 #include <ctype.h>
 #include <limits.h>
+#include <stdio.h>
 
 #include "atm.h"
 
@@ -86,16 +90,16 @@ static int params(const char **text,stru
     if (*(*text)++ != ':') return -1;
     while (1) {
 	if (!**text) return -1;
-	switch (fetch(text,"max_pcr=","pcr=","min_pcr=","max_sdu=","sdu=",
+	switch (fetch(text,"max_pcr=","pcr=","min_pcr=","max_sdu=","sdu=","scr=","mbs=", 
 	  NULL)) {
 	    case 0:
 		if ((value = __t2q_get_rate(text,0)) == RATE_ERROR) return -1;
-		if (a) a->max_pcr = value;
+		if (a) a->max_pcr = value; 
 		if (b) b->max_pcr = value;
 		break;
 	    case 1:
 		if ((value = __t2q_get_rate(text,0)) == RATE_ERROR) return -1;
-		if (a) a->pcr = value;
+		if (a) a->pcr = value; 
 		if (b) b->pcr = value;
 		break;
 	    case 2:
@@ -112,6 +116,20 @@ static int params(const char **text,stru
 		if (a) a->max_sdu = value;
 		if (b) b->max_sdu = value;
 		break;
+	    case 5: 
+		if ((value = __t2q_get_rate(text,1)) == RATE_ERROR) return -1;
+		if (value == ATM_MAX_PCR) return -1;
+		if (a) a->scr = value; 
+		if (b) b->scr = value;
+		break;
+	    case 6:
+		value = strtol(*text,&end,10);
+		if (value < 0) return -1;
+		*text = end;
+		if (a) a->mbs = value; 
+		if (b) b->mbs = value;
+		break;
+    
 	    default:
 		return 0;
 	}
@@ -131,20 +149,26 @@ int text2qos(const char *text,struct atm
     do {
 	static const unsigned char aal_number[] = { ATM_AAL0, ATM_AAL5 };
 	int item;
-
-	item = fetch(&text,"!none","ubr","cbr","vbr","abr","aal0","aal5",NULL);
+ 
+	item = fetch(&text,"!none","ubr","cbr","nrt-vbr","abr","aal0","aal5","rt-vbr","vbr",NULL);
 	switch (item) {
 	    case 1:
 	    case 2:
-		/* we don't support VBR yet */
-	    case 4:
-		traffic_class = item;
+	    case 3: 
+ 		traffic_class = item;	/* ATM_UBR, ATM_CBR or ATM_VBR_NRT */
 		break;
+            case 7:
+                traffic_class = 6;	/* ATM_VBR_RT */
+                break;
+            case 8:
+                traffic_class = 3;	/* alias for ATM_VBR_NRT */
+                break;
 	    case 5:
 	    case 6:
 		aal = aal_number[item-5];
 		break;
-	    default:
+          
+            default: //  abr is switched off
 		return -1;
 	}
     }
diff -urNp -x '*.orig' linux-atm-2.5.2.org/src/man/qos.7 linux-atm-2.5.2/src/man/qos.7
--- linux-atm-2.5.2.org/src/man/qos.7	2001-10-10 00:33:07.000000000 +0200
+++ linux-atm-2.5.2/src/man/qos.7	2026-03-03 00:07:31.692740071 +0100
@@ -19,7 +19,12 @@ Unassigned Bit Rate
 .IP \fBcbr\fP
 Constant Bit Rate
 .IP \fBabr\fP
-Available Bit Rate
+Available Bit Rate (rarely implemented in drivers)
+.IP \fBnrt-vbr\fP
+Non-Real-Time Variable Bit Rate (rarely implemented in drivers).
+Can also be abbreviated as \fBvbr\fP.
+.IP \fBrt-vbr\fP
+Real-Time Variable Bit Rate (rarely implemented in drivers)
 .P
 The following AAL types are recognized:
 .IP \fBaal0\fP
@@ -50,11 +55,18 @@ to link speed may be chosen.
 .IP \fBmin_pcr=\fIrate\fP
 The lower limit for the peak cell rate to assign. If omitted, any rate above
 zero can be chosen.
+.IP \fBscr=\fIrate\fP
+Sustainable cell rate for nrt-vbr and rt-vbr.
 .IP \fBsdu=\fIsize\fP
 is a synonym for \fBmax_sdu=\fIsize\fP
 .IP \fBmax_sdu=\fIsize\fP
 The size of the largest packet that may be sent or received. If omitted,
 a context-dependent default value is used.
+.IP \fBmbs=\fIsize\fP
+Maximum Burst Size parameter for nrt-vbr and rt-vbr. The number of cells
+that may be transmitted at the peek rate before switching to scr.
+cdvt currently cannot be defined for vbr and it is assumed to be as small
+as possible.
 .P
 Values are specified as follows:
 .IP \fIrate\fP
@@ -90,6 +102,7 @@ Each of the following lines contains a v
   CBR:max_pcr=11Mbps,min_pcr=10mbps,sdu=8192
   aal5,ubr:tx:none
   cbr:tx:pcr=30000,rx:none
+  rt-vbr:pcr=100000,scr=10000,mbs=1000
 .sp
 .fi
 The following specificiations are equivalent:
