You follow the dictionary in the order set inside of it. Once you hit the end of your list of attributes the QoS profile is complete. Keep in mind that each service flow starts with: Alvarion-R3-IF-Name+=cpe_mgnt_sg, Alvarion-PDFID+=1, WiMAX-Packet-Data-Flow-Id+=1, If you want a second flow, you would start with the following: Alvarion-R3-IF-Name+=cpe_data_sg, Alvarion-PDFID+=21, WiMAX-Packet-Data-Flow-Id+=21, .... etc. The += allows you to reuse an attribute in your response. Hit me offlist if you have specific Alvarion ASN/AAA questions. | David Peterson | Senior Engineer | Wireless Connections | | 4077 | www.wirelessconnections.net | -----Original Message----- From: freeradius-users-bounces+david.peterson=acc-corp.net@lists.freeradius.org [mailto:freeradius-users-bounces+david.peterson=acc-corp.net@lists.freeradiu s.org] On Behalf Of Sven Tantau Sent: Thursday, December 20, 2012 9:13 AM To: freeradius-users@lists.freeradius.org Subject: Sub-TLVs how to have the same kind of descriptor twice Hello, I am running version 3.0.0 and have a question about sub-tlvs: I am looking at: WiMAX-QoS-Descriptor as it is defined in dictionary.wimax.alvarion (the standard dictionary.wimax does not get included/is commented out) This is the situation: My reply has to contain two QoS profiles. testingstuff@internet.ao Cleartext-Password := "sven" Alvarion-R3-IF-Name+=cpe_mgnt_sg, Alvarion-PDFID+=1, WiMAX-Packet-Data-Flow-Id+=1, WiMAX-Direction+=3, WiMAX-Transport-Type+=1, WiMAX-Uplink-QOS-Id+=2, WiMAX-Downlink-QOS-Id+=3, WiMAX-ClassifierID+=1, WiMAX-Classifier-Priority+=2, WiMAX-Classifier-Direction+=3, WiMAX-IP-TOS-DSCP-Range-and-Mask+=0x1818FF, WiMAX-QoS-Id+=2, WiMAX-Schedule-Type+=2, WiMAX-Traffic-Priority+=1, WiMAX-Maximum-Sustained-Traffic-Rate+=128000, WiMAX-QoS-Id+=3, WiMAX-Schedule-Type+=2, WiMAX-Traffic-Priority+=1, WiMAX-Maximum-Sustained-Traffic-Rate+=128000 I checked the debug output and could see this: Alvarion-R3-IF-Name += "cpe_mgnt_sg" 01 0d 63 70 65 5f 6d 67 6e 74 5f 73 67 ..(skipped some attributes).. WiMAX-Uplink-QOS-Id += 2 07 03 02 WiMAX-Downlink-QOS-Id += 3 08 03 03 WiMAX-ClassifierID += 1 01 03 01 WiMAX-Classifier-Priority += 2 02 03 02 WiMAX-Classifier-Direction += Bi-Directional 04 03 03 WiMAX-IP-TOS-DSCP-Range-and-Mask += 0x1818ff 07 05 18 18 ff WiMAX-Classifier = ... 0b 10 01 03 01 02 03 02 04 03 03 07 05 18 18 ff WiMAX-Packet-Flow-Descriptor = ... 1a 29 000060b5 (24757) 1c 23 00 01 04 00 01 04 03 03 06 03 01 07 03 02 08 03 03 0b 10 01 03 01 02 03 02 04 03 03 07 05 18 18 ff WiMAX-QoS-Id += 2 01 03 02 WiMAX-Schedule-Type += Best-Effort 04 03 02 WiMAX-Traffic-Priority += 1 05 03 01 WiMAX-Maximum-Sustained-Traffic-Rate += 128000 06 06 00 01 f4 00 WiMAX-QoS-Id += 3 01 03 03 WiMAX-Schedule-Type += Best-Effort 04 03 02 WiMAX-Traffic-Priority += 1 05 03 01 WiMAX-Maximum-Sustained-Traffic-Rate += 128000 06 06 00 01 f4 00 WiMAX-QoS-Descriptor = ... 1a 27 000060b5 (24757) 1d 21 00 01 03 02 04 03 02 05 03 01 06 06 00 01 f4 00 01 03 03 04 03 02 05 03 01 06 06 00 01 f4 00 You can see that the 2 QoS profiles are both contained in the created WiMAX-QoS-Descriptor. What I need is to have two WiMAX-QoS-Descriptors. One for each QoS definition. I can archive that by putting another attribute between the QoS attributes: xnewstuff@internet.ao Cleartext-Password := "sven" Alvarion-R3-IF-Name+=cpe_mgnt_sg, ...(skipped some attributes)... WiMAX-QoS-Id+=2, WiMAX-Schedule-Type+=2, WiMAX-Traffic-Priority+=1, WiMAX-Maximum-Sustained-Traffic-Rate+=128000, added-> Acct-Interim-Interval+=60, WiMAX-QoS-Id+=3, WiMAX-Schedule-Type+=2, WiMAX-Traffic-Priority+=1, WiMAX-Maximum-Sustained-Traffic-Rate+=128000 The debug output now looks like this: (and is pretty close to what I expect) Alvarion-R3-IF-Name += "cpe_mgnt_sg" 01 0d 63 70 65 5f 6d 67 6e 74 5f 73 67 ...(some attributes skipped).... WiMAX-QoS-Id += 2 01 03 02 WiMAX-Schedule-Type += Best-Effort 04 03 02 WiMAX-Traffic-Priority += 1 05 03 01 WiMAX-Maximum-Sustained-Traffic-Rate += 128000 06 06 00 01 f4 00 WiMAX-QoS-Descriptor = ... 1a 18 000060b5 (24757) 1d 12 00 01 03 02 04 03 02 05 03 01 06 06 00 01 f4 00 Acct-Interim-Interval += 60 55 06 00 00 00 3c WiMAX-QoS-Id += 3 01 03 03 WiMAX-Schedule-Type += Best-Effort 04 03 02 WiMAX-Traffic-Priority += 1 05 03 01 WiMAX-Maximum-Sustained-Traffic-Rate += 128000 06 06 00 01 f4 00 WiMAX-QoS-Descriptor = ... 1a 18 000060b5 (24757) 1d 12 00 01 03 03 04 03 02 05 03 01 06 06 00 01 f4 00 Somehow the freeradius now sees that the first QoS flow is finished and creates the WiMAX-QoS-Descriptor out of the values. Then it puts in the newly introduced value (Acct-Interim-Interval+=60). And at the end it created the second WiMAX-QoS-Descriptor out of the definition for the second QoS flow. In case it is not clear: I would like to have the two QoS flows to create two WiMAX-QoS-Descriptors, instead of one that combines the two. How does freeradius know when a 'sub-TLV' definition is finished? What am I missing? I hope that this request is somehow understandable. Please let me know in case you need further clarification or if you want me to include more information or debug output. Thanks for your good work. Best regards, Sven -- Internet Technologies Angola / Systems Department Tel: +244 (227) 286 000 / (924) 770 290 / (924) 770 291 Skype: internet-technologies-angola Mobile: +244 931 696413 Mail: sven@internet.ao - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html