Skip to content
Snippets Groups Projects
Commit 9f888117 authored by Nevadita's avatar Nevadita Committed by Anjan Chanda
Browse files

map-topology: Added fixes

parent 25d75716
No related merge requests found
......@@ -251,6 +251,9 @@ void topologyd_algo_run(struct topologyd_private *priv)
dbg("sending req to " MACFMT "\n", MAC2STR(p->nbr_list[j].nbr_macid));
topologyd_send_ieee1905_topology_query(priv, p->nbr_list[j].nbr_macid);
}
//Here we also need to send the topology query to neighbors
dbg("sending topology req to " MACFMT "\n", MAC2STR(p->hwaddr));
topologyd_send_ieee1905_topology_query(priv,p->hwaddr);
//Here we also need to send the query for higher layer request
dbg("sending higher layer req to " MACFMT "\n", MAC2STR(p->hwaddr));
topologyd_send_ieee1905_query(priv, p->hwaddr, CMDU_TYPE_HIGHER_LAYER_QUERY, p->ingress_ifr_name, NULL);
......
......@@ -604,12 +604,12 @@ void topology_add_txrx_data (uint8_t *metric, struct topologyd_private *priv)
if(*metric == TLV_TYPE_TRANSMITTER_LINK_METRIC) {
dbg (" Inside the transmitter link metric tlv\n");
struct transmitterLinkMetricTLV *p;
struct transmitterLinkMetricTLV *ptr;
p = (struct transmitterLinkMetricTLV *)metric;
ptr = (struct transmitterLinkMetricTLV *)metric;
memcpy(fr_al_mac_id, p->local_al_address,6);
memcpy(to_al_mac_id, p->neighbor_al_address, 6);
memcpy(fr_al_mac_id, ptr->local_al_address,6);
memcpy(to_al_mac_id, ptr->neighbor_al_address, 6);
res = memcmp (fr_al_mac_id, priv->selfnode.hwaddr, 6);
if (res == 0) {
......@@ -626,16 +626,16 @@ void topology_add_txrx_data (uint8_t *metric, struct topologyd_private *priv)
res = memcmp (n->nbr_list[i].nbr_macid, to_al_mac_id, 6);
if(res != 0)
continue;
n->nbr_list[i].metric_num = p->transmitter_link_metrics_nr;
dbg (" Inside the transmitter link metric tlv ln_metric_num %d\n", p->transmitter_link_metrics_nr);
for (j = 0; j < p->transmitter_link_metrics_nr; j++) {
memcpy(n->nbr_list[i].ln_metric[j].nbr_ifr_addr, p->transmitter_link_metrics[j].neighbor_interface_address, 6);
n->nbr_list[i].ln_metric[j].ieee802dot1br = p->transmitter_link_metrics[j].bridge_flag;
n->nbr_list[i].ln_metric[j].tx_packet_errors = p->transmitter_link_metrics[j].packet_errors;
n->nbr_list[i].ln_metric[j].tx_packet_ok = p->transmitter_link_metrics[j].transmitted_packets;
n->nbr_list[i].ln_metric[j].tx_max_xput = p->transmitter_link_metrics[j].mac_throughput_capacity;
n->nbr_list[i].ln_metric[j].tx_link_availability = p->transmitter_link_metrics[j].link_availability;
n->nbr_list[i].ln_metric[j].tx_phy_rate = p->transmitter_link_metrics[j].phy_rate;
n->nbr_list[i].metric_num = ptr->transmitter_link_metrics_nr;
dbg (" Inside the transmitter link metric tlv ln_metric_num %d\n", ptr->transmitter_link_metrics_nr);
for (j = 0; j < ptr->transmitter_link_metrics_nr; j++) {
memcpy(n->nbr_list[i].ln_metric[j].nbr_ifr_addr, ptr->transmitter_link_metrics[j].neighbor_interface_address, 6);
n->nbr_list[i].ln_metric[j].ieee802dot1br = ptr->transmitter_link_metrics[j].bridge_flag;
n->nbr_list[i].ln_metric[j].tx_packet_errors = ptr->transmitter_link_metrics[j].packet_errors;
n->nbr_list[i].ln_metric[j].tx_packet_ok = ptr->transmitter_link_metrics[j].transmitted_packets;
n->nbr_list[i].ln_metric[j].tx_max_xput = ptr->transmitter_link_metrics[j].mac_throughput_capacity;
n->nbr_list[i].ln_metric[j].tx_link_availability = ptr->transmitter_link_metrics[j].link_availability;
n->nbr_list[i].ln_metric[j].tx_phy_rate = ptr->transmitter_link_metrics[j].phy_rate;
}
}
}
......@@ -686,6 +686,8 @@ void topologyd_dump_node(struct blob_buf *bb, struct node *p, int is_self)
void *bridge_tuple = NULL, *ipv4_param = NULL, *ipv6_param = NULL, *link_array = NULL;
void *table1 = NULL;
int j, k, flag = 0, i = 0;
char addr[16] = {0};
char addr_v6[40] = {0};
hwaddr_ntoa(p->hwaddr, mac_str);
blobmsg_add_string(bb, "ieee1905_macaddr", mac_str);
......@@ -816,12 +818,30 @@ void topologyd_dump_node(struct blob_buf *bb, struct node *p, int is_self)
//Here we show the ipv4 message structure
blobmsg_add_u32(bb, "ipv4_itfr_num", p->ipv4_intf_nbr);
ipv4_param = blobmsg_open_array(bb, "ipv4_params");
for (j = 0; j < p->ipv4_intf_nbr; j++) {
table = blobmsg_open_table(bb, NULL);
hwaddr_ntoa(p->device_ipv4[j].mac_address, mac_str);
blobmsg_add_string(bb, "mac_address", mac_str);
blobmsg_add_string(bb, "ipv4_addr_type",get_ipv4_type(p->device_ipv4[j].ipv4_addr_type));
//TODO for ipv4 address and dhcp address
// ipv4 address
sprintf(addr, "%d.%d.%d.%d", p->device_ipv4[j].ipv4_addr[0],
p->device_ipv4[j].ipv4_addr[1], p->device_ipv4[j].ipv4_addr[2],
p->device_ipv4[j].ipv4_addr[3]);
addr[15] = '\0';
blobmsg_add_string(bb, "ipv4_address", addr);
memset(addr, 0, 16);
// dhcp address
if (p->device_ipv4[j].ipv4_addr_type == IPV4_TYPE_DHCP) {
sprintf(addr, "%d.%d.%d.%d", p->device_ipv4[j].dhcp_addr[0],
p->device_ipv4[j].dhcp_addr[1],
p->device_ipv4[j].dhcp_addr[2],
p->device_ipv4[j].dhcp_addr[3]);
addr[15] = '\0';
blobmsg_add_string(bb, "dhcp_addr", addr);
}
blobmsg_close_table(bb, table);
}
blobmsg_close_array(bb, ipv4_param);
......@@ -834,7 +854,31 @@ void topologyd_dump_node(struct blob_buf *bb, struct node *p, int is_self)
hwaddr_ntoa(p->device_ipv6[j].mac_address, mac_str);
blobmsg_add_string(bb, "mac_address", mac_str);
blobmsg_add_string(bb, "ipv6_addr_type",get_ipv6_type(p->device_ipv6[j].ipv6_addr_type));
//TODO for ipv6 address and dhcp address
//For ipv6 address
sprintf(addr_v6, "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x",
p->device_ipv6[j].ipv6_addr[0], p->device_ipv6[j].ipv6_addr[1], p->device_ipv6[j].ipv6_addr[2],
p->device_ipv6[j].ipv6_addr[3], p->device_ipv6[j].ipv6_addr[4], p->device_ipv6[j].ipv6_addr[5],
p->device_ipv6[j].ipv6_addr[6], p->device_ipv6[j].ipv6_addr[7], p->device_ipv6[j].ipv6_addr[8],
p->device_ipv6[j].ipv6_addr[9], p->device_ipv6[j].ipv6_addr[10], p->device_ipv6[j].ipv6_addr[11],
p->device_ipv6[j].ipv6_addr[12], p->device_ipv6[j].ipv6_addr[13], p->device_ipv6[j].ipv6_addr[14],
p->device_ipv6[j].ipv6_addr[15]);
addr_v6[39] = '\0';
blobmsg_add_string(bb, "ipv6_address", addr_v6);
// origin address
if (p->device_ipv6[j].ipv6_addr_type == IPV6_TYPE_SLAAC) {
memset(addr_v6, 0, 40);
sprintf(addr_v6, "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x",
p->device_ipv6[j].ipv6addr_origin[0], p->device_ipv6[j].ipv6addr_origin[1],
p->device_ipv6[j].ipv6addr_origin[2], p->device_ipv6[j].ipv6addr_origin[3],
p->device_ipv6[j].ipv6addr_origin[4], p->device_ipv6[j].ipv6addr_origin[5],
p->device_ipv6[j].ipv6addr_origin[6], p->device_ipv6[j].ipv6addr_origin[7],
p->device_ipv6[j].ipv6addr_origin[8], p->device_ipv6[j].ipv6addr_origin[9],
p->device_ipv6[j].ipv6addr_origin[10], p->device_ipv6[j].ipv6addr_origin[11],
p->device_ipv6[j].ipv6addr_origin[12], p->device_ipv6[j].ipv6addr_origin[13],
p->device_ipv6[j].ipv6addr_origin[14],p->device_ipv6[j].ipv6addr_origin[15]);
addr[39] = '\0';
blobmsg_add_string(bb, "origin", addr_v6);
}
blobmsg_close_table(bb, table);
}
blobmsg_close_array(bb, ipv6_param);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment