+
+ return NULL;
+}
+
+/* ID filter syntax: [vendor]:[device][:class[:progif]] */
+
+char *
+pci_filter_parse_id_v38(struct pci_filter *f, char *str)
+{
+ char buf[BUF_SIZE];
+ char *fields[4];
+ char *err;
+
+ if (err = split_to_fields(str, buf, ':', fields, 4))
+ return err;
+
+ if (!fields[1])
+ return "At least two fields must be given";
+
+ if (!parse_hex_field(fields[0], &f->vendor, NULL, 0xffff))
+ return "Invalid vendor ID";
+
+ if (!parse_hex_field(fields[1], &f->device, NULL, 0xffff))
+ return "Invalid device ID";
+
+ if (!parse_hex_field(fields[2], &f->device_class, &f->device_class_mask, 0xffff))
+ return "Invalid class code";
+
+ if (!parse_hex_field(fields[3], &f->prog_if, NULL, 0xff))
+ return "Invalid programming interface code";
+