From e22b79c1a1ec443fcc816439658fb4e8cedf21fb Mon Sep 17 00:00:00 2001 From: "nevadita.chatterjee" <nevadita.chatterjee@iopsys.eu> Date: Tue, 25 Aug 2020 19:14:26 +0530 Subject: [PATCH] map-topology: Added few more fixes --- README.md | 155 +++++++++++++++++++++++++++++++++++++++--------- src/topologyd.c | 25 ++++---- 2 files changed, 142 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 319065f..6aa262a 100644 --- a/README.md +++ b/README.md @@ -64,45 +64,146 @@ root@iopsys:~$ ubus call topology status } #To show current topology - -root@iopsys:~$ ubus call topology dump +root@iopsys:# ubus call topology dump { - "Nodes": [ + "self": { + "ieee1905_macaddr": "00:22:07:70:f5:6c", + "num_neighbors": 1, + "neighbors": [ + { + "nbr_mac_id": "00:22:07:6e:d8:08" + } + ], + "num_non1905_neighbors": 3, + "non1905_neighbors": [ + "00:22:07:6d:3d:8e", + "00:22:07:6d:3d:90", + "b0:5c:da:5d:9e:19" + ] + }, + "nodes": [ { - "local_mac": "02:22:07:70:ef:e6", - "neighbors_nr": 0, + "ieee1905_macaddr": "00:22:07:6e:d8:08", + "num_neighbors": 1, "neighbors": [ - + { + "nbr_mac_id": "00:22:07:70:f5:6c", + "link_metrics": [ + { + "nbr_intf_macid": "00:22:07:70:f5:6c", + "ieee_bridge": 1, + "tx_packet_error": 0, + "tx_packet_ok": 1081, + "mac_thrput_capacity": 0, + "link_availability": 100, + "phy_rate": 0, + "rx_packet_error": 0, + "rx_packet_ok": 2265, + "rssi": 0 + } + ] + } + ], + "num_non1905_neighbors": 1, + "non1905_neighbors": [ + "b0:5c:da:5d:9e:19" + ], + "registrar_freq_band": "802.11 2.4 GHz,802.11 5 GHz", + "non1905_nbr_localintf": "00:22:07:6e:d8:08", + "1905_nbr_localintf": "00:22:07:6e:d8:08", + "local_interface_nbr": 3, + "interfaces": [ + { + "interface_id": "00:22:07:6e:d8:09", + "media_type": "IEEE 802.11ac", + "network_membership": "00:22:07:6e:d8:09", + "role": "AP", + "ap_channel_band": 2, + "freq_index1": 60, + "freq_index2": 0 + }, + { + "interface_id": "00:22:07:6e:d8:0a", + "media_type": "IEEE 802.11n 2.4", + "network_membership": "00:22:07:6e:d8:0a", + "role": "AP", + "ap_channel_band": 0, + "freq_index1": 11, + "freq_index2": 0 + }, + { + "interface_id": "00:22:07:6e:d8:08", + "media_type": "IEEE 802.3ab" + } + ], + "l2_neighbor_num": 2, + "l2_neighbor": [ + { + "local_intf_id": "00:22:07:6e:d8:08", + "local_nbr_id": "00:22:07:70:f5:6c" + }, + { + "local_intf_id": "00:22:07:6e:d8:08", + "local_nbr_id": "b0:5c:da:5d:9e:19" + } + ], + "bridging_tuple_num": 3, + "bridge_tuple": [ + { + "bridge_tuple_mac_id": "00:22:07:6e:d8:09" + }, + { + "bridge_tuple_mac_id": "00:22:07:6e:d8:0a" + }, + { + "bridge_tuple_mac_id": "00:22:07:6e:d8:08" + } + ], + "version": "1905.1a", + "friendly_name": "iopsysWrt", + "manufacturer_name": "IOPSYS", + "manufacturer_model": "EG400R0", + "control_url": "http://192.168.1.1", + "ipv4_itfr_num": 1, + "ipv4_params": [ + { + "mac_address": "00:22:07:6e:d8:08", + "ipv4_addr_type": "IPV4_DHCP", + "ipv4_address": "192.168.1.1", + "dhcp_addr": "127.1.1.1" + } ], - "non_1905_neighbors_nr": 0, - "non_1905_neighbors": [ + "ipv6_itfr_num": 0, + "ipv6_params": [ ] } ] + } #To show the topology changelogs - -root@iopsys:~# ubus call topology changelog +root@iopsys:# ubus call topology changelog { - "num_changelog": 2, - "changelog": [ - { - "reporter": "00:22:07:6d:3d:8e", - "reporter_interface": "00:22:07:70:f5:6c", - "neighbor": "00:22:07:6d:3d:8e", - "is1905_neighbor": "true", - "event_type": "add", - "timestamp": "2020-07-06T11:51:54" - }, - { - "reporter": "00:22:07:ae:ed:fd", - "reporter_interface": "00:22:07:70:f5:6c", - "neighbor": "00:22:07:ae:ed:fd", - "is1905_neighbor": "true", - "event_type": "add", - "timestamp": "2020-07-06T11:56:01" - } - ] + "num_changelog": 2, + "changelog": [ + { + "reporter": "00:22:07:6e:d8:08", + "reporter_interface": "00:22:07:6e:d8:08", + "neighbor": "00:22:07:6e:d8:08", + "is1905_neighbor": "true", + "event_type": "add", + "timestamp": "2020-08-25T12:02:46" + }, + { + "reporter": "00:22:07:6e:d8:08", + "reporter_interface": "00:22:07:6e:d8:08", + "neighbor": "b0:5c:da:5d:9e:19", + "is1905_neighbor": "false", + "event_type": "add", + "timestamp": "2020-08-25T12:09:24" + } + ] } ```` diff --git a/src/topologyd.c b/src/topologyd.c index 2ab27e5..8cdc6f9 100644 --- a/src/topologyd.c +++ b/src/topologyd.c @@ -876,7 +876,7 @@ void topologyd_dump_node(struct blob_buf *bb, struct node *p, int is_self) 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'; + addr_v6[39] = '\0'; blobmsg_add_string(bb, "origin", addr_v6); } blobmsg_close_table(bb, table); @@ -1297,16 +1297,19 @@ void changelog_copy_node_info(struct topologyd_private *t, struct node *p, int32 dbg("Inside changelog_copy_node_info \n"); struct topology_changelog elem; - if( t == NULL || p == NULL) + if (t == NULL || p == NULL) return; - if(event == 0) + if (event == 0) { memcpy(elem.rpt_macaddr, p->hwaddr, 6); - else + memcpy(elem.rpt_ifmacaddr, p->nbr_localintf, 6); + } + else { memcpy(elem.rpt_macaddr, t->ieee1905_macaddr, 6); - - //add the selfnode macaddress - memcpy(elem.rpt_ifmacaddr, t->ieee1905_macaddr, 6); + memcpy(elem.rpt_ifmacaddr, t->selfnode.nbr_localintf, 6); + } + + memcpy(elem.rpt_ifmacaddr, p->nbr_localintf, 6); memcpy(elem.nbr_macaddr, p->hwaddr, 6); elem.is1905_nbr = is1905; elem.type = event; @@ -1339,7 +1342,7 @@ void update_changelog_info(struct topologyd_private *priv, struct node *dest, st if (found == 0) { memcpy(elem.nbr_macaddr, dest->nbr_list[i].nbr_macid, 6); memcpy(elem.rpt_macaddr, dest->hwaddr, 6); - memcpy(elem.rpt_ifmacaddr, dest->hwaddr, 6); + memcpy(elem.rpt_ifmacaddr, dest->nbr_localintf, 6); elem.is1905_nbr = 1; elem.type = 1; enqueue_changelog(&(priv->topo), &elem); @@ -1353,7 +1356,7 @@ void update_changelog_info(struct topologyd_private *priv, struct node *dest, st for( i = 0; i< k ; i++) { memcpy(elem.nbr_macaddr, src->nbr_list[i].nbr_macid, 6); memcpy(elem.rpt_macaddr, src->hwaddr, 6); - memcpy(elem.rpt_ifmacaddr, src->hwaddr, 6); + memcpy(elem.rpt_ifmacaddr, src->nbr_localintf, 6); elem.is1905_nbr = 1; elem.type = 0; enqueue_changelog(&(priv->topo), &elem); @@ -1378,7 +1381,7 @@ void update_changelog_info(struct topologyd_private *priv, struct node *dest, st if (found == 0) { memcpy(elem.nbr_macaddr, dest->non1905_nbrlist[i], 6); memcpy(elem.rpt_macaddr, dest->hwaddr, 6); - memcpy(elem.rpt_ifmacaddr, dest->hwaddr, 6); + memcpy(elem.rpt_ifmacaddr, dest->non1905_nbr_localintf, 6); elem.is1905_nbr = 0; elem.type = 1; enqueue_changelog(&(priv->topo), &elem); @@ -1392,7 +1395,7 @@ void update_changelog_info(struct topologyd_private *priv, struct node *dest, st for( i = 0; i< k ; i++) { memcpy(elem.nbr_macaddr, src->non1905_nbrlist[i], 6); memcpy(elem.rpt_macaddr, src->hwaddr, 6); - memcpy(elem.rpt_ifmacaddr, src->hwaddr, 6); + memcpy(elem.rpt_ifmacaddr, src->non1905_nbr_localintf, 6); elem.is1905_nbr = 0; elem.type = 0; enqueue_changelog(&(priv->topo), &elem); -- GitLab