epdg: Tx Service-Selection in s6b AAR msg

This AVP is actually mandatory as per Table 9.1.2.2.1 in TS 29.273.

Change-Id: I86d01a0f5148e98b7faebbe0e3d7617a6c90b559
diff --git a/epdg/EPDG_Tests.ttcn b/epdg/EPDG_Tests.ttcn
index 5710d0c..580d4d4 100644
--- a/epdg/EPDG_Tests.ttcn
+++ b/epdg/EPDG_Tests.ttcn
@@ -114,6 +114,7 @@
 
 type record EPDG_ConnHdlrPars {
 	hexstring imsi,
+	charstring apn,
 	charstring ue_ip,
 
 	/* TEI (Data) local side */
@@ -143,6 +144,7 @@
 runs on MTC_CT return EPDG_ConnHdlrPars {
 	var EPDG_ConnHdlrPars pars := {
 		imsi := f_gen_imsi(imsi_suffix),
+		apn := "internet",
 		ue_ip := "192.168.123.50",
 		teid := '00000000'O,
 		teic := '00000000'O,
@@ -375,7 +377,9 @@
 	 */
 	f_epdg_connhldr_S6b_expect_eteid(ete_id);
 
-	S6b.send(ts_DIA_S6b_AAR(g_pars.imsi, int2oct(DIA_TS29_373_MIP6_Feature_Vector_GTPv2_SUPPORTED, 8), hbh_id := hbh_id, ete_id := ete_id));
+	S6b.send(ts_DIA_S6b_AAR(g_pars.imsi,
+				int2oct(DIA_TS29_373_MIP6_Feature_Vector_GTPv2_SUPPORTED, 8),
+				g_pars.apn, hbh_id := hbh_id, ete_id := ete_id));
 	alt {
 	[] S6b.receive(tr_DIA_S6b_AAA) -> value rx_dia {}
 	[] S6b.receive(PDU_DIAMETER:?) -> value rx_dia {
diff --git a/library/DIAMETER_ts29_273_Templates.ttcn b/library/DIAMETER_ts29_273_Templates.ttcn
index 3daf299..38355e7 100644
--- a/library/DIAMETER_ts29_273_Templates.ttcn
+++ b/library/DIAMETER_ts29_273_Templates.ttcn
@@ -207,6 +207,7 @@
 template (value) PDU_DIAMETER
 ts_DIA_S6b_AAR(template (value) hexstring imsi,
 	       template (value) MIPv6_NONE_MIP6_Feature_Vector mip6_feat_vec,
+	       template (value) charstring apn,
 	       template (value) octetstring sess_id := c_def_sess_id,
 	       template (value) charstring orig_host := "pgw.localdomain",
 	       template (value) charstring orig_realm := "localdomain",
@@ -227,7 +228,8 @@
 			ts_AVP_DestinationRealm(dest_realm),
 			ts_AVP_AuthRequestType(AUTHORIZE_ONLY),
 			ts_AVP_UserNameImsi(valueof(imsi)),
-			ts_AVP_MIP6FeatureVector(mip6_feat_vec)
+			ts_AVP_MIP6FeatureVector(mip6_feat_vec),
+			ts_AVP_ServiceSelection(valueof(apn))
 			/* TODO: Lots other optional */
 	});