BSSGP_Emulation: Handle FLUSH_LL_ACK differently

The BVCI that this message might contain should not be used to route it.
It referes to the BVCI that the PDUs were transferred to (BVCI (new)).

Instead broadcast to all components.

Change-Id: Ia1df35da44ef28d91501bb898e1059bf1390129b
diff --git a/library/BSSGP_Emulation.ttcnpp b/library/BSSGP_Emulation.ttcnpp
index 8d27fd1..23c8d03 100644
--- a/library/BSSGP_Emulation.ttcnpp
+++ b/library/BSSGP_Emulation.ttcnpp
@@ -333,6 +333,16 @@
 		}
 		}
 
+	/* Broadcast FLUSH_LL_ACK no matter the BVCI */
+	[] BSCP.receive(f_BnsUdInd(tr_BSSGP_FLUSH_LL_ACK(?, ?, ?), 0)) -> value udi {
+		log("Rx FLUSH_LL_ACK: broadcasting");
+		for (var integer i := 0; i < lengthof(BvcTable); i := i+1) {
+			if (isbound(BvcTable[i].comp_ref) and BvcTable[i].comp_ref != null) {
+				BVC.send(udi) to BvcTable[i].comp_ref;
+			}
+		}
+	}
+
 	/* Route based on PTP BVCI in payload/IE of signaling PDU */
 	[] BSCP.receive(f_BnsUdInd(?, 0)) -> value udi {
 		var template (omit) BssgpBvci ptp_bvci := f_BSSGP_BVCI_get(udi.bssgp);
@@ -1163,6 +1173,19 @@
 		}
 	}
 
+	[] BVC.receive(tr_ptp_BnsUdInd(tr_BSSGP_FLUSH_LL_ACK(?, ?, ?), 0)) -> value udi {
+		var BssgpDecoded dec := f_dec_bssgp(udi.bssgp);
+
+		log("Broadcasting FLUSH_LL_ACK ", dec);
+		/* broadcast this message to all components */
+		// TITAN DOESN'T DO THIS, *SIGH*: "BSSGP_SP.send(dec) to all component;"
+		for (var integer i := 0; i < sizeof(ClientTable); i := i+1) {
+			if (isbound(ClientTable[i].comp_ref) and ClientTable[i].comp_ref != null) {
+				f_send_bssgp_dec(dec, ClientTable[i].comp_ref, BSSGP_SP_SIG);
+			}
+		}
+	}
+
 	/* Any other SIG BSSGP message: If it has TLLI, route to component; otherwise broadcast */
 	[] BVC.receive(tr_ptp_BnsUdInd(?, 0)) -> value udi {
 		var BssgpDecoded dec := f_dec_bssgp(udi.bssgp);