From 718bb36ae58944ea6eaa86a3df646e0797ce615c Mon Sep 17 00:00:00 2001
From: Luke Howard <lukeh@padl.com>
Date: Mon, 14 Nov 2011 13:42:10 +1100
Subject: don't use GCC extensions in generated code

---
 lib/radius/client.h   |  3 ---
 lib/radius/convert.pl | 59 ++++++++++++++++++++++++++++++++-------------------
 2 files changed, 37 insertions(+), 25 deletions(-)

(limited to 'lib/radius')

diff --git a/lib/radius/client.h b/lib/radius/client.h
index df9f834..6c1526d 100644
--- a/lib/radius/client.h
+++ b/lib/radius/client.h
@@ -239,12 +239,9 @@ typedef struct attr_flags {
 	unsigned int		has_tlv : 1; /* has sub attributes */
 	unsigned int		is_tlv : 1; /* is a sub attribute */
 #endif
-#ifdef VENDOR_EXTENDED
 	unsigned int		extended : 1; /* extended attribute */
 	unsigned int		extended_flags : 1; /* with flag */
 	unsigned int		evs : 1;	    /* extended VSA */
-#endif
-
 	uint8_t		        encrypt;      /**< Attribute encryption method */
 	uint8_t			length;	      /**< The expected length of the attribute */
 } ATTR_FLAGS;
diff --git a/lib/radius/convert.pl b/lib/radius/convert.pl
index 9cf8731..7ca424e 100755
--- a/lib/radius/convert.pl
+++ b/lib/radius/convert.pl
@@ -69,19 +69,35 @@ if (scalar keys %vendor > 0) {
     print DICT "const DICT_VENDOR nr_dict_vendors[] = {\n";
     foreach $v (sort keys %vendor) {
 	print DICT "  { \n";
-	print DICT "    .name = \"", $v, "\", \n";
-	print DICT "    .vendor = ", $vendor{$v}{'pec'}, ", \n";
-	print DICT "    .type = ", $vendor{$v}{'type'}, ",\n";
-	print DICT "    .length = ", $vendor{$v}{'length'}, ",\n";
+	print DICT "    " . $vendor{$v}{'pec'} . ", \n";
+	print DICT "    " . $vendor{$v}{'type'} . ",\n";
+	print DICT "    " . $vendor{$v}{'length'} . ",\n";
+	print DICT "    \"" . $v, "\"\n";
 	print DICT "  },\n";
     }
-    print DICT "\n  { .name = NULL, }\n";
+    print DICT "  { \n";
+    print DICT "    0,\n";
+    print DICT "    0,\n";
+    print DICT "    0,\n";
+    print DICT "    NULL\n";
+    print DICT "  },\n";
     print DICT "};\n\n";
 }
 
 # needed for later.
 $vendor{""}{'pec'} = 0;
 
+sub printAttrFlag
+{
+    my $tmp = $attributes{$attr_val}{'flags'}{$_[0]};
+
+    if (!$tmp) {
+	$tmp = 0;
+    }
+
+    print DICT $tmp . ", ";
+}
+
 #
 #  Print DICT out the attributes sorted by number.
 #
@@ -92,24 +108,23 @@ foreach $attr_val (sort {$a <=> $b} keys %attributes) {
     print DICT "  { /* $offset */ \n";
 
     if (defined $attributes{$attr_val}{'raw'}) {
-	print DICT "    .name = NULL, \n";
+	print DICT "    0\n",
     } else {
-	print DICT "    .name = \"", $attributes{$attr_val}{'name'}, "\", \n";
-	if ($attributes{$attr_val}{'vendor'}) {
-	    print DICT "    .vendor = ", $attributes{$attr_val}{'vendor'}, ", \n";
-	}
-
-	print DICT "    .attr = ", $attributes{$attr_val}{'value'}, ", \n";
-	print DICT "    .type = ", $attributes{$attr_val}{'type'}, ", \n";
-	
-	if ($attributes{$attr_val}{'flags'}) {
-	    print DICT "    .flags = {\n";
-	    foreach $flag (keys %{$attributes{$attr_val}{'flags'}}) {
-		print DICT "      .$flag = $attributes{$attr_val}{'flags'}{$flag},\n";
-	    }
-	    print DICT "    },\n";
-	}
-
+	print DICT "    ", $attributes{$attr_val}{'value'}, ", \n";
+	print DICT "    ", $attributes{$attr_val}{'type'}, ", \n";
+	print DICT "    ", $attributes{$attr_val}{'vendor'}, ", \n";
+	print DICT "    { ";
+	&printAttrFlag('has_tag');
+	&printAttrFlag('unknown');
+#	&printAttrFlag('has_tlv');
+#	&printAttrFlag('is_tlv');
+	&printAttrFlag('extended');
+	&printAttrFlag('extended_flags');
+	&printAttrFlag('evs');
+	&printAttrFlag('encrypt');
+	&printAttrFlag('length');
+	print DICT "},\n";
+	print DICT "    \"", $attributes{$attr_val}{'name'}, "\", \n";
 	$num_names++;
     }
 
-- 
cgit v1.1