summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/proto.c12
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;
}