grpc 1.54.3 → 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 (962) 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 +19 -21
  7. data/src/core/ext/filters/client_channel/client_channel.h +20 -18
  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 +44 -45
  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/transport/chttp2/transport/chttp2_transport.cc +78 -23
  46. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +21 -0
  47. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +70 -0
  48. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -7
  49. data/src/core/ext/transport/chttp2/transport/frame_ping.h +0 -3
  50. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -0
  51. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -0
  52. data/src/core/ext/transport/chttp2/transport/internal.h +3 -4
  53. data/src/core/ext/transport/chttp2/transport/writing.cc +14 -3
  54. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +87 -52
  55. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +414 -181
  56. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -60
  57. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +481 -224
  58. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +90 -55
  59. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +415 -188
  60. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +357 -210
  61. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1572 -729
  62. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +30 -17
  63. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +144 -47
  64. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +34 -21
  65. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -62
  66. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +27 -14
  67. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +78 -38
  68. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +20 -11
  69. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +48 -26
  70. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +20 -11
  71. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +48 -26
  72. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +109 -62
  73. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +566 -244
  74. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +21 -12
  75. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +45 -30
  76. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +22 -19
  77. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +82 -29
  78. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +23 -16
  79. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +45 -30
  80. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +230 -143
  81. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +733 -404
  82. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +417 -264
  83. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1839 -899
  84. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -41
  85. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +286 -148
  86. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +531 -334
  87. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2017 -1131
  88. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -12
  89. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +45 -30
  90. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +89 -52
  91. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +347 -232
  92. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +264 -165
  93. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +888 -476
  94. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +139 -80
  95. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +527 -274
  96. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -13
  97. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +50 -36
  98. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +380 -221
  99. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1168 -611
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +166 -94
  101. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +666 -292
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +18 -11
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +37 -26
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +21 -12
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +45 -30
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +30 -17
  107. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +144 -47
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +274 -167
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +789 -440
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +228 -137
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +1100 -501
  112. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -13
  113. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +60 -37
  114. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +350 -211
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1072 -646
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +33 -18
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +117 -51
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +34 -19
  119. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +118 -56
  120. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +38 -21
  121. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +148 -64
  122. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +31 -18
  123. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +143 -65
  124. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +22 -13
  125. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +51 -37
  126. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +78 -43
  127. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +265 -127
  128. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +145 -88
  129. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +438 -241
  130. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +115 -62
  131. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +559 -227
  132. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +18 -11
  133. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +35 -26
  134. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +175 -118
  135. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +857 -442
  136. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +172 -95
  137. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +864 -374
  138. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -27
  139. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +159 -110
  140. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +39 -18
  141. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +74 -56
  142. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +28 -15
  143. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +71 -45
  144. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +131 -74
  145. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +489 -249
  146. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +135 -80
  147. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +505 -245
  148. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +248 -139
  149. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +933 -433
  150. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +80 -49
  151. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +616 -201
  152. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +1283 -776
  153. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +5422 -2519
  154. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +49 -28
  155. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +164 -84
  156. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +228 -141
  157. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +738 -399
  158. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +20 -11
  159. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +48 -26
  160. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +21 -12
  161. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +45 -30
  162. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +32 -19
  163. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +70 -49
  164. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +27 -14
  165. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +110 -43
  166. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +46 -25
  167. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +259 -100
  168. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +21 -12
  169. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +45 -30
  170. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +18 -11
  171. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +35 -26
  172. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +42 -23
  173. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +108 -70
  174. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +7 -4
  175. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +21 -16
  176. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +43 -24
  177. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +110 -75
  178. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +30 -17
  179. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +95 -50
  180. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +16 -9
  181. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +73 -23
  182. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +60 -37
  183. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +150 -108
  184. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +74 -43
  185. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +357 -167
  186. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +44 -25
  187. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +114 -80
  188. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -20
  189. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +245 -82
  190. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +32 -19
  191. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +73 -51
  192. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +474 -296
  193. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2121 -1076
  194. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +18 -11
  195. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +35 -26
  196. 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
  197. 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
  198. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +72 -45
  199. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +193 -138
  200. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +34 -21
  201. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +119 -78
  202. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +18 -11
  203. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +35 -26
  204. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -4
  205. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +15 -10
  206. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +184 -96
  207. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +907 -360
  208. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +56 -33
  209. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +150 -101
  210. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +188 -111
  211. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +816 -419
  212. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +32 -19
  213. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +109 -53
  214. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +10 -7
  215. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +18 -14
  216. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +300 -177
  217. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1284 -522
  218. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +42 -23
  219. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +188 -75
  220. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +130 -83
  221. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +510 -238
  222. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +22 -13
  223. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +55 -34
  224. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +39 -26
  225. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +124 -68
  226. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +21 -12
  227. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +47 -30
  228. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +52 -29
  229. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +92 -62
  230. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +37 -20
  231. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +133 -63
  232. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +22 -13
  233. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +91 -40
  234. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -12
  235. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +50 -32
  236. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +18 -11
  237. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +37 -26
  238. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +46 -27
  239. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +101 -70
  240. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +13 -10
  241. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +25 -22
  242. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +40 -23
  243. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +161 -75
  244. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +31 -18
  245. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +114 -56
  246. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +46 -29
  247. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +139 -91
  248. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +65 -42
  249. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +200 -121
  250. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +80 -45
  251. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +208 -131
  252. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +34 -21
  253. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +74 -53
  254. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -4
  255. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +13 -8
  256. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +16 -9
  257. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +28 -18
  258. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +28 -15
  259. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +55 -34
  260. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +43 -22
  261. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +91 -53
  262. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +35 -20
  263. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +92 -57
  264. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +7 -4
  265. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +13 -8
  266. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -11
  267. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +48 -26
  268. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +23 -14
  269. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +61 -41
  270. data/src/core/ext/upb-generated/google/api/annotations.upb.c +14 -11
  271. data/src/core/ext/upb-generated/google/api/annotations.upb.h +30 -20
  272. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +255 -154
  273. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +934 -450
  274. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +299 -180
  275. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +946 -483
  276. data/src/core/ext/upb-generated/google/api/http.upb.c +68 -35
  277. data/src/core/ext/upb-generated/google/api/http.upb.h +284 -120
  278. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +22 -13
  279. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +95 -37
  280. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -10
  281. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +38 -22
  282. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +1018 -424
  283. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +3851 -1412
  284. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -10
  285. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +38 -22
  286. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +10 -7
  287. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +18 -14
  288. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +62 -39
  289. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +207 -102
  290. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -10
  291. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +38 -22
  292. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +90 -51
  293. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +157 -107
  294. data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -13
  295. data/src/core/ext/upb-generated/google/rpc/status.upb.h +95 -37
  296. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +59 -34
  297. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +154 -92
  298. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +43 -24
  299. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +118 -60
  300. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +250 -145
  301. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +919 -415
  302. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +34 -19
  303. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +76 -51
  304. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +25 -14
  305. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +45 -30
  306. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +144 -81
  307. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +405 -217
  308. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +51 -26
  309. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +153 -61
  310. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +173 -102
  311. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +855 -298
  312. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +68 -49
  313. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +155 -104
  314. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +26 -17
  315. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +55 -34
  316. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +12 -9
  317. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +31 -14
  318. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +26 -17
  319. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +55 -34
  320. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +23 -16
  321. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +45 -30
  322. data/src/core/ext/upb-generated/validate/validate.upb.c +845 -455
  323. data/src/core/ext/upb-generated/validate/validate.upb.h +4347 -1908
  324. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +68 -49
  325. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +155 -104
  326. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +26 -17
  327. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +55 -34
  328. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +12 -9
  329. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +31 -14
  330. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +65 -44
  331. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +137 -91
  332. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +23 -16
  333. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +45 -30
  334. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +16 -9
  335. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +28 -18
  336. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +21 -12
  337. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +45 -30
  338. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +37 -22
  339. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +96 -63
  340. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +26 -17
  341. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +52 -29
  342. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +21 -12
  343. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +45 -30
  344. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +23 -14
  345. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +62 -42
  346. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +44 -25
  347. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +169 -79
  348. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +27 -14
  349. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +65 -38
  350. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +69 -38
  351. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +167 -76
  352. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +21 -12
  353. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +89 -34
  354. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +18 -11
  355. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +35 -26
  356. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +32 -19
  357. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +150 -54
  358. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +10 -7
  359. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +18 -14
  360. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +34 -21
  361. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +161 -63
  362. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +162 -101
  363. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +501 -293
  364. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +85 -52
  365. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +430 -164
  366. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +24 -15
  367. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +53 -37
  368. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +40 -23
  369. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +161 -75
  370. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +37 -22
  371. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +92 -66
  372. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +43 -22
  373. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +91 -53
  374. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +21 -12
  375. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +45 -30
  376. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +1 -1
  377. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +6 -5
  378. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +1 -1
  379. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +6 -5
  380. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +1 -1
  381. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +6 -5
  382. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +1 -1
  383. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +6 -5
  384. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +1 -1
  385. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +6 -5
  386. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +1 -1
  387. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +6 -5
  388. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +1 -1
  389. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +6 -5
  390. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +1 -1
  391. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +6 -5
  392. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +1 -1
  393. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +6 -5
  394. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +1 -1
  395. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +6 -5
  396. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +1 -1
  397. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +6 -5
  398. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +1 -1
  399. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +6 -5
  400. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +1 -1
  401. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +6 -5
  402. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +1 -1
  403. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +6 -5
  404. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +252 -253
  405. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +6 -5
  406. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +1 -1
  407. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +6 -5
  408. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +1 -1
  409. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +6 -5
  410. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +1 -1
  411. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +6 -5
  412. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +1 -1
  413. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +6 -5
  414. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +1 -1
  415. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +6 -5
  416. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +1 -1
  417. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +6 -5
  418. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +1 -1
  419. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +6 -5
  420. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +1 -1
  421. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +6 -5
  422. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +13 -12
  423. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +11 -5
  424. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +1 -1
  425. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +6 -5
  426. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +1 -1
  427. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +6 -5
  428. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +1 -1
  429. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +6 -5
  430. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +1 -1
  431. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +6 -5
  432. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +1 -1
  433. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +6 -5
  434. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +1 -1
  435. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +6 -5
  436. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +44 -44
  437. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +6 -5
  438. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +1 -1
  439. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +6 -5
  440. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +1 -1
  441. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +6 -5
  442. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +1 -1
  443. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +6 -5
  444. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +1 -1
  445. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +6 -5
  446. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +1 -1
  447. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +6 -5
  448. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +1 -1
  449. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +6 -5
  450. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +1 -1
  451. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +6 -5
  452. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +1 -1
  453. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +6 -5
  454. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +1 -1
  455. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +6 -5
  456. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +1 -1
  457. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +6 -5
  458. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +1 -1
  459. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +6 -5
  460. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +1 -1
  461. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +6 -5
  462. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +1 -1
  463. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +6 -5
  464. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +1 -1
  465. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +6 -5
  466. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +1 -1
  467. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +6 -5
  468. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +1 -1
  469. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +6 -5
  470. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +134 -128
  471. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +11 -5
  472. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +1 -1
  473. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +6 -5
  474. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +1 -1
  475. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +6 -5
  476. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +1 -1
  477. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +6 -5
  478. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +1 -1
  479. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +6 -5
  480. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +1 -1
  481. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +6 -5
  482. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +1 -1
  483. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +6 -5
  484. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +1 -1
  485. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +6 -5
  486. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +1 -1
  487. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +6 -5
  488. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +1 -1
  489. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +6 -5
  490. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +1 -1
  491. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +6 -5
  492. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +1 -1
  493. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +6 -5
  494. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +1 -1
  495. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +6 -5
  496. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +1 -1
  497. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +6 -5
  498. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +1 -1
  499. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +6 -5
  500. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +1 -1
  501. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +6 -5
  502. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +1 -1
  503. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +6 -5
  504. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +1 -1
  505. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +6 -5
  506. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +1 -1
  507. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +6 -5
  508. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +1 -1
  509. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +6 -5
  510. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +1 -1
  511. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +6 -5
  512. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +1 -1
  513. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +6 -5
  514. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +379 -376
  515. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +6 -5
  516. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +1 -1
  517. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +6 -5
  518. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +1 -1
  519. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +6 -5
  520. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +138 -136
  521. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +6 -5
  522. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +1 -1
  523. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +6 -5
  524. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +1 -1
  525. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +6 -5
  526. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +1 -1
  527. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +6 -5
  528. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +1 -1
  529. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +6 -5
  530. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +1 -1
  531. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +6 -5
  532. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +1 -1
  533. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +6 -5
  534. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +12 -13
  535. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +6 -5
  536. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +1 -1
  537. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +6 -5
  538. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +1 -1
  539. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +6 -5
  540. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +1 -1
  541. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +6 -5
  542. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +1 -1
  543. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +6 -5
  544. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +1 -1
  545. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +6 -5
  546. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +1 -1
  547. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +6 -5
  548. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +1 -1
  549. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +6 -5
  550. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +1 -1
  551. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +6 -5
  552. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +1 -1
  553. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +6 -5
  554. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +1 -1
  555. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +6 -5
  556. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +1 -1
  557. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +6 -5
  558. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +1 -1
  559. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +6 -5
  560. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +1 -1
  561. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +6 -5
  562. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +1 -1
  563. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +6 -5
  564. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +1 -1
  565. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +6 -5
  566. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +1 -1
  567. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +6 -5
  568. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +1 -1
  569. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +6 -5
  570. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +1 -1
  571. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +6 -5
  572. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +1 -1
  573. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +6 -5
  574. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +1 -1
  575. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +6 -5
  576. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +1 -1
  577. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +6 -5
  578. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +1 -1
  579. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +6 -5
  580. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +1 -1
  581. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +6 -5
  582. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +1 -1
  583. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +6 -5
  584. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +1 -1
  585. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +6 -5
  586. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +1 -1
  587. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +6 -5
  588. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +1 -1
  589. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +6 -5
  590. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +1 -1
  591. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +6 -5
  592. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +1 -1
  593. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +6 -5
  594. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +1 -1
  595. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +6 -5
  596. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +329 -273
  597. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +11 -5
  598. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +1 -1
  599. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +6 -5
  600. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +1 -1
  601. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +6 -5
  602. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +1 -1
  603. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +6 -5
  604. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +1 -1
  605. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +6 -5
  606. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +1 -1
  607. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +6 -5
  608. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +1 -1
  609. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +6 -5
  610. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +1 -1
  611. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +6 -5
  612. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +1 -1
  613. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +6 -5
  614. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +1 -1
  615. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +6 -5
  616. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +1 -1
  617. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +6 -5
  618. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +1 -1
  619. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +6 -5
  620. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +1 -1
  621. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +6 -5
  622. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +1 -1
  623. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +6 -5
  624. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +1 -1
  625. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +6 -5
  626. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +1 -1
  627. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +6 -5
  628. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +1 -1
  629. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +6 -5
  630. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +1 -1
  631. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +6 -5
  632. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +1 -1
  633. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +6 -5
  634. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +1 -1
  635. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +6 -5
  636. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +1 -1
  637. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +6 -5
  638. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +1 -1
  639. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +6 -5
  640. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +1 -1
  641. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +6 -5
  642. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +1 -1
  643. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +6 -5
  644. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +1 -1
  645. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +6 -5
  646. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +1 -1
  647. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +6 -5
  648. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +1 -1
  649. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +6 -5
  650. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +1 -1
  651. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +6 -5
  652. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +1 -1
  653. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +6 -5
  654. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +1 -1
  655. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +6 -5
  656. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +1 -1
  657. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +6 -5
  658. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +1 -1
  659. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +6 -5
  660. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +1 -1
  661. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +6 -5
  662. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +1 -1
  663. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +6 -5
  664. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +1 -1
  665. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +6 -5
  666. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +1 -1
  667. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +6 -5
  668. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +1 -1
  669. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +6 -5
  670. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +1 -1
  671. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +6 -5
  672. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +1 -1
  673. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +6 -5
  674. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  675. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +7 -7
  676. data/src/core/ext/xds/upb_utils.h +1 -1
  677. data/src/core/ext/xds/xds_api.cc +34 -14
  678. data/src/core/ext/xds/xds_api.h +2 -2
  679. data/src/core/ext/xds/xds_bootstrap.cc +3 -3
  680. data/src/core/ext/xds/xds_bootstrap_grpc.cc +15 -15
  681. data/src/core/ext/xds/xds_client.cc +24 -3
  682. data/src/core/ext/xds/xds_client.h +1 -1
  683. data/src/core/ext/xds/xds_cluster.cc +26 -34
  684. data/src/core/ext/xds/xds_cluster.h +1 -2
  685. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +4 -3
  686. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -2
  687. data/src/core/ext/xds/xds_common_types.cc +5 -4
  688. data/src/core/ext/xds/xds_endpoint.cc +5 -2
  689. data/src/core/ext/xds/xds_endpoint.h +1 -1
  690. data/src/core/ext/xds/xds_http_fault_filter.cc +2 -2
  691. data/src/core/ext/xds/xds_http_fault_filter.h +1 -1
  692. data/src/core/ext/xds/xds_http_filters.h +3 -2
  693. data/src/core/ext/xds/xds_http_rbac_filter.cc +6 -8
  694. data/src/core/ext/xds/xds_http_rbac_filter.h +1 -1
  695. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +2 -2
  696. data/src/core/ext/xds/xds_http_stateful_session_filter.h +1 -1
  697. data/src/core/ext/xds/xds_lb_policy_registry.cc +4 -22
  698. data/src/core/ext/xds/xds_listener.cc +10 -4
  699. data/src/core/ext/xds/xds_listener.h +1 -1
  700. data/src/core/ext/xds/xds_resource_type.h +2 -2
  701. data/src/core/ext/xds/xds_route_config.cc +8 -5
  702. data/src/core/ext/xds/xds_route_config.h +1 -1
  703. data/src/core/lib/channel/channelz.cc +5 -4
  704. data/src/core/lib/channel/channelz_registry.cc +7 -6
  705. data/src/core/lib/channel/connected_channel.cc +82 -27
  706. data/src/core/lib/channel/promise_based_filter.cc +2 -8
  707. data/src/core/lib/debug/trace.cc +16 -7
  708. data/src/core/lib/debug/trace.h +12 -4
  709. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +8 -26
  710. data/src/core/lib/event_engine/posix_engine/posix_engine.h +0 -1
  711. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +0 -29
  712. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +0 -3
  713. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +6 -1
  714. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -0
  715. data/src/core/lib/event_engine/shim.cc +2 -0
  716. data/src/core/lib/event_engine/trace.cc +1 -0
  717. data/src/core/lib/event_engine/trace.h +6 -0
  718. data/src/core/lib/experiments/experiments.cc +3 -0
  719. data/src/core/lib/experiments/experiments.h +4 -1
  720. data/src/core/lib/gpr/posix/time.cc +5 -0
  721. data/src/core/lib/gprpp/status_helper.cc +2 -2
  722. data/src/core/lib/gprpp/validation_errors.cc +8 -3
  723. data/src/core/lib/gprpp/validation_errors.h +16 -9
  724. data/src/core/lib/iomgr/buffer_list.h +0 -1
  725. data/src/core/lib/iomgr/socket_utils_posix.cc +3 -0
  726. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  727. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -0
  728. data/src/core/lib/iomgr/tcp_server_posix.cc +14 -39
  729. data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -12
  730. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -21
  731. data/src/core/lib/iomgr/timer_generic.cc +17 -16
  732. data/src/core/lib/json/json.h +61 -113
  733. data/src/core/lib/json/json_object_loader.cc +20 -20
  734. data/src/core/lib/json/json_object_loader.h +8 -3
  735. data/src/core/lib/json/json_reader.cc +58 -38
  736. data/src/core/lib/json/json_reader.h +34 -0
  737. data/src/core/lib/json/json_util.cc +6 -6
  738. data/src/core/lib/json/json_util.h +5 -4
  739. data/src/core/lib/json/json_writer.cc +19 -19
  740. data/src/core/lib/json/json_writer.h +33 -0
  741. data/src/core/lib/load_balancing/lb_policy_registry.cc +7 -7
  742. data/src/core/lib/promise/pipe.h +7 -0
  743. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +35 -37
  744. data/src/core/lib/security/credentials/external/external_account_credentials.cc +60 -62
  745. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +22 -21
  746. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +28 -27
  747. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -2
  748. data/src/core/lib/security/credentials/jwt/json_token.cc +6 -4
  749. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -5
  750. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +39 -38
  751. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -16
  752. data/src/core/lib/security/util/json_util.cc +5 -5
  753. data/src/core/lib/service_config/service_config_impl.cc +11 -5
  754. data/src/core/lib/slice/slice.h +2 -0
  755. data/src/core/lib/surface/call.cc +71 -26
  756. data/src/core/lib/surface/call.h +1 -5
  757. data/src/core/lib/surface/completion_queue.cc +2 -1
  758. data/src/core/lib/surface/server.cc +47 -19
  759. data/src/core/lib/surface/version.cc +2 -2
  760. data/src/core/lib/transport/batch_builder.h +9 -1
  761. data/src/core/lib/transport/metadata_batch.h +2 -59
  762. data/src/core/lib/transport/metadata_compression_traits.h +67 -0
  763. data/src/core/lib/transport/simple_slice_based_metadata.h +48 -0
  764. data/src/core/lib/transport/transport.h +3 -0
  765. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -4
  766. data/src/ruby/lib/grpc/version.rb +1 -1
  767. data/third_party/abseil-cpp/absl/base/config.h +1 -1
  768. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +33 -47
  769. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +7 -4
  770. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +32 -2
  771. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +11 -12
  772. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +826 -0
  773. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +10 -12
  774. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +8 -10
  775. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +2 -1
  776. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +2 -1
  777. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +18 -14
  778. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +17 -21
  779. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +7 -3
  780. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +3 -4
  781. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -72
  782. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +4 -2
  783. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +4 -3
  784. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +7 -3
  785. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +4 -2
  786. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
  787. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -8
  788. data/third_party/boringssl-with-bazel/src/include/openssl/kyber.h +128 -0
  789. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +8 -1
  790. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +1 -1
  791. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +8 -12
  792. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1 -10
  793. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +9 -2
  794. data/third_party/boringssl-with-bazel/src/ssl/internal.h +17 -17
  795. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +8 -4
  796. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +2 -2
  797. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +72 -5
  798. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +19 -21
  799. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +2 -1
  800. data/third_party/upb/upb/{table_internal.h → alloc.h} +6 -6
  801. data/third_party/upb/upb/arena.h +4 -193
  802. data/third_party/upb/upb/array.h +4 -51
  803. data/third_party/upb/upb/base/descriptor_constants.h +104 -0
  804. data/third_party/upb/upb/base/log2.h +57 -0
  805. data/third_party/upb/upb/{status.c → base/status.c} +2 -7
  806. data/third_party/upb/upb/base/status.h +66 -0
  807. data/third_party/upb/upb/base/string_view.h +75 -0
  808. data/third_party/upb/upb/{array.c → collections/array.c} +67 -36
  809. data/third_party/upb/upb/collections/array.h +85 -0
  810. data/third_party/upb/upb/collections/array_internal.h +135 -0
  811. data/third_party/upb/upb/{map.c → collections/map.c} +53 -26
  812. data/third_party/upb/upb/collections/map.h +135 -0
  813. data/third_party/upb/upb/collections/map_gencode_util.h +78 -0
  814. data/third_party/upb/upb/collections/map_internal.h +170 -0
  815. data/third_party/upb/upb/collections/map_sorter.c +166 -0
  816. data/third_party/upb/upb/collections/map_sorter_internal.h +109 -0
  817. data/third_party/upb/upb/{message_value.h → collections/message_value.h} +12 -13
  818. data/third_party/upb/upb/decode.h +3 -62
  819. data/third_party/upb/upb/def.h +4 -384
  820. data/third_party/upb/upb/def.hpp +3 -411
  821. data/third_party/upb/upb/encode.h +3 -48
  822. data/third_party/upb/upb/extension_registry.h +3 -52
  823. data/third_party/upb/upb/{table.c → hash/common.c} +52 -110
  824. data/third_party/upb/upb/hash/common.h +199 -0
  825. data/third_party/upb/upb/hash/int_table.h +102 -0
  826. data/third_party/upb/upb/hash/str_table.h +161 -0
  827. data/third_party/upb/upb/{json_decode.c → json/decode.c} +63 -98
  828. data/third_party/upb/upb/json/decode.h +52 -0
  829. data/third_party/upb/upb/{json_encode.c → json/encode.c} +69 -45
  830. data/third_party/upb/upb/json/encode.h +70 -0
  831. data/third_party/upb/upb/json_decode.h +4 -15
  832. data/third_party/upb/upb/json_encode.h +4 -33
  833. data/third_party/upb/upb/lex/atoi.c +68 -0
  834. data/third_party/upb/upb/lex/atoi.h +53 -0
  835. data/third_party/upb/upb/{upb.c → lex/round_trip.c} +2 -11
  836. data/third_party/upb/upb/{internal/upb.h → lex/round_trip.h} +17 -30
  837. data/third_party/upb/upb/lex/strtod.c +97 -0
  838. data/third_party/upb/upb/lex/strtod.h +46 -0
  839. data/third_party/upb/upb/lex/unicode.c +57 -0
  840. data/third_party/upb/upb/lex/unicode.h +77 -0
  841. data/third_party/upb/upb/map.h +4 -85
  842. data/third_party/upb/upb/mem/alloc.c +47 -0
  843. data/third_party/upb/upb/mem/alloc.h +98 -0
  844. data/third_party/upb/upb/mem/arena.c +367 -0
  845. data/third_party/upb/upb/mem/arena.h +160 -0
  846. data/third_party/upb/upb/mem/arena_internal.h +114 -0
  847. data/third_party/upb/upb/message/accessors.c +68 -0
  848. data/third_party/upb/upb/message/accessors.h +379 -0
  849. data/third_party/upb/upb/message/accessors_internal.h +325 -0
  850. data/third_party/upb/upb/message/extension_internal.h +83 -0
  851. data/third_party/upb/upb/message/internal.h +135 -0
  852. data/third_party/upb/upb/message/message.c +180 -0
  853. data/third_party/upb/upb/message/message.h +69 -0
  854. data/third_party/upb/upb/mini_table/common.c +128 -0
  855. data/third_party/upb/upb/mini_table/common.h +170 -0
  856. data/third_party/upb/upb/mini_table/common_internal.h +111 -0
  857. data/third_party/upb/upb/{mini_table.c → mini_table/decode.c} +513 -533
  858. data/third_party/upb/upb/mini_table/decode.h +179 -0
  859. data/third_party/upb/upb/mini_table/encode.c +300 -0
  860. data/third_party/upb/upb/mini_table/encode_internal.h +111 -0
  861. data/third_party/upb/upb/{mini_table.hpp → mini_table/encode_internal.hpp} +32 -8
  862. data/third_party/upb/upb/mini_table/enum_internal.h +88 -0
  863. data/third_party/upb/upb/mini_table/extension_internal.h +47 -0
  864. data/third_party/upb/upb/{extension_registry.c → mini_table/extension_registry.c} +27 -24
  865. data/third_party/upb/upb/mini_table/extension_registry.h +104 -0
  866. data/third_party/upb/upb/mini_table/field_internal.h +192 -0
  867. data/third_party/upb/upb/mini_table/file_internal.h +47 -0
  868. data/third_party/upb/upb/mini_table/message_internal.h +136 -0
  869. data/third_party/upb/upb/mini_table/sub_internal.h +38 -0
  870. data/third_party/upb/upb/mini_table/types.h +40 -0
  871. data/third_party/upb/upb/mini_table.h +4 -157
  872. data/third_party/upb/upb/msg.h +3 -38
  873. data/third_party/upb/upb/port/atomic.h +101 -0
  874. data/third_party/upb/upb/{port_def.inc → port/def.inc} +94 -27
  875. data/third_party/upb/upb/{port_undef.inc → port/undef.inc} +13 -3
  876. data/third_party/upb/upb/{internal → port}/vsnprintf_compat.h +5 -7
  877. data/third_party/upb/upb/reflection/common.h +67 -0
  878. data/third_party/upb/upb/reflection/def.h +42 -0
  879. data/third_party/upb/upb/reflection/def.hpp +610 -0
  880. data/third_party/upb/upb/reflection/def_builder.c +357 -0
  881. data/third_party/upb/upb/reflection/def_builder_internal.h +157 -0
  882. data/third_party/upb/upb/reflection/def_pool.c +462 -0
  883. data/third_party/upb/upb/reflection/def_pool.h +108 -0
  884. data/third_party/upb/upb/reflection/def_pool_internal.h +77 -0
  885. data/third_party/upb/upb/reflection/def_type.c +50 -0
  886. data/third_party/upb/upb/reflection/def_type.h +81 -0
  887. data/third_party/upb/upb/reflection/desc_state.c +53 -0
  888. data/third_party/upb/upb/reflection/desc_state_internal.h +64 -0
  889. data/third_party/upb/upb/reflection/enum_def.c +310 -0
  890. data/third_party/upb/upb/reflection/enum_def.h +80 -0
  891. data/third_party/upb/upb/reflection/enum_def_internal.h +56 -0
  892. data/third_party/upb/upb/reflection/enum_reserved_range.c +84 -0
  893. data/third_party/upb/upb/reflection/enum_reserved_range.h +51 -0
  894. data/third_party/upb/upb/reflection/enum_reserved_range_internal.h +55 -0
  895. data/third_party/upb/upb/reflection/enum_value_def.c +144 -0
  896. data/third_party/upb/upb/reflection/enum_value_def.h +57 -0
  897. data/third_party/upb/upb/reflection/enum_value_def_internal.h +57 -0
  898. data/third_party/upb/upb/reflection/extension_range.c +93 -0
  899. data/third_party/upb/upb/reflection/extension_range.h +55 -0
  900. data/third_party/upb/upb/reflection/extension_range_internal.h +54 -0
  901. data/third_party/upb/upb/reflection/field_def.c +930 -0
  902. data/third_party/upb/upb/reflection/field_def.h +91 -0
  903. data/third_party/upb/upb/reflection/field_def_internal.h +76 -0
  904. data/third_party/upb/upb/reflection/file_def.c +370 -0
  905. data/third_party/upb/upb/reflection/file_def.h +77 -0
  906. data/third_party/upb/upb/reflection/file_def_internal.h +57 -0
  907. data/third_party/upb/upb/reflection/message.c +233 -0
  908. data/third_party/upb/upb/reflection/message.h +102 -0
  909. data/third_party/upb/upb/reflection/message.hpp +37 -0
  910. data/third_party/upb/upb/reflection/message_def.c +718 -0
  911. data/third_party/upb/upb/reflection/message_def.h +174 -0
  912. data/third_party/upb/upb/reflection/message_def_internal.h +63 -0
  913. data/third_party/upb/upb/reflection/message_reserved_range.c +81 -0
  914. data/third_party/upb/upb/reflection/message_reserved_range.h +51 -0
  915. data/third_party/upb/upb/reflection/message_reserved_range_internal.h +55 -0
  916. data/third_party/upb/upb/reflection/method_def.c +124 -0
  917. data/third_party/upb/upb/reflection/method_def.h +59 -0
  918. data/third_party/upb/upb/reflection/method_def_internal.h +53 -0
  919. data/third_party/upb/upb/reflection/oneof_def.c +226 -0
  920. data/third_party/upb/upb/reflection/oneof_def.h +66 -0
  921. data/third_party/upb/upb/reflection/oneof_def_internal.h +57 -0
  922. data/third_party/upb/upb/reflection/service_def.c +128 -0
  923. data/third_party/upb/upb/reflection/service_def.h +60 -0
  924. data/third_party/upb/upb/reflection/service_def_internal.h +53 -0
  925. data/third_party/upb/upb/reflection.h +4 -78
  926. data/third_party/upb/upb/reflection.hpp +3 -7
  927. data/third_party/upb/upb/status.h +4 -34
  928. data/third_party/upb/upb/{collections.h → string_view.h} +7 -7
  929. data/third_party/upb/upb/{text_encode.c → text/encode.c} +74 -70
  930. data/third_party/upb/upb/text/encode.h +69 -0
  931. data/third_party/upb/upb/text_encode.h +4 -32
  932. data/third_party/upb/upb/upb.h +6 -151
  933. data/third_party/upb/upb/upb.hpp +10 -18
  934. data/third_party/upb/upb/wire/common.h +44 -0
  935. data/third_party/upb/upb/wire/common_internal.h +50 -0
  936. data/third_party/upb/upb/wire/decode.c +1343 -0
  937. data/third_party/upb/upb/wire/decode.h +108 -0
  938. data/third_party/upb/upb/{decode_fast.c → wire/decode_fast.c} +184 -225
  939. data/third_party/upb/upb/{decode_fast.h → wire/decode_fast.h} +21 -7
  940. data/third_party/upb/upb/{internal/decode.h → wire/decode_internal.h} +44 -92
  941. data/third_party/upb/upb/{encode.c → wire/encode.c} +114 -95
  942. data/third_party/upb/upb/wire/encode.h +92 -0
  943. data/third_party/upb/upb/wire/eps_copy_input_stream.c +39 -0
  944. data/third_party/upb/upb/wire/eps_copy_input_stream.h +425 -0
  945. data/third_party/upb/upb/wire/reader.c +67 -0
  946. data/third_party/upb/upb/wire/reader.h +227 -0
  947. data/third_party/upb/upb/wire/swap_internal.h +63 -0
  948. data/third_party/upb/upb/wire/types.h +41 -0
  949. data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-neon.c +1 -1
  950. data/third_party/{upb/third_party/utf8_range → utf8_range}/utf8_range.h +12 -0
  951. metadata +155 -40
  952. data/src/core/ext/transport/chttp2/transport/context_list.cc +0 -71
  953. data/src/core/ext/transport/chttp2/transport/context_list.h +0 -54
  954. data/third_party/upb/upb/arena.c +0 -277
  955. data/third_party/upb/upb/decode.c +0 -1221
  956. data/third_party/upb/upb/def.c +0 -3269
  957. data/third_party/upb/upb/internal/table.h +0 -385
  958. data/third_party/upb/upb/msg.c +0 -368
  959. data/third_party/upb/upb/msg_internal.h +0 -837
  960. data/third_party/upb/upb/reflection.c +0 -323
  961. /data/third_party/{upb/third_party/utf8_range → utf8_range}/naive.c +0 -0
  962. /data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-sse.c +0 -0
