*/
static int parse_nid_range(char *nodemap_range, char *nid_range, int range_len)
{
- char min_nid[LNET_NIDSTR_SIZE + 1];
- char max_nid[LNET_NIDSTR_SIZE + 1];
- struct list_head nidlist;
- int rc = 0;
+ char min_nid[LNET_NIDSTR_SIZE + 1];
+ char max_nid[LNET_NIDSTR_SIZE + 1];
+ struct list_head nidlist;
+ char *netmask = NULL;
+ int rc = 0;
+
+ netmask = strchr(nodemap_range, '/');
+ if (netmask) {
+ unsigned long mask;
+
+ /* FIXME !!! Only 128 netmask is supported. This means
+ * nodemap will only support one large NID.
+ */
+ mask = strtoul(++netmask, NULL, 10);
+ if (mask < 0)
+ return -errno;
+
+ if (mask != 128)
+ return -ERANGE;
+
+ strncpy(nid_range, nodemap_range, range_len);
+ return rc;
+ }
INIT_LIST_HEAD(&nidlist);