grpc 1.54.0 → 1.55.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (970) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +66 -37
  3. data/include/grpc/impl/grpc_types.h +2 -0
  4. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -1
  5. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -1
  6. data/src/core/ext/filters/client_channel/client_channel.cc +13 -17
  7. data/src/core/ext/filters/client_channel/client_channel.h +20 -16
  8. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +1 -1
  9. data/src/core/ext/filters/client_channel/client_channel_internal.h +8 -40
  10. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +2 -2
  11. data/src/core/ext/filters/client_channel/config_selector.h +5 -17
  12. data/src/core/ext/filters/client_channel/health/health_check_client.cc +1 -1
  13. data/src/core/ext/filters/client_channel/http_proxy.cc +34 -1
  14. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +2 -2
  15. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
  17. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +5 -5
  18. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +3 -3
  19. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +45 -46
  20. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +2 -3
  21. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
  22. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +3 -3
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +4 -4
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +3 -3
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +9 -9
  26. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +4 -4
  27. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +5 -4
  28. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +19 -118
  29. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.h +30 -0
  30. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.cc +60 -0
  31. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.h +27 -0
  32. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +524 -0
  33. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.h +35 -0
  34. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +97 -0
  35. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.h +32 -0
  36. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -13
  37. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.h +24 -0
  38. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +3 -2
  39. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +7 -34
  40. data/src/core/ext/filters/client_channel/retry_filter.cc +23 -55
  41. data/src/core/ext/filters/client_channel/retry_service_config.cc +8 -8
  42. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
  43. data/src/core/ext/filters/http/message_compress/compression_filter.cc +2 -2
  44. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +68 -69
  45. data/src/core/ext/gcp/metadata_query.cc +5 -10
  46. data/src/core/ext/gcp/metadata_query.h +10 -5
  47. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +12 -8
  48. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +5 -1
  49. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +78 -23
  50. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +21 -0
  51. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +70 -0
  52. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -7
  53. data/src/core/ext/transport/chttp2/transport/frame_ping.h +0 -3
  54. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +118 -222
  55. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +296 -113
  56. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -0
  57. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +451 -277
  59. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -1
  60. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +15 -12
  61. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +9 -1
  62. data/src/core/ext/transport/chttp2/transport/internal.h +3 -4
  63. data/src/core/ext/transport/chttp2/transport/writing.cc +14 -3
  64. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +87 -52
  65. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +414 -181
  66. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -60
  67. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +481 -224
  68. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +90 -55
  69. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +415 -188
  70. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +357 -210
  71. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1572 -729
  72. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +30 -17
  73. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +144 -47
  74. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +34 -21
  75. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -62
  76. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +27 -14
  77. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +78 -38
  78. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +20 -11
  79. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +48 -26
  80. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +20 -11
  81. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +48 -26
  82. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +109 -62
  83. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +566 -244
  84. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +21 -12
  85. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +45 -30
  86. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +22 -19
  87. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +82 -29
  88. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +23 -16
  89. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +45 -30
  90. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +230 -143
  91. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +733 -404
  92. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +417 -264
  93. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1839 -899
  94. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -41
  95. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +286 -148
  96. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +531 -334
  97. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2017 -1131
  98. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -12
  99. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +45 -30
  100. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +89 -52
  101. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +347 -232
  102. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +264 -165
  103. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +888 -476
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +139 -80
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +527 -274
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -13
  107. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +50 -36
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +380 -221
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1168 -611
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +166 -94
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +666 -292
  112. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +18 -11
  113. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +37 -26
  114. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +21 -12
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +45 -30
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +30 -17
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +144 -47
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +274 -167
  119. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +789 -440
  120. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +228 -137
  121. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +1100 -501
  122. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -13
  123. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +60 -37
  124. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +350 -211
  125. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1072 -646
  126. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +33 -18
  127. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +117 -51
  128. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +34 -19
  129. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +118 -56
  130. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +38 -21
  131. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +148 -64
  132. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +31 -18
  133. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +143 -65
  134. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +22 -13
  135. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +51 -37
  136. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +78 -43
  137. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +265 -127
  138. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +145 -88
  139. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +438 -241
  140. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +115 -62
  141. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +559 -227
  142. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +18 -11
  143. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +35 -26
  144. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +175 -118
  145. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +857 -442
  146. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +172 -95
  147. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +864 -374
  148. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -27
  149. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +159 -110
  150. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +39 -18
  151. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +74 -56
  152. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +28 -15
  153. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +71 -45
  154. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +131 -74
  155. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +489 -249
  156. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +135 -80
  157. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +505 -245
  158. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +248 -139
  159. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +933 -433
  160. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +80 -49
  161. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +616 -201
  162. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +1283 -776
  163. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +5422 -2519
  164. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +49 -28
  165. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +164 -84
  166. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +228 -141
  167. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +738 -399
  168. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +20 -11
  169. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +48 -26
  170. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +21 -12
  171. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +45 -30
  172. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +32 -19
  173. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +70 -49
  174. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +27 -14
  175. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +110 -43
  176. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +46 -25
  177. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +259 -100
  178. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +21 -12
  179. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +45 -30
  180. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +18 -11
  181. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +35 -26
  182. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +42 -23
  183. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +108 -70
  184. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +7 -4
  185. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +21 -16
  186. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +43 -24
  187. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +110 -75
  188. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +30 -17
  189. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +95 -50
  190. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +16 -9
  191. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +73 -23
  192. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +60 -37
  193. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +150 -108
  194. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +74 -43
  195. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +357 -167
  196. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +44 -25
  197. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +114 -80
  198. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -20
  199. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +245 -82
  200. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +32 -19
  201. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +73 -51
  202. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +474 -296
  203. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2121 -1076
  204. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +18 -11
  205. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +35 -26
  206. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +34 -21
  207. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +112 -78
  208. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +72 -45
  209. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +193 -138
  210. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +34 -21
  211. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +119 -78
  212. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +18 -11
  213. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +35 -26
  214. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -4
  215. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +15 -10
  216. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +184 -96
  217. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +907 -360
  218. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +56 -33
  219. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +150 -101
  220. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +188 -111
  221. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +816 -419
  222. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +32 -19
  223. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +109 -53
  224. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +10 -7
  225. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +18 -14
  226. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +300 -177
  227. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1284 -522
  228. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +42 -23
  229. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +188 -75
  230. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +130 -83
  231. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +510 -238
  232. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +22 -13
  233. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +55 -34
  234. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +39 -26
  235. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +124 -68
  236. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +21 -12
  237. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +47 -30
  238. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +52 -29
  239. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +92 -62
  240. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +37 -20
  241. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +133 -63
  242. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +22 -13
  243. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +91 -40
  244. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -12
  245. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +50 -32
  246. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +18 -11
  247. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +37 -26
  248. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +46 -27
  249. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +101 -70
  250. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +13 -10
  251. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +25 -22
  252. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +40 -23
  253. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +161 -75
  254. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +31 -18
  255. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +114 -56
  256. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +46 -29
  257. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +139 -91
  258. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +65 -42
  259. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +200 -121
  260. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +80 -45
  261. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +208 -131
  262. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +34 -21
  263. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +74 -53
  264. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -4
  265. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +13 -8
  266. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +16 -9
  267. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +28 -18
  268. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +28 -15
  269. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +55 -34
  270. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +43 -22
  271. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +91 -53
  272. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +35 -20
  273. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +92 -57
  274. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +7 -4
  275. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +13 -8
  276. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -11
  277. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +48 -26
  278. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +23 -14
  279. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +61 -41
  280. data/src/core/ext/upb-generated/google/api/annotations.upb.c +14 -11
  281. data/src/core/ext/upb-generated/google/api/annotations.upb.h +30 -20
  282. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +255 -154
  283. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +934 -450
  284. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +299 -180
  285. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +946 -483
  286. data/src/core/ext/upb-generated/google/api/http.upb.c +68 -35
  287. data/src/core/ext/upb-generated/google/api/http.upb.h +284 -120
  288. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +22 -13
  289. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +95 -37
  290. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -10
  291. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +38 -22
  292. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +1018 -424
  293. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +3851 -1412
  294. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -10
  295. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +38 -22
  296. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +10 -7
  297. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +18 -14
  298. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +62 -39
  299. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +207 -102
  300. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -10
  301. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +38 -22
  302. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +90 -51
  303. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +157 -107
  304. data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -13
  305. data/src/core/ext/upb-generated/google/rpc/status.upb.h +95 -37
  306. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +59 -34
  307. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +154 -92
  308. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +43 -24
  309. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +118 -60
  310. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +250 -145
  311. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +919 -415
  312. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +34 -19
  313. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +76 -51
  314. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +25 -14
  315. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +45 -30
  316. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +144 -81
  317. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +405 -217
  318. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +51 -26
  319. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +153 -61
  320. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +173 -102
  321. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +855 -298
  322. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +68 -49
  323. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +155 -104
  324. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +26 -17
  325. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +55 -34
  326. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +12 -9
  327. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +31 -14
  328. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +26 -17
  329. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +55 -34
  330. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +23 -16
  331. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +45 -30
  332. data/src/core/ext/upb-generated/validate/validate.upb.c +845 -455
  333. data/src/core/ext/upb-generated/validate/validate.upb.h +4347 -1908
  334. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +68 -49
  335. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +155 -104
  336. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +26 -17
  337. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +55 -34
  338. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +12 -9
  339. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +31 -14
  340. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +65 -44
  341. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +137 -91
  342. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +23 -16
  343. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +45 -30
  344. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +16 -9
  345. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +28 -18
  346. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +21 -12
  347. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +45 -30
  348. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +37 -22
  349. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +96 -63
  350. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +26 -17
  351. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +52 -29
  352. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +21 -12
  353. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +45 -30
  354. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +23 -14
  355. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +62 -42
  356. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +44 -25
  357. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +169 -79
  358. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +27 -14
  359. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +65 -38
  360. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +69 -38
  361. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +167 -76
  362. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +21 -12
  363. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +89 -34
  364. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +18 -11
  365. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +35 -26
  366. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +32 -19
  367. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +150 -54
  368. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +10 -7
  369. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +18 -14
  370. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +34 -21
  371. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +161 -63
  372. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +162 -101
  373. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +501 -293
  374. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +85 -52
  375. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +430 -164
  376. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +24 -15
  377. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +53 -37
  378. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +40 -23
  379. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +161 -75
  380. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +37 -22
  381. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +92 -66
  382. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +43 -22
  383. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +91 -53
  384. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +21 -12
  385. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +45 -30
  386. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +1 -1
  387. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +6 -5
  388. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +1 -1
  389. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +6 -5
  390. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +1 -1
  391. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +6 -5
  392. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +1 -1
  393. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +6 -5
  394. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +1 -1
  395. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +6 -5
  396. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +1 -1
  397. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +6 -5
  398. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +1 -1
  399. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +6 -5
  400. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +1 -1
  401. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +6 -5
  402. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +1 -1
  403. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +6 -5
  404. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +1 -1
  405. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +6 -5
  406. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +1 -1
  407. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +6 -5
  408. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +1 -1
  409. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +6 -5
  410. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +1 -1
  411. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +6 -5
  412. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +1 -1
  413. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +6 -5
  414. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +252 -253
  415. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +6 -5
  416. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +1 -1
  417. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +6 -5
  418. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +1 -1
  419. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +6 -5
  420. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +1 -1
  421. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +6 -5
  422. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +1 -1
  423. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +6 -5
  424. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +1 -1
  425. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +6 -5
  426. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +1 -1
  427. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +6 -5
  428. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +1 -1
  429. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +6 -5
  430. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +1 -1
  431. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +6 -5
  432. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +13 -12
  433. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +11 -5
  434. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +1 -1
  435. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +6 -5
  436. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +1 -1
  437. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +6 -5
  438. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +1 -1
  439. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +6 -5
  440. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +1 -1
  441. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +6 -5
  442. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +1 -1
  443. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +6 -5
  444. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +1 -1
  445. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +6 -5
  446. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +44 -44
  447. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +6 -5
  448. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +1 -1
  449. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +6 -5
  450. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +1 -1
  451. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +6 -5
  452. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +1 -1
  453. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +6 -5
  454. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +1 -1
  455. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +6 -5
  456. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +1 -1
  457. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +6 -5
  458. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +1 -1
  459. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +6 -5
  460. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +1 -1
  461. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +6 -5
  462. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +1 -1
  463. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +6 -5
  464. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +1 -1
  465. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +6 -5
  466. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +1 -1
  467. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +6 -5
  468. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +1 -1
  469. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +6 -5
  470. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +1 -1
  471. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +6 -5
  472. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +1 -1
  473. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +6 -5
  474. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +1 -1
  475. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +6 -5
  476. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +1 -1
  477. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +6 -5
  478. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +1 -1
  479. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +6 -5
  480. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +134 -128
  481. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +11 -5
  482. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +1 -1
  483. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +6 -5
  484. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +1 -1
  485. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +6 -5
  486. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +1 -1
  487. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +6 -5
  488. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +1 -1
  489. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +6 -5
  490. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +1 -1
  491. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +6 -5
  492. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +1 -1
  493. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +6 -5
  494. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +1 -1
  495. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +6 -5
  496. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +1 -1
  497. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +6 -5
  498. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +1 -1
  499. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +6 -5
  500. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +1 -1
  501. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +6 -5
  502. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +1 -1
  503. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +6 -5
  504. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +1 -1
  505. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +6 -5
  506. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +1 -1
  507. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +6 -5
  508. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +1 -1
  509. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +6 -5
  510. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +1 -1
  511. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +6 -5
  512. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +1 -1
  513. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +6 -5
  514. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +1 -1
  515. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +6 -5
  516. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +1 -1
  517. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +6 -5
  518. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +1 -1
  519. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +6 -5
  520. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +1 -1
  521. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +6 -5
  522. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +1 -1
  523. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +6 -5
  524. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +379 -376
  525. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +6 -5
  526. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +1 -1
  527. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +6 -5
  528. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +1 -1
  529. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +6 -5
  530. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +138 -136
  531. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +6 -5
  532. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +1 -1
  533. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +6 -5
  534. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +1 -1
  535. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +6 -5
  536. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +1 -1
  537. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +6 -5
  538. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +1 -1
  539. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +6 -5
  540. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +1 -1
  541. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +6 -5
  542. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +1 -1
  543. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +6 -5
  544. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +12 -13
  545. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +6 -5
  546. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +1 -1
  547. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +6 -5
  548. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +1 -1
  549. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +6 -5
  550. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +1 -1
  551. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +6 -5
  552. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +1 -1
  553. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +6 -5
  554. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +1 -1
  555. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +6 -5
  556. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +1 -1
  557. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +6 -5
  558. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +1 -1
  559. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +6 -5
  560. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +1 -1
  561. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +6 -5
  562. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +1 -1
  563. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +6 -5
  564. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +1 -1
  565. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +6 -5
  566. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +1 -1
  567. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +6 -5
  568. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +1 -1
  569. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +6 -5
  570. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +1 -1
  571. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +6 -5
  572. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +1 -1
  573. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +6 -5
  574. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +1 -1
  575. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +6 -5
  576. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +1 -1
  577. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +6 -5
  578. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +1 -1
  579. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +6 -5
  580. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +1 -1
  581. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +6 -5
  582. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +1 -1
  583. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +6 -5
  584. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +1 -1
  585. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +6 -5
  586. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +1 -1
  587. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +6 -5
  588. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +1 -1
  589. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +6 -5
  590. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +1 -1
  591. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +6 -5
  592. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +1 -1
  593. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +6 -5
  594. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +1 -1
  595. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +6 -5
  596. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +1 -1
  597. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +6 -5
  598. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +1 -1
  599. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +6 -5
  600. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +1 -1
  601. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +6 -5
  602. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +1 -1
  603. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +6 -5
  604. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +1 -1
  605. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +6 -5
  606. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +329 -273
  607. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +11 -5
  608. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +1 -1
  609. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +6 -5
  610. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +1 -1
  611. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +6 -5
  612. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +1 -1
  613. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +6 -5
  614. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +1 -1
  615. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +6 -5
  616. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +1 -1
  617. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +6 -5
  618. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +1 -1
  619. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +6 -5
  620. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +1 -1
  621. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +6 -5
  622. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +1 -1
  623. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +6 -5
  624. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +1 -1
  625. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +6 -5
  626. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +1 -1
  627. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +6 -5
  628. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +1 -1
  629. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +6 -5
  630. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +1 -1
  631. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +6 -5
  632. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +1 -1
  633. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +6 -5
  634. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +1 -1
  635. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +6 -5
  636. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +1 -1
  637. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +6 -5
  638. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +1 -1
  639. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +6 -5
  640. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +1 -1
  641. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +6 -5
  642. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +1 -1
  643. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +6 -5
  644. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +1 -1
  645. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +6 -5
  646. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +1 -1
  647. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +6 -5
  648. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +1 -1
  649. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +6 -5
  650. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +1 -1
  651. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +6 -5
  652. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +1 -1
  653. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +6 -5
  654. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +1 -1
  655. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +6 -5
  656. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +1 -1
  657. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +6 -5
  658. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +1 -1
  659. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +6 -5
  660. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +1 -1
  661. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +6 -5
  662. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +1 -1
  663. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +6 -5
  664. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +1 -1
  665. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +6 -5
  666. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +1 -1
  667. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +6 -5
  668. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +1 -1
  669. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +6 -5
  670. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +1 -1
  671. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +6 -5
  672. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +1 -1
  673. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +6 -5
  674. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +1 -1
  675. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +6 -5
  676. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +1 -1
  677. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +6 -5
  678. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +1 -1
  679. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +6 -5
  680. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +1 -1
  681. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +6 -5
  682. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +1 -1
  683. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +6 -5
  684. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  685. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +7 -7
  686. data/src/core/ext/xds/upb_utils.h +1 -1
  687. data/src/core/ext/xds/xds_api.cc +34 -14
  688. data/src/core/ext/xds/xds_api.h +2 -2
  689. data/src/core/ext/xds/xds_bootstrap.cc +3 -3
  690. data/src/core/ext/xds/xds_bootstrap_grpc.cc +15 -15
  691. data/src/core/ext/xds/xds_client.cc +24 -3
  692. data/src/core/ext/xds/xds_client.h +1 -1
  693. data/src/core/ext/xds/xds_cluster.cc +26 -34
  694. data/src/core/ext/xds/xds_cluster.h +1 -2
  695. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +4 -3
  696. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -2
  697. data/src/core/ext/xds/xds_common_types.cc +5 -4
  698. data/src/core/ext/xds/xds_endpoint.cc +5 -2
  699. data/src/core/ext/xds/xds_endpoint.h +1 -1
  700. data/src/core/ext/xds/xds_http_fault_filter.cc +2 -2
  701. data/src/core/ext/xds/xds_http_fault_filter.h +1 -1
  702. data/src/core/ext/xds/xds_http_filters.h +3 -2
  703. data/src/core/ext/xds/xds_http_rbac_filter.cc +6 -8
  704. data/src/core/ext/xds/xds_http_rbac_filter.h +1 -1
  705. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +2 -2
  706. data/src/core/ext/xds/xds_http_stateful_session_filter.h +1 -1
  707. data/src/core/ext/xds/xds_lb_policy_registry.cc +4 -22
  708. data/src/core/ext/xds/xds_listener.cc +10 -4
  709. data/src/core/ext/xds/xds_listener.h +1 -1
  710. data/src/core/ext/xds/xds_resource_type.h +2 -2
  711. data/src/core/ext/xds/xds_route_config.cc +8 -5
  712. data/src/core/ext/xds/xds_route_config.h +1 -1
  713. data/src/core/lib/channel/channelz.cc +5 -4
  714. data/src/core/lib/channel/channelz_registry.cc +7 -6
  715. data/src/core/lib/channel/connected_channel.cc +82 -27
  716. data/src/core/lib/channel/promise_based_filter.cc +2 -8
  717. data/src/core/lib/debug/trace.cc +16 -7
  718. data/src/core/lib/debug/trace.h +12 -4
  719. data/src/core/lib/event_engine/event_engine.cc +4 -4
  720. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +8 -26
  721. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +6 -1
  722. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -0
  723. data/src/core/lib/event_engine/shim.cc +2 -0
  724. data/src/core/lib/event_engine/trace.cc +1 -0
  725. data/src/core/lib/event_engine/trace.h +6 -0
  726. data/src/core/lib/experiments/experiments.cc +3 -0
  727. data/src/core/lib/experiments/experiments.h +4 -1
  728. data/src/core/lib/gpr/posix/time.cc +5 -0
  729. data/src/core/lib/gprpp/status_helper.cc +2 -2
  730. data/src/core/lib/gprpp/validation_errors.cc +8 -3
  731. data/src/core/lib/gprpp/validation_errors.h +16 -9
  732. data/src/core/lib/iomgr/buffer_list.h +0 -1
  733. data/src/core/lib/iomgr/socket_utils_posix.cc +3 -0
  734. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  735. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -0
  736. data/src/core/lib/iomgr/timer_generic.cc +17 -16
  737. data/src/core/lib/json/json.h +61 -113
  738. data/src/core/lib/json/json_object_loader.cc +20 -20
  739. data/src/core/lib/json/json_object_loader.h +8 -3
  740. data/src/core/lib/json/json_reader.cc +58 -38
  741. data/src/core/lib/json/json_reader.h +34 -0
  742. data/src/core/lib/json/json_util.cc +6 -6
  743. data/src/core/lib/json/json_util.h +5 -4
  744. data/src/core/lib/json/json_writer.cc +19 -19
  745. data/src/core/lib/json/json_writer.h +33 -0
  746. data/src/core/lib/load_balancing/lb_policy_registry.cc +7 -7
  747. data/src/core/lib/promise/pipe.h +7 -0
  748. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +35 -37
  749. data/src/core/lib/security/credentials/external/external_account_credentials.cc +60 -62
  750. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +22 -21
  751. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +28 -27
  752. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -2
  753. data/src/core/lib/security/credentials/jwt/json_token.cc +6 -4
  754. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -5
  755. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +39 -38
  756. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -16
  757. data/src/core/lib/security/util/json_util.cc +5 -5
  758. data/src/core/lib/service_config/service_config_impl.cc +11 -5
  759. data/src/core/lib/slice/slice.h +2 -0
  760. data/src/core/lib/surface/call.cc +71 -26
  761. data/src/core/lib/surface/call.h +1 -5
  762. data/src/core/lib/surface/completion_queue.cc +2 -1
  763. data/src/core/lib/surface/server.cc +47 -19
  764. data/src/core/lib/surface/validate_metadata.cc +43 -42
  765. data/src/core/lib/surface/validate_metadata.h +9 -0
  766. data/src/core/lib/surface/version.cc +2 -2
  767. data/src/core/lib/transport/batch_builder.h +9 -1
  768. data/src/core/lib/transport/metadata_batch.h +71 -20
  769. data/src/core/lib/transport/metadata_compression_traits.h +67 -0
  770. data/src/core/lib/transport/parsed_metadata.h +16 -6
  771. data/src/core/lib/transport/simple_slice_based_metadata.h +48 -0
  772. data/src/core/lib/transport/transport.h +3 -0
  773. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -4
  774. data/src/ruby/lib/grpc/version.rb +1 -1
  775. data/third_party/abseil-cpp/absl/base/config.h +1 -1
  776. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +33 -47
  777. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +7 -4
  778. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +32 -2
  779. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +11 -12
  780. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +826 -0
  781. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +10 -12
  782. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +8 -10
  783. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +2 -1
  784. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +2 -1
  785. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +18 -14
  786. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +17 -21
  787. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +7 -3
  788. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +3 -4
  789. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -72
  790. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +4 -2
  791. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +4 -3
  792. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +7 -3
  793. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +4 -2
  794. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
  795. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -8
  796. data/third_party/boringssl-with-bazel/src/include/openssl/kyber.h +128 -0
  797. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +8 -1
  798. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +1 -1
  799. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +8 -12
  800. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1 -10
  801. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +9 -2
  802. data/third_party/boringssl-with-bazel/src/ssl/internal.h +17 -17
  803. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +8 -4
  804. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +2 -2
  805. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +72 -5
  806. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +19 -21
  807. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +2 -1
  808. data/third_party/upb/upb/{table_internal.h → alloc.h} +6 -6
  809. data/third_party/upb/upb/arena.h +4 -193
  810. data/third_party/upb/upb/array.h +4 -51
  811. data/third_party/upb/upb/base/descriptor_constants.h +104 -0
  812. data/third_party/upb/upb/base/log2.h +57 -0
  813. data/third_party/upb/upb/{status.c → base/status.c} +2 -7
  814. data/third_party/upb/upb/base/status.h +66 -0
  815. data/third_party/upb/upb/base/string_view.h +75 -0
  816. data/third_party/upb/upb/{array.c → collections/array.c} +67 -36
  817. data/third_party/upb/upb/collections/array.h +85 -0
  818. data/third_party/upb/upb/collections/array_internal.h +135 -0
  819. data/third_party/upb/upb/{map.c → collections/map.c} +53 -26
  820. data/third_party/upb/upb/collections/map.h +135 -0
  821. data/third_party/upb/upb/collections/map_gencode_util.h +78 -0
  822. data/third_party/upb/upb/collections/map_internal.h +170 -0
  823. data/third_party/upb/upb/collections/map_sorter.c +166 -0
  824. data/third_party/upb/upb/collections/map_sorter_internal.h +109 -0
  825. data/third_party/upb/upb/{message_value.h → collections/message_value.h} +12 -13
  826. data/third_party/upb/upb/decode.h +3 -62
  827. data/third_party/upb/upb/def.h +4 -384
  828. data/third_party/upb/upb/def.hpp +3 -411
  829. data/third_party/upb/upb/encode.h +3 -48
  830. data/third_party/upb/upb/extension_registry.h +3 -52
  831. data/third_party/upb/upb/{table.c → hash/common.c} +52 -110
  832. data/third_party/upb/upb/hash/common.h +199 -0
  833. data/third_party/upb/upb/hash/int_table.h +102 -0
  834. data/third_party/upb/upb/hash/str_table.h +161 -0
  835. data/third_party/upb/upb/{json_decode.c → json/decode.c} +63 -98
  836. data/third_party/upb/upb/json/decode.h +52 -0
  837. data/third_party/upb/upb/{json_encode.c → json/encode.c} +69 -45
  838. data/third_party/upb/upb/json/encode.h +70 -0
  839. data/third_party/upb/upb/json_decode.h +4 -15
  840. data/third_party/upb/upb/json_encode.h +4 -33
  841. data/third_party/upb/upb/lex/atoi.c +68 -0
  842. data/third_party/upb/upb/lex/atoi.h +53 -0
  843. data/third_party/upb/upb/{upb.c → lex/round_trip.c} +2 -11
  844. data/third_party/upb/upb/{internal/upb.h → lex/round_trip.h} +17 -30
  845. data/third_party/upb/upb/lex/strtod.c +97 -0
  846. data/third_party/upb/upb/lex/strtod.h +46 -0
  847. data/third_party/upb/upb/lex/unicode.c +57 -0
  848. data/third_party/upb/upb/lex/unicode.h +77 -0
  849. data/third_party/upb/upb/map.h +4 -85
  850. data/third_party/upb/upb/mem/alloc.c +47 -0
  851. data/third_party/upb/upb/mem/alloc.h +98 -0
  852. data/third_party/upb/upb/mem/arena.c +367 -0
  853. data/third_party/upb/upb/mem/arena.h +160 -0
  854. data/third_party/upb/upb/mem/arena_internal.h +114 -0
  855. data/third_party/upb/upb/message/accessors.c +68 -0
  856. data/third_party/upb/upb/message/accessors.h +379 -0
  857. data/third_party/upb/upb/message/accessors_internal.h +325 -0
  858. data/third_party/upb/upb/message/extension_internal.h +83 -0
  859. data/third_party/upb/upb/message/internal.h +135 -0
  860. data/third_party/upb/upb/message/message.c +180 -0
  861. data/third_party/upb/upb/message/message.h +69 -0
  862. data/third_party/upb/upb/mini_table/common.c +128 -0
  863. data/third_party/upb/upb/mini_table/common.h +170 -0
  864. data/third_party/upb/upb/mini_table/common_internal.h +111 -0
  865. data/third_party/upb/upb/{mini_table.c → mini_table/decode.c} +513 -533
  866. data/third_party/upb/upb/mini_table/decode.h +179 -0
  867. data/third_party/upb/upb/mini_table/encode.c +300 -0
  868. data/third_party/upb/upb/mini_table/encode_internal.h +111 -0
  869. data/third_party/upb/upb/{mini_table.hpp → mini_table/encode_internal.hpp} +32 -8
  870. data/third_party/upb/upb/mini_table/enum_internal.h +88 -0
  871. data/third_party/upb/upb/mini_table/extension_internal.h +47 -0
  872. data/third_party/upb/upb/{extension_registry.c → mini_table/extension_registry.c} +27 -24
  873. data/third_party/upb/upb/mini_table/extension_registry.h +104 -0
  874. data/third_party/upb/upb/mini_table/field_internal.h +192 -0
  875. data/third_party/upb/upb/mini_table/file_internal.h +47 -0
  876. data/third_party/upb/upb/mini_table/message_internal.h +136 -0
  877. data/third_party/upb/upb/mini_table/sub_internal.h +38 -0
  878. data/third_party/upb/upb/mini_table/types.h +40 -0
  879. data/third_party/upb/upb/mini_table.h +4 -157
  880. data/third_party/upb/upb/msg.h +3 -38
  881. data/third_party/upb/upb/port/atomic.h +101 -0
  882. data/third_party/upb/upb/{port_def.inc → port/def.inc} +94 -27
  883. data/third_party/upb/upb/{port_undef.inc → port/undef.inc} +13 -3
  884. data/third_party/upb/upb/{internal → port}/vsnprintf_compat.h +5 -7
  885. data/third_party/upb/upb/reflection/common.h +67 -0
  886. data/third_party/upb/upb/reflection/def.h +42 -0
  887. data/third_party/upb/upb/reflection/def.hpp +610 -0
  888. data/third_party/upb/upb/reflection/def_builder.c +357 -0
  889. data/third_party/upb/upb/reflection/def_builder_internal.h +157 -0
  890. data/third_party/upb/upb/reflection/def_pool.c +462 -0
  891. data/third_party/upb/upb/reflection/def_pool.h +108 -0
  892. data/third_party/upb/upb/reflection/def_pool_internal.h +77 -0
  893. data/third_party/upb/upb/reflection/def_type.c +50 -0
  894. data/third_party/upb/upb/reflection/def_type.h +81 -0
  895. data/third_party/upb/upb/reflection/desc_state.c +53 -0
  896. data/third_party/upb/upb/reflection/desc_state_internal.h +64 -0
  897. data/third_party/upb/upb/reflection/enum_def.c +310 -0
  898. data/third_party/upb/upb/reflection/enum_def.h +80 -0
  899. data/third_party/upb/upb/reflection/enum_def_internal.h +56 -0
  900. data/third_party/upb/upb/reflection/enum_reserved_range.c +84 -0
  901. data/third_party/upb/upb/reflection/enum_reserved_range.h +51 -0
  902. data/third_party/upb/upb/reflection/enum_reserved_range_internal.h +55 -0
  903. data/third_party/upb/upb/reflection/enum_value_def.c +144 -0
  904. data/third_party/upb/upb/reflection/enum_value_def.h +57 -0
  905. data/third_party/upb/upb/reflection/enum_value_def_internal.h +57 -0
  906. data/third_party/upb/upb/reflection/extension_range.c +93 -0
  907. data/third_party/upb/upb/reflection/extension_range.h +55 -0
  908. data/third_party/upb/upb/reflection/extension_range_internal.h +54 -0
  909. data/third_party/upb/upb/reflection/field_def.c +930 -0
  910. data/third_party/upb/upb/reflection/field_def.h +91 -0
  911. data/third_party/upb/upb/reflection/field_def_internal.h +76 -0
  912. data/third_party/upb/upb/reflection/file_def.c +370 -0
  913. data/third_party/upb/upb/reflection/file_def.h +77 -0
  914. data/third_party/upb/upb/reflection/file_def_internal.h +57 -0
  915. data/third_party/upb/upb/reflection/message.c +233 -0
  916. data/third_party/upb/upb/reflection/message.h +102 -0
  917. data/third_party/upb/upb/reflection/message.hpp +37 -0
  918. data/third_party/upb/upb/reflection/message_def.c +718 -0
  919. data/third_party/upb/upb/reflection/message_def.h +174 -0
  920. data/third_party/upb/upb/reflection/message_def_internal.h +63 -0
  921. data/third_party/upb/upb/reflection/message_reserved_range.c +81 -0
  922. data/third_party/upb/upb/reflection/message_reserved_range.h +51 -0
  923. data/third_party/upb/upb/reflection/message_reserved_range_internal.h +55 -0
  924. data/third_party/upb/upb/reflection/method_def.c +124 -0
  925. data/third_party/upb/upb/reflection/method_def.h +59 -0
  926. data/third_party/upb/upb/reflection/method_def_internal.h +53 -0
  927. data/third_party/upb/upb/reflection/oneof_def.c +226 -0
  928. data/third_party/upb/upb/reflection/oneof_def.h +66 -0
  929. data/third_party/upb/upb/reflection/oneof_def_internal.h +57 -0
  930. data/third_party/upb/upb/reflection/service_def.c +128 -0
  931. data/third_party/upb/upb/reflection/service_def.h +60 -0
  932. data/third_party/upb/upb/reflection/service_def_internal.h +53 -0
  933. data/third_party/upb/upb/reflection.h +4 -78
  934. data/third_party/upb/upb/reflection.hpp +3 -7
  935. data/third_party/upb/upb/status.h +4 -34
  936. data/third_party/upb/upb/{collections.h → string_view.h} +7 -7
  937. data/third_party/upb/upb/{text_encode.c → text/encode.c} +74 -70
  938. data/third_party/upb/upb/text/encode.h +69 -0
  939. data/third_party/upb/upb/text_encode.h +4 -32
  940. data/third_party/upb/upb/upb.h +6 -151
  941. data/third_party/upb/upb/upb.hpp +10 -18
  942. data/third_party/upb/upb/wire/common.h +44 -0
  943. data/third_party/upb/upb/wire/common_internal.h +50 -0
  944. data/third_party/upb/upb/wire/decode.c +1343 -0
  945. data/third_party/upb/upb/wire/decode.h +108 -0
  946. data/third_party/upb/upb/{decode_fast.c → wire/decode_fast.c} +184 -225
  947. data/third_party/upb/upb/{decode_fast.h → wire/decode_fast.h} +21 -7
  948. data/third_party/upb/upb/{internal/decode.h → wire/decode_internal.h} +44 -92
  949. data/third_party/upb/upb/{encode.c → wire/encode.c} +114 -95
  950. data/third_party/upb/upb/wire/encode.h +92 -0
  951. data/third_party/upb/upb/wire/eps_copy_input_stream.c +39 -0
  952. data/third_party/upb/upb/wire/eps_copy_input_stream.h +425 -0
  953. data/third_party/upb/upb/wire/reader.c +67 -0
  954. data/third_party/upb/upb/wire/reader.h +227 -0
  955. data/third_party/upb/upb/wire/swap_internal.h +63 -0
  956. data/third_party/upb/upb/wire/types.h +41 -0
  957. data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-neon.c +1 -1
  958. data/third_party/{upb/third_party/utf8_range → utf8_range}/utf8_range.h +12 -0
  959. metadata +155 -40
  960. data/src/core/ext/transport/chttp2/transport/context_list.cc +0 -71
  961. data/src/core/ext/transport/chttp2/transport/context_list.h +0 -54
  962. data/third_party/upb/upb/arena.c +0 -277
  963. data/third_party/upb/upb/decode.c +0 -1221
  964. data/third_party/upb/upb/def.c +0 -3269
  965. data/third_party/upb/upb/internal/table.h +0 -385
  966. data/third_party/upb/upb/msg.c +0 -368
  967. data/third_party/upb/upb/msg_internal.h +0 -837
  968. data/third_party/upb/upb/reflection.c +0 -323
  969. /data/third_party/{upb/third_party/utf8_range → utf8_range}/naive.c +0 -0
  970. /data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-sse.c +0 -0
