rbac_filter.h
Go to the documentation of this file.
1 //
2 // Copyright 2021 gRPC authors.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 #ifndef GRPC_CORE_EXT_FILTERS_RBAC_RBAC_FILTER_H
18 #define GRPC_CORE_EXT_FILTERS_RBAC_RBAC_FILTER_H
19 
21 
22 #include <stddef.h>
23 
32 
33 namespace grpc_core {
34 
35 // Filter used when xDS server config fetcher provides a configuration with an
36 // HTTP RBAC filter. Also serves as the type for channel data for the filter.
37 class RbacFilter {
38  public:
39  // This channel filter is intended to be used by connections on xDS enabled
40  // servers configured with RBAC. The RBAC filter fetches the RBAC policy from
41  // the method config of service config returned by the ServerConfigSelector,
42  // and enforces the RBAC policy.
44 
45  private:
46  class CallData {
47  public:
50  static void Destroy(grpc_call_element* elem,
51  const grpc_call_final_info* /* final_info */,
52  grpc_closure* /* then_schedule_closure */);
55 
56  private:
58  static void RecvInitialMetadataReady(void* user_data,
60 
62  // State for keeping track of recv_initial_metadata
66  };
67 
68  RbacFilter(size_t index,
69  EvaluateArgs::PerChannelArgs per_channel_evaluate_args);
72  static void Destroy(grpc_channel_element* elem);
73 
74  // The index of this filter instance among instances of the same filter.
75  size_t index_;
76  // Assigned index for service config data from the parser.
78  // Per channel args used for authorization.
80 };
81 
82 } // namespace grpc_core
83 
84 #endif // GRPC_CORE_EXT_FILTERS_RBAC_RBAC_FILTER_H
grpc_core::RbacFilter::Init
static grpc_error_handle Init(grpc_channel_element *elem, grpc_channel_element_args *args)
Definition: rbac_filter.cc:144
metadata_batch.h
channel_fwd.h
grpc_core::RbacFilter::CallData::Init
static grpc_error_handle Init(grpc_call_element *elem, const grpc_call_element_args *args)
Definition: rbac_filter.cc:45
grpc_core::RbacFilter::CallData::recv_initial_metadata_
grpc_metadata_batch * recv_initial_metadata_
Definition: rbac_filter.h:63
grpc_core
Definition: call_metric_recorder.h:31
grpc_core::RbacFilter::per_channel_evaluate_args_
EvaluateArgs::PerChannelArgs per_channel_evaluate_args_
Definition: rbac_filter.h:79
grpc_channel_element
Definition: channel_stack.h:186
elem
Timer elem
Definition: event_engine/iomgr_event_engine/timer_heap_test.cc:109
error
grpc_error_handle error
Definition: retry_filter.cc:499
grpc_core::RbacFilter::Destroy
static void Destroy(grpc_channel_element *elem)
Definition: rbac_filter.cc:165
closure.h
grpc_core::RbacFilter::CallData::recv_initial_metadata_ready_
grpc_closure recv_initial_metadata_ready_
Definition: rbac_filter.h:65
grpc_core::RbacFilter::index_
size_t index_
Definition: rbac_filter.h:75
grpc_core::RbacFilter::CallData::Destroy
static void Destroy(grpc_call_element *elem, const grpc_call_final_info *, grpc_closure *)
Definition: rbac_filter.cc:51
grpc_call_element
Definition: channel_stack.h:194
evaluate_args.h
context.h
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
channel_stack.h
grpc_core::RbacFilter::CallData::RecvInitialMetadataReady
static void RecvInitialMetadataReady(void *user_data, grpc_error_handle error)
Definition: rbac_filter.cc:80
error.h
grpc_call_element_args
Definition: channel_stack.h:80
grpc_channel_filter
Definition: channel_stack.h:111
grpc_core::RbacFilter::RbacFilter
RbacFilter(size_t index, EvaluateArgs::PerChannelArgs per_channel_evaluate_args)
Definition: rbac_filter.cc:138
grpc_core::RbacFilter::CallData::CallData
CallData(grpc_call_element *elem, const grpc_call_element_args &args)
Definition: rbac_filter.cc:73
index
int index
Definition: bloaty/third_party/protobuf/php/ext/google/protobuf/protobuf.h:1184
grpc_core::EvaluateArgs::PerChannelArgs
Definition: evaluate_args.h:38
grpc_call_context_element
Definition: core/lib/channel/context.h:51
grpc_core::RbacFilter::CallData::call_context_
grpc_call_context_element * call_context_
Definition: rbac_filter.h:61
transport.h
grpc_core::RbacFilter::CallData
Definition: rbac_filter.h:46
grpc_channel_element_args
Definition: channel_stack.h:74
grpc_call_final_info
Definition: channel_stack.h:95
grpc_core::RbacFilter::CallData::StartTransportStreamOpBatch
static void StartTransportStreamOpBatch(grpc_call_element *elem, grpc_transport_stream_op_batch *op)
Definition: rbac_filter.cc:58
grpc_error
Definition: error_internal.h:42
grpc_metadata_batch
Definition: metadata_batch.h:1259
grpc_transport_stream_op_batch
Definition: transport.h:284
grpc_closure
Definition: closure.h:56
op
static grpc_op * op
Definition: test/core/fling/client.cc:47
grpc_core::RbacFilter
Definition: rbac_filter.h:37
grpc_core::RbacFilter::service_config_parser_index_
const size_t service_config_parser_index_
Definition: rbac_filter.h:77
grpc_core::RbacFilter::CallData::original_recv_initial_metadata_ready_
grpc_closure * original_recv_initial_metadata_ready_
Definition: rbac_filter.h:64
grpc_core::RbacFilter::kFilterVtable
static const grpc_channel_filter kFilterVtable
Definition: rbac_filter.h:43
port_platform.h


grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:59