Re: Alvarion attributes Re: (no subject)

2006-07-14 Thread Robert Dukes
Alan,Thanks for the info,but can you giude me more on this this patch. i am very newbie in the linux and freebsd world. I am more of a window person.  On 7/14/06, 
Alan DeKok <[EMAIL PROTECTED]> wrote:
"Robert Dukes" <[EMAIL PROTECTED]> wrote:> This really sucks :) We invested so much into the gear here as our project> is funding by caring people. So there is no way to get this done ah 
  Try the patch below, which should work in 1.1.x.No guarantees... it just compiles, and I haven't tested it.You'll also have to create a dictionary, but I leave that part up toyou.  Alan DeKok.
Index: src/include/libradius.h===RCS file: /source/radiusd/src/include/libradius.h,vretrieving revision 1.76.2.2.2.9diff -u -r1.76.2.2.2.9
 libradius.h--- src/include/libradius.h 15 Jun 2006 21:47:14 -  1.76.2.2.2.9+++ src/include/libradius.h 13 Jul 2006 21:22:18 -@@ -65,12 +65,13 @@ #define CHAP_VALUE_LENGTH   16 #define MAX_STRING_LEN 254 /* RFC2138: string 0-253 octets */
+#  define VENDOR(x)((x >> 16) & 0x)+ #ifdef _LIBRADIUS #  define AUTH_HDR_LEN 20 #  define VENDORPEC_USR429 #define VENDORPEC_LUCENT   4846
 #define VENDORPEC_STARENT  8164-#  define VENDOR(x)((x >> 16) & 0x) #  define DEBUGif (librad_debug) printf #  define debug_pair(vp)   do { if (librad_debug) { \
putchar('\t'); \Index: src/modules/rlm_preprocess/rlm_preprocess.c===RCS file: /source/radiusd/src/modules/rlm_preprocess/rlm_preprocess.c,v
retrieving revision 1.52.2.1.2.1diff -u -r1.52.2.1.2.1 rlm_preprocess.c--- src/modules/rlm_preprocess/rlm_preprocess.c 5 May 2006 17:31:53 -   1.52.2.1.2.1+++ src/modules/rlm_preprocess/rlm_preprocess.c 13 Jul 2006 21:22:18 -
@@ -48,6 +48,7 @@int with_ntdomain_hack;int with_specialix_jetstream_hack;int with_cisco_vsa_hack;+   int with_alvarion_vsa_hack;
 } rlm_preprocess_t; static CONF_PARSER module_config[] = {@@ -69,6 +70,8 @@  "no" },{ "with_cisco_vsa_hack",PW_TYPE_BOOLEAN,  offsetof(rlm_preprocess_t,with_cisco_vsa_hack), NULL, "no" },
+   { "with_alvarion_vsa_hack",PW_TYPE_BOOLEAN,+ offsetof(rlm_preprocess_t,with_alvarion_vsa_hack), NULL, "no" },{ NULL, -1, 0, NULL, NULL } };@@ -115,7 +118,7 @@
charnewattr[MAX_STRING_LEN];for ( ; vp != NULL; vp = vp->next) {-   vendorcode = (vp->attribute >> 16); /* HACK! */+   vendorcode = VENDOR(vp->attribute);
if (!((vendorcode == 9) || (vendorcode == 6618))) continue; /* not a Cisco or Quintum VSA, continue */if (vp->type != PW_TYPE_STRING) continue;@@ -170,6 +173,26 @@}
 }++/*+ * Don't even ask what this is doing...+ */+static void alvarion_vsa_hack(VALUE_PAIR *vp)+{+   int vendorcode;+   int number = 1;+
+   for ( ; vp != NULL; vp = vp->next) {+   vendorcode = VENDOR(vp->attribute);+   if (vendorcode != 12394) continue;+   if (vp->type != PW_TYPE_STRING) continue;
++   vp->attribute = number | (12394 << 16);+   snprintf(vp->name, sizeof(vp->name),+"Breezecom-Attr%d", number++);+   }
+}+ /*  * Mangle username if needed, IN PLACE.  */@@ -515,6 +538,14 @@cisco_vsa_hack(request->packet->vps);}+   if (data->with_alvarion_vsa_hack) {
+   /*+*  We need to run this hack because the Alvarion+*  people are crazy.+*/+   alvarion_vsa_hack(request->packet->vps);
+   }+/* *  Note that we add the Request-Src-IP-Address to the request *  structure BEFORE checking huntgroup access.  This allows-List info/subscribe/unsubscribe? See 
http://www.freeradius.org/list/users.html-- Robert Dukes 
- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Re: Alvarion attributes Re: (no subject)

2006-07-13 Thread Alan DeKok
"Robert Dukes" <[EMAIL PROTECTED]> wrote:
> This really sucks :) We invested so much into the gear here as our project
> is funding by caring people. So there is no way to get this done ah 

  Try the patch below, which should work in 1.1.x.

No guarantees... it just compiles, and I haven't tested it.
You'll also have to create a dictionary, but I leave that part up to
you.

  Alan DeKok.

Index: src/include/libradius.h
===
RCS file: /source/radiusd/src/include/libradius.h,v
retrieving revision 1.76.2.2.2.9
diff -u -r1.76.2.2.2.9 libradius.h
--- src/include/libradius.h 15 Jun 2006 21:47:14 -  1.76.2.2.2.9
+++ src/include/libradius.h 13 Jul 2006 21:22:18 -
@@ -65,12 +65,13 @@
 #define CHAP_VALUE_LENGTH   16
 #define MAX_STRING_LEN 254 /* RFC2138: string 0-253 octets */
 
