auth_core: don't use anonymous unions to make certain gcc versions happy
diff --git a/include/osmocom/crypt/auth.h b/include/osmocom/crypt/auth.h
index 23e104c..30e16e8 100644
--- a/include/osmocom/crypt/auth.h
+++ b/include/osmocom/crypt/auth.h
@@ -37,7 +37,7 @@
 		struct {
 			uint8_t ki[16];
 		} gsm;
-	};
+	} u;
 };
 
 /* data structure describing a computed auth vector, generated by AuC */
diff --git a/src/gsm/auth_comp128v1.c b/src/gsm/auth_comp128v1.c
index 2e1ad2c..41aef71 100644
--- a/src/gsm/auth_comp128v1.c
+++ b/src/gsm/auth_comp128v1.c
@@ -28,7 +28,7 @@
 			  struct osmo_sub_auth_data *aud,
 			  const uint8_t *_rand)
 {
-	comp128(aud->gsm.ki, _rand, vec->sres, vec->kc);
+	comp128(aud->u.gsm.ki, _rand, vec->sres, vec->kc);
 	vec->auth_types = OSMO_AUTH_TYPE_GSM;
 
 	return 0;
diff --git a/src/gsm/auth_milenage.c b/src/gsm/auth_milenage.c
index f2d2ffa..2a9ba33 100644
--- a/src/gsm/auth_milenage.c
+++ b/src/gsm/auth_milenage.c
@@ -62,17 +62,17 @@
 	uint8_t sqn[6];
 	int rc;
 
-	sqn_u64_to_48bit(sqn, aud->umts.sqn);
-	milenage_generate(aud->umts.opc, aud->umts.amf, aud->umts.k,
+	sqn_u64_to_48bit(sqn, aud->u.umts.sqn);
+	milenage_generate(aud->u.umts.opc, aud->u.umts.amf, aud->u.umts.k,
 			  sqn, _rand,
 			  vec->autn, vec->ik, vec->ck, vec->res, &res_len);
 	vec->res_len = res_len;
-	rc = gsm_milenage(aud->umts.opc, aud->umts.k, _rand, vec->sres, vec->kc);
+	rc = gsm_milenage(aud->u.umts.opc, aud->u.umts.k, _rand, vec->sres, vec->kc);
 	if (rc < 0)
 		return rc;
 
 	vec->auth_types = OSMO_AUTH_TYPE_UMTS | OSMO_AUTH_TYPE_GSM;
-	aud->umts.sqn++;
+	aud->u.umts.sqn++;
 
 	return 0;
 }
@@ -85,12 +85,12 @@
 	uint8_t sqn_out[6];
 	int rc;
 
-	rc = milenage_auts(aud->umts.opc, aud->umts.k,
+	rc = milenage_auts(aud->u.umts.opc, aud->u.umts.k,
 			   rand_auts, auts, sqn_out);
 	if (rc < 0)
 		return rc;
 
-	aud->umts.sqn = sqn_48bit_to_u64(sqn_out) + 1;
+	aud->u.umts.sqn = sqn_48bit_to_u64(sqn_out) + 1;
 
 	return milenage_gen_vec(vec, aud, _rand);
 }
diff --git a/tests/auth/milenage_test.c b/tests/auth/milenage_test.c
index a143d26..da7c800 100644
--- a/tests/auth/milenage_test.c
+++ b/tests/auth/milenage_test.c
@@ -27,7 +27,7 @@
 static struct osmo_sub_auth_data test_aud = {
 	.type = OSMO_AUTH_TYPE_UMTS,
 	.algo = OSMO_AUTH_ALG_MILENAGE,
-	.umts = {
+	.u.umts = {
 		.opc = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
 			 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
 		.k =   { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
@@ -70,7 +70,7 @@
 	if (rc < 0) {
 		printf("AUTS failed\n");
 	} else {
-		printf("AUTS success: SEQ.MS = %lu\n", test_aud.umts.sqn);
+		printf("AUTS success: SEQ.MS = %lu\n", test_aud.u.umts.sqn);
 	}
 
 	exit(0);
diff --git a/utils/osmo-auc-gen.c b/utils/osmo-auc-gen.c
index 9097697..62b5128 100644
--- a/utils/osmo-auc-gen.c
+++ b/utils/osmo-auc-gen.c
@@ -102,12 +102,12 @@
 		case 'k':
 			switch (test_aud.type) {
 			case OSMO_AUTH_TYPE_GSM:
-				rc = osmo_hexparse(optarg, test_aud.gsm.ki,
-						   sizeof(test_aud.gsm.ki));
+				rc = osmo_hexparse(optarg, test_aud.u.gsm.ki,
+						   sizeof(test_aud.u.gsm.ki));
 				break;
 			case OSMO_AUTH_TYPE_UMTS:
-				rc = osmo_hexparse(optarg, test_aud.umts.k,
-						   sizeof(test_aud.umts.k));
+				rc = osmo_hexparse(optarg, test_aud.u.umts.k,
+						   sizeof(test_aud.u.umts.k));
 				break;
 			default:
 				fprintf(stderr, "please specify 2g/3g first!\n");
@@ -118,16 +118,16 @@
 				fprintf(stderr, "Only UMTS has OPC\n");
 				exit(2);
 			}
-			rc = osmo_hexparse(optarg, test_aud.umts.opc,
-					   sizeof(test_aud.umts.opc));
+			rc = osmo_hexparse(optarg, test_aud.u.umts.opc,
+					   sizeof(test_aud.u.umts.opc));
 			break;
 		case 'f':
 			if (test_aud.type != OSMO_AUTH_TYPE_UMTS) {
 				fprintf(stderr, "Only UMTS has AMF\n");
 				exit(2);
 			}
-			rc = osmo_hexparse(optarg, test_aud.umts.amf,
-					   sizeof(test_aud.umts.amf));
+			rc = osmo_hexparse(optarg, test_aud.u.umts.amf,
+					   sizeof(test_aud.u.umts.amf));
 			break;
 		case 's':
 			if (test_aud.type != OSMO_AUTH_TYPE_UMTS) {
@@ -135,7 +135,7 @@
 				exit(2);
 			}
 			ul = strtoul(optarg, 0, 10);
-			test_aud.umts.sqn = ul;
+			test_aud.u.umts.sqn = ul;
 			break;
 		case 'r':
 			rc = osmo_hexparse(optarg, _rand, sizeof(_rand));
@@ -175,7 +175,7 @@
 	if (rc < 0) {
 		printf("AUTS failed\n");
 	} else {
-		printf("AUTS success: SEQ.MS = %lu\n", test_aud.umts.sqn);
+		printf("AUTS success: SEQ.MS = %lu\n", test_aud.u.umts.sqn);
 	}
 #endif
 	exit(0);