mirror of
				https://github.com/berlin-open-wireless-lab/DAWN.git
				synced 2025-03-09 15:40:12 +00:00 
			
		
		
		
	ubus: addd empty aps
It was requested that DAWN should show the whole network, even if no client is connected to an AP.
This commit is contained in:
		
							parent
							
								
									2d1a6f9c0c
								
							
						
					
					
						commit
						3a6ef89998
					
				
					 1 changed files with 38 additions and 34 deletions
				
			
		| 
						 | 
					@ -200,46 +200,47 @@ int build_network_overview(struct blob_buf *b) {
 | 
				
			||||||
    blob_buf_init(b, 0);
 | 
					    blob_buf_init(b, 0);
 | 
				
			||||||
    int m;
 | 
					    int m;
 | 
				
			||||||
    for (m = 0; m <= ap_entry_last; m++) {
 | 
					    for (m = 0; m <= ap_entry_last; m++) {
 | 
				
			||||||
        if (m > 0) {
 | 
					        bool add_ssid = false;
 | 
				
			||||||
            if (strcmp((char *) ap_array[m].ssid, (char *) ap_array[m - 1].ssid) == 0) {
 | 
					        bool close_ssid = false;
 | 
				
			||||||
                continue;
 | 
					
 | 
				
			||||||
            }
 | 
					        if (m == 0 || strcmp((char *) ap_array[m].ssid, (char *) ap_array[m - 1].ssid) != 0) {
 | 
				
			||||||
 | 
					            add_ssid = true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (m >= ap_entry_last || strcmp((char *) ap_array[m].ssid, (char *) ap_array[m + 1].ssid) != 0) {
 | 
				
			||||||
 | 
					            close_ssid = true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if(add_ssid)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
            ssid_list = blobmsg_open_table(b, (char *) ap_array[m].ssid);
 | 
					            ssid_list = blobmsg_open_table(b, (char *) ap_array[m].ssid);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        int i;
 | 
					 | 
				
			||||||
        for (i = 0; i <= client_entry_last; i++) {
 | 
					 | 
				
			||||||
            ap ap_entry_i = ap_array_get_ap(client_array[i].bssid_addr);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (strcmp((char *) ap_entry_i.ssid, (char *) ap_array[m].ssid) != 0) {
 | 
					 | 
				
			||||||
                continue;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
            int k;
 | 
					        sprintf(ap_mac_buf, MACSTR, MAC2STR(ap_array[m].bssid_addr));
 | 
				
			||||||
            sprintf(ap_mac_buf, MACSTR, MAC2STR(client_array[i].bssid_addr));
 | 
					 | 
				
			||||||
        ap_list = blobmsg_open_table(b, ap_mac_buf);
 | 
					        ap_list = blobmsg_open_table(b, ap_mac_buf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            blobmsg_add_u32(b, "freq", ap_entry_i.freq);
 | 
					        blobmsg_add_u32(b, "freq", ap_array[m].freq);
 | 
				
			||||||
            blobmsg_add_u32(b, "channel_utilization", ap_entry_i.channel_utilization);
 | 
					        blobmsg_add_u32(b, "channel_utilization", ap_array[m].channel_utilization);
 | 
				
			||||||
            blobmsg_add_u32(b, "num_sta", ap_entry_i.station_count);
 | 
					        blobmsg_add_u32(b, "num_sta", ap_array[m].station_count);
 | 
				
			||||||
            blobmsg_add_u8(b, "ht_support", ap_entry_i.ht_support);
 | 
					        blobmsg_add_u8(b, "ht_support", ap_array[m].ht_support);
 | 
				
			||||||
            blobmsg_add_u8(b, "vht_support", ap_entry_i.vht_support);
 | 
					        blobmsg_add_u8(b, "vht_support", ap_array[m].vht_support);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        char *nr;
 | 
					        char *nr;
 | 
				
			||||||
        nr = blobmsg_alloc_string_buffer(b, "neighbor_report", NEIGHBOR_REPORT_LEN);
 | 
					        nr = blobmsg_alloc_string_buffer(b, "neighbor_report", NEIGHBOR_REPORT_LEN);
 | 
				
			||||||
            sprintf(nr, "%s", ap_entry_i.neighbor_report);
 | 
					        sprintf(nr, "%s", ap_array[m].neighbor_report);
 | 
				
			||||||
        blobmsg_add_string_buffer(b);
 | 
					        blobmsg_add_string_buffer(b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (k = i; k <= client_entry_last; k++) {
 | 
					        int k;
 | 
				
			||||||
                if (!mac_is_equal(client_array[k].bssid_addr, client_array[i].bssid_addr)) {
 | 
					        for (k = 0; k <= client_entry_last; k++) {
 | 
				
			||||||
                    i = k - 1;
 | 
					
 | 
				
			||||||
 | 
					            if (mac_is_greater(ap_array[m].bssid_addr, client_array[k].bssid_addr))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
                } else if (k == client_entry_last) {
 | 
					 | 
				
			||||||
                    i = k;
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (mac_is_equal(ap_array[m].bssid_addr, client_array[k].bssid_addr)) {
 | 
				
			||||||
                sprintf(client_mac_buf, MACSTR, MAC2STR(client_array[k].client_addr));
 | 
					                sprintf(client_mac_buf, MACSTR, MAC2STR(client_array[k].client_addr));
 | 
				
			||||||
                client_list = blobmsg_open_table(b, client_mac_buf);
 | 
					                client_list = blobmsg_open_table(b, client_mac_buf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if(strlen(client_array[k].signature) != 0)
 | 
					                if(strlen(client_array[k].signature) != 0)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    char *s;
 | 
					                    char *s;
 | 
				
			||||||
| 
						 | 
					@ -262,10 +263,13 @@ int build_network_overview(struct blob_buf *b) {
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                blobmsg_close_table(b, client_list);
 | 
					                blobmsg_close_table(b, client_list);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            blobmsg_close_table(b, ap_list);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        blobmsg_close_table(b, ap_list);
 | 
				
			||||||
 | 
					        if(close_ssid)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
            blobmsg_close_table(b, ssid_list);
 | 
					            blobmsg_close_table(b, ssid_list);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue