int class_match_param(char *buf, const char *key, char **valp);
int class_parse_nid4(char *buf, lnet_nid_t *nid4, char **endh);
int class_parse_nid4_quiet(char *buf, lnet_nid_t *nid4, char **endh);
+int class_parse_nid(char *buf, struct lnet_nid *nid, char **endh);
+int class_parse_nid_quiet(char *buf, struct lnet_nid *nid, char **endh);
int class_parse_net(char *buf, u32 *net, char **endh);
int class_match_nid(char *buf, char *key, lnet_nid_t nid);
int class_match_net(char *buf, char *key, u32 net);
return -EINVAL;
}
+static int parse_nid(char *buf, void *value, int quiet)
+{
+ struct lnet_nid *nid = value;
+
+ if (libcfs_strnid(nid, buf) == 0)
+ return 0;
+
+ if (!quiet)
+ LCONSOLE_ERROR_MSG(0x159, "Can't parse NID '%s'\n", buf);
+ return -EINVAL;
+}
+
static int parse_net(char *buf, void *value)
{
__u32 *net = (__u32 *)value;
enum {
CLASS_PARSE_NID4 = 1,
+ CLASS_PARSE_NID,
CLASS_PARSE_NET,
};
case CLASS_PARSE_NID4:
rc = parse_nid4(buf, value, quiet);
break;
+ case CLASS_PARSE_NID:
+ rc = parse_nid(buf, value, quiet);
+ break;
case CLASS_PARSE_NET:
rc = parse_net(buf, value);
break;
}
EXPORT_SYMBOL(class_parse_nid4_quiet);
+int class_parse_nid(char *buf, struct lnet_nid *nid, char **endh)
+{
+ return class_parse_value(buf, CLASS_PARSE_NID, (void *)nid, endh, 0);
+}
+EXPORT_SYMBOL(class_parse_nid);
+
+int class_parse_nid_quiet(char *buf, struct lnet_nid *nid, char **endh)
+{
+ return class_parse_value(buf, CLASS_PARSE_NID, (void *)nid, endh, 1);
+}
+EXPORT_SYMBOL(class_parse_nid_quiet);
+
int class_parse_net(char *buf, __u32 *net, char **endh)
{
return class_parse_value(buf, CLASS_PARSE_NET, (void *)net, endh, 0);