Whamcloud - gitweb
LU-7734 lnet: configure peers from DLC
[fs/lustre-release.git] / lnet / lnet / api-ni.c
index 8f5dc24..f4587da 100644 (file)
@@ -599,6 +599,7 @@ lnet_prepare(lnet_pid_t requested_pid)
 
        INIT_LIST_HEAD(&the_lnet.ln_test_peers);
        INIT_LIST_HEAD(&the_lnet.ln_peers);
+       INIT_LIST_HEAD(&the_lnet.ln_remote_peer_ni_list);
        INIT_LIST_HEAD(&the_lnet.ln_nets);
        INIT_LIST_HEAD(&the_lnet.ln_routers);
        INIT_LIST_HEAD(&the_lnet.ln_drop_rules);
@@ -697,7 +698,7 @@ lnet_unprepare (void)
        lnet_res_container_cleanup(&the_lnet.ln_eq_container);
 
        lnet_msg_containers_destroy();
-       lnet_peer_tables_destroy();
+       lnet_peer_uninit();
        lnet_rtrpools_free(0);
 
        if (the_lnet.ln_counters != NULL) {
@@ -2401,13 +2402,33 @@ LNetCtl(unsigned int cmd, void *arg)
                return lnet_get_rtr_pool_cfg(config->cfg_count, pool_cfg);
        }
 
+       case IOC_LIBCFS_ADD_PEER_NI: {
+               struct lnet_ioctl_peer_cfg *cfg = arg;
+
+               if (cfg->prcfg_hdr.ioc_len < sizeof(*cfg))
+                       return -EINVAL;
+
+               return lnet_add_peer_ni_to_peer(cfg->prcfg_key_nid,
+                                               cfg->prcfg_cfg_nid);
+       }
+
+       case IOC_LIBCFS_DEL_PEER_NI: {
+               struct lnet_ioctl_peer_cfg *cfg = arg;
+
+               if (cfg->prcfg_hdr.ioc_len < sizeof(*cfg))
+                       return -EINVAL;
+
+               return lnet_del_peer_ni_from_peer(cfg->prcfg_key_nid,
+                                                 cfg->prcfg_cfg_nid);
+       }
+
        case IOC_LIBCFS_GET_PEER_INFO: {
                struct lnet_ioctl_peer *peer_info = arg;
 
                if (peer_info->pr_hdr.ioc_len < sizeof(*peer_info))
                        return -EINVAL;
 
-               return lnet_get_peer_info(
+               return lnet_get_peer_ni_info(
                   peer_info->pr_count,
                   &peer_info->pr_nid,
                   peer_info->pr_lnd_u.pr_peer_credits.cr_aliveness,
@@ -2420,6 +2441,20 @@ LNetCtl(unsigned int cmd, void *arg)
                   &peer_info->pr_lnd_u.pr_peer_credits.cr_peer_tx_qnob);
        }
 
+       case IOC_LIBCFS_GET_PEER_NI: {
+               struct lnet_ioctl_peer_cfg *cfg = arg;
+               struct lnet_peer_ni_credit_info *lpni_cri;
+               size_t total = sizeof(*cfg) + sizeof(*lpni_cri);
+
+               if (cfg->prcfg_hdr.ioc_len < total)
+                       return -EINVAL;
+
+               lpni_cri = (struct lnet_peer_ni_credit_info*) cfg->prcfg_bulk;
+
+               return lnet_get_peer_info(cfg->prcfg_idx, &cfg->prcfg_key_nid,
+                                         &cfg->prcfg_cfg_nid, lpni_cri);
+       }
+
        case IOC_LIBCFS_NOTIFY_ROUTER: {
                unsigned long jiffies_passed;