Whamcloud - gitweb
LU-9119 lnet: remove debug ioctl
[fs/lustre-release.git] / lnet / utils / lnetconfig / liblnetconfig.c
index 6aaa1a0..2515a02 100644 (file)
@@ -40,6 +40,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 #include <sys/ioctl.h>
 #include <net/if.h>
 #include <libcfs/util/ioctl.h>
@@ -807,8 +808,8 @@ int lustre_lnet_show_route(char *nw, char *gw, int hops, int prio, int detail,
 
                if (detail) {
                        if (cYAML_create_number(item, "hop",
-                                               data.cfg_config_u.cfg_route.
-                                                       rtr_hop) ==
+                                               (int) data.cfg_config_u.
+                                               cfg_route.rtr_hop) ==
                            NULL)
                                goto out;
 
@@ -872,7 +873,7 @@ out:
 static int socket_intf_query(int request, char *intf,
                             struct ifreq *ifr)
 {
-       int rc;
+       int rc = 0;
        int sockfd;
 
        if (strlen(intf) >= IFNAMSIZ || ifr == NULL)
@@ -885,9 +886,11 @@ static int socket_intf_query(int request, char *intf,
        strcpy(ifr->ifr_name, intf);
        rc = ioctl(sockfd, request, ifr);
        if (rc != 0)
-               return LUSTRE_CFG_RC_BAD_PARAM;
+               rc = LUSTRE_CFG_RC_BAD_PARAM;
 
-       return 0;
+       close(sockfd);
+
+       return rc;
 }
 
 /*
@@ -1157,6 +1160,8 @@ lustre_lnet_ioctl_config_ni(struct list_head *intf_list,
                        len = sizeof(struct lnet_ioctl_config_ni);
 
                data = calloc(1, len);
+               if (!data)
+                       return LUSTRE_CFG_RC_OUT_OF_MEM;
                conf = (struct lnet_ioctl_config_ni*) data;
                if (i == 0 && tunables != NULL)
                        tun = (struct lnet_ioctl_config_lnd_tunables*)
@@ -1202,8 +1207,10 @@ lustre_lnet_ioctl_config_ni(struct list_head *intf_list,
                        snprintf(err_str,
                                 LNET_MAX_STR_LEN,
                                 "\"cannot add network: %s\"", strerror(errno));
+                       free(data);
                        return rc;
                }
+               free(data);
                i++;
        }
 
@@ -1231,6 +1238,11 @@ lustre_lnet_config_ip2nets(struct lustre_lnet_ip2nets *ip2nets,
                goto out;
        }
 
+       /*
+        * call below function to resolve the rules into a list of nids.
+        * The memory is allocated in that function then freed here when
+        * it's no longer needed.
+        */
        rc = lustre_lnet_resolve_ip2nets_rule(ip2nets, &nids, &nnids);
        if (rc != LUSTRE_CFG_RC_NO_ERR && rc != LUSTRE_CFG_RC_MATCH) {
                snprintf(err_str,
@@ -1242,14 +1254,15 @@ lustre_lnet_config_ip2nets(struct lustre_lnet_ip2nets *ip2nets,
        if (list_empty(&ip2nets->ip2nets_net.nw_intflist)) {
                snprintf(err_str, sizeof(err_str),
                         "\"no interfaces match ip2nets rules\"");
-               goto out;
+               goto free_nids_out;
        }
 
        rc = lustre_lnet_ioctl_config_ni(&ip2nets->ip2nets_net.nw_intflist,
                                         tunables, global_cpts, nids,
                                         err_str);
-       if (rc != LUSTRE_CFG_RC_NO_ERR)
-               free(nids);
+
+free_nids_out:
+       free(nids);
 
 out:
        cYAML_build_error(rc, seq_no, ADD_CMD, "ip2nets", err_str, err_rc);
@@ -1301,6 +1314,10 @@ int lustre_lnet_config_ni(struct lnet_dlc_network_descr *nw_descr,
                else
                        len = sizeof(struct lnet_ioctl_config_ni);
                data = calloc(1, len);
+               if (!data) {
+                       rc = LUSTRE_CFG_RC_OUT_OF_MEM;
+                       goto out;
+               }
                conf = (struct lnet_ioctl_config_ni*) data;
                if (tunables != NULL)
                        tun = (struct lnet_ioctl_config_lnd_tunables*)
@@ -1343,8 +1360,10 @@ int lustre_lnet_config_ni(struct lnet_dlc_network_descr *nw_descr,
                goto out;
        }
 
-       if (LNET_NETTYP(nw_descr->nw_id) == LOLND)
-               return LUSTRE_CFG_RC_NO_ERR;
+       if (LNET_NETTYP(nw_descr->nw_id) == LOLND) {
+               rc = LUSTRE_CFG_RC_NO_ERR;
+               goto out;
+       }
 
        if (nw_descr->nw_id == LNET_NIDNET(LNET_NID_ANY)) {
                snprintf(err_str,
@@ -1406,9 +1425,6 @@ int lustre_lnet_del_ni(struct lnet_dlc_network_descr *nw_descr,
        __u32 nnids = 0;
        struct lnet_dlc_intf_descr *intf_descr, *tmp;
 
-       if (LNET_NETTYP(nw_descr->nw_id) == LOLND)
-               return LUSTRE_CFG_RC_NO_ERR;
-
        snprintf(err_str, sizeof(err_str), "\"success\"");
 
        if (nw_descr == NULL) {
@@ -1419,6 +1435,9 @@ int lustre_lnet_del_ni(struct lnet_dlc_network_descr *nw_descr,
                goto out;
        }
 
+       if (LNET_NETTYP(nw_descr->nw_id) == LOLND)
+               return LUSTRE_CFG_RC_NO_ERR;
+
        if (nw_descr->nw_id == LNET_NIDNET(LNET_NID_ANY)) {
                snprintf(err_str,
                         sizeof(err_str),
@@ -2201,7 +2220,7 @@ int lustre_lnet_show_numa_range(int seq_no, struct cYAML **show_rc,
                                struct cYAML **err_rc)
 {
        struct lnet_ioctl_numa_range data;
-       int rc = LUSTRE_CFG_RC_OUT_OF_MEM;
+       int rc;
        int l_errno;
        char err_str[LNET_MAX_STR_LEN];
        struct cYAML *root = NULL, *range = NULL;
@@ -2221,6 +2240,8 @@ int lustre_lnet_show_numa_range(int seq_no, struct cYAML **show_rc,
                goto out;
        }
 
+       rc = LUSTRE_CFG_RC_OUT_OF_MEM;
+
        root = cYAML_create_object(NULL, NULL);
        if (root == NULL)
                goto out;
@@ -2237,6 +2258,7 @@ int lustre_lnet_show_numa_range(int seq_no, struct cYAML **show_rc,
                cYAML_print_tree(root);
 
        snprintf(err_str, sizeof(err_str), "\"success\"");
+       rc = LUSTRE_CFG_RC_NO_ERR;
 out:
        if (show_rc == NULL || rc != LUSTRE_CFG_RC_NO_ERR) {
                cYAML_free_tree(root);
@@ -2257,7 +2279,7 @@ int lustre_lnet_show_stats(int seq_no, struct cYAML **show_rc,
                           struct cYAML **err_rc)
 {
        struct lnet_ioctl_lnet_stats data;
-       int rc = LUSTRE_CFG_RC_OUT_OF_MEM;
+       int rc;
        int l_errno;
        char err_str[LNET_MAX_STR_LEN];
        struct cYAML *root = NULL, *stats = NULL;
@@ -2277,6 +2299,8 @@ int lustre_lnet_show_stats(int seq_no, struct cYAML **show_rc,
                goto out;
        }
 
+       rc = LUSTRE_CFG_RC_OUT_OF_MEM;
+
        root = cYAML_create_object(NULL, NULL);
        if (root == NULL)
                goto out;
@@ -2333,6 +2357,7 @@ int lustre_lnet_show_stats(int seq_no, struct cYAML **show_rc,
                cYAML_print_tree(root);
 
        snprintf(err_str, sizeof(err_str), "\"success\"");
+       rc = LUSTRE_CFG_RC_NO_ERR;
 out:
        if (show_rc == NULL || rc != LUSTRE_CFG_RC_NO_ERR) {
                cYAML_free_tree(root);
@@ -2539,6 +2564,8 @@ static int handle_yaml_config_ni(struct cYAML *tree, struct cYAML **show_rc,
        net = cYAML_get_object_item(tree, "net type");
        if (net)
                nw_descr.nw_id = libcfs_str2net(net->cy_valuestring);
+       else
+               nw_descr.nw_id = LOLND;
 
        /*
         * if neither net nor ip2nets are present, then we can not
@@ -3131,46 +3158,3 @@ int lustre_yaml_show(char *f, struct cYAML **show_rc, struct cYAML **err_rc)
                                     show_rc, err_rc);
 }
 
-int lustre_lnet_send_dbg_task(enum lnet_dbg_task dbg_task,
-                             struct lnet_dbg_task_info *dbg_info,
-                             struct cYAML **show_rc,
-                             struct cYAML **err_rc)
-{
-       struct lnet_ioctl_dbg *dbg;
-       struct lnet_dbg_task_info *info;
-       int rc = LUSTRE_CFG_RC_NO_ERR;
-       char err_str[LNET_MAX_STR_LEN];
-
-       snprintf(err_str, sizeof(err_str), "\"success\"");
-
-       dbg = calloc(1, sizeof(*dbg) + sizeof(*info));
-       if (!dbg) {
-               snprintf(err_str, sizeof(err_str), "\"out of memory\"");
-               rc = LUSTRE_CFG_RC_OUT_OF_MEM;
-               goto out;
-       }
-
-       info = (struct lnet_dbg_task_info *)dbg->dbg_bulk;
-
-       LIBCFS_IOC_INIT_V2(*dbg, dbg_hdr);
-
-       dbg->dbg_task = dbg_task;
-       if (dbg_info)
-               memcpy(info, dbg_info, sizeof(*info));
-
-       rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_DBG, dbg);
-       if (rc != 0) {
-               rc = -errno;
-               snprintf(err_str,
-                        sizeof(err_str),
-                        "\"debug task failed %s\"", strerror(errno));
-               goto out;
-       }
-
-out:
-       cYAML_build_error(rc, -1, DBG_CMD,
-                        "debug", err_str, err_rc);
-
-       return rc;
-}
-