@@ -25,333 +25,21 @@
25
25
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
  */
27
27
 
28
- #include "upb/mini_table.h"
28
+ #include "upb/mini_table/decode.h"
29
29
 
30
30
  #include <inttypes.h>
31
- #include <setjmp.h>
31
+ #include <stdlib.h>
32
32
 
33
- #include "upb/msg_internal.h"
34
- #include "upb/upb.h"
33
+ #include "upb/base/log2.h"
34
+ #include "upb/base/string_view.h"
35
+ #include "upb/mem/arena.h"
36
+ #include "upb/mini_table/common.h"
37
+ #include "upb/mini_table/common_internal.h"
38
+ #include "upb/mini_table/enum_internal.h"
39
+ #include "upb/mini_table/extension_internal.h"
35
40
 
36
41
  // Must be last.
37
- #include "upb/port_def.inc"
38
-
39
- typedef enum {
40
- kUpb_EncodedType_Double = 0,
41
- kUpb_EncodedType_Float = 1,
42
- kUpb_EncodedType_Fixed32 = 2,
43
- kUpb_EncodedType_Fixed64 = 3,
44
- kUpb_EncodedType_SFixed32 = 4,
45
- kUpb_EncodedType_SFixed64 = 5,
46
- kUpb_EncodedType_Int32 = 6,
47
- kUpb_EncodedType_UInt32 = 7,
48
- kUpb_EncodedType_SInt32 = 8,
49
- kUpb_EncodedType_Int64 = 9,
50
- kUpb_EncodedType_UInt64 = 10,
51
- kUpb_EncodedType_SInt64 = 11,
52
- kUpb_EncodedType_Enum = 12,
53
- kUpb_EncodedType_Bool = 13,
54
- kUpb_EncodedType_Bytes = 14,
55
- kUpb_EncodedType_String = 15,
56
- kUpb_EncodedType_Group = 16,
57
- kUpb_EncodedType_Message = 17,
58
-
59
- kUpb_EncodedType_RepeatedBase = 20,
60
- } upb_EncodedType;
61
-
62
- typedef enum {
63
- kUpb_EncodedFieldModifier_FlipPacked = 1 << 0,
64
- kUpb_EncodedFieldModifier_IsClosedEnum = 1 << 1,
65
- // upb only.
66
- kUpb_EncodedFieldModifier_IsProto3Singular = 1 << 2,
67
- kUpb_EncodedFieldModifier_IsRequired = 1 << 3,
68
- } upb_EncodedFieldModifier;
69
-
70
- enum {
71
- kUpb_EncodedValue_MinField = ' ',
72
- kUpb_EncodedValue_MaxField = 'K',
73
- kUpb_EncodedValue_MinModifier = 'L',
74
- kUpb_EncodedValue_MaxModifier = '[',
75
- kUpb_EncodedValue_End = '^',
76
- kUpb_EncodedValue_MinSkip = '_',
77
- kUpb_EncodedValue_MaxSkip = '~',
78
- kUpb_EncodedValue_OneofSeparator = '~',
79
- kUpb_EncodedValue_FieldSeparator = '|',
80
- kUpb_EncodedValue_MinOneofField = ' ',
81
- kUpb_EncodedValue_MaxOneofField = 'b',
82
- kUpb_EncodedValue_MaxEnumMask = 'A',
83
- };
84
-
85
- char upb_ToBase92(int8_t ch) {
86
- static const char kUpb_ToBase92[] = {
87
- ' ', '!', '#', '$', '%', '&', '(', ')', '*', '+', ',', '-', '.', '/',
88
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
89
- '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
90
- 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
91
- 'Z', '[', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
92
- 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
93
- 'w', 'x', 'y', 'z', '{', '|', '}', '~',
94
- };
95
-
96
- UPB_ASSERT(0 <= ch && ch < 92);
97
- return kUpb_ToBase92[ch];
98
- }
99
-
100
- char upb_FromBase92(uint8_t ch) {
101
- static const int8_t kUpb_FromBase92[] = {
102
- 0, 1, -1, 2, 3, 4, 5, -1, 6, 7, 8, 9, 10, 11, 12, 13,
103
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
104
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
105
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 58, 59, 60,
106
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
107
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
108
- };
109
-
110
- if (' ' > ch || ch > '~') return -1;
111
- return kUpb_FromBase92[ch - ' '];
112
- }
113
-
114
- bool upb_IsTypePackable(upb_FieldType type) {
115
- // clang-format off
116
- static const unsigned kUnpackableTypes =
117
- (1 << kUpb_FieldType_String) |
118
- (1 << kUpb_FieldType_Bytes) |
119
- (1 << kUpb_FieldType_Message) |
120
- (1 << kUpb_FieldType_Group);
121
- // clang-format on
122
- return (1 << type) & ~kUnpackableTypes;
123
- }
124
-
125
- /** upb_MtDataEncoder *********************************************************/
126
-
127
- typedef struct {
128
- uint64_t present_values_mask;
129
- uint32_t last_written_value;
130
- } upb_MtDataEncoderInternal_EnumState;
131
-
132
- typedef struct {
133
- uint64_t msg_modifiers;
134
- uint32_t last_field_num;
135
- enum {
136
- kUpb_OneofState_NotStarted,
137
- kUpb_OneofState_StartedOneof,
138
- kUpb_OneofState_EmittedOneofField,
139
- } oneof_state;
140
- } upb_MtDataEncoderInternal_MsgState;
141
-
142
- typedef struct {
143
- char* buf_start; // Only for checking kUpb_MtDataEncoder_MinSize.
144
- union {
145
- upb_MtDataEncoderInternal_EnumState enum_state;
146
- upb_MtDataEncoderInternal_MsgState msg_state;
147
- } state;
148
- } upb_MtDataEncoderInternal;
149
-
150
- static upb_MtDataEncoderInternal* upb_MtDataEncoder_GetInternal(
151
- upb_MtDataEncoder* e, char* buf_start) {
152
- UPB_ASSERT(sizeof(upb_MtDataEncoderInternal) <= sizeof(e->internal));
153
- upb_MtDataEncoderInternal* ret = (upb_MtDataEncoderInternal*)e->internal;
154
- ret->buf_start = buf_start;
155
- return ret;
156
- }
157
-
158
- static char* upb_MtDataEncoder_Put(upb_MtDataEncoder* e, char* ptr, char ch) {
159
- upb_MtDataEncoderInternal* in = (upb_MtDataEncoderInternal*)e->internal;
160
- UPB_ASSERT(ptr - in->buf_start < kUpb_MtDataEncoder_MinSize);
161
- if (ptr == e->end) return NULL;
162
- *ptr++ = upb_ToBase92(ch);
163
- return ptr;
164
- }
165
-
166
- static char* upb_MtDataEncoder_PutBase92Varint(upb_MtDataEncoder* e, char* ptr,
167
- uint32_t val, int min, int max) {
168
- int shift = _upb_Log2Ceiling(upb_FromBase92(max) - upb_FromBase92(min) + 1);
169
- UPB_ASSERT(shift <= 6);
170
- uint32_t mask = (1 << shift) - 1;
171
- do {
172
- uint32_t bits = val & mask;
173
- ptr = upb_MtDataEncoder_Put(e, ptr, bits + upb_FromBase92(min));
174
- if (!ptr) return NULL;
175
- val >>= shift;
176
- } while (val);
177
- return ptr;
178
- }
179
-
180
- char* upb_MtDataEncoder_PutModifier(upb_MtDataEncoder* e, char* ptr,
181
- uint64_t mod) {
182
- if (mod) {
183
- ptr = upb_MtDataEncoder_PutBase92Varint(e, ptr, mod,
184
- kUpb_EncodedValue_MinModifier,
185
- kUpb_EncodedValue_MaxModifier);
186
- }
187
- return ptr;
188
- }
189
-
190
- char* upb_MtDataEncoder_StartMessage(upb_MtDataEncoder* e, char* ptr,
191
- uint64_t msg_mod) {
192
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
193
- in->state.msg_state.msg_modifiers = msg_mod;
194
- in->state.msg_state.last_field_num = 0;
195
- in->state.msg_state.oneof_state = kUpb_OneofState_NotStarted;
196
- return upb_MtDataEncoder_PutModifier(e, ptr, msg_mod);
197
- }
198
-
199
- char* upb_MtDataEncoder_PutField(upb_MtDataEncoder* e, char* ptr,
200
- upb_FieldType type, uint32_t field_num,
201
- uint64_t field_mod) {
202
- static const char kUpb_TypeToEncoded[] = {
203
- [kUpb_FieldType_Double] = kUpb_EncodedType_Double,
204
- [kUpb_FieldType_Float] = kUpb_EncodedType_Float,
205
- [kUpb_FieldType_Int64] = kUpb_EncodedType_Int64,
206
- [kUpb_FieldType_UInt64] = kUpb_EncodedType_UInt64,
207
- [kUpb_FieldType_Int32] = kUpb_EncodedType_Int32,
208
- [kUpb_FieldType_Fixed64] = kUpb_EncodedType_Fixed64,
209
- [kUpb_FieldType_Fixed32] = kUpb_EncodedType_Fixed32,
210
- [kUpb_FieldType_Bool] = kUpb_EncodedType_Bool,
211
- [kUpb_FieldType_String] = kUpb_EncodedType_String,
212
- [kUpb_FieldType_Group] = kUpb_EncodedType_Group,
213
- [kUpb_FieldType_Message] = kUpb_EncodedType_Message,
214
- [kUpb_FieldType_Bytes] = kUpb_EncodedType_Bytes,
215
- [kUpb_FieldType_UInt32] = kUpb_EncodedType_UInt32,
216
- [kUpb_FieldType_Enum] = kUpb_EncodedType_Enum,
217
- [kUpb_FieldType_SFixed32] = kUpb_EncodedType_SFixed32,
218
- [kUpb_FieldType_SFixed64] = kUpb_EncodedType_SFixed64,
219
- [kUpb_FieldType_SInt32] = kUpb_EncodedType_SInt32,
220
- [kUpb_FieldType_SInt64] = kUpb_EncodedType_SInt64,
221
- };
222
-
223
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
224
- if (field_num <= in->state.msg_state.last_field_num) return NULL;
225
- if (in->state.msg_state.last_field_num + 1 != field_num) {
226
- // Put skip.
227
- UPB_ASSERT(field_num > in->state.msg_state.last_field_num);
228
- uint32_t skip = field_num - in->state.msg_state.last_field_num;
229
- ptr = upb_MtDataEncoder_PutBase92Varint(
230
- e, ptr, skip, kUpb_EncodedValue_MinSkip, kUpb_EncodedValue_MaxSkip);
231
- if (!ptr) return NULL;
232
- }
233
- in->state.msg_state.last_field_num = field_num;
234
-
235
- uint32_t encoded_modifiers = 0;
236
-
237
- // Put field type.
238
- if (type == kUpb_FieldType_Enum &&
239
- !(field_mod & kUpb_FieldModifier_IsClosedEnum)) {
240
- type = kUpb_FieldType_Int32;
241
- }
242
-
243
- int encoded_type = kUpb_TypeToEncoded[type];
244
- if (field_mod & kUpb_FieldModifier_IsRepeated) {
245
- // Repeated fields shift the type number up (unlike other modifiers which
246
- // are bit flags).
247
- encoded_type += kUpb_EncodedType_RepeatedBase;
248
-
249
- if (upb_IsTypePackable(type)) {
250
- bool field_is_packed = field_mod & kUpb_FieldModifier_IsPacked;
251
- bool default_is_packed = in->state.msg_state.msg_modifiers &
252
- kUpb_MessageModifier_DefaultIsPacked;
253
- if (field_is_packed != default_is_packed) {
254
- encoded_modifiers |= kUpb_EncodedFieldModifier_FlipPacked;
255
- }
256
- }
257
- }
258
- ptr = upb_MtDataEncoder_Put(e, ptr, encoded_type);
259
- if (!ptr) return NULL;
260
-
261
- if (field_mod & kUpb_FieldModifier_IsProto3Singular) {
262
- encoded_modifiers |= kUpb_EncodedFieldModifier_IsProto3Singular;
263
- }
264
- if (field_mod & kUpb_FieldModifier_IsRequired) {
265
- encoded_modifiers |= kUpb_EncodedFieldModifier_IsRequired;
266
- }
267
- return upb_MtDataEncoder_PutModifier(e, ptr, encoded_modifiers);
268
- }
269
-
270
- char* upb_MtDataEncoder_StartOneof(upb_MtDataEncoder* e, char* ptr) {
271
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
272
- if (in->state.msg_state.oneof_state == kUpb_OneofState_NotStarted) {
273
- ptr = upb_MtDataEncoder_Put(e, ptr, upb_FromBase92(kUpb_EncodedValue_End));
274
- } else {
275
- ptr = upb_MtDataEncoder_Put(
276
- e, ptr, upb_FromBase92(kUpb_EncodedValue_OneofSeparator));
277
- }
278
- in->state.msg_state.oneof_state = kUpb_OneofState_StartedOneof;
279
- return ptr;
280
- }
281
-
282
- char* upb_MtDataEncoder_PutOneofField(upb_MtDataEncoder* e, char* ptr,
283
- uint32_t field_num) {
284
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
285
- if (in->state.msg_state.oneof_state == kUpb_OneofState_EmittedOneofField) {
286
- ptr = upb_MtDataEncoder_Put(
287
- e, ptr, upb_FromBase92(kUpb_EncodedValue_FieldSeparator));
288
- if (!ptr) return NULL;
289
- }
290
- ptr = upb_MtDataEncoder_PutBase92Varint(e, ptr, field_num, upb_ToBase92(0),
291
- upb_ToBase92(63));
292
- in->state.msg_state.oneof_state = kUpb_OneofState_EmittedOneofField;
293
- return ptr;
294
- }
295
-
296
- void upb_MtDataEncoder_StartEnum(upb_MtDataEncoder* e) {
297
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, NULL);
298
- in->state.enum_state.present_values_mask = 0;
299
- in->state.enum_state.last_written_value = 0;
300
- }
301
-
302
- static char* upb_MtDataEncoder_FlushDenseEnumMask(upb_MtDataEncoder* e,
303
- char* ptr) {
304
- upb_MtDataEncoderInternal* in = (upb_MtDataEncoderInternal*)e->internal;
305
- ptr = upb_MtDataEncoder_Put(e, ptr, in->state.enum_state.present_values_mask);
306
- in->state.enum_state.present_values_mask = 0;
307
- in->state.enum_state.last_written_value += 5;
308
- return ptr;
309
- }
310
-
311
- char* upb_MtDataEncoder_PutEnumValue(upb_MtDataEncoder* e, char* ptr,
312
- uint32_t val) {
313
- // TODO(b/229641772): optimize this encoding.
314
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
315
- UPB_ASSERT(val >= in->state.enum_state.last_written_value);
316
- uint32_t delta = val - in->state.enum_state.last_written_value;
317
- if (delta >= 5 && in->state.enum_state.present_values_mask) {
318
- ptr = upb_MtDataEncoder_FlushDenseEnumMask(e, ptr);
319
- if (!ptr) {
320
- return NULL;
321
- }
322
- delta -= 5;
323
- }
324
-
325
- if (delta >= 5) {
326
- ptr = upb_MtDataEncoder_PutBase92Varint(
327
- e, ptr, delta, kUpb_EncodedValue_MinSkip, kUpb_EncodedValue_MaxSkip);
328
- in->state.enum_state.last_written_value += delta;
329
- delta = 0;
330
- }
331
-
332
- UPB_ASSERT((in->state.enum_state.present_values_mask >> delta) == 0);
333
- in->state.enum_state.present_values_mask |= 1ULL << delta;
334
- return ptr;
335
- }
336
-
337
- char* upb_MtDataEncoder_EndEnum(upb_MtDataEncoder* e, char* ptr) {
338
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
339
- if (!in->state.enum_state.present_values_mask) return ptr;
340
- return upb_MtDataEncoder_FlushDenseEnumMask(e, ptr);
341
- }
342
-
343
- const upb_MiniTable_Field* upb_MiniTable_FindFieldByNumber(
344
- const upb_MiniTable* table, uint32_t number) {
345
- int n = table->field_count;
346
- for (int i = 0; i < n; i++) {
347
- if (table->fields[i].number == number) {
348
- return &table->fields[i];
349
- }
350
- }
351
- return NULL;
352
- }
353
-
354
- /** Data decoder **************************************************************/
42
+ #include "upb/port/def.inc"
355
43
 
