static void patch_destroy(struct vport *vport) { struct patch_vport *patch_vport = patch_vport_priv(vport); update_peers(ovs_dp_get_net(vport->dp), patch_vport->name, NULL); hlist_del(&patch_vport->hash_node); call_rcu(&patch_vport->rcu, free_port_rcu); }
static struct vport *patch_create(const struct vport_parms *parms) { struct vport *vport; struct patch_vport *patch_vport; const char *peer_name; struct patch_config *patchconf; struct net *net = ovs_dp_get_net(parms->dp); int err; vport = ovs_vport_alloc(sizeof(struct patch_vport), &ovs_patch_vport_ops, parms); if (IS_ERR(vport)) { err = PTR_ERR(vport); goto error; } patch_vport = patch_vport_priv(vport); strcpy(patch_vport->name, parms->name); patchconf = kmalloc(sizeof(struct patch_config), GFP_KERNEL); if (!patchconf) { err = -ENOMEM; goto error_free_vport; } err = patch_set_config(vport, parms->options, patchconf); if (err) goto error_free_patchconf; random_ether_addr(patchconf->eth_addr); rcu_assign_pointer(patch_vport->patchconf, patchconf); peer_name = patchconf->peer_name; hlist_add_head(&patch_vport->hash_node, hash_bucket(net, peer_name)); rcu_assign_pointer(patch_vport->peer, ovs_vport_locate(net, peer_name)); update_peers(net, patch_vport->name, vport); return vport; error_free_patchconf: kfree(patchconf); error_free_vport: ovs_vport_free(vport); error: return ERR_PTR(err); }
int network_manager_update(struct network_manager* nm) { // If disabled, do nothing if(chaind_config(nm->chaind)->network.participate != 1) { return 0; } check_peer_discovery(nm); // If we have fewer peers connected than we want, try connecting some while(nm->num_peers < nm->num_peer_goal) { if(start_peer(nm) < 0) { // This can happen if we're out of addresses break; } } update_peers(nm); return 0; }
void update_block(struct consensus_model *model,struct crypto777_node *nn,struct crypto777_block **blocks,uint32_t blocknum,struct crypto777_block *block,uint32_t mytimestamp) { int32_t lookback; if ( is_newhwm_block(blocks,block) != 0 ) { if ( blocks[blocknum] != 0 ) free(blocks[blocknum]); blocks[blocknum] = block; if ( blocknum > nn->blocknum ) nn->blocknum = blocknum; if ( blocknum == (nn->lastblocknum + 1) || blocknum < nn->lastblocknum ) { lookback = blocknum - 5; if ( lookback < 0 ) lookback = 0; nn->lastblocknum2 = blocks[lookback]->blocknum, nn->blocktxid2 = blocks[lookback]->hash.txid; nn->lastblocknum = blocknum, nn->blocktxid = block->hash.txid; } nn->lastblocktimestamp = mytimestamp; update_peers(nn,block,model->peermetrics,nn->numpeers,model->packet_leverage); } }
void Peers::ctx_refresh() { update_peers(); }
void Peers::setWpaGui(WpaGui *_wpagui) { wpagui = _wpagui; update_peers(); }