diff options
-rw-r--r-- | src/proto.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/proto.c b/src/proto.c index 65ee158f..0cd9fdbd 100644 --- a/src/proto.c +++ b/src/proto.c @@ -94,13 +94,21 @@ static const struct dev_proto_desc dev_proto_desc[] = { */ int proto_dev_type(const struct proto_desc *desc, uint16_t *res) { - unsigned int i; + const struct proto_desc *base; + unsigned int i, j; for (i = 0; i < array_size(dev_proto_desc); i++) { - if (dev_proto_desc[i].desc == desc) { + base = dev_proto_desc[i].desc; + if (base == desc) { *res = dev_proto_desc[i].type; return 0; } + for (j = 0; j < array_size(base->protocols); j++) { + if (base->protocols[j].desc == desc) { + *res = dev_proto_desc[i].type; + return 0; + } + } } return -1; } |