[ipaccess-config] fix bugs in generating the PHYSICAL CONFIG attribute

... while asking the BTS to perform tests for us.  The length of the
ARFCN whitelist is the actual length in bytes, not the number of 16bit
ARFCN numbers.

Also, implement a limit, either by rxlevel or by number of ARFCN
that should end up in the whitelist.
diff --git a/openbsc/src/ipaccess/network_listen.c b/openbsc/src/ipaccess/network_listen.c
index 7625eec..23e404f 100644
--- a/openbsc/src/ipaccess/network_listen.c
+++ b/openbsc/src/ipaccess/network_listen.c
@@ -40,18 +40,23 @@
 
 #define WHITELIST_MAX_SIZE ((NUM_ARFCNS*2)+2+1)
 
-int ipac_rxlevstat2whitelist(uint16_t *buf, const struct rxlev_stats *st)
+int ipac_rxlevstat2whitelist(uint16_t *buf, const struct rxlev_stats *st, uint8_t min_rxlev,
+			     uint16_t max_num_arfcns)
 {
 	int i;
 	unsigned int num_arfcn = 0;
 
-	for (i = NUM_RXLEVS-1; i >= 0; i--) {
+	for (i = NUM_RXLEVS-1; i >= min_rxlev; i--) {
 		int16_t arfcn = -1;
 
 		while ((arfcn = rxlev_stat_get_next(st, i, arfcn)) >= 0) {
 			*buf++ = htons(arfcn);
 			num_arfcn++;
+
 		}
+
+		if (num_arfcn > max_num_arfcns)
+			break;
 	}
 
 	return num_arfcn;