/* Send all known subnets and edges */
for splay_each(node_t, n, mesh->nodes) {
- for splay_each(edge_t, e, n->edge_tree) {
+ for inner_splay_each(edge_t, e, n->edge_tree) {
send_add_edge(mesh, c, e, 0);
}
}
n->last_successfull_connection = mesh->loop.now.tv_sec;
n->connection = c;
+ n->nexthop = n;
c->node = n;
/* Activate this connection */
c->allow_request = ALL;
+ c->last_key_renewal = mesh->loop.now.tv_sec;
c->status.active = true;
logger(mesh, MESHLINK_INFO, "Connection with %s activated", c->name);
+ if(mesh->meta_status_cb) {
+ mesh->meta_status_cb(mesh, (meshlink_node_t *)n, true);
+ }
+
/* Send him everything we know */
send_everything(mesh, c);
c->edge->weight = mesh->dev_class_traits[devclass].edge_weight;
c->edge->connection = c;
+ node_add_recent_address(mesh, n, &c->address);
edge_add(mesh, c->edge);
/* Notify everyone of the new edge */
graph(mesh);
+ /* Request a session key to jump start UDP traffic */
+
+ if(c->status.initiator) {
+ send_req_key(mesh, n);
+ }
+
return true;
}