+#  define VENDOR(x)((x >> 16) & 0x)
+
 #ifdef _LIBRADIUS
 #  define AUTH_HDR_LEN 20
 #  define VENDORPEC_USR429
 #define VENDORPEC_LUCENT   4846
 #define VENDORPEC_STARENT  8164
-#  define VENDOR(x)((x >> 16) & 0x)
 #  define DEBUGif (librad_debug) printf
 #  define debug_pair(vp)   do { if (librad_debug) { \
putchar('\t'); \
Index: src/modules/rlm_preprocess/rlm_preprocess.c
===
RCS file: /source/radiusd/src/modules/rlm_preprocess/rlm_preprocess.c,v
retrieving revision 1.52.2.1.2.1
diff -u -r1.52.2.1.2.1 rlm_preprocess.c
--- src/modules/rlm_preprocess/rlm_preprocess.c 5 May 2006 17:31:53 -   
1.52.2.1.2.1
+++ src/modules/rlm_preprocess/rlm_preprocess.c 13 Jul 2006 21:22:18 -
@@ -48,6 +48,7 @@
int with_ntdomain_hack;
int with_specialix_jetstream_hack;
int with_cisco_vsa_hack;
+   int with_alvarion_vsa_hack;
 } rlm_preprocess_t;
 
 static CONF_PARSER module_config[] = {
@@ -69,6 +70,8 @@
  "no" },
{ "with_cisco_vsa_hack",PW_TYPE_BOOLEAN,
  offsetof(rlm_preprocess_t,with_cisco_vsa_hack), NULL, "no" },
+   { "with_alvarion_vsa_hack",PW_TYPE_BOOLEAN,
+ offsetof(rlm_preprocess_t,with_alvarion_vsa_hack), NULL, "no" },
 
{ NULL, -1, 0, NULL, NULL }
 };
@@ -115,7 +118,7 @@
charnewattr[MAX_STRING_LEN];
 
for ( ; vp != NULL; vp = vp->next) {
-   vendorcode = (vp->attribute >> 16); /* HACK! */
+   vendorcode = VENDOR(vp->attribute);
if (!((vendorcode == 9) || (vendorcode == 6618))) continue; /* 
not a Cisco or Quintum VSA, continue */
 
if (vp->type != PW_TYPE_STRING) continue;
@@ -170,6 +173,26 @@
}
 }
 
+
+/*
+ * Don't even ask what this is doing...
+ */
+static void alvarion_vsa_hack(VALUE_PAIR *vp)
+{
+   int vendorcode;
+   int number = 1;
+
+   for ( ; vp != NULL; vp = vp->next) {
+   vendorcode = VENDOR(vp->attribute);
+   if (vendorcode != 12394) continue;
+   if (vp->type != PW_TYPE_STRING) continue;
+
+   vp->attribute = number | (12394 << 16);
+   snprintf(vp->name, sizeof(vp->name),
+"Breezecom-Attr%d", number++);
+   }
+}
+
 /*
  * Mangle username if needed, IN PLACE.
  */
@@ -515,6 +538,14 @@
cisco_vsa_hack(request->packet->vps);
}
 
+   if (data->with_alvarion_vsa_hack) {
+   /*
+*  We need to run this hack because the Alvarion
+*  people are crazy.
+*/
+   alvarion_vsa_hack(request->packet->vps);
+   }
+
/*
 *  Note that we add the Request-Src-IP-Address to the request
 *  structure BEFORE checking huntgroup access.  This allows

- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html


Re: Alvarion attributes Re: (no subject)

2006-07-13 Thread Robert Dukes
This really sucks :) We invested so much into the gear here as our project is funding by caring people. So there is no way to get this done ah On 7/14/06, 
Alan DeKok <[EMAIL PROTECTED]> wrote:
"Robert Dukes" <[EMAIL PROTECTED]> wrote:> Breezenet/Breezecom/Alvarion VSA's. These NASs send> Ethernet port data in VSAs (up to 11 per accounting request) but
> unfortunately dont use the same attribute numbers each time. Instead,> the attribute number increments each time, then wraps at 256. Radiator> automatically maps the fist one in a packet to Breezecom-Attr1, the
> second to Breezecom-Attr2 etc through to Breezecom-Attr11.  Ah.  *That* vendor.  My suggestion is to throw away their equipmentand buy equipment that works.  Barring that, file a bug with them, and
tell them their product is retarded.  If you *have* to use their equipment, write a module to do thatre-mapping.  It should be 30-40 lines of Perl, or about 200 lines of C.  Alan DeKok.-List info/subscribe/unsubscribe? See 
http://www.freeradius.org/list/users.html-- Robert Dukes 
- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html