+
+int type_system_union_protocol_get_type_system(const NLTypeSystemUnion *type_system_union, const NLTypeSystem **ret, uint16_t protocol) {
+ const NLTypeSystem *type_system;
+
+ assert(type_system_union);
+ assert(type_system_union->type_systems);
+ assert(ret);
+ assert_return(type_system_union->match_type == NL_MATCH_PROTOCOL, -EINVAL);
+ assert_return(protocol < type_system_union->num, -EINVAL);
+
+ if (protocol >= type_system_union->num)
+ return -ENOTSUP;
+
+ type_system = &type_system_union->type_systems[protocol];
+
+ if (!type_system)
+ return -ENOTSUP;
+
+ *ret = type_system;
+
+ return 0;
+}