-
Notifications
You must be signed in to change notification settings - Fork 62
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ads: support envoy filter local ratelimit.
Signed-off-by: yuan <[email protected]>
- Loading branch information
1 parent
53caaa8
commit 854c4f6
Showing
13 changed files
with
948 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
syntax = "proto3"; | ||
|
||
package filter; | ||
option go_package = "kmesh.net/kmesh/api/filter;filter"; | ||
|
||
/* | ||
TokenBucket defines parameters for a token bucket rate limiter. | ||
https://www.envoyproxy.io/docs/envoy/latest/api-v3/type/v3/token_bucket.proto#envoy-v3-api-msg-type-v3-tokenbucket | ||
{ | ||
"max_tokens": ..., | ||
"tokens_per_fill": {...}, | ||
"fill_interval": {...} | ||
} | ||
*/ | ||
message TokenBucket { | ||
// The maximum number of tokens in the bucket. | ||
int64 max_tokens = 1; | ||
|
||
// The number of tokens added to the bucket during each fill interval. | ||
int64 tokens_per_fill = 2; | ||
|
||
// The interval at which the bucket is refilled in nanoseconds. | ||
int64 fill_interval = 3; | ||
} | ||
|
||
|
||
/* | ||
LocalRateLimit defines parameters for local rate limiting. | ||
https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/local_ratelimit/v3/local_rate_limit.proto#envoy-v3-api-msg-extensions-filters-http-local-ratelimit-v3-localratelimit | ||
{ | ||
"token_bucket": {...}, | ||
} | ||
*/ | ||
message LocalRateLimit { | ||
// The token bucket configuration for the rate limiter. | ||
TokenBucket token_bucket = 1; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,201 @@ | ||
/* Generated by the protocol buffer compiler. DO NOT EDIT! */ | ||
/* Generated from: api/filter/ratelimit.proto */ | ||
|
||
/* Do not generate deprecated warnings for self */ | ||
#ifndef PROTOBUF_C__NO_DEPRECATED | ||
#define PROTOBUF_C__NO_DEPRECATED | ||
#endif | ||
|
||
#include "filter/ratelimit.pb-c.h" | ||
void filter__token_bucket__init | ||
(Filter__TokenBucket *message) | ||
{ | ||
static const Filter__TokenBucket init_value = FILTER__TOKEN_BUCKET__INIT; | ||
*message = init_value; | ||
} | ||
size_t filter__token_bucket__get_packed_size | ||
(const Filter__TokenBucket *message) | ||
{ | ||
assert(message->base.descriptor == &filter__token_bucket__descriptor); | ||
return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); | ||
} | ||
size_t filter__token_bucket__pack | ||
(const Filter__TokenBucket *message, | ||
uint8_t *out) | ||
{ | ||
assert(message->base.descriptor == &filter__token_bucket__descriptor); | ||
return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); | ||
} | ||
size_t filter__token_bucket__pack_to_buffer | ||
(const Filter__TokenBucket *message, | ||
ProtobufCBuffer *buffer) | ||
{ | ||
assert(message->base.descriptor == &filter__token_bucket__descriptor); | ||
return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); | ||
} | ||
Filter__TokenBucket * | ||
filter__token_bucket__unpack | ||
(ProtobufCAllocator *allocator, | ||
size_t len, | ||
const uint8_t *data) | ||
{ | ||
return (Filter__TokenBucket *) | ||
protobuf_c_message_unpack (&filter__token_bucket__descriptor, | ||
allocator, len, data); | ||
} | ||
void filter__token_bucket__free_unpacked | ||
(Filter__TokenBucket *message, | ||
ProtobufCAllocator *allocator) | ||
{ | ||
if(!message) | ||
return; | ||
assert(message->base.descriptor == &filter__token_bucket__descriptor); | ||
protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); | ||
} | ||
void filter__local_rate_limit__init | ||
(Filter__LocalRateLimit *message) | ||
{ | ||
static const Filter__LocalRateLimit init_value = FILTER__LOCAL_RATE_LIMIT__INIT; | ||
*message = init_value; | ||
} | ||
size_t filter__local_rate_limit__get_packed_size | ||
(const Filter__LocalRateLimit *message) | ||
{ | ||
assert(message->base.descriptor == &filter__local_rate_limit__descriptor); | ||
return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); | ||
} | ||
size_t filter__local_rate_limit__pack | ||
(const Filter__LocalRateLimit *message, | ||
uint8_t *out) | ||
{ | ||
assert(message->base.descriptor == &filter__local_rate_limit__descriptor); | ||
return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); | ||
} | ||
size_t filter__local_rate_limit__pack_to_buffer | ||
(const Filter__LocalRateLimit *message, | ||
ProtobufCBuffer *buffer) | ||
{ | ||
assert(message->base.descriptor == &filter__local_rate_limit__descriptor); | ||
return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); | ||
} | ||
Filter__LocalRateLimit * | ||
filter__local_rate_limit__unpack | ||
(ProtobufCAllocator *allocator, | ||
size_t len, | ||
const uint8_t *data) | ||
{ | ||
return (Filter__LocalRateLimit *) | ||
protobuf_c_message_unpack (&filter__local_rate_limit__descriptor, | ||
allocator, len, data); | ||
} | ||
void filter__local_rate_limit__free_unpacked | ||
(Filter__LocalRateLimit *message, | ||
ProtobufCAllocator *allocator) | ||
{ | ||
if(!message) | ||
return; | ||
assert(message->base.descriptor == &filter__local_rate_limit__descriptor); | ||
protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); | ||
} | ||
static const ProtobufCFieldDescriptor filter__token_bucket__field_descriptors[3] = | ||
{ | ||
{ | ||
"max_tokens", | ||
1, | ||
PROTOBUF_C_LABEL_NONE, | ||
PROTOBUF_C_TYPE_INT64, | ||
0, /* quantifier_offset */ | ||
offsetof(Filter__TokenBucket, max_tokens), | ||
NULL, | ||
NULL, | ||
0, /* flags */ | ||
0,NULL,NULL /* reserved1,reserved2, etc */ | ||
}, | ||
{ | ||
"tokens_per_fill", | ||
2, | ||
PROTOBUF_C_LABEL_NONE, | ||
PROTOBUF_C_TYPE_INT64, | ||
0, /* quantifier_offset */ | ||
offsetof(Filter__TokenBucket, tokens_per_fill), | ||
NULL, | ||
NULL, | ||
0, /* flags */ | ||
0,NULL,NULL /* reserved1,reserved2, etc */ | ||
}, | ||
{ | ||
"fill_interval", | ||
3, | ||
PROTOBUF_C_LABEL_NONE, | ||
PROTOBUF_C_TYPE_INT64, | ||
0, /* quantifier_offset */ | ||
offsetof(Filter__TokenBucket, fill_interval), | ||
NULL, | ||
NULL, | ||
0, /* flags */ | ||
0,NULL,NULL /* reserved1,reserved2, etc */ | ||
}, | ||
}; | ||
static const unsigned filter__token_bucket__field_indices_by_name[] = { | ||
2, /* field[2] = fill_interval */ | ||
0, /* field[0] = max_tokens */ | ||
1, /* field[1] = tokens_per_fill */ | ||
}; | ||
static const ProtobufCIntRange filter__token_bucket__number_ranges[1 + 1] = | ||
{ | ||
{ 1, 0 }, | ||
{ 0, 3 } | ||
}; | ||
const ProtobufCMessageDescriptor filter__token_bucket__descriptor = | ||
{ | ||
PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, | ||
"filter.TokenBucket", | ||
"TokenBucket", | ||
"Filter__TokenBucket", | ||
"filter", | ||
sizeof(Filter__TokenBucket), | ||
3, | ||
filter__token_bucket__field_descriptors, | ||
filter__token_bucket__field_indices_by_name, | ||
1, filter__token_bucket__number_ranges, | ||
(ProtobufCMessageInit) filter__token_bucket__init, | ||
NULL,NULL,NULL /* reserved[123] */ | ||
}; | ||
static const ProtobufCFieldDescriptor filter__local_rate_limit__field_descriptors[1] = | ||
{ | ||
{ | ||
"token_bucket", | ||
1, | ||
PROTOBUF_C_LABEL_NONE, | ||
PROTOBUF_C_TYPE_MESSAGE, | ||
0, /* quantifier_offset */ | ||
offsetof(Filter__LocalRateLimit, token_bucket), | ||
&filter__token_bucket__descriptor, | ||
NULL, | ||
0, /* flags */ | ||
0,NULL,NULL /* reserved1,reserved2, etc */ | ||
}, | ||
}; | ||
static const unsigned filter__local_rate_limit__field_indices_by_name[] = { | ||
0, /* field[0] = token_bucket */ | ||
}; | ||
static const ProtobufCIntRange filter__local_rate_limit__number_ranges[1 + 1] = | ||
{ | ||
{ 1, 0 }, | ||
{ 0, 1 } | ||
}; | ||
const ProtobufCMessageDescriptor filter__local_rate_limit__descriptor = | ||
{ | ||
PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, | ||
"filter.LocalRateLimit", | ||
"LocalRateLimit", | ||
"Filter__LocalRateLimit", | ||
"filter", | ||
sizeof(Filter__LocalRateLimit), | ||
1, | ||
filter__local_rate_limit__field_descriptors, | ||
filter__local_rate_limit__field_indices_by_name, | ||
1, filter__local_rate_limit__number_ranges, | ||
(ProtobufCMessageInit) filter__local_rate_limit__init, | ||
NULL,NULL,NULL /* reserved[123] */ | ||
}; |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Oops, something went wrong.