356
44
  // Note: we sort by this number when calculating layout order.
357
45
  typedef enum {
@@ -382,22 +70,31 @@ typedef struct {
382
70
  typedef struct {
383
71
  const char* end;
384
72
  upb_MiniTable* table;
385
- upb_MiniTable_Field* fields;
73
+ upb_MiniTableField* fields;
386
74
  upb_MiniTablePlatform platform;
387
75
  upb_LayoutItemVector vec;
388
76
  upb_Arena* arena;
389
77
  upb_Status* status;
78
+
79
+ // When building enums.
80
+ upb_MiniTableEnum* enum_table;
81
+ uint32_t enum_value_count;
82
+ uint32_t enum_data_count;
83
+ uint32_t enum_data_capacity;
84
+
390
85
  jmp_buf err;
391
86
  } upb_MtDecoder;
392
87
 
393
88
  UPB_PRINTF(2, 3)
394
89
  UPB_NORETURN static void upb_MtDecoder_ErrorFormat(upb_MtDecoder* d,
395
90
  const char* fmt, ...) {
396
- va_list argp;
397
- upb_Status_SetErrorMessage(d->status, "Error building mini table: ");
398
- va_start(argp, fmt);
399
- upb_Status_VAppendErrorFormat(d->status, fmt, argp);
400
- va_end(argp);
91
+ if (d->status) {
92
+ va_list argp;
93
+ upb_Status_SetErrorMessage(d->status, "Error building mini table: ");
94
+ va_start(argp, fmt);
95
+ upb_Status_VAppendErrorFormat(d->status, fmt, argp);
96
+ va_end(argp);
97
+ }
401
98
  UPB_LONGJMP(d->err, 1);
402
99
  }
403
100
 
@@ -424,11 +121,10 @@ static const char* upb_MiniTable_DecodeBase92Varint(upb_MtDecoder* d,
424
121
  uint32_t val = 0;
425
122
  uint32_t shift = 0;
426
123
  const int bits_per_char =
427
- _upb_Log2Ceiling(upb_FromBase92(max) - upb_FromBase92(min));
124
+ upb_Log2Ceiling(_upb_FromBase92(max) - _upb_FromBase92(min));
428
125
  char ch = first_ch;
429
126
  while (1) {
430
- uint32_t bits = upb_FromBase92(ch) - upb_FromBase92(min);
431
- UPB_ASSERT(shift < 32);
127
+ uint32_t bits = _upb_FromBase92(ch) - _upb_FromBase92(min);
432
128
  val |= bits << shift;
433
129
  if (ptr == d->end || *ptr < min || max < *ptr) {
434
130
  *out_val = val;
@@ -436,19 +132,21 @@ static const char* upb_MiniTable_DecodeBase92Varint(upb_MtDecoder* d,
436
132
  }
437
133
  ch = *ptr++;
438
134
  shift += bits_per_char;
135
+ if (shift >= 32) upb_MtDecoder_ErrorFormat(d, "Overlong varint");
439
136
  }
440
137
  }
441
138
 
442
- static bool upb_MiniTable_HasSub(upb_MiniTable_Field* field,
139
+ static bool upb_MiniTable_HasSub(upb_MiniTableField* field,
443
140
  uint64_t msg_modifiers) {
444
- switch (field->descriptortype) {
141
+ switch (field->UPB_PRIVATE(descriptortype)) {
445
142
  case kUpb_FieldType_Message:
446
143
  case kUpb_FieldType_Group:
447
144
  case kUpb_FieldType_Enum:
448
145
  return true;
449
146
  case kUpb_FieldType_String:
450
147
  if (!(msg_modifiers & kUpb_MessageModifier_ValidateUtf8)) {
451
- field->descriptortype = kUpb_FieldType_Bytes;
148
+ field->UPB_PRIVATE(descriptortype) = kUpb_FieldType_Bytes;
149
+ field->mode |= kUpb_LabelFlags_IsAlternate;
452
150
  }
453
151
  return false;
454
152
  default:
@@ -456,19 +154,27 @@ static bool upb_MiniTable_HasSub(upb_MiniTable_Field* field,
456
154
  }
457
155
  }
458
156
 
459
- static bool upb_MtDecoder_FieldIsPackable(upb_MiniTable_Field* field) {
157
+ static bool upb_MtDecoder_FieldIsPackable(upb_MiniTableField* field) {
460
158
  return (field->mode & kUpb_FieldMode_Array) &&
461
- upb_IsTypePackable(field->descriptortype);
159
+ upb_FieldType_IsPackable(field->UPB_PRIVATE(descriptortype));
462
160
  }
463
161
 
464
- static void upb_MiniTable_SetTypeAndSub(upb_MiniTable_Field* field,
162
+ static void upb_MiniTable_SetTypeAndSub(upb_MiniTableField* field,
465
163
  upb_FieldType type, uint32_t* sub_count,
466
- uint64_t msg_modifiers) {
467
- field->descriptortype = type;
164
+ uint64_t msg_modifiers,
165
+ bool is_proto3_enum) {
166
+ field->UPB_PRIVATE(descriptortype) = type;
167
+
168
+ if (is_proto3_enum) {
169
+ UPB_ASSERT(field->UPB_PRIVATE(descriptortype) == kUpb_FieldType_Enum);
170
+ field->UPB_PRIVATE(descriptortype) = kUpb_FieldType_Int32;
171
+ field->mode |= kUpb_LabelFlags_IsAlternate;
172
+ }
173
+
468
174
  if (upb_MiniTable_HasSub(field, msg_modifiers)) {
469
- field->submsg_index = sub_count ? (*sub_count)++ : 0;
175
+ field->UPB_PRIVATE(submsg_index) = sub_count ? (*sub_count)++ : 0;
470
176
  } else {
471
- field->submsg_index = kUpb_NoSub;
177
+ field->UPB_PRIVATE(submsg_index) = kUpb_NoSub;
472
178
  }
473
179
 
474
180
  if (upb_MtDecoder_FieldIsPackable(field) &&
@@ -477,8 +183,30 @@ static void upb_MiniTable_SetTypeAndSub(upb_MiniTable_Field* field,
477
183
  }
478
184
  }
479
185
 
186
+ static const char kUpb_EncodedToType[] = {
187
+ [kUpb_EncodedType_Double] = kUpb_FieldType_Double,
188
+ [kUpb_EncodedType_Float] = kUpb_FieldType_Float,
189
+ [kUpb_EncodedType_Int64] = kUpb_FieldType_Int64,
190
+ [kUpb_EncodedType_UInt64] = kUpb_FieldType_UInt64,
191
+ [kUpb_EncodedType_Int32] = kUpb_FieldType_Int32,
192
+ [kUpb_EncodedType_Fixed64] = kUpb_FieldType_Fixed64,
193
+ [kUpb_EncodedType_Fixed32] = kUpb_FieldType_Fixed32,
194
+ [kUpb_EncodedType_Bool] = kUpb_FieldType_Bool,
195
+ [kUpb_EncodedType_String] = kUpb_FieldType_String,
196
+ [kUpb_EncodedType_Group] = kUpb_FieldType_Group,
197
+ [kUpb_EncodedType_Message] = kUpb_FieldType_Message,
198
+ [kUpb_EncodedType_Bytes] = kUpb_FieldType_Bytes,
199
+ [kUpb_EncodedType_UInt32] = kUpb_FieldType_UInt32,
200
+ [kUpb_EncodedType_OpenEnum] = kUpb_FieldType_Enum,
201
+ [kUpb_EncodedType_SFixed32] = kUpb_FieldType_SFixed32,
202
+ [kUpb_EncodedType_SFixed64] = kUpb_FieldType_SFixed64,
203
+ [kUpb_EncodedType_SInt32] = kUpb_FieldType_SInt32,
204
+ [kUpb_EncodedType_SInt64] = kUpb_FieldType_SInt64,
205
+ [kUpb_EncodedType_ClosedEnum] = kUpb_FieldType_Enum,
206
+ };
207
+
480
208
  static void upb_MiniTable_SetField(upb_MtDecoder* d, uint8_t ch,
481
- upb_MiniTable_Field* field,
209
+ upb_MiniTableField* field,
482
210
  uint64_t msg_modifiers,
483
211
  uint32_t* sub_count) {
484
212
  static const char kUpb_EncodedToFieldRep[] = {
@@ -491,61 +219,50 @@ static void upb_MiniTable_SetField(upb_MtDecoder* d, uint8_t ch,
491
219
  [kUpb_EncodedType_Fixed32] = kUpb_FieldRep_4Byte,
492
220
  [kUpb_EncodedType_Bool] = kUpb_FieldRep_1Byte,
493
221
  [kUpb_EncodedType_String] = kUpb_FieldRep_StringView,
494
- [kUpb_EncodedType_Group] = kUpb_FieldRep_Pointer,
495
- [kUpb_EncodedType_Message] = kUpb_FieldRep_Pointer,
496
222
  [kUpb_EncodedType_Bytes] = kUpb_FieldRep_StringView,
497
223
  [kUpb_EncodedType_UInt32] = kUpb_FieldRep_4Byte,
498
- [kUpb_EncodedType_Enum] = kUpb_FieldRep_4Byte,
224
+ [kUpb_EncodedType_OpenEnum] = kUpb_FieldRep_4Byte,
499
225
  [kUpb_EncodedType_SFixed32] = kUpb_FieldRep_4Byte,
500
226
  [kUpb_EncodedType_SFixed64] = kUpb_FieldRep_8Byte,
501
227
  [kUpb_EncodedType_SInt32] = kUpb_FieldRep_4Byte,
502
228
  [kUpb_EncodedType_SInt64] = kUpb_FieldRep_8Byte,
229
+ [kUpb_EncodedType_ClosedEnum] = kUpb_FieldRep_4Byte,
503
230
  };
504
231
 
505
- static const char kUpb_EncodedToType[] = {
506
- [kUpb_EncodedType_Double] = kUpb_FieldType_Double,
507
- [kUpb_EncodedType_Float] = kUpb_FieldType_Float,
508
- [kUpb_EncodedType_Int64] = kUpb_FieldType_Int64,
509
- [kUpb_EncodedType_UInt64] = kUpb_FieldType_UInt64,
510
- [kUpb_EncodedType_Int32] = kUpb_FieldType_Int32,
511
- [kUpb_EncodedType_Fixed64] = kUpb_FieldType_Fixed64,
512
- [kUpb_EncodedType_Fixed32] = kUpb_FieldType_Fixed32,
513
- [kUpb_EncodedType_Bool] = kUpb_FieldType_Bool,
514
- [kUpb_EncodedType_String] = kUpb_FieldType_String,
515
- [kUpb_EncodedType_Group] = kUpb_FieldType_Group,
516
- [kUpb_EncodedType_Message] = kUpb_FieldType_Message,
517
- [kUpb_EncodedType_Bytes] = kUpb_FieldType_Bytes,
518
- [kUpb_EncodedType_UInt32] = kUpb_FieldType_UInt32,
519
- [kUpb_EncodedType_Enum] = kUpb_FieldType_Enum,
520
- [kUpb_EncodedType_SFixed32] = kUpb_FieldType_SFixed32,
521
- [kUpb_EncodedType_SFixed64] = kUpb_FieldType_SFixed64,
522
- [kUpb_EncodedType_SInt32] = kUpb_FieldType_SInt32,
523
- [kUpb_EncodedType_SInt64] = kUpb_FieldType_SInt64,
524
- };
232
+ char pointer_rep = d->platform == kUpb_MiniTablePlatform_32Bit
233
+ ? kUpb_FieldRep_4Byte
234
+ : kUpb_FieldRep_8Byte;
525
235
 
526
- int8_t type = upb_FromBase92(ch);
527
- if (ch >= upb_ToBase92(kUpb_EncodedType_RepeatedBase)) {
236
+ int8_t type = _upb_FromBase92(ch);
237
+ if (ch >= _upb_ToBase92(kUpb_EncodedType_RepeatedBase)) {
528
238
  type -= kUpb_EncodedType_RepeatedBase;
529
239
  field->mode = kUpb_FieldMode_Array;
530
- field->mode |= kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift;
240
+ field->mode |= pointer_rep << kUpb_FieldRep_Shift;
531
241
  field->offset = kNoPresence;
532
242
  } else {
533
243
  field->mode = kUpb_FieldMode_Scalar;
534
- field->mode |= kUpb_EncodedToFieldRep[type] << kUpb_FieldRep_Shift;
535
244
  field->offset = kHasbitPresence;
245
+ if (type == kUpb_EncodedType_Group || type == kUpb_EncodedType_Message) {
246
+ field->mode |= pointer_rep << kUpb_FieldRep_Shift;
247
+ } else if ((unsigned long)type >= sizeof(kUpb_EncodedToFieldRep)) {
248
+ upb_MtDecoder_ErrorFormat(d, "Invalid field type: %d", (int)type);
249
+ UPB_UNREACHABLE();
250
+ } else {
251
+ field->mode |= kUpb_EncodedToFieldRep[type] << kUpb_FieldRep_Shift;
252
+ }
536
253
  }
537
- if (type >= 18) {
254
+ if ((unsigned long)type >= sizeof(kUpb_EncodedToType)) {
538
255
  upb_MtDecoder_ErrorFormat(d, "Invalid field type: %d", (int)type);
539
256
  UPB_UNREACHABLE();
540
257
  }
541
258
  upb_MiniTable_SetTypeAndSub(field, kUpb_EncodedToType[type], sub_count,
542
- msg_modifiers);
259
+ msg_modifiers, type == kUpb_EncodedType_OpenEnum);
543
260
  }
544
261
 
545
262
  static void upb_MtDecoder_ModifyField(upb_MtDecoder* d,
546
263
  uint32_t message_modifiers,
547
264
  uint32_t field_modifiers,
548
- upb_MiniTable_Field* field) {
265
+ upb_MiniTableField* field) {
549
266
  if (field_modifiers & kUpb_EncodedFieldModifier_FlipPacked) {
550
267
  if (!upb_MtDecoder_FieldIsPackable(field)) {
551
268
  upb_MtDecoder_ErrorFormat(
@@ -607,13 +324,15 @@ static void upb_MtDecoder_PushOneof(upb_MtDecoder* d, upb_LayoutItem item) {
607
324
  size_t upb_MtDecoder_SizeOfRep(upb_FieldRep rep,
608
325
  upb_MiniTablePlatform platform) {
609
326
  static const uint8_t kRepToSize32[] = {
610
- [kUpb_FieldRep_1Byte] = 1, [kUpb_FieldRep_4Byte] = 4,
611
- [kUpb_FieldRep_Pointer] = 4, [kUpb_FieldRep_StringView] = 8,
327
+ [kUpb_FieldRep_1Byte] = 1,
328
+ [kUpb_FieldRep_4Byte] = 4,
329
+ [kUpb_FieldRep_StringView] = 8,
612
330
  [kUpb_FieldRep_8Byte] = 8,
613
331
  };
614
332
  static const uint8_t kRepToSize64[] = {
615
- [kUpb_FieldRep_1Byte] = 1, [kUpb_FieldRep_4Byte] = 4,
616
- [kUpb_FieldRep_Pointer] = 8, [kUpb_FieldRep_StringView] = 16,
333
+ [kUpb_FieldRep_1Byte] = 1,
334
+ [kUpb_FieldRep_4Byte] = 4,
335
+ [kUpb_FieldRep_StringView] = 16,
617
336
  [kUpb_FieldRep_8Byte] = 8,
618
337
  };
619
338
  UPB_ASSERT(sizeof(upb_StringView) ==
@@ -625,13 +344,15 @@ size_t upb_MtDecoder_SizeOfRep(upb_FieldRep rep,
625
344
  size_t upb_MtDecoder_AlignOfRep(upb_FieldRep rep,
626
345
  upb_MiniTablePlatform platform) {
627
346
  static const uint8_t kRepToAlign32[] = {
628
- [kUpb_FieldRep_1Byte] = 1, [kUpb_FieldRep_4Byte] = 4,
629
- [kUpb_FieldRep_Pointer] = 4, [kUpb_FieldRep_StringView] = 4,
347
+ [kUpb_FieldRep_1Byte] = 1,
348
+ [kUpb_FieldRep_4Byte] = 4,
349
+ [kUpb_FieldRep_StringView] = 4,
630
350
  [kUpb_FieldRep_8Byte] = 8,
631
351
  };
632
352
  static const uint8_t kRepToAlign64[] = {
633
- [kUpb_FieldRep_1Byte] = 1, [kUpb_FieldRep_4Byte] = 4,
634
- [kUpb_FieldRep_Pointer] = 8, [kUpb_FieldRep_StringView] = 8,
353
+ [kUpb_FieldRep_1Byte] = 1,
354
+ [kUpb_FieldRep_4Byte] = 4,
355
+ [kUpb_FieldRep_StringView] = 8,
635
356
  [kUpb_FieldRep_8Byte] = 8,
636
357
  };
637
358
  UPB_ASSERT(UPB_ALIGN_OF(upb_StringView) ==
@@ -648,7 +369,7 @@ static const char* upb_MtDecoder_DecodeOneofField(upb_MtDecoder* d,
648
369
  ptr = upb_MiniTable_DecodeBase92Varint(
649
370
  d, ptr, first_ch, kUpb_EncodedValue_MinOneofField,
650
371
  kUpb_EncodedValue_MaxOneofField, &field_num);
651
- upb_MiniTable_Field* f =
372
+ upb_MiniTableField* f =
652
373
  (void*)upb_MiniTable_FindFieldByNumber(d->table, field_num);
653
374
 
654
375
  if (!f) {
@@ -703,7 +424,7 @@ static const char* upb_MtDecoder_DecodeOneofs(upb_MtDecoder* d,
703
424
 
704
425
  static const char* upb_MtDecoder_ParseModifier(upb_MtDecoder* d,
705
426
  const char* ptr, char first_ch,
706
- upb_MiniTable_Field* last_field,
427
+ upb_MiniTableField* last_field,
707
428
  uint64_t* msg_modifiers) {
708
429
  uint32_t mod;
709
430
  ptr = upb_MiniTable_DecodeBase92Varint(d, ptr, first_ch,
@@ -724,16 +445,19 @@ static const char* upb_MtDecoder_ParseModifier(upb_MtDecoder* d,
724
445
 
725
446
  static void upb_MtDecoder_AllocateSubs(upb_MtDecoder* d, uint32_t sub_count) {
726
447
  size_t subs_bytes = sizeof(*d->table->subs) * sub_count;
727
- d->table->subs = upb_Arena_Malloc(d->arena, subs_bytes);
448
+ void* subs = upb_Arena_Malloc(d->arena, subs_bytes);
449
+ memset(subs, 0, subs_bytes);
450
+ d->table->subs = subs;
728
451
  upb_MtDecoder_CheckOutOfMemory(d, d->table->subs);
729
452
  }
730
453
 
731
- static void upb_MtDecoder_Parse(upb_MtDecoder* d, const char* ptr, size_t len,
732
- void* fields, size_t field_size,
733
- uint16_t* field_count, uint32_t* sub_count) {
454
+ static const char* upb_MtDecoder_Parse(upb_MtDecoder* d, const char* ptr,
455
+ size_t len, void* fields,
456
+ size_t field_size, uint16_t* field_count,
457
+ uint32_t* sub_count) {
734
458
  uint64_t msg_modifiers = 0;
735
459
  uint32_t last_field_number = 0;
736
- upb_MiniTable_Field* last_field = NULL;
460
+ upb_MiniTableField* last_field = NULL;
737
461
  bool need_dense_below = d->table != NULL;
738
462
 
739
463
  d->end = UPB_PTRADD(ptr, len);
@@ -741,7 +465,11 @@ static void upb_MtDecoder_Parse(upb_MtDecoder* d, const char* ptr, size_t len,
741
465
  while (ptr < d->end) {
742
466
  char ch = *ptr++;
743
467
  if (ch <= kUpb_EncodedValue_MaxField) {
744
- upb_MiniTable_Field* field = fields;
468
+ if (!d->table && last_field) {
469
+ // For extensions, consume only a single field and then return.
470
+ return --ptr;
471
+ }
472
+ upb_MiniTableField* field = fields;
745
473
  *field_count += 1;
746
474
  fields = (char*)fields + field_size;
747
475
  field->number = ++last_field_number;
@@ -771,12 +499,17 @@ static void upb_MtDecoder_Parse(upb_MtDecoder* d, const char* ptr, size_t len,
771
499
  kUpb_EncodedValue_MaxSkip, &skip);
772
500
  last_field_number += skip;
773
501
  last_field_number--; // Next field seen will increment.
502
+ } else {
503
+ upb_MtDecoder_ErrorFormat(d, "Invalid char: %c", ch);
504
+ UPB_UNREACHABLE();
774
505
  }
775
506
  }
776
507
 
777
508
  if (need_dense_below) {
778
509
  d->table->dense_below = d->table->field_count;
779
510
  }
511
+
512
+ return ptr;
780
513
  }
781
514
 
782
515
  static void upb_MtDecoder_ParseMessage(upb_MtDecoder* d, const char* data,
@@ -807,8 +540,8 @@ int upb_MtDecoder_CompareFields(const void* _a, const void* _b) {
807
540
  // 2. field_index (smallest numbers first)
808
541
  // The main goal of this is to reduce space lost to padding.
809
542
  // Later we may have more subtle reasons to prefer a different ordering.
810
- const int rep_bits = _upb_Log2Ceiling(kUpb_FieldRep_Max);
811
- const int type_bits = _upb_Log2Ceiling(kUpb_LayoutItemType_Max);
543
+ const int rep_bits = upb_Log2Ceiling(kUpb_FieldRep_Max);
544
+ const int type_bits = upb_Log2Ceiling(kUpb_LayoutItemType_Max);
812
545
  const int idx_bits = (sizeof(a->field_index) * 8);
813
546
  UPB_ASSERT(idx_bits + rep_bits + type_bits < 32);
814
547
  #define UPB_COMBINE(rep, ty, idx) (((rep << type_bits) | ty) << idx_bits) | idx
@@ -823,7 +556,7 @@ static bool upb_MtDecoder_SortLayoutItems(upb_MtDecoder* d) {
823
556
  // Add items for all non-oneof fields (oneofs were already added).
824
557
  int n = d->table->field_count;
825
558
  for (int i = 0; i < n; i++) {
826
- upb_MiniTable_Field* f = &d->fields[i];
559
+ upb_MiniTableField* f = &d->fields[i];
827
560
  if (f->offset >= kOneofBase) continue;
828
561
  upb_LayoutItem item = {.field_index = i,
829
562
  .rep = f->mode >> kUpb_FieldRep_Shift,
@@ -849,7 +582,7 @@ static void upb_MtDecoder_AssignHasbits(upb_MiniTable* ret) {
849
582
 
850
583
  // First assign required fields, which must have the lowest hasbits.
851
584
  for (int i = 0; i < n; i++) {
852
- upb_MiniTable_Field* field = (upb_MiniTable_Field*)&ret->fields[i];
585
+ upb_MiniTableField* field = (upb_MiniTableField*)&ret->fields[i];
853
586
  if (field->offset == kRequiredPresence) {
854
587
  field->presence = ++last_hasbit;
855
588
  } else if (field->offset == kNoPresence) {
@@ -860,7 +593,7 @@ static void upb_MtDecoder_AssignHasbits(upb_MiniTable* ret) {
860
593
 
861
594
  // Next assign non-required hasbit fields.
862
595
  for (int i = 0; i < n; i++) {
863
- upb_MiniTable_Field* field = (upb_MiniTable_Field*)&ret->fields[i];
596
+ upb_MiniTableField* field = (upb_MiniTableField*)&ret->fields[i];
864
597
  if (field->offset == kHasbitPresence) {
865
598
  field->presence = ++last_hasbit;
866
599
  }
@@ -873,7 +606,13 @@ size_t upb_MtDecoder_Place(upb_MtDecoder* d, upb_FieldRep rep) {
873
606
  size_t size = upb_MtDecoder_SizeOfRep(rep, d->platform);
874
607
  size_t align = upb_MtDecoder_AlignOfRep(rep, d->platform);
875
608
  size_t ret = UPB_ALIGN_UP(d->table->size, align);
876
- d->table->size = ret + size;
609
+ static const size_t max = UINT16_MAX;
610
+ size_t new_size = ret + size;
611
+ if (new_size > max) {
612
+ upb_MtDecoder_ErrorFormat(
613
+ d, "Message size exceeded maximum size of %zu bytes", max);
614
+ }
615
+ d->table->size = new_size;
877
616
  return ret;
878
617
  }
879
618
 
@@ -889,7 +628,7 @@ static void upb_MtDecoder_AssignOffsets(upb_MtDecoder* d) {
889
628
  // actual offsets will overwrite the links of the linked list.
890
629
  for (upb_LayoutItem* item = d->vec.data; item < end; item++) {
891
630
  if (item->type != kUpb_LayoutItemType_OneofCase) continue;
892
- upb_MiniTable_Field* f = &d->fields[item->field_index];
631
+ upb_MiniTableField* f = &d->fields[item->field_index];
893
632
  while (true) {
894
633
  f->presence = ~item->offset;
895
634
  if (f->offset == kUpb_LayoutItem_IndexSentinel) break;
@@ -900,7 +639,7 @@ static void upb_MtDecoder_AssignOffsets(upb_MtDecoder* d) {
900
639
 
901
640
  // Assign offsets.
902
641
  for (upb_LayoutItem* item = d->vec.data; item < end; item++) {
903
- upb_MiniTable_Field* f = &d->fields[item->field_index];
642
+ upb_MiniTableField* f = &d->fields[item->field_index];
904
643
  switch (item->type) {
905
644
  case kUpb_LayoutItemType_OneofField:
906
645
  while (true) {
@@ -926,6 +665,141 @@ static void upb_MtDecoder_AssignOffsets(upb_MtDecoder* d) {
926
665
  d->table->size = UPB_ALIGN_UP(d->table->size, 8);
927
666
  }
928
667
 
668
+ static void upb_MtDecoder_ValidateEntryField(upb_MtDecoder* d,
669
+ const upb_MiniTableField* f,
670
+ uint32_t expected_num) {
671
+ const char* name = expected_num == 1 ? "key" : "val";
672
+ if (f->number != expected_num) {
673
+ upb_MtDecoder_ErrorFormat(d,
674
+ "map %s did not have expected number (%d vs %d)",
675
+ name, expected_num, (int)f->number);
676
+ }
677
+
678
+ if (upb_IsRepeatedOrMap(f)) {
679
+ upb_MtDecoder_ErrorFormat(
680
+ d, "map %s cannot be repeated or map, or be in oneof", name);
681
+ }
682
+
683
+ uint32_t not_ok_types;
684
+ if (expected_num == 1) {
685
+ not_ok_types = (1 << kUpb_FieldType_Float) | (1 << kUpb_FieldType_Double) |
686
+ (1 << kUpb_FieldType_Message) | (1 << kUpb_FieldType_Group) |
687
+ (1 << kUpb_FieldType_Bytes) | (1 << kUpb_FieldType_Enum);
688
+ } else {
689
+ not_ok_types = 1 << kUpb_FieldType_Group;
690
+ }
691
+
692
+ if ((1 << upb_MiniTableField_Type(f)) & not_ok_types) {
693
+ upb_MtDecoder_ErrorFormat(d, "map %s cannot have type %d", name,
694
+ (int)f->UPB_PRIVATE(descriptortype));
695
+ }
696
+ }
697
+
698
+ static void upb_MtDecoder_ParseMap(upb_MtDecoder* d, const char* data,
699
+ size_t len) {
700
+ upb_MtDecoder_ParseMessage(d, data, len);
701
+ upb_MtDecoder_AssignHasbits(d->table);
702
+
703
+ if (UPB_UNLIKELY(d->table->field_count != 2)) {
704
+ upb_MtDecoder_ErrorFormat(d, "%hu fields in map", d->table->field_count);
705
+ UPB_UNREACHABLE();
706
+ }
707
+
708
+ upb_LayoutItem* end = UPB_PTRADD(d->vec.data, d->vec.size);
709
+ for (upb_LayoutItem* item = d->vec.data; item < end; item++) {
710
+ if (item->type == kUpb_LayoutItemType_OneofCase) {
711
+ upb_MtDecoder_ErrorFormat(d, "Map entry cannot have oneof");
712
+ }
713
+ }
714
+
715
+ upb_MtDecoder_ValidateEntryField(d, &d->table->fields[0], 1);
716
+ upb_MtDecoder_ValidateEntryField(d, &d->table->fields[1], 2);
717
+
718
+ // Map entries have a pre-determined layout, regardless of types.
719
+ // NOTE: sync with mini_table/message_internal.h.
720
+ const size_t kv_size = d->platform == kUpb_MiniTablePlatform_32Bit ? 8 : 16;
721
+ const size_t hasbit_size = 8;
722
+ d->fields[0].offset = hasbit_size;
723
+ d->fields[1].offset = hasbit_size + kv_size;
724
+ d->table->size = UPB_ALIGN_UP(hasbit_size + kv_size + kv_size, 8);
725
+
726
+ // Map entries have a special bit set to signal it's a map entry, used in
727
+ // upb_MiniTable_SetSubMessage() below.
728
+ d->table->ext |= kUpb_ExtMode_IsMapEntry;
729
+ }
730
+
731
+ static void upb_MtDecoder_ParseMessageSet(upb_MtDecoder* d, const char* data,
732
+ size_t len) {
733
+ if (len > 0) {
734
+ upb_MtDecoder_ErrorFormat(d, "Invalid message set encode length: %zu", len);
735
+ UPB_UNREACHABLE();
736
+ }
737
+
738
+ upb_MiniTable* ret = d->table;
739
+ ret->size = 0;
740
+ ret->field_count = 0;
741
+ ret->ext = kUpb_ExtMode_IsMessageSet;
742
+ ret->dense_below = 0;
743
+ ret->table_mask = -1;
744
+ ret->required_count = 0;
745
+ }
746
+
747
+ static upb_MiniTable* upb_MtDecoder_DoBuildMiniTableWithBuf(
748
+ upb_MtDecoder* decoder, const char* data, size_t len, void** buf,
749
+ size_t* buf_size) {
750
+ upb_MtDecoder_CheckOutOfMemory(decoder, decoder->table);
751
+
752
+ decoder->table->size = 0;
753
+ decoder->table->field_count = 0;
754
+ decoder->table->ext = kUpb_ExtMode_NonExtendable;
755
+ decoder->table->dense_below = 0;
756
+ decoder->table->table_mask = -1;
757
+ decoder->table->required_count = 0;
758
+
759
+ // Strip off and verify the version tag.
760
+ if (!len--) goto done;
761
+ const char vers = *data++;
762
+
763
+ switch (vers) {
764
+ case kUpb_EncodedVersion_MapV1:
765
+ upb_MtDecoder_ParseMap(decoder, data, len);
766
+ break;
767
+
768
+ case kUpb_EncodedVersion_MessageV1:
769
+ upb_MtDecoder_ParseMessage(decoder, data, len);
770
+ upb_MtDecoder_AssignHasbits(decoder->table);
771
+ upb_MtDecoder_SortLayoutItems(decoder);
772
+ upb_MtDecoder_AssignOffsets(decoder);
773
+ break;
774
+
775
+ case kUpb_EncodedVersion_MessageSetV1:
776
+ upb_MtDecoder_ParseMessageSet(decoder, data, len);
777
+ break;
778
+
779
+ default:
780
+ upb_MtDecoder_ErrorFormat(decoder, "Invalid message version: %c", vers);
781
+ UPB_UNREACHABLE();
782
+ }
783
+
784
+ done:
785
+ *buf = decoder->vec.data;
786
+ *buf_size = decoder->vec.capacity * sizeof(*decoder->vec.data);
787
+ return decoder->table;
788
+ }
789
+
790
+ static upb_MiniTable* upb_MtDecoder_BuildMiniTableWithBuf(
791
+ upb_MtDecoder* const decoder, const char* const data, const size_t len,
792
+ void** const buf, size_t* const buf_size) {
793
+ if (UPB_SETJMP(decoder->err) != 0) {
794
+ *buf = decoder->vec.data;
795
+ *buf_size = decoder->vec.capacity * sizeof(*decoder->vec.data);
796
+ return NULL;
797
+ }
798
+
799
+ return upb_MtDecoder_DoBuildMiniTableWithBuf(decoder, data, len, buf,
800
+ buf_size);
801
+ }
802
+
929
803
  upb_MiniTable* upb_MiniTable_BuildWithBuf(const char* data, size_t len,
930
804
  upb_MiniTablePlatform platform,
931
805
  upb_Arena* arena, void** buf,
@@ -944,177 +818,198 @@ upb_MiniTable* upb_MiniTable_BuildWithBuf(const char* data, size_t len,
944
818
  .table = upb_Arena_Malloc(arena, sizeof(*decoder.table)),
945
819
  };
946
820
 
947
- if (UPB_SETJMP(decoder.err)) {
948
- decoder.table = NULL;
949
- goto done;
950
- }
951
-
952
- upb_MtDecoder_CheckOutOfMemory(&decoder, decoder.table);
953
-
954
- decoder.table->size = 0;
955
- decoder.table->field_count = 0;
956
- decoder.table->ext = kUpb_ExtMode_NonExtendable;
957
- decoder.table->dense_below = 0;
958
- decoder.table->table_mask = 0;
959
- decoder.table->required_count = 0;
960
-
961
- upb_MtDecoder_ParseMessage(&decoder, data, len);
962
- upb_MtDecoder_AssignHasbits(decoder.table);
963
- upb_MtDecoder_SortLayoutItems(&decoder);
964
- upb_MtDecoder_AssignOffsets(&decoder);
965
-
966
- done:
967
- *buf = decoder.vec.data;
968
- *buf_size = decoder.vec.capacity / sizeof(*decoder.vec.data);
969
- return decoder.table;
821
+ return upb_MtDecoder_BuildMiniTableWithBuf(&decoder, data, len, buf,
822
+ buf_size);
970
823
  }
971
824
 
972
- upb_MiniTable* upb_MiniTable_BuildMessageSet(upb_MiniTablePlatform platform,
973
- upb_Arena* arena) {
974
- upb_MiniTable* ret = upb_Arena_Malloc(arena, sizeof(*ret));
975
- if (!ret) return NULL;
976
-
977
- ret->size = 0;
978
- ret->field_count = 0;
979
- ret->ext = kUpb_ExtMode_IsMessageSet;
980
- ret->dense_below = 0;
981
- ret->table_mask = 0;
982
- ret->required_count = 0;
983
- return ret;
825
+ static size_t upb_MiniTableEnum_Size(size_t count) {
826
+ return sizeof(upb_MiniTableEnum) + count * sizeof(uint32_t);
984
827
  }
985
828
 
986
- upb_MiniTable* upb_MiniTable_BuildMapEntry(upb_FieldType key_type,
987
- upb_FieldType value_type,
988
- bool value_is_proto3_enum,
989
- upb_MiniTablePlatform platform,
990
- upb_Arena* arena) {
991
- upb_MiniTable* ret = upb_Arena_Malloc(arena, sizeof(*ret));
992
- upb_MiniTable_Field* fields = upb_Arena_Malloc(arena, sizeof(*fields) * 2);
993
- if (!ret || !fields) return NULL;
994
-
995
- upb_MiniTable_Sub* subs = NULL;
996
- if (value_is_proto3_enum) value_type = kUpb_FieldType_Int32;
997
- if (value_type == kUpb_FieldType_Message ||
998
- value_type == kUpb_FieldType_Group || value_type == kUpb_FieldType_Enum) {
999
- subs = upb_Arena_Malloc(arena, sizeof(*subs));
1000
- if (!subs) return NULL;
829
+ static upb_MiniTableEnum* _upb_MiniTable_AddEnumDataMember(upb_MtDecoder* d,
830
+ uint32_t val) {
831
+ if (d->enum_data_count == d->enum_data_capacity) {
832
+ size_t old_sz = upb_MiniTableEnum_Size(d->enum_data_capacity);
833
+ d->enum_data_capacity = UPB_MAX(2, d->enum_data_capacity * 2);
834
+ size_t new_sz = upb_MiniTableEnum_Size(d->enum_data_capacity);
835
+ d->enum_table = upb_Arena_Realloc(d->arena, d->enum_table, old_sz, new_sz);
836
+ upb_MtDecoder_CheckOutOfMemory(d, d->enum_table);
1001
837
  }
1002
-
1003
- size_t field_size =
1004
- upb_MtDecoder_SizeOfRep(kUpb_FieldRep_StringView, platform);
1005
-
1006
- fields[0].number = 1;
1007
- fields[1].number = 2;
1008
- fields[0].mode = kUpb_FieldMode_Scalar;
1009
- fields[1].mode = kUpb_FieldMode_Scalar;
1010
- fields[0].presence = 0;
1011
- fields[1].presence = 0;
1012
- fields[0].offset = 0;
1013
- fields[1].offset = field_size;
1014
-
1015
- upb_MiniTable_SetTypeAndSub(&fields[0], key_type, NULL, 0);
1016
- upb_MiniTable_SetTypeAndSub(&fields[1], value_type, NULL, 0);
1017
-
1018
- ret->size = UPB_ALIGN_UP(2 * field_size, 8);
1019
- ret->field_count = 2;
1020
- ret->ext = kUpb_ExtMode_NonExtendable | kUpb_ExtMode_IsMapEntry;
1021
- ret->dense_below = 2;
1022
- ret->table_mask = 0;
1023
- ret->required_count = 0;
1024
- ret->subs = subs;
1025
- ret->fields = fields;
1026
- return ret;
838
+ d->enum_table->data[d->enum_data_count++] = val;
839
+ return d->enum_table;
1027
840
  }
1028
841
 
1029
- static bool upb_MiniTable_BuildEnumValue(upb_MtDecoder* d,
1030
- upb_MiniTable_Enum* table,
1031
- uint32_t val, upb_Arena* arena) {
1032
- if (val < 64) {
1033
- table->mask |= 1ULL << val;
1034
- return true;
842
+ static void upb_MiniTableEnum_BuildValue(upb_MtDecoder* d, uint32_t val) {
843
+ upb_MiniTableEnum* table = d->enum_table;
844
+ d->enum_value_count++;
845
+ if (table->value_count || (val > 512 && d->enum_value_count < val / 32)) {
846
+ if (table->value_count == 0) {
847
+ assert(d->enum_data_count == table->mask_limit / 32);
848
+ }
849
+ table = _upb_MiniTable_AddEnumDataMember(d, val);
850
+ table->value_count++;
851
+ } else {
852
+ uint32_t new_mask_limit = ((val / 32) + 1) * 32;
853
+ while (table->mask_limit < new_mask_limit) {
854
+ table = _upb_MiniTable_AddEnumDataMember(d, 0);
855
+ table->mask_limit += 32;
856
+ }
857
+ table->data[val / 32] |= 1ULL << (val % 32);
1035
858
  }
1036
-
1037
- int32_t* values = (void*)table->values;
1038
- values = upb_Arena_Realloc(arena, values, table->value_count * 4,
1039
- (table->value_count + 1) * 4);
1040
- upb_MtDecoder_CheckOutOfMemory(d, values);
1041
- values[table->value_count++] = (int32_t)val;
1042
- table->values = values;
1043
- return true;
1044
859
  }
1045
860
 
1046
- upb_MiniTable_Enum* upb_MiniTable_BuildEnum(const char* data, size_t len,
1047
- upb_Arena* arena,
1048
- upb_Status* status) {
1049
- upb_MtDecoder d = {
1050
- .status = status,
1051
- .end = UPB_PTRADD(data, len),
1052
- };
1053
-
1054
- if (UPB_SETJMP(d.err)) {
1055
- return NULL;
861
+ static upb_MiniTableEnum* upb_MtDecoder_DoBuildMiniTableEnum(
862
+ upb_MtDecoder* decoder, const char* data, size_t len) {
863
+ // If the string is non-empty then it must begin with a version tag.
864
+ if (len) {
865
+ if (*data != kUpb_EncodedVersion_EnumV1) {
866
+ upb_MtDecoder_ErrorFormat(decoder, "Invalid enum version: %c", *data);
867
+ UPB_UNREACHABLE();
868
+ }
869
+ data++;
870
+ len--;
1056
871
  }
1057
872
 
1058
- upb_MiniTable_Enum* table = upb_Arena_Malloc(arena, sizeof(*table));
1059
- upb_MtDecoder_CheckOutOfMemory(&d, table);
873
+ upb_MtDecoder_CheckOutOfMemory(decoder, decoder->enum_table);
874
+
875
+ // Guarantee at least 64 bits of mask without checking mask size.
876
+ decoder->enum_table->mask_limit = 64;
877
+ decoder->enum_table = _upb_MiniTable_AddEnumDataMember(decoder, 0);
878
+ decoder->enum_table = _upb_MiniTable_AddEnumDataMember(decoder, 0);
1060
879
 
1061
- table->mask = 0;
1062
- table->value_count = 0;
1063
- table->values = NULL;
880
+ decoder->enum_table->value_count = 0;
1064
881
 
1065
882
  const char* ptr = data;
1066
883
  uint32_t base = 0;
1067
884
 
1068
- while (ptr < d.end) {
885
+ while (ptr < decoder->end) {
1069
886
  char ch = *ptr++;
1070
887
  if (ch <= kUpb_EncodedValue_MaxEnumMask) {
1071
- uint32_t mask = upb_FromBase92(ch);
888
+ uint32_t mask = _upb_FromBase92(ch);
1072
889
  for (int i = 0; i < 5; i++, base++, mask >>= 1) {
1073
- if (mask & 1) {
1074
- if (!upb_MiniTable_BuildEnumValue(&d, table, base, arena)) {
1075
- return NULL;
1076
- }
1077
- }
890
+ if (mask & 1) upb_MiniTableEnum_BuildValue(decoder, base);
1078
891
  }
1079
892
  } else if (kUpb_EncodedValue_MinSkip <= ch &&
1080
893
  ch <= kUpb_EncodedValue_MaxSkip) {
1081
894
  uint32_t skip;
1082
- ptr = upb_MiniTable_DecodeBase92Varint(&d, ptr, ch,
895
+ ptr = upb_MiniTable_DecodeBase92Varint(decoder, ptr, ch,
1083
896
  kUpb_EncodedValue_MinSkip,
1084
897
  kUpb_EncodedValue_MaxSkip, &skip);
1085
898
  base += skip;
1086
899
  } else {
1087
- upb_Status_SetErrorFormat(status, "Unexpected character: %c", ch);
900
+ upb_MtDecoder_ErrorFormat(decoder, "Unexpected character: %c", ch);
1088
901
  return NULL;
1089
902
  }
1090
903
  }
1091
904
 
1092
- return table;
905
+ return decoder->enum_table;
906
+ }
907
+
908
+ static upb_MiniTableEnum* upb_MtDecoder_BuildMiniTableEnum(
909
+ upb_MtDecoder* const decoder, const char* const data, size_t const len) {
910
+ if (UPB_SETJMP(decoder->err) != 0) return NULL;
911
+ return upb_MtDecoder_DoBuildMiniTableEnum(decoder, data, len);
1093
912
  }
1094
913
 
1095
- bool upb_MiniTable_BuildExtension(const char* data, size_t len,
1096
- upb_MiniTable_Extension* ext,
1097
- upb_MiniTable_Sub sub, upb_Status* status) {
914
+ upb_MiniTableEnum* upb_MiniTableEnum_Build(const char* data, size_t len,
915
+ upb_Arena* arena,
916
+ upb_Status* status) {
1098
917
  upb_MtDecoder decoder = {
1099
- .arena = NULL,
918
+ .enum_table = upb_Arena_Malloc(arena, upb_MiniTableEnum_Size(2)),
919
+ .enum_value_count = 0,
920
+ .enum_data_count = 0,
921
+ .enum_data_capacity = 1,
1100
922
  .status = status,
1101
- .table = NULL,
923
+ .end = UPB_PTRADD(data, len),
924
+ .arena = arena,
1102
925
  };
1103
926
 
1104
- if (UPB_SETJMP(decoder.err)) {
1105
- return false;
927
+ return upb_MtDecoder_BuildMiniTableEnum(&decoder, data, len);
928
+ }
929
+
930
+ static const char* upb_MtDecoder_DoBuildMiniTableExtension(
931
+ upb_MtDecoder* decoder, const char* data, size_t len,
932
+ upb_MiniTableExtension* ext, const upb_MiniTable* extendee,
933
+ upb_MiniTableSub sub) {
934
+ // If the string is non-empty then it must begin with a version tag.
935
+ if (len) {
936
+ if (*data != kUpb_EncodedVersion_ExtensionV1) {
937
+ upb_MtDecoder_ErrorFormat(decoder, "Invalid ext version: %c", *data);
938
+ UPB_UNREACHABLE();
939
+ }
940
+ data++;
941
+ len--;
1106
942
  }
1107
943
 
1108
944
  uint16_t count = 0;
1109
- upb_MtDecoder_Parse(&decoder, data, len, ext, sizeof(*ext), &count, NULL);
1110
- ext->field.mode |= kUpb_LabelFlags_IsExtension;
1111
- ext->field.offset = 0;
1112
- return true;
945
+ const char* ret =
946
+ upb_MtDecoder_Parse(decoder, data, len, ext, sizeof(*ext), &count, NULL);
947
+ if (!ret || count != 1) return NULL;
948
+
949
+ upb_MiniTableField* f = &ext->field;
950
+
951
+ f->mode |= kUpb_LabelFlags_IsExtension;
952
+ f->offset = 0;
953
+ f->presence = 0;
954
+
955
+ if (extendee->ext & kUpb_ExtMode_IsMessageSet) {
956
+ // Extensions of MessageSet must be messages.
957
+ if (!upb_IsSubMessage(f)) return NULL;
958
+
959
+ // Extensions of MessageSet must be non-repeating.
960
+ if ((f->mode & kUpb_FieldMode_Mask) == kUpb_FieldMode_Array) return NULL;
961
+ }
962
+
963
+ ext->extendee = extendee;
964
+ ext->sub = sub;
965
+
966
+ return ret;
967
+ }
968
+
969
+ static const char* upb_MtDecoder_BuildMiniTableExtension(
970
+ upb_MtDecoder* const decoder, const char* const data, const size_t len,
971
+ upb_MiniTableExtension* const ext, const upb_MiniTable* const extendee,
972
+ const upb_MiniTableSub sub) {
973
+ if (UPB_SETJMP(decoder->err) != 0) return NULL;
974
+ return upb_MtDecoder_DoBuildMiniTableExtension(decoder, data, len, ext,
975
+ extendee, sub);
1113
976
  }
1114
977
 
1115
- upb_MiniTable* upb_MiniTable_Build(const char* data, size_t len,
1116
- upb_MiniTablePlatform platform,
1117
- upb_Arena* arena, upb_Status* status) {
978
+ const char* _upb_MiniTableExtension_Init(const char* data, size_t len,
979
+ upb_MiniTableExtension* ext,
980
+ const upb_MiniTable* extendee,
981
+ upb_MiniTableSub sub,
982
+ upb_MiniTablePlatform platform,
983
+ upb_Status* status) {
984
+ upb_MtDecoder decoder = {
985
+ .arena = NULL,
986
+ .status = status,
987
+ .table = NULL,
988
+ .platform = platform,
989
+ };
990
+
991
+ return upb_MtDecoder_BuildMiniTableExtension(&decoder, data, len, ext,
992
+ extendee, sub);
993
+ }
994
+
995
+ upb_MiniTableExtension* _upb_MiniTableExtension_Build(
996
+ const char* data, size_t len, const upb_MiniTable* extendee,
997
+ upb_MiniTableSub sub, upb_MiniTablePlatform platform, upb_Arena* arena,
998
+ upb_Status* status) {
999
+ upb_MiniTableExtension* ext =
1000
+ upb_Arena_Malloc(arena, sizeof(upb_MiniTableExtension));
1001
+ if (UPB_UNLIKELY(!ext)) return NULL;
1002
+
1003
+ const char* ptr = _upb_MiniTableExtension_Init(data, len, ext, extendee, sub,
1004
+ platform, status);
1005
+ if (UPB_UNLIKELY(!ptr)) return NULL;
1006
+
1007
+ return ext;
1008
+ }
1009
+
1010
+ upb_MiniTable* _upb_MiniTable_Build(const char* data, size_t len,
1011
+ upb_MiniTablePlatform platform,
1012
+ upb_Arena* arena, upb_Status* status) {
1118
1013
  void* buf = NULL;
1119
1014
  size_t size = 0;
1120
1015
  upb_MiniTable* ret = upb_MiniTable_BuildWithBuf(data, len, platform, arena,
@@ -1123,25 +1018,110 @@ upb_MiniTable* upb_MiniTable_Build(const char* data, size_t len,
1123
1018
  return ret;
1124
1019
  }
1125
1020
 
1126
- void upb_MiniTable_SetSubMessage(upb_MiniTable* table,
1127
- upb_MiniTable_Field* field,
1021
+ bool upb_MiniTable_SetSubMessage(upb_MiniTable* table,
1022
+ upb_MiniTableField* field,
1128
1023
  const upb_MiniTable* sub) {
1129
1024
  UPB_ASSERT((uintptr_t)table->fields <= (uintptr_t)field &&
1130
1025
  (uintptr_t)field <
1131
1026
  (uintptr_t)(table->fields + table->field_count));
1132
- if (sub->ext & kUpb_ExtMode_IsMapEntry) {
1133
- field->mode =
1134
- (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift) | kUpb_FieldMode_Map;
1027
+ UPB_ASSERT(sub);
1028
+
1029
+ const bool sub_is_map = sub->ext & kUpb_ExtMode_IsMapEntry;
1030
+
1031
+ switch (field->UPB_PRIVATE(descriptortype)) {
1032
+ case kUpb_FieldType_Message:
1033
+ if (sub_is_map) {
1034
+ const bool table_is_map = table->ext & kUpb_ExtMode_IsMapEntry;
1035
+ if (UPB_UNLIKELY(table_is_map)) return false;
1036
+
1037
+ field->mode = (field->mode & ~kUpb_FieldMode_Mask) | kUpb_FieldMode_Map;
1038
+ }
1039
+ break;
1040
+
1041
+ case kUpb_FieldType_Group:
1042
+ if (UPB_UNLIKELY(sub_is_map)) return false;
1043
+ break;
1044
+
1045
+ default:
1046
+ return false;
1135
1047
  }
1136
- upb_MiniTable_Sub* table_sub = (void*)&table->subs[field->submsg_index];
1048
+
1049
+ upb_MiniTableSub* table_sub =
1050
+ (void*)&table->subs[field->UPB_PRIVATE(submsg_index)];
1137
1051
  table_sub->submsg = sub;
1052
+ return true;
1138
1053
  }
1139
1054
 
1140
- void upb_MiniTable_SetSubEnum(upb_MiniTable* table, upb_MiniTable_Field* field,
1141
- const upb_MiniTable_Enum* sub) {
1055
+ bool upb_MiniTable_SetSubEnum(upb_MiniTable* table, upb_MiniTableField* field,
1056
+ const upb_MiniTableEnum* sub) {
1142
1057
  UPB_ASSERT((uintptr_t)table->fields <= (uintptr_t)field &&
1143
1058
  (uintptr_t)field <
1144
1059
  (uintptr_t)(table->fields + table->field_count));
1145
- upb_MiniTable_Sub* table_sub = (void*)&table->subs[field->submsg_index];
1060
+ UPB_ASSERT(sub);
1061
+
1062
+ upb_MiniTableSub* table_sub =
1063
+ (void*)&table->subs[field->UPB_PRIVATE(submsg_index)];
1146
1064
  table_sub->subenum = sub;
1065
+ return true;
1066
+ }
1067
+
1068
+ uint32_t upb_MiniTable_GetSubList(const upb_MiniTable* mt,
1069
+ const upb_MiniTableField** subs) {
1070
+ uint32_t msg_count = 0;
1071
+ uint32_t enum_count = 0;
1072
+
1073
+ for (int i = 0; i < mt->field_count; i++) {
1074
+ const upb_MiniTableField* f = &mt->fields[i];
1075
+ if (upb_MiniTableField_CType(f) == kUpb_CType_Message) {
1076
+ *subs = f;
1077
+ ++subs;
1078
+ msg_count++;
1079
+ }
1080
+ }
1081
+
1082
+ for (int i = 0; i < mt->field_count; i++) {
1083
+ const upb_MiniTableField* f = &mt->fields[i];
1084
+ if (upb_MiniTableField_CType(f) == kUpb_CType_Enum) {
1085
+ *subs = f;
1086
+ ++subs;
1087
+ enum_count++;
1088
+ }
1089
+ }
1090
+
1091
+ return (msg_count << 16) | enum_count;
1092
+ }
1093
+
1094
+ // The list of sub_tables and sub_enums must exactly match the number and order
1095
+ // of sub-message fields and sub-enum fields given by upb_MiniTable_GetSubList()
1096
+ // above.
1097
+ bool upb_MiniTable_Link(upb_MiniTable* mt, const upb_MiniTable** sub_tables,
1098
+ size_t sub_table_count,
1099
+ const upb_MiniTableEnum** sub_enums,
1100
+ size_t sub_enum_count) {
1101
+ uint32_t msg_count = 0;
1102
+ uint32_t enum_count = 0;
1103
+
1104
+ for (int i = 0; i < mt->field_count; i++) {
1105
+ upb_MiniTableField* f = (upb_MiniTableField*)&mt->fields[i];
1106
+ if (upb_MiniTableField_CType(f) == kUpb_CType_Message) {
1107
+ const upb_MiniTable* sub = sub_tables[msg_count++];
1108
+ if (msg_count > sub_table_count) return false;
1109
+ if (sub != NULL) {
1110
+ if (!upb_MiniTable_SetSubMessage(mt, f, sub)) return false;
1111
+ }
1112
+ }
1113
+ }
1114
+
1115
+ for (int i = 0; i < mt->field_count; i++) {
1116
+ upb_MiniTableField* f = (upb_MiniTableField*)&mt->fields[i];
1117
+ if (upb_MiniTableField_CType(f) == kUpb_CType_Enum) {
1118
+ const upb_MiniTableEnum* sub = sub_enums[enum_count++];
1119
+ if (enum_count > sub_enum_count) return false;
1120
+ if (sub != NULL) {
1121
+ if (!upb_MiniTable_SetSubEnum(mt, f, sub)) return false;
1122
+ }
1123
+ }
1124
+ }
1125
+
1126
+ return true;
1147
1127
  }