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);