@@ -0,0 +1,1343 @@
1
+ /*
2
+ * Copyright (c) 2009-2021, Google LLC
3
+ * All rights reserved.
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions are met:
7
+ * * Redistributions of source code must retain the above copyright
8
+ * notice, this list of conditions and the following disclaimer.
9
+ * * Redistributions in binary form must reproduce the above copyright
10
+ * notice, this list of conditions and the following disclaimer in the
11
+ * documentation and/or other materials provided with the distribution.
12
+ * * Neither the name of Google LLC nor the
13
+ * names of its contributors may be used to endorse or promote products
14
+ * derived from this software without specific prior written permission.
15
+ *
16
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
20
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+
28
+ #include "upb/wire/decode.h"
29
+
30
+ #include <string.h>
31
+
32
+ #include "upb/base/descriptor_constants.h"
33
+ #include "upb/collections/array_internal.h"
34
+ #include "upb/collections/map_internal.h"
35
+ #include "upb/mem/arena_internal.h"
36
+ #include "upb/mini_table/common.h"
37
+ #include "upb/mini_table/enum_internal.h"
38
+ #include "upb/port/atomic.h"
39
+ #include "upb/wire/common.h"
40
+ #include "upb/wire/common_internal.h"
41
+ #include "upb/wire/decode_internal.h"
42
+ #include "upb/wire/encode.h"
43
+ #include "upb/wire/eps_copy_input_stream.h"
44
+ #include "upb/wire/reader.h"
45
+ #include "upb/wire/swap_internal.h"
46
+ #include "upb/wire/types.h"
47
+
48
+ // Must be last.
49
+ #include "upb/port/def.inc"
50
+
51
+ // A few fake field types for our tables.
52
+ enum {
53
+ kUpb_FakeFieldType_FieldNotFound = 0,
54
+ kUpb_FakeFieldType_MessageSetItem = 19,
55
+ };
56
+
57
+ // DecodeOp: an action to be performed for a wire-type/field-type combination.
58
+ enum {
59
+ // Special ops: we don't write data to regular fields for these.
60
+ kUpb_DecodeOp_UnknownField = -1,
61
+ kUpb_DecodeOp_MessageSetItem = -2,
62
+
63
+ // Scalar-only ops.
64
+ kUpb_DecodeOp_Scalar1Byte = 0,
65
+ kUpb_DecodeOp_Scalar4Byte = 2,
66
+ kUpb_DecodeOp_Scalar8Byte = 3,
67
+ kUpb_DecodeOp_Enum = 1,
68
+
69
+ // Scalar/repeated ops.
70
+ kUpb_DecodeOp_String = 4,
71
+ kUpb_DecodeOp_Bytes = 5,
72
+ kUpb_DecodeOp_SubMessage = 6,
73
+
74
+ // Repeated-only ops (also see macros below).
75
+ kUpb_DecodeOp_PackedEnum = 13,
76
+ };
77
+
78
+ // For packed fields it is helpful to be able to recover the lg2 of the data
79
+ // size from the op.
80
+ #define OP_FIXPCK_LG2(n) (n + 5) /* n in [2, 3] => op in [7, 8] */
81
+ #define OP_VARPCK_LG2(n) (n + 9) /* n in [0, 2, 3] => op in [9, 11, 12] */
82
+
83
+ typedef union {
84
+ bool bool_val;
85
+ uint32_t uint32_val;
86
+ uint64_t uint64_val;
87
+ uint32_t size;
88
+ } wireval;
89
+
90
+ static const char* _upb_Decoder_DecodeMessage(upb_Decoder* d, const char* ptr,
91
+ upb_Message* msg,
92
+ const upb_MiniTable* layout);
93
+
94
+ UPB_NORETURN static void* _upb_Decoder_ErrorJmp(upb_Decoder* d,
95
+ upb_DecodeStatus status) {
96
+ assert(status != kUpb_DecodeStatus_Ok);
97
+ d->status = status;
98
+ UPB_LONGJMP(d->err, 1);
99
+ }
100
+
101
+ const char* _upb_FastDecoder_ErrorJmp(upb_Decoder* d, int status) {
102
+ assert(status != kUpb_DecodeStatus_Ok);
103
+ d->status = status;
104
+ UPB_LONGJMP(d->err, 1);
105
+ return NULL;
106
+ }
107
+
108
+ static void _upb_Decoder_VerifyUtf8(upb_Decoder* d, const char* buf, int len) {
109
+ if (!_upb_Decoder_VerifyUtf8Inline(buf, len)) {
110
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_BadUtf8);
111
+ }
112
+ }
113
+
114
+ static bool _upb_Decoder_Reserve(upb_Decoder* d, upb_Array* arr, size_t elem) {
115
+ bool need_realloc = arr->capacity - arr->size < elem;
116
+ if (need_realloc && !_upb_array_realloc(arr, arr->size + elem, &d->arena)) {
117
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_OutOfMemory);
118
+ }
119
+ return need_realloc;
120
+ }
121
+
122
+ typedef struct {
123
+ const char* ptr;
124
+ uint64_t val;
125
+ } _upb_DecodeLongVarintReturn;
126
+
127
+ UPB_NOINLINE
128
+ static _upb_DecodeLongVarintReturn _upb_Decoder_DecodeLongVarint(
129
+ const char* ptr, uint64_t val) {
130
+ _upb_DecodeLongVarintReturn ret = {NULL, 0};
131
+ uint64_t byte;
132
+ int i;
133
+ for (i = 1; i < 10; i++) {
134
+ byte = (uint8_t)ptr[i];
135
+ val += (byte - 1) << (i * 7);
136
+ if (!(byte & 0x80)) {
137
+ ret.ptr = ptr + i + 1;
138
+ ret.val = val;
139
+ return ret;
140
+ }
141
+ }
142
+ return ret;
143
+ }
144
+
145
+ UPB_FORCEINLINE
146
+ static const char* _upb_Decoder_DecodeVarint(upb_Decoder* d, const char* ptr,
147
+ uint64_t* val) {
148
+ uint64_t byte = (uint8_t)*ptr;
149
+ if (UPB_LIKELY((byte & 0x80) == 0)) {
150
+ *val = byte;
151
+ return ptr + 1;
152
+ } else {
153
+ _upb_DecodeLongVarintReturn res = _upb_Decoder_DecodeLongVarint(ptr, byte);
154
+ if (!res.ptr) _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_Malformed);
155
+ *val = res.val;
156
+ return res.ptr;
157
+ }
158
+ }
159
+
160
+ UPB_FORCEINLINE
161
+ static const char* _upb_Decoder_DecodeTag(upb_Decoder* d, const char* ptr,
162
+ uint32_t* val) {
163
+ uint64_t byte = (uint8_t)*ptr;
164
+ if (UPB_LIKELY((byte & 0x80) == 0)) {
165
+ *val = byte;
166
+ return ptr + 1;
167
+ } else {
168
+ const char* start = ptr;
169
+ _upb_DecodeLongVarintReturn res = _upb_Decoder_DecodeLongVarint(ptr, byte);
170
+ if (!res.ptr || res.ptr - start > 5 || res.val > UINT32_MAX) {
171
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_Malformed);
172
+ }
173
+ *val = res.val;
174
+ return res.ptr;
175
+ }
176
+ }
177
+
178
+ UPB_FORCEINLINE
179
+ static const char* upb_Decoder_DecodeSize(upb_Decoder* d, const char* ptr,
180
+ uint32_t* size) {
181
+ uint64_t size64;
182
+ ptr = _upb_Decoder_DecodeVarint(d, ptr, &size64);
183
+ if (size64 >= INT32_MAX ||
184
+ !upb_EpsCopyInputStream_CheckSize(&d->input, ptr, (int)size64)) {
185
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_Malformed);
186
+ }
187
+ *size = size64;
188
+ return ptr;
189
+ }
190
+
191
+ static void _upb_Decoder_MungeInt32(wireval* val) {
192
+ if (!_upb_IsLittleEndian()) {
193
+ /* The next stage will memcpy(dst, &val, 4) */
194
+ val->uint32_val = val->uint64_val;
195
+ }
196
+ }
197
+
198
+ static void _upb_Decoder_Munge(int type, wireval* val) {
199
+ switch (type) {
200
+ case kUpb_FieldType_Bool:
201
+ val->bool_val = val->uint64_val != 0;
202
+ break;
203
+ case kUpb_FieldType_SInt32: {
204
+ uint32_t n = val->uint64_val;
205
+ val->uint32_val = (n >> 1) ^ -(int32_t)(n & 1);
206
+ break;
207
+ }
208
+ case kUpb_FieldType_SInt64: {
209
+ uint64_t n = val->uint64_val;
210
+ val->uint64_val = (n >> 1) ^ -(int64_t)(n & 1);
211
+ break;
212
+ }
213
+ case kUpb_FieldType_Int32:
214
+ case kUpb_FieldType_UInt32:
215
+ case kUpb_FieldType_Enum:
216
+ _upb_Decoder_MungeInt32(val);
217
+ break;
218
+ }
219
+ }
220
+
221
+ static upb_Message* _upb_Decoder_NewSubMessage(
222
+ upb_Decoder* d, const upb_MiniTableSub* subs,
223
+ const upb_MiniTableField* field) {
224
+ const upb_MiniTable* subl = subs[field->UPB_PRIVATE(submsg_index)].submsg;
225
+ UPB_ASSERT(subl);
226
+ upb_Message* msg = _upb_Message_New(subl, &d->arena);
227
+ if (!msg) _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_OutOfMemory);
228
+ return msg;
229
+ }
230
+
231
+ static const char* _upb_Decoder_ReadString(upb_Decoder* d, const char* ptr,
232
+ int size, upb_StringView* str) {
233
+ const char* str_ptr = ptr;
234
+ ptr = upb_EpsCopyInputStream_ReadString(&d->input, &str_ptr, size, &d->arena);
235
+ if (!ptr) _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_OutOfMemory);
236
+ str->data = str_ptr;
237
+ str->size = size;
238
+ return ptr;
239
+ }
240
+
241
+ UPB_FORCEINLINE
242
+ static const char* _upb_Decoder_RecurseSubMessage(upb_Decoder* d,
243
+ const char* ptr,
244
+ upb_Message* submsg,
245
+ const upb_MiniTable* subl,
246
+ uint32_t expected_end_group) {
247
+ if (--d->depth < 0) {
248
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_MaxDepthExceeded);
249
+ }
250
+ ptr = _upb_Decoder_DecodeMessage(d, ptr, submsg, subl);
251
+ d->depth++;
252
+ if (d->end_group != expected_end_group) {
253
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_Malformed);
254
+ }
255
+ return ptr;
256
+ }
257
+
258
+ UPB_FORCEINLINE
259
+ static const char* _upb_Decoder_DecodeSubMessage(
260
+ upb_Decoder* d, const char* ptr, upb_Message* submsg,
261
+ const upb_MiniTableSub* subs, const upb_MiniTableField* field, int size) {
262
+ int saved_delta = upb_EpsCopyInputStream_PushLimit(&d->input, ptr, size);
263
+ const upb_MiniTable* subl = subs[field->UPB_PRIVATE(submsg_index)].submsg;
264
+ UPB_ASSERT(subl);
265
+ ptr = _upb_Decoder_RecurseSubMessage(d, ptr, submsg, subl, DECODE_NOGROUP);
266
+ upb_EpsCopyInputStream_PopLimit(&d->input, ptr, saved_delta);
267
+ return ptr;
268
+ }
269
+
270
+ UPB_FORCEINLINE
271
+ static const char* _upb_Decoder_DecodeGroup(upb_Decoder* d, const char* ptr,
272
+ upb_Message* submsg,
273
+ const upb_MiniTable* subl,
274
+ uint32_t number) {
275
+ if (_upb_Decoder_IsDone(d, &ptr)) {
276
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_Malformed);
277
+ }
278
+ ptr = _upb_Decoder_RecurseSubMessage(d, ptr, submsg, subl, number);
279
+ d->end_group = DECODE_NOGROUP;
280
+ return ptr;
281
+ }
282
+
283
+ UPB_FORCEINLINE
284
+ static const char* _upb_Decoder_DecodeUnknownGroup(upb_Decoder* d,
285
+ const char* ptr,
286
+ uint32_t number) {
287
+ return _upb_Decoder_DecodeGroup(d, ptr, NULL, NULL, number);
288
+ }
289
+
290
+ UPB_FORCEINLINE
291
+ static const char* _upb_Decoder_DecodeKnownGroup(
292
+ upb_Decoder* d, const char* ptr, upb_Message* submsg,
293
+ const upb_MiniTableSub* subs, const upb_MiniTableField* field) {
294
+ const upb_MiniTable* subl = subs[field->UPB_PRIVATE(submsg_index)].submsg;
295
+ UPB_ASSERT(subl);
296
+ return _upb_Decoder_DecodeGroup(d, ptr, submsg, subl, field->number);
297
+ }
298
+
299
+ static char* upb_Decoder_EncodeVarint32(uint32_t val, char* ptr) {
300
+ do {
301
+ uint8_t byte = val & 0x7fU;
302
+ val >>= 7;
303
+ if (val) byte |= 0x80U;
304
+ *(ptr++) = byte;
305
+ } while (val);
306
+ return ptr;
307
+ }
308
+
309
+ static void _upb_Decoder_AddUnknownVarints(upb_Decoder* d, upb_Message* msg,
310
+ uint32_t val1, uint32_t val2) {
311
+ char buf[20];
312
+ char* end = buf;
313
+ end = upb_Decoder_EncodeVarint32(val1, end);
314
+ end = upb_Decoder_EncodeVarint32(val2, end);
315
+
316
+ if (!_upb_Message_AddUnknown(msg, buf, end - buf, &d->arena)) {
317
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_OutOfMemory);
318
+ }
319
+ }
320
+
321
+ UPB_NOINLINE
322
+ static bool _upb_Decoder_CheckEnumSlow(upb_Decoder* d, const char* ptr,
323
+ upb_Message* msg,
324
+ const upb_MiniTableEnum* e,
325
+ const upb_MiniTableField* field,
326
+ uint32_t v) {
327
+ if (_upb_MiniTable_CheckEnumValueSlow(e, v)) return true;
328
+
329
+ // Unrecognized enum goes into unknown fields.
330
+ // For packed fields the tag could be arbitrarily far in the past, so we
331
+ // just re-encode the tag and value here.
332
+ uint32_t tag = ((uint32_t)field->number << 3) | kUpb_WireType_Varint;
333
+ upb_Message* unknown_msg =
334
+ field->mode & kUpb_LabelFlags_IsExtension ? d->unknown_msg : msg;
335
+ _upb_Decoder_AddUnknownVarints(d, unknown_msg, tag, v);
336
+ return false;
337
+ }
338
+
339
+ UPB_FORCEINLINE
340
+ static bool _upb_Decoder_CheckEnum(upb_Decoder* d, const char* ptr,
341
+ upb_Message* msg, const upb_MiniTableEnum* e,
342
+ const upb_MiniTableField* field,
343
+ wireval* val) {
344
+ uint32_t v = val->uint32_val;
345
+
346
+ _kUpb_FastEnumCheck_Status status = _upb_MiniTable_CheckEnumValueFast(e, v);
347
+ if (UPB_LIKELY(status == _kUpb_FastEnumCheck_ValueIsInEnum)) return true;
348
+ return _upb_Decoder_CheckEnumSlow(d, ptr, msg, e, field, v);
349
+ }
350
+
351
+ UPB_NOINLINE
352
+ static const char* _upb_Decoder_DecodeEnumArray(upb_Decoder* d, const char* ptr,
353
+ upb_Message* msg,
354
+ upb_Array* arr,
355
+ const upb_MiniTableSub* subs,
356
+ const upb_MiniTableField* field,
357
+ wireval* val) {
358
+ const upb_MiniTableEnum* e = subs[field->UPB_PRIVATE(submsg_index)].subenum;
359
+ if (!_upb_Decoder_CheckEnum(d, ptr, msg, e, field, val)) return ptr;
360
+ void* mem = UPB_PTR_AT(_upb_array_ptr(arr), arr->size * 4, void);
361
+ arr->size++;
362
+ memcpy(mem, val, 4);
363
+ return ptr;
364
+ }
365
+
366
+ UPB_FORCEINLINE
367
+ static const char* _upb_Decoder_DecodeFixedPacked(
368
+ upb_Decoder* d, const char* ptr, upb_Array* arr, wireval* val,
369
+ const upb_MiniTableField* field, int lg2) {
370
+ int mask = (1 << lg2) - 1;
371
+ size_t count = val->size >> lg2;
372
+ if ((val->size & mask) != 0) {
373
+ // Length isn't a round multiple of elem size.
374
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_Malformed);
375
+ }
376
+ _upb_Decoder_Reserve(d, arr, count);
377
+ void* mem = UPB_PTR_AT(_upb_array_ptr(arr), arr->size << lg2, void);
378
+ arr->size += count;
379
+ // Note: if/when the decoder supports multi-buffer input, we will need to
380
+ // handle buffer seams here.
381
+ if (_upb_IsLittleEndian()) {
382
+ ptr = upb_EpsCopyInputStream_Copy(&d->input, ptr, mem, val->size);
383
+ } else {
384
+ int delta = upb_EpsCopyInputStream_PushLimit(&d->input, ptr, val->size);
385
+ char* dst = mem;
386
+ while (!_upb_Decoder_IsDone(d, &ptr)) {
387
+ if (lg2 == 2) {
388
+ ptr = upb_WireReader_ReadFixed32(ptr, dst);
389
+ dst += 4;
390
+ } else {
391
+ UPB_ASSERT(lg2 == 3);
392
+ ptr = upb_WireReader_ReadFixed64(ptr, dst);
393
+ dst += 8;
394
+ }
395
+ }
396
+ upb_EpsCopyInputStream_PopLimit(&d->input, ptr, delta);
397
+ }
398
+
399
+ return ptr;
400
+ }
401
+
402
+ UPB_FORCEINLINE
403
+ static const char* _upb_Decoder_DecodeVarintPacked(
404
+ upb_Decoder* d, const char* ptr, upb_Array* arr, wireval* val,
405
+ const upb_MiniTableField* field, int lg2) {
406
+ int scale = 1 << lg2;
407
+ int saved_limit = upb_EpsCopyInputStream_PushLimit(&d->input, ptr, val->size);
408
+ char* out = UPB_PTR_AT(_upb_array_ptr(arr), arr->size << lg2, void);
409
+ while (!_upb_Decoder_IsDone(d, &ptr)) {
410
+ wireval elem;
411
+ ptr = _upb_Decoder_DecodeVarint(d, ptr, &elem.uint64_val);
412
+ _upb_Decoder_Munge(field->UPB_PRIVATE(descriptortype), &elem);
413
+ if (_upb_Decoder_Reserve(d, arr, 1)) {
414
+ out = UPB_PTR_AT(_upb_array_ptr(arr), arr->size << lg2, void);
415
+ }
416
+ arr->size++;
417
+ memcpy(out, &elem, scale);
418
+ out += scale;
419
+ }
420
+ upb_EpsCopyInputStream_PopLimit(&d->input, ptr, saved_limit);
421
+ return ptr;
422
+ }
423
+
424
+ UPB_NOINLINE
425
+ static const char* _upb_Decoder_DecodeEnumPacked(
426
+ upb_Decoder* d, const char* ptr, upb_Message* msg, upb_Array* arr,
427
+ const upb_MiniTableSub* subs, const upb_MiniTableField* field,
428
+ wireval* val) {
429
+ const upb_MiniTableEnum* e = subs[field->UPB_PRIVATE(submsg_index)].subenum;
430
+ int saved_limit = upb_EpsCopyInputStream_PushLimit(&d->input, ptr, val->size);
431
+ char* out = UPB_PTR_AT(_upb_array_ptr(arr), arr->size * 4, void);
432
+ while (!_upb_Decoder_IsDone(d, &ptr)) {
433
+ wireval elem;
434
+ ptr = _upb_Decoder_DecodeVarint(d, ptr, &elem.uint64_val);
435
+ _upb_Decoder_MungeInt32(&elem);
436
+ if (!_upb_Decoder_CheckEnum(d, ptr, msg, e, field, &elem)) {
437
+ continue;
438
+ }
439
+ if (_upb_Decoder_Reserve(d, arr, 1)) {
440
+ out = UPB_PTR_AT(_upb_array_ptr(arr), arr->size * 4, void);
441
+ }
442
+ arr->size++;
443
+ memcpy(out, &elem, 4);
444
+ out += 4;
445
+ }
446
+ upb_EpsCopyInputStream_PopLimit(&d->input, ptr, saved_limit);
447
+ return ptr;
448
+ }
449
+
450
+ upb_Array* _upb_Decoder_CreateArray(upb_Decoder* d,
451
+ const upb_MiniTableField* field) {
452
+ /* Maps descriptor type -> elem_size_lg2. */
453
+ static const uint8_t kElemSizeLg2[] = {
454
+ [0] = -1, // invalid descriptor type
455
+ [kUpb_FieldType_Double] = 3,
456
+ [kUpb_FieldType_Float] = 2,
457
+ [kUpb_FieldType_Int64] = 3,
458
+ [kUpb_FieldType_UInt64] = 3,
459
+ [kUpb_FieldType_Int32] = 2,
460
+ [kUpb_FieldType_Fixed64] = 3,
461
+ [kUpb_FieldType_Fixed32] = 2,
462
+ [kUpb_FieldType_Bool] = 0,
463
+ [kUpb_FieldType_String] = UPB_SIZE(3, 4),
464
+ [kUpb_FieldType_Group] = UPB_SIZE(2, 3),
465
+ [kUpb_FieldType_Message] = UPB_SIZE(2, 3),
466
+ [kUpb_FieldType_Bytes] = UPB_SIZE(3, 4),
467
+ [kUpb_FieldType_UInt32] = 2,
468
+ [kUpb_FieldType_Enum] = 2,
469
+ [kUpb_FieldType_SFixed32] = 2,
470
+ [kUpb_FieldType_SFixed64] = 3,
471
+ [kUpb_FieldType_SInt32] = 2,
472
+ [kUpb_FieldType_SInt64] = 3,
473
+ };
474
+
475
+ size_t lg2 = kElemSizeLg2[field->UPB_PRIVATE(descriptortype)];
476
+ upb_Array* ret = _upb_Array_New(&d->arena, 4, lg2);
477
+ if (!ret) _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_OutOfMemory);
478
+ return ret;
479
+ }
480
+
481
+ static const char* _upb_Decoder_DecodeToArray(upb_Decoder* d, const char* ptr,
482
+ upb_Message* msg,
483
+ const upb_MiniTableSub* subs,
484
+ const upb_MiniTableField* field,
485
+ wireval* val, int op) {
486
+ upb_Array** arrp = UPB_PTR_AT(msg, field->offset, void);
487
+ upb_Array* arr = *arrp;
488
+ void* mem;
489
+
490
+ if (arr) {
491
+ _upb_Decoder_Reserve(d, arr, 1);
492
+ } else {
493
+ arr = _upb_Decoder_CreateArray(d, field);
494
+ *arrp = arr;
495
+ }
496
+
497
+ switch (op) {
498
+ case kUpb_DecodeOp_Scalar1Byte:
499
+ case kUpb_DecodeOp_Scalar4Byte:
500
+ case kUpb_DecodeOp_Scalar8Byte:
501
+ /* Append scalar value. */
502
+ mem = UPB_PTR_AT(_upb_array_ptr(arr), arr->size << op, void);
503
+ arr->size++;
504
+ memcpy(mem, val, 1 << op);
505
+ return ptr;
506
+ case kUpb_DecodeOp_String:
507
+ _upb_Decoder_VerifyUtf8(d, ptr, val->size);
508
+ /* Fallthrough. */
509
+ case kUpb_DecodeOp_Bytes: {
510
+ /* Append bytes. */
511
+ upb_StringView* str = (upb_StringView*)_upb_array_ptr(arr) + arr->size;
512
+ arr->size++;
513
+ return _upb_Decoder_ReadString(d, ptr, val->size, str);
514
+ }
515
+ case kUpb_DecodeOp_SubMessage: {
516
+ /* Append submessage / group. */
517
+ upb_Message* submsg = _upb_Decoder_NewSubMessage(d, subs, field);
518
+ *UPB_PTR_AT(_upb_array_ptr(arr), arr->size * sizeof(void*),
519
+ upb_Message*) = submsg;
520
+ arr->size++;
521
+ if (UPB_UNLIKELY(field->UPB_PRIVATE(descriptortype) ==
522
+ kUpb_FieldType_Group)) {
523
+ return _upb_Decoder_DecodeKnownGroup(d, ptr, submsg, subs, field);
524
+ } else {
525
+ return _upb_Decoder_DecodeSubMessage(d, ptr, submsg, subs, field,
526
+ val->size);
527
+ }
528
+ }
529
+ case OP_FIXPCK_LG2(2):
530
+ case OP_FIXPCK_LG2(3):
531
+ return _upb_Decoder_DecodeFixedPacked(d, ptr, arr, val, field,
532
+ op - OP_FIXPCK_LG2(0));
533
+ case OP_VARPCK_LG2(0):
534
+ case OP_VARPCK_LG2(2):
535
+ case OP_VARPCK_LG2(3):
536
+ return _upb_Decoder_DecodeVarintPacked(d, ptr, arr, val, field,
537
+ op - OP_VARPCK_LG2(0));
538
+ case kUpb_DecodeOp_Enum:
539
+ return _upb_Decoder_DecodeEnumArray(d, ptr, msg, arr, subs, field, val);
540
+ case kUpb_DecodeOp_PackedEnum:
541
+ return _upb_Decoder_DecodeEnumPacked(d, ptr, msg, arr, subs, field, val);
542
+ default:
543
+ UPB_UNREACHABLE();
544
+ }
545
+ }
546
+
547
+ upb_Map* _upb_Decoder_CreateMap(upb_Decoder* d, const upb_MiniTable* entry) {
548
+ /* Maps descriptor type -> upb map size. */
549
+ static const uint8_t kSizeInMap[] = {
550
+ [0] = -1, // invalid descriptor type */
551
+ [kUpb_FieldType_Double] = 8,
552
+ [kUpb_FieldType_Float] = 4,
553
+ [kUpb_FieldType_Int64] = 8,
554
+ [kUpb_FieldType_UInt64] = 8,
555
+ [kUpb_FieldType_Int32] = 4,
556
+ [kUpb_FieldType_Fixed64] = 8,
557
+ [kUpb_FieldType_Fixed32] = 4,
558
+ [kUpb_FieldType_Bool] = 1,
559
+ [kUpb_FieldType_String] = UPB_MAPTYPE_STRING,
560
+ [kUpb_FieldType_Group] = sizeof(void*),
561
+ [kUpb_FieldType_Message] = sizeof(void*),
562
+ [kUpb_FieldType_Bytes] = UPB_MAPTYPE_STRING,
563
+ [kUpb_FieldType_UInt32] = 4,
564
+ [kUpb_FieldType_Enum] = 4,
565
+ [kUpb_FieldType_SFixed32] = 4,
566
+ [kUpb_FieldType_SFixed64] = 8,
567
+ [kUpb_FieldType_SInt32] = 4,
568
+ [kUpb_FieldType_SInt64] = 8,
569
+ };
570
+
571
+ const upb_MiniTableField* key_field = &entry->fields[0];
572
+ const upb_MiniTableField* val_field = &entry->fields[1];
573
+ char key_size = kSizeInMap[key_field->UPB_PRIVATE(descriptortype)];
574
+ char val_size = kSizeInMap[val_field->UPB_PRIVATE(descriptortype)];
575
+ UPB_ASSERT(key_field->offset == offsetof(upb_MapEntryData, k));
576
+ UPB_ASSERT(val_field->offset == offsetof(upb_MapEntryData, v));
577
+ upb_Map* ret = _upb_Map_New(&d->arena, key_size, val_size);
578
+ if (!ret) _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_OutOfMemory);
579
+ return ret;
580
+ }
581
+
582
+ static const char* _upb_Decoder_DecodeToMap(upb_Decoder* d, const char* ptr,
583
+ upb_Message* msg,
584
+ const upb_MiniTableSub* subs,
585
+ const upb_MiniTableField* field,
586
+ wireval* val) {
587
+ upb_Map** map_p = UPB_PTR_AT(msg, field->offset, upb_Map*);
588
+ upb_Map* map = *map_p;
589
+ upb_MapEntry ent;
590
+ UPB_ASSERT(upb_MiniTableField_Type(field) == kUpb_FieldType_Message);
591
+ const upb_MiniTable* entry = subs[field->UPB_PRIVATE(submsg_index)].submsg;
592
+
593
+ UPB_ASSERT(entry->field_count == 2);
594
+ UPB_ASSERT(!upb_IsRepeatedOrMap(&entry->fields[0]));
595
+ UPB_ASSERT(!upb_IsRepeatedOrMap(&entry->fields[1]));
596
+
597
+ if (!map) {
598
+ map = _upb_Decoder_CreateMap(d, entry);
599
+ *map_p = map;
600
+ }
601
+
602
+ // Parse map entry.
603
+ memset(&ent, 0, sizeof(ent));
604
+
605
+ if (entry->fields[1].UPB_PRIVATE(descriptortype) == kUpb_FieldType_Message ||
606
+ entry->fields[1].UPB_PRIVATE(descriptortype) == kUpb_FieldType_Group) {
607
+ const upb_MiniTable* submsg_table = entry->subs[0].submsg;
608
+ // Any sub-message entry must be linked. We do not allow dynamic tree
609
+ // shaking in this case.
610
+ UPB_ASSERT(submsg_table);
611
+
612
+ // Create proactively to handle the case where it doesn't appear. */
613
+ ent.data.v.val = upb_value_ptr(_upb_Message_New(submsg_table, &d->arena));
614
+ }
615
+
616
+ ptr =
617
+ _upb_Decoder_DecodeSubMessage(d, ptr, &ent.data, subs, field, val->size);
618
+ // check if ent had any unknown fields
619
+ size_t size;
620
+ upb_Message_GetUnknown(&ent.data, &size);
621
+ if (size != 0) {
622
+ char* buf;
623
+ size_t size;
624
+ uint32_t tag = ((uint32_t)field->number << 3) | kUpb_WireType_Delimited;
625
+ upb_EncodeStatus status =
626
+ upb_Encode(&ent.data, entry, 0, &d->arena, &buf, &size);
627
+ if (status != kUpb_EncodeStatus_Ok) {
628
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_OutOfMemory);
629
+ }
630
+ _upb_Decoder_AddUnknownVarints(d, msg, tag, size);
631
+ if (!_upb_Message_AddUnknown(msg, buf, size, &d->arena)) {
632
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_OutOfMemory);
633
+ }
634
+ } else {
635
+ if (_upb_Map_Insert(map, &ent.data.k, map->key_size, &ent.data.v,
636
+ map->val_size,
637
+ &d->arena) == kUpb_MapInsertStatus_OutOfMemory) {
638
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_OutOfMemory);
639
+ }
640
+ }
641
+ return ptr;
642
+ }
643
+
644
+ static const char* _upb_Decoder_DecodeToSubMessage(
645
+ upb_Decoder* d, const char* ptr, upb_Message* msg,
646
+ const upb_MiniTableSub* subs, const upb_MiniTableField* field, wireval* val,
647
+ int op) {
648
+ void* mem = UPB_PTR_AT(msg, field->offset, void);
649
+ int type = field->UPB_PRIVATE(descriptortype);
650
+
651
+ if (UPB_UNLIKELY(op == kUpb_DecodeOp_Enum) &&
652
+ !_upb_Decoder_CheckEnum(d, ptr, msg,
653
+ subs[field->UPB_PRIVATE(submsg_index)].subenum,
654
+ field, val)) {
655
+ return ptr;
656
+ }
657
+
658
+ /* Set presence if necessary. */
659
+ if (field->presence > 0) {
660
+ _upb_sethas_field(msg, field);
661
+ } else if (field->presence < 0) {
662
+ /* Oneof case */
663
+ uint32_t* oneof_case = _upb_oneofcase_field(msg, field);
664
+ if (op == kUpb_DecodeOp_SubMessage && *oneof_case != field->number) {
665
+ memset(mem, 0, sizeof(void*));
666
+ }
667
+ *oneof_case = field->number;
668
+ }
669
+
670
+ /* Store into message. */
671
+ switch (op) {
672
+ case kUpb_DecodeOp_SubMessage: {
673
+ upb_Message** submsgp = mem;
674
+ upb_Message* submsg = *submsgp;
675
+ if (!submsg) {
676
+ submsg = _upb_Decoder_NewSubMessage(d, subs, field);
677
+ *submsgp = submsg;
678
+ }
679
+ if (UPB_UNLIKELY(type == kUpb_FieldType_Group)) {
680
+ ptr = _upb_Decoder_DecodeKnownGroup(d, ptr, submsg, subs, field);
681
+ } else {
682
+ ptr = _upb_Decoder_DecodeSubMessage(d, ptr, submsg, subs, field,
683
+ val->size);
684
+ }
685
+ break;
686
+ }
687
+ case kUpb_DecodeOp_String:
688
+ _upb_Decoder_VerifyUtf8(d, ptr, val->size);
689
+ /* Fallthrough. */
690
+ case kUpb_DecodeOp_Bytes:
691
+ return _upb_Decoder_ReadString(d, ptr, val->size, mem);
692
+ case kUpb_DecodeOp_Scalar8Byte:
693
+ memcpy(mem, val, 8);
694
+ break;
695
+ case kUpb_DecodeOp_Enum:
696
+ case kUpb_DecodeOp_Scalar4Byte:
697
+ memcpy(mem, val, 4);
698
+ break;
699
+ case kUpb_DecodeOp_Scalar1Byte:
700
+ memcpy(mem, val, 1);
701
+ break;
702
+ default:
703
+ UPB_UNREACHABLE();
704
+ }
705
+
706
+ return ptr;
707
+ }
708
+
709
+ UPB_NOINLINE
710
+ const char* _upb_Decoder_CheckRequired(upb_Decoder* d, const char* ptr,
711
+ const upb_Message* msg,
712
+ const upb_MiniTable* l) {
713
+ assert(l->required_count);
714
+ if (UPB_LIKELY((d->options & kUpb_DecodeOption_CheckRequired) == 0)) {
715
+ return ptr;
716
+ }
717
+ uint64_t msg_head;
718
+ memcpy(&msg_head, msg, 8);
719
+ msg_head = _upb_BigEndian_Swap64(msg_head);
720
+ if (upb_MiniTable_requiredmask(l) & ~msg_head) {
721
+ d->missing_required = true;
722
+ }
723
+ return ptr;
724
+ }
725
+
726
+ UPB_FORCEINLINE
727
+ static bool _upb_Decoder_TryFastDispatch(upb_Decoder* d, const char** ptr,
728
+ upb_Message* msg,
729
+ const upb_MiniTable* layout) {
730
+ #if UPB_FASTTABLE
731
+ if (layout && layout->table_mask != (unsigned char)-1) {
732
+ uint16_t tag = _upb_FastDecoder_LoadTag(*ptr);
733
+ intptr_t table = decode_totable(layout);
734
+ *ptr = _upb_FastDecoder_TagDispatch(d, *ptr, msg, table, 0, tag);
735
+ return true;
736
+ }
737
+ #endif
738
+ return false;
739
+ }
740
+
741
+ static const char* upb_Decoder_SkipField(upb_Decoder* d, const char* ptr,
742
+ uint32_t tag) {
743
+ int field_number = tag >> 3;
744
+ int wire_type = tag & 7;
745
+ switch (wire_type) {
746
+ case kUpb_WireType_Varint: {
747
+ uint64_t val;
748
+ return _upb_Decoder_DecodeVarint(d, ptr, &val);
749
+ }
750
+ case kUpb_WireType_64Bit:
751
+ return ptr + 8;
752
+ case kUpb_WireType_32Bit:
753
+ return ptr + 4;
754
+ case kUpb_WireType_Delimited: {
755
+ uint32_t size;
756
+ ptr = upb_Decoder_DecodeSize(d, ptr, &size);
757
+ return ptr + size;
758
+ }
759
+ case kUpb_WireType_StartGroup:
760
+ return _upb_Decoder_DecodeUnknownGroup(d, ptr, field_number);
761
+ default:
762
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_Malformed);
763
+ }
764
+ }
765
+
766
+ enum {
767
+ kStartItemTag = ((kUpb_MsgSet_Item << 3) | kUpb_WireType_StartGroup),
768
+ kEndItemTag = ((kUpb_MsgSet_Item << 3) | kUpb_WireType_EndGroup),
769
+ kTypeIdTag = ((kUpb_MsgSet_TypeId << 3) | kUpb_WireType_Varint),
770
+ kMessageTag = ((kUpb_MsgSet_Message << 3) | kUpb_WireType_Delimited),
771
+ };
772
+
773
+ static void upb_Decoder_AddKnownMessageSetItem(
774
+ upb_Decoder* d, upb_Message* msg, const upb_MiniTableExtension* item_mt,
775
+ const char* data, uint32_t size) {
776
+ upb_Message_Extension* ext =
777
+ _upb_Message_GetOrCreateExtension(msg, item_mt, &d->arena);
778
+ if (UPB_UNLIKELY(!ext)) {
779
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_OutOfMemory);
780
+ }
781
+ upb_Message* submsg =
782
+ _upb_Decoder_NewSubMessage(d, &ext->ext->sub, &ext->ext->field);
783
+ upb_DecodeStatus status = upb_Decode(data, size, submsg, item_mt->sub.submsg,
784
+ d->extreg, d->options, &d->arena);
785
+ memcpy(&ext->data, &submsg, sizeof(submsg));
786
+ if (status != kUpb_DecodeStatus_Ok) _upb_Decoder_ErrorJmp(d, status);
787
+ }
788
+
789
+ static void upb_Decoder_AddUnknownMessageSetItem(upb_Decoder* d,
790
+ upb_Message* msg,
791
+ uint32_t type_id,
792
+ const char* message_data,
793
+ uint32_t message_size) {
794
+ char buf[60];
795
+ char* ptr = buf;
796
+ ptr = upb_Decoder_EncodeVarint32(kStartItemTag, ptr);
797
+ ptr = upb_Decoder_EncodeVarint32(kTypeIdTag, ptr);
798
+ ptr = upb_Decoder_EncodeVarint32(type_id, ptr);
799
+ ptr = upb_Decoder_EncodeVarint32(kMessageTag, ptr);
800
+ ptr = upb_Decoder_EncodeVarint32(message_size, ptr);
801
+ char* split = ptr;
802
+
803
+ ptr = upb_Decoder_EncodeVarint32(kEndItemTag, ptr);
804
+ char* end = ptr;
805
+
806
+ if (!_upb_Message_AddUnknown(msg, buf, split - buf, &d->arena) ||
807
+ !_upb_Message_AddUnknown(msg, message_data, message_size, &d->arena) ||
808
+ !_upb_Message_AddUnknown(msg, split, end - split, &d->arena)) {
809
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_OutOfMemory);
810
+ }
811
+ }
812
+
813
+ static void upb_Decoder_AddMessageSetItem(upb_Decoder* d, upb_Message* msg,
814
+ const upb_MiniTable* t,
815
+ uint32_t type_id, const char* data,
816
+ uint32_t size) {
817
+ const upb_MiniTableExtension* item_mt =
818
+ upb_ExtensionRegistry_Lookup(d->extreg, t, type_id);
819
+ if (item_mt) {
820
+ upb_Decoder_AddKnownMessageSetItem(d, msg, item_mt, data, size);
821
+ } else {
822
+ upb_Decoder_AddUnknownMessageSetItem(d, msg, type_id, data, size);
823
+ }
824
+ }
825
+
826
+ static const char* upb_Decoder_DecodeMessageSetItem(
827
+ upb_Decoder* d, const char* ptr, upb_Message* msg,
828
+ const upb_MiniTable* layout) {
829
+ uint32_t type_id = 0;
830
+ upb_StringView preserved = {NULL, 0};
831
+ typedef enum {
832
+ kUpb_HaveId = 1 << 0,
833
+ kUpb_HavePayload = 1 << 1,
834
+ } StateMask;
835
+ StateMask state_mask = 0;
836
+ while (!_upb_Decoder_IsDone(d, &ptr)) {
837
+ uint32_t tag;
838
+ ptr = _upb_Decoder_DecodeTag(d, ptr, &tag);
839
+ switch (tag) {
840
+ case kEndItemTag:
841
+ return ptr;
842
+ case kTypeIdTag: {
843
+ uint64_t tmp;
844
+ ptr = _upb_Decoder_DecodeVarint(d, ptr, &tmp);
845
+ if (state_mask & kUpb_HaveId) break; // Ignore dup.
846
+ state_mask |= kUpb_HaveId;
847
+ type_id = tmp;
848
+ if (state_mask & kUpb_HavePayload) {
849
+ upb_Decoder_AddMessageSetItem(d, msg, layout, type_id, preserved.data,
850
+ preserved.size);
851
+ }
852
+ break;
853
+ }
854
+ case kMessageTag: {
855
+ uint32_t size;
856
+ ptr = upb_Decoder_DecodeSize(d, ptr, &size);
857
+ const char* data = ptr;
858
+ ptr += size;
859
+ if (state_mask & kUpb_HavePayload) break; // Ignore dup.
860
+ state_mask |= kUpb_HavePayload;
861
+ if (state_mask & kUpb_HaveId) {
862
+ upb_Decoder_AddMessageSetItem(d, msg, layout, type_id, data, size);
863
+ } else {
864
+ // Out of order, we must preserve the payload.
865
+ preserved.data = data;
866
+ preserved.size = size;
867
+ }
868
+ break;
869
+ }
870
+ default:
871
+ // We do not preserve unexpected fields inside a message set item.
872
+ ptr = upb_Decoder_SkipField(d, ptr, tag);
873
+ break;
874
+ }
875
+ }
876
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_Malformed);
877
+ }
878
+
879
+ static const upb_MiniTableField* _upb_Decoder_FindField(upb_Decoder* d,
880
+ const upb_MiniTable* t,
881
+ uint32_t field_number,
882
+ int* last_field_index) {
883
+ static upb_MiniTableField none = {
884
+ 0, 0, 0, 0, kUpb_FakeFieldType_FieldNotFound, 0};
885
+ if (t == NULL) return &none;
886
+
887
+ size_t idx = ((size_t)field_number) - 1; // 0 wraps to SIZE_MAX
888
+ if (idx < t->dense_below) {
889
+ /* Fastest case: index into dense fields. */
890
+ goto found;
891
+ }
892
+
893
+ if (t->dense_below < t->field_count) {
894
+ /* Linear search non-dense fields. Resume scanning from last_field_index
895
+ * since fields are usually in order. */
896
+ size_t last = *last_field_index;
897
+ for (idx = last; idx < t->field_count; idx++) {
898
+ if (t->fields[idx].number == field_number) {
899
+ goto found;
900
+ }
901
+ }
902
+
903
+ for (idx = t->dense_below; idx < last; idx++) {
904
+ if (t->fields[idx].number == field_number) {
905
+ goto found;
906
+ }
907
+ }
908
+ }
909
+
910
+ if (d->extreg) {
911
+ switch (t->ext) {
912
+ case kUpb_ExtMode_Extendable: {
913
+ const upb_MiniTableExtension* ext =
914
+ upb_ExtensionRegistry_Lookup(d->extreg, t, field_number);
915
+ if (ext) return &ext->field;
916
+ break;
917
+ }
918
+ case kUpb_ExtMode_IsMessageSet:
919
+ if (field_number == kUpb_MsgSet_Item) {
920
+ static upb_MiniTableField item = {
921
+ 0, 0, 0, 0, kUpb_FakeFieldType_MessageSetItem, 0};
922
+ return &item;
923
+ }
924
+ break;
925
+ }
926
+ }
927
+
928
+ return &none; /* Unknown field. */
929
+
930
+ found:
931
+ UPB_ASSERT(t->fields[idx].number == field_number);
932
+ *last_field_index = idx;
933
+ return &t->fields[idx];
934
+ }
935
+
936
+ int _upb_Decoder_GetVarintOp(const upb_MiniTableField* field) {
937
+ static const int8_t kVarintOps[] = {
938
+ [kUpb_FakeFieldType_FieldNotFound] = kUpb_DecodeOp_UnknownField,
939
+ [kUpb_FieldType_Double] = kUpb_DecodeOp_UnknownField,
940
+ [kUpb_FieldType_Float] = kUpb_DecodeOp_UnknownField,
941
+ [kUpb_FieldType_Int64] = kUpb_DecodeOp_Scalar8Byte,
942
+ [kUpb_FieldType_UInt64] = kUpb_DecodeOp_Scalar8Byte,
943
+ [kUpb_FieldType_Int32] = kUpb_DecodeOp_Scalar4Byte,
944
+ [kUpb_FieldType_Fixed64] = kUpb_DecodeOp_UnknownField,
945
+ [kUpb_FieldType_Fixed32] = kUpb_DecodeOp_UnknownField,
946
+ [kUpb_FieldType_Bool] = kUpb_DecodeOp_Scalar1Byte,
947
+ [kUpb_FieldType_String] = kUpb_DecodeOp_UnknownField,
948
+ [kUpb_FieldType_Group] = kUpb_DecodeOp_UnknownField,
949
+ [kUpb_FieldType_Message] = kUpb_DecodeOp_UnknownField,
950
+ [kUpb_FieldType_Bytes] = kUpb_DecodeOp_UnknownField,
951
+ [kUpb_FieldType_UInt32] = kUpb_DecodeOp_Scalar4Byte,
952
+ [kUpb_FieldType_Enum] = kUpb_DecodeOp_Enum,
953
+ [kUpb_FieldType_SFixed32] = kUpb_DecodeOp_UnknownField,
954
+ [kUpb_FieldType_SFixed64] = kUpb_DecodeOp_UnknownField,
955
+ [kUpb_FieldType_SInt32] = kUpb_DecodeOp_Scalar4Byte,
956
+ [kUpb_FieldType_SInt64] = kUpb_DecodeOp_Scalar8Byte,
957
+ [kUpb_FakeFieldType_MessageSetItem] = kUpb_DecodeOp_UnknownField,
958
+ };
959
+
960
+ return kVarintOps[field->UPB_PRIVATE(descriptortype)];
961
+ }
962
+
963
+ UPB_FORCEINLINE
964
+ static void _upb_Decoder_CheckUnlinked(const upb_MiniTable* mt,
965
+ const upb_MiniTableField* field,
966
+ int* op) {
967
+ // If sub-message is not linked, treat as unknown.
968
+ if (field->mode & kUpb_LabelFlags_IsExtension) return;
969
+ const upb_MiniTableSub* sub = &mt->subs[field->UPB_PRIVATE(submsg_index)];
970
+ if (sub->submsg) return;
971
+ #ifndef NDEBUG
972
+ const upb_MiniTableField* oneof = upb_MiniTable_GetOneof(mt, field);
973
+ if (oneof) {
974
+ // All other members of the oneof must be message fields that are also
975
+ // unlinked.
976
+ do {
977
+ assert(upb_MiniTableField_CType(oneof) == kUpb_CType_Message);
978
+ const upb_MiniTableSub* oneof_sub =
979
+ &mt->subs[oneof->UPB_PRIVATE(submsg_index)];
980
+ assert(!oneof_sub);
981
+ } while (upb_MiniTable_NextOneofField(mt, &oneof));
982
+ }
983
+ #endif // NDEBUG
984
+ *op = kUpb_DecodeOp_UnknownField;
985
+ }
986
+
987
+ int _upb_Decoder_GetDelimitedOp(const upb_MiniTable* mt,
988
+ const upb_MiniTableField* field) {
989
+ enum { kRepeatedBase = 19 };
990
+
991
+ static const int8_t kDelimitedOps[] = {
992
+ /* For non-repeated field type. */
993
+ [kUpb_FakeFieldType_FieldNotFound] =
994
+ kUpb_DecodeOp_UnknownField, // Field not found.
995
+ [kUpb_FieldType_Double] = kUpb_DecodeOp_UnknownField,
996
+ [kUpb_FieldType_Float] = kUpb_DecodeOp_UnknownField,
997
+ [kUpb_FieldType_Int64] = kUpb_DecodeOp_UnknownField,
998
+ [kUpb_FieldType_UInt64] = kUpb_DecodeOp_UnknownField,
999
+ [kUpb_FieldType_Int32] = kUpb_DecodeOp_UnknownField,
1000
+ [kUpb_FieldType_Fixed64] = kUpb_DecodeOp_UnknownField,
1001
+ [kUpb_FieldType_Fixed32] = kUpb_DecodeOp_UnknownField,
1002
+ [kUpb_FieldType_Bool] = kUpb_DecodeOp_UnknownField,
1003
+ [kUpb_FieldType_String] = kUpb_DecodeOp_String,
1004
+ [kUpb_FieldType_Group] = kUpb_DecodeOp_UnknownField,
1005
+ [kUpb_FieldType_Message] = kUpb_DecodeOp_SubMessage,
1006
+ [kUpb_FieldType_Bytes] = kUpb_DecodeOp_Bytes,
1007
+ [kUpb_FieldType_UInt32] = kUpb_DecodeOp_UnknownField,
1008
+ [kUpb_FieldType_Enum] = kUpb_DecodeOp_UnknownField,
1009
+ [kUpb_FieldType_SFixed32] = kUpb_DecodeOp_UnknownField,
1010
+ [kUpb_FieldType_SFixed64] = kUpb_DecodeOp_UnknownField,
1011
+ [kUpb_FieldType_SInt32] = kUpb_DecodeOp_UnknownField,
1012
+ [kUpb_FieldType_SInt64] = kUpb_DecodeOp_UnknownField,
1013
+ [kUpb_FakeFieldType_MessageSetItem] = kUpb_DecodeOp_UnknownField,
1014
+ // For repeated field type. */
1015
+ [kRepeatedBase + kUpb_FieldType_Double] = OP_FIXPCK_LG2(3),
1016
+ [kRepeatedBase + kUpb_FieldType_Float] = OP_FIXPCK_LG2(2),
1017
+ [kRepeatedBase + kUpb_FieldType_Int64] = OP_VARPCK_LG2(3),
1018
+ [kRepeatedBase + kUpb_FieldType_UInt64] = OP_VARPCK_LG2(3),
1019
+ [kRepeatedBase + kUpb_FieldType_Int32] = OP_VARPCK_LG2(2),
1020
+ [kRepeatedBase + kUpb_FieldType_Fixed64] = OP_FIXPCK_LG2(3),
1021
+ [kRepeatedBase + kUpb_FieldType_Fixed32] = OP_FIXPCK_LG2(2),
1022
+ [kRepeatedBase + kUpb_FieldType_Bool] = OP_VARPCK_LG2(0),
1023
+ [kRepeatedBase + kUpb_FieldType_String] = kUpb_DecodeOp_String,
1024
+ [kRepeatedBase + kUpb_FieldType_Group] = kUpb_DecodeOp_SubMessage,
1025
+ [kRepeatedBase + kUpb_FieldType_Message] = kUpb_DecodeOp_SubMessage,
1026
+ [kRepeatedBase + kUpb_FieldType_Bytes] = kUpb_DecodeOp_Bytes,
1027
+ [kRepeatedBase + kUpb_FieldType_UInt32] = OP_VARPCK_LG2(2),
1028
+ [kRepeatedBase + kUpb_FieldType_Enum] = kUpb_DecodeOp_PackedEnum,
1029
+ [kRepeatedBase + kUpb_FieldType_SFixed32] = OP_FIXPCK_LG2(2),
1030
+ [kRepeatedBase + kUpb_FieldType_SFixed64] = OP_FIXPCK_LG2(3),
1031
+ [kRepeatedBase + kUpb_FieldType_SInt32] = OP_VARPCK_LG2(2),
1032
+ [kRepeatedBase + kUpb_FieldType_SInt64] = OP_VARPCK_LG2(3),
1033
+ // Omitting kUpb_FakeFieldType_MessageSetItem, because we never emit a
1034
+ // repeated msgset type
1035
+ };
1036
+
1037
+ int ndx = field->UPB_PRIVATE(descriptortype);
1038
+ if (upb_FieldMode_Get(field) == kUpb_FieldMode_Array) ndx += kRepeatedBase;
1039
+ int op = kDelimitedOps[ndx];
1040
+
1041
+ if (op == kUpb_DecodeOp_SubMessage) {
1042
+ _upb_Decoder_CheckUnlinked(mt, field, &op);
1043
+ }
1044
+
1045
+ return op;
1046
+ }
1047
+
1048
+ UPB_FORCEINLINE
1049
+ static const char* _upb_Decoder_DecodeWireValue(upb_Decoder* d, const char* ptr,
1050
+ const upb_MiniTable* mt,
1051
+ const upb_MiniTableField* field,
1052
+ int wire_type, wireval* val,
1053
+ int* op) {
1054
+ static const unsigned kFixed32OkMask = (1 << kUpb_FieldType_Float) |
1055
+ (1 << kUpb_FieldType_Fixed32) |
1056
+ (1 << kUpb_FieldType_SFixed32);
1057
+
1058
+ static const unsigned kFixed64OkMask = (1 << kUpb_FieldType_Double) |
1059
+ (1 << kUpb_FieldType_Fixed64) |
1060
+ (1 << kUpb_FieldType_SFixed64);
1061
+
1062
+ switch (wire_type) {
1063
+ case kUpb_WireType_Varint:
1064
+ ptr = _upb_Decoder_DecodeVarint(d, ptr, &val->uint64_val);
1065
+ *op = _upb_Decoder_GetVarintOp(field);
1066
+ _upb_Decoder_Munge(field->UPB_PRIVATE(descriptortype), val);
1067
+ return ptr;
1068
+ case kUpb_WireType_32Bit:
1069
+ *op = kUpb_DecodeOp_Scalar4Byte;
1070
+ if (((1 << field->UPB_PRIVATE(descriptortype)) & kFixed32OkMask) == 0) {
1071
+ *op = kUpb_DecodeOp_UnknownField;
1072
+ }
1073
+ return upb_WireReader_ReadFixed32(ptr, &val->uint32_val);
1074
+ case kUpb_WireType_64Bit:
1075
+ *op = kUpb_DecodeOp_Scalar8Byte;
1076
+ if (((1 << field->UPB_PRIVATE(descriptortype)) & kFixed64OkMask) == 0) {
1077
+ *op = kUpb_DecodeOp_UnknownField;
1078
+ }
1079
+ return upb_WireReader_ReadFixed64(ptr, &val->uint64_val);
1080
+ case kUpb_WireType_Delimited:
1081
+ ptr = upb_Decoder_DecodeSize(d, ptr, &val->size);
1082
+ *op = _upb_Decoder_GetDelimitedOp(mt, field);
1083
+ return ptr;
1084
+ case kUpb_WireType_StartGroup:
1085
+ val->uint32_val = field->number;
1086
+ if (field->UPB_PRIVATE(descriptortype) == kUpb_FieldType_Group) {
1087
+ *op = kUpb_DecodeOp_SubMessage;
1088
+ _upb_Decoder_CheckUnlinked(mt, field, op);
1089
+ } else if (field->UPB_PRIVATE(descriptortype) ==
1090
+ kUpb_FakeFieldType_MessageSetItem) {
1091
+ *op = kUpb_DecodeOp_MessageSetItem;
1092
+ } else {
1093
+ *op = kUpb_DecodeOp_UnknownField;
1094
+ }
1095
+ return ptr;
1096
+ default:
1097
+ break;
1098
+ }
1099
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_Malformed);
1100
+ }
1101
+
1102
+ UPB_FORCEINLINE
1103
+ static const char* _upb_Decoder_DecodeKnownField(
1104
+ upb_Decoder* d, const char* ptr, upb_Message* msg,
1105
+ const upb_MiniTable* layout, const upb_MiniTableField* field, int op,
1106
+ wireval* val) {
1107
+ const upb_MiniTableSub* subs = layout->subs;
1108
+ uint8_t mode = field->mode;
1109
+
1110
+ if (UPB_UNLIKELY(mode & kUpb_LabelFlags_IsExtension)) {
1111
+ const upb_MiniTableExtension* ext_layout =
1112
+ (const upb_MiniTableExtension*)field;
1113
+ upb_Message_Extension* ext =
1114
+ _upb_Message_GetOrCreateExtension(msg, ext_layout, &d->arena);
1115
+ if (UPB_UNLIKELY(!ext)) {
1116
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_OutOfMemory);
1117
+ }
1118
+ d->unknown_msg = msg;
1119
+ msg = &ext->data;
1120
+ subs = &ext->ext->sub;
1121
+ }
1122
+
1123
+ switch (mode & kUpb_FieldMode_Mask) {
1124
+ case kUpb_FieldMode_Array:
1125
+ return _upb_Decoder_DecodeToArray(d, ptr, msg, subs, field, val, op);
1126
+ case kUpb_FieldMode_Map:
1127
+ return _upb_Decoder_DecodeToMap(d, ptr, msg, subs, field, val);
1128
+ case kUpb_FieldMode_Scalar:
1129
+ return _upb_Decoder_DecodeToSubMessage(d, ptr, msg, subs, field, val, op);
1130
+ default:
1131
+ UPB_UNREACHABLE();
1132
+ }
1133
+ }
1134
+
1135
+ static const char* _upb_Decoder_ReverseSkipVarint(const char* ptr,
1136
+ uint32_t val) {
1137
+ uint32_t seen = 0;
1138
+ do {
1139
+ ptr--;
1140
+ seen <<= 7;
1141
+ seen |= *ptr & 0x7f;
1142
+ } while (seen != val);
1143
+ return ptr;
1144
+ }
1145
+
1146
+ static const char* _upb_Decoder_DecodeUnknownField(upb_Decoder* d,
1147
+ const char* ptr,
1148
+ upb_Message* msg,
1149
+ int field_number,
1150
+ int wire_type, wireval val) {
1151
+ if (field_number == 0) _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_Malformed);
1152
+
1153
+ // Since unknown fields are the uncommon case, we do a little extra work here
1154
+ // to walk backwards through the buffer to find the field start. This frees
1155
+ // up a register in the fast paths (when the field is known), which leads to
1156
+ // significant speedups in benchmarks.
1157
+ const char* start = ptr;
1158
+
1159
+ if (wire_type == kUpb_WireType_Delimited) ptr += val.size;
1160
+ if (msg) {
1161
+ switch (wire_type) {
1162
+ case kUpb_WireType_Varint:
1163
+ case kUpb_WireType_Delimited:
1164
+ start--;
1165
+ while (start[-1] & 0x80) start--;
1166
+ break;
1167
+ case kUpb_WireType_32Bit:
1168
+ start -= 4;
1169
+ break;
1170
+ case kUpb_WireType_64Bit:
1171
+ start -= 8;
1172
+ break;
1173
+ default:
1174
+ break;
1175
+ }
1176
+
1177
+ assert(start == d->debug_valstart);
1178
+ uint32_t tag = ((uint32_t)field_number << 3) | wire_type;
1179
+ start = _upb_Decoder_ReverseSkipVarint(start, tag);
1180
+ assert(start == d->debug_tagstart);
1181
+
1182
+ if (wire_type == kUpb_WireType_StartGroup) {
1183
+ d->unknown = start;
1184
+ d->unknown_msg = msg;
1185
+ ptr = _upb_Decoder_DecodeUnknownGroup(d, ptr, field_number);
1186
+ start = d->unknown;
1187
+ d->unknown = NULL;
1188
+ }
1189
+ if (!_upb_Message_AddUnknown(msg, start, ptr - start, &d->arena)) {
1190
+ _upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_OutOfMemory);
1191
+ }
1192
+ } else if (wire_type == kUpb_WireType_StartGroup) {
1193
+ ptr = _upb_Decoder_DecodeUnknownGroup(d, ptr, field_number);
1194
+ }
1195
+ return ptr;
1196
+ }
1197
+
1198
+ UPB_NOINLINE
1199
+ static const char* _upb_Decoder_DecodeMessage(upb_Decoder* d, const char* ptr,
1200
+ upb_Message* msg,
1201
+ const upb_MiniTable* layout) {
1202
+ int last_field_index = 0;
1203
+
1204
+ #if UPB_FASTTABLE
1205
+ // The first time we want to skip fast dispatch, because we may have just been
1206
+ // invoked by the fast parser to handle a case that it bailed on.
1207
+ if (!_upb_Decoder_IsDone(d, &ptr)) goto nofast;
1208
+ #endif
1209
+
1210
+ while (!_upb_Decoder_IsDone(d, &ptr)) {
1211
+ uint32_t tag;
1212
+ const upb_MiniTableField* field;
1213
+ int field_number;
1214
+ int wire_type;
1215
+ wireval val;
1216
+ int op;
1217
+
1218
+ if (_upb_Decoder_TryFastDispatch(d, &ptr, msg, layout)) break;
1219
+
1220
+ #if UPB_FASTTABLE
1221
+ nofast:
1222
+ #endif
1223
+
1224
+ #ifndef NDEBUG
1225
+ d->debug_tagstart = ptr;
1226
+ #endif
1227
+
1228
+ UPB_ASSERT(ptr < d->input.limit_ptr);
1229
+ ptr = _upb_Decoder_DecodeTag(d, ptr, &tag);
1230
+ field_number = tag >> 3;
1231
+ wire_type = tag & 7;
1232
+
1233
+ #ifndef NDEBUG
1234
+ d->debug_valstart = ptr;
1235
+ #endif
1236
+
1237
+ if (wire_type == kUpb_WireType_EndGroup) {
1238
+ d->end_group = field_number;
1239
+ return ptr;
1240
+ }
1241
+
1242
+ field = _upb_Decoder_FindField(d, layout, field_number, &last_field_index);
1243
+ ptr = _upb_Decoder_DecodeWireValue(d, ptr, layout, field, wire_type, &val,
1244
+ &op);
1245
+
1246
+ if (op >= 0) {
1247
+ ptr = _upb_Decoder_DecodeKnownField(d, ptr, msg, layout, field, op, &val);
1248
+ } else {
1249
+ switch (op) {
1250
+ case kUpb_DecodeOp_UnknownField:
1251
+ ptr = _upb_Decoder_DecodeUnknownField(d, ptr, msg, field_number,
1252
+ wire_type, val);
1253
+ break;
1254
+ case kUpb_DecodeOp_MessageSetItem:
1255
+ ptr = upb_Decoder_DecodeMessageSetItem(d, ptr, msg, layout);
1256
+ break;
1257
+ }
1258
+ }
1259
+ }
1260
+
1261
+ return UPB_UNLIKELY(layout && layout->required_count)
1262
+ ? _upb_Decoder_CheckRequired(d, ptr, msg, layout)
1263
+ : ptr;
1264
+ }
1265
+
1266
+ const char* _upb_FastDecoder_DecodeGeneric(struct upb_Decoder* d,
1267
+ const char* ptr, upb_Message* msg,
1268
+ intptr_t table, uint64_t hasbits,
1269
+ uint64_t data) {
1270
+ (void)data;
1271
+ *(uint32_t*)msg |= hasbits;
1272
+ return _upb_Decoder_DecodeMessage(d, ptr, msg, decode_totablep(table));
1273
+ }
1274
+
1275
+ static upb_DecodeStatus _upb_Decoder_DecodeTop(struct upb_Decoder* d,
1276
+ const char* buf, void* msg,
1277
+ const upb_MiniTable* l) {
1278
+ if (!_upb_Decoder_TryFastDispatch(d, &buf, msg, l)) {
1279
+ _upb_Decoder_DecodeMessage(d, buf, msg, l);
1280
+ }
1281
+ if (d->end_group != DECODE_NOGROUP) return kUpb_DecodeStatus_Malformed;
1282
+ if (d->missing_required) return kUpb_DecodeStatus_MissingRequired;
1283
+ return kUpb_DecodeStatus_Ok;
1284
+ }
1285
+
1286
+ UPB_NOINLINE
1287
+ const char* _upb_Decoder_IsDoneFallback(upb_EpsCopyInputStream* e,
1288
+ const char* ptr, int overrun) {
1289
+ return _upb_EpsCopyInputStream_IsDoneFallbackInline(
1290
+ e, ptr, overrun, _upb_Decoder_BufferFlipCallback);
1291
+ }
1292
+
1293
+ static upb_DecodeStatus upb_Decoder_Decode(upb_Decoder* const decoder,
1294
+ const char* const buf,
1295
+ void* const msg,
1296
+ const upb_MiniTable* const l,
1297
+ upb_Arena* const arena) {
1298
+ if (UPB_SETJMP(decoder->err) == 0) {
1299
+ decoder->status = _upb_Decoder_DecodeTop(decoder, buf, msg, l);
1300
+ } else {
1301
+ UPB_ASSERT(decoder->status != kUpb_DecodeStatus_Ok);
1302
+ }
1303
+
1304
+ _upb_MemBlock* blocks =
1305
+ upb_Atomic_Load(&decoder->arena.blocks, memory_order_relaxed);
1306
+ arena->head = decoder->arena.head;
1307
+ upb_Atomic_Store(&arena->blocks, blocks, memory_order_relaxed);
1308
+ return decoder->status;
1309
+ }
1310
+
1311
+ upb_DecodeStatus upb_Decode(const char* buf, size_t size, void* msg,
1312
+ const upb_MiniTable* l,
1313
+ const upb_ExtensionRegistry* extreg, int options,
1314
+ upb_Arena* arena) {
1315
+ upb_Decoder decoder;
1316
+ unsigned depth = (unsigned)options >> 16;
1317
+
1318
+ upb_EpsCopyInputStream_Init(&decoder.input, &buf, size,
1319
+ options & kUpb_DecodeOption_AliasString);
1320
+
1321
+ decoder.extreg = extreg;
1322
+ decoder.unknown = NULL;
1323
+ decoder.depth = depth ? depth : kUpb_WireFormat_DefaultDepthLimit;
1324
+ decoder.end_group = DECODE_NOGROUP;
1325
+ decoder.options = (uint16_t)options;
1326
+ decoder.missing_required = false;
1327
+ decoder.status = kUpb_DecodeStatus_Ok;
1328
+
1329
+ // Violating the encapsulation of the arena for performance reasons.
1330
+ // This is a temporary arena that we swap into and swap out of when we are
1331
+ // done. The temporary arena only needs to be able to handle allocation,
1332
+ // not fuse or free, so it does not need many of the members to be initialized
1333
+ // (particularly parent_or_count).
1334
+ _upb_MemBlock* blocks = upb_Atomic_Load(&arena->blocks, memory_order_relaxed);
1335
+ decoder.arena.head = arena->head;
1336
+ decoder.arena.block_alloc = arena->block_alloc;
1337
+ upb_Atomic_Init(&decoder.arena.blocks, blocks);
1338
+
1339
+ return upb_Decoder_Decode(&decoder, buf, msg, l, arena);
1340
+ }
1341
+
1342
+ #undef OP_FIXPCK_LG2
1343
+ #undef OP_VARPCK_LG2