Expose interface luid and compartment id to sock_ops and sock_addr hooks (#1222)
* Add interface luid to bpf_sock_addr and bpf_sock_ops And also add compartment id to bpf_sock_ops for consistency with bpf_sock_addr, so that it is available to eBPF programs. Signed-off-by: Dave Thaler <dthaler@microsoft.com> * Expose interface luid and compartment id to sock_ops and sock_addr hooks * compartment_id was exposed to sock_addr but not sock_ops * interface_luid was not exposed to either Exposing the interface_luid should be a performant way to compensate for lack of scope_id in the hooks, since the interface luid is available in the WFP callout, and is more specific than a scope id (so a scope id can always be looked up from the interface luid in the future if needed). Fixes #1129 Signed-off-by: Dave Thaler <dthaler@microsoft.com> * Update expected bpf2c output Signed-off-by: Dave Thaler <dthaler@microsoft.com>
This commit is contained in:
Родитель
7cd7a05e16
Коммит
90eee8717e
|
@ -148,6 +148,7 @@ typedef struct bpf_sock_addr
|
|||
};
|
||||
uint32_t protocol; ///< IP protocol.
|
||||
uint32_t compartment_id; ///< Network compartment Id.
|
||||
uint64_t interface_luid; ///< Interface LUID.
|
||||
} bpf_sock_addr_t;
|
||||
|
||||
/**
|
||||
|
@ -203,6 +204,8 @@ typedef struct _bpf_sock_ops
|
|||
uint32_t remote_port;
|
||||
}; ///< Remote IP address and port stored in network byte order.
|
||||
uint8_t protocol; ///< IP protocol.
|
||||
uint32_t compartment_id; ///< Network compartment Id.
|
||||
uint64_t interface_luid; ///< Interface LUID.
|
||||
} bpf_sock_ops_t;
|
||||
|
||||
/**
|
||||
|
|
|
@ -63,6 +63,7 @@ typedef struct _wfp_ale_layer_fields
|
|||
uint16_t protocol_field;
|
||||
uint32_t direction_field;
|
||||
uint16_t compartment_id_field;
|
||||
uint16_t interface_luid_field;
|
||||
} wfp_ale_layer_fields_t;
|
||||
|
||||
typedef struct _net_ebpf_extension_wfp_filter_parameters
|
||||
|
|
|
@ -251,7 +251,8 @@ wfp_ale_layer_fields_t wfp_connection_fields[] = {
|
|||
FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_REMOTE_PORT,
|
||||
FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_PROTOCOL,
|
||||
0, // No direction field in this layer.
|
||||
FWPS_FIELD_ALE_AUTH_CONNECT_V4_COMPARTMENT_ID},
|
||||
FWPS_FIELD_ALE_AUTH_CONNECT_V4_COMPARTMENT_ID,
|
||||
FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_LOCAL_INTERFACE},
|
||||
|
||||
// EBPF_HOOK_ALE_AUTH_CONNECT_V6
|
||||
{FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_LOCAL_ADDRESS,
|
||||
|
@ -260,7 +261,8 @@ wfp_ale_layer_fields_t wfp_connection_fields[] = {
|
|||
FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_REMOTE_PORT,
|
||||
FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_PROTOCOL,
|
||||
0, // No direction field in this layer.
|
||||
FWPS_FIELD_ALE_AUTH_CONNECT_V6_COMPARTMENT_ID},
|
||||
FWPS_FIELD_ALE_AUTH_CONNECT_V6_COMPARTMENT_ID,
|
||||
FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_LOCAL_INTERFACE},
|
||||
|
||||
// EBPF_HOOK_ALE_AUTH_RECV_ACCEPT_V4
|
||||
{FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_LOCAL_ADDRESS,
|
||||
|
@ -269,7 +271,8 @@ wfp_ale_layer_fields_t wfp_connection_fields[] = {
|
|||
FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_REMOTE_PORT,
|
||||
FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_PROTOCOL,
|
||||
0, // No direction field in this layer.
|
||||
FWPS_FIELD_ALE_AUTH_CONNECT_V4_COMPARTMENT_ID},
|
||||
FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_COMPARTMENT_ID,
|
||||
FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_LOCAL_INTERFACE},
|
||||
|
||||
// EBPF_HOOK_ALE_AUTH_RECV_ACCEPT_V6
|
||||
{FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_LOCAL_ADDRESS,
|
||||
|
@ -278,7 +281,8 @@ wfp_ale_layer_fields_t wfp_connection_fields[] = {
|
|||
FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_REMOTE_PORT,
|
||||
FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_PROTOCOL,
|
||||
0, // No direction field in this layer.
|
||||
FWPS_FIELD_ALE_AUTH_CONNECT_V6_COMPARTMENT_ID}};
|
||||
FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_COMPARTMENT_ID,
|
||||
FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_LOCAL_INTERFACE}};
|
||||
|
||||
static void
|
||||
_net_ebpf_extension_sock_addr_copy_wfp_connection_fields(
|
||||
|
@ -321,6 +325,7 @@ _net_ebpf_extension_sock_addr_copy_wfp_connection_fields(
|
|||
sock_addr_ctx->user_port = htons(incoming_values[destination_port_field].value.uint16);
|
||||
sock_addr_ctx->protocol = incoming_values[fields->protocol_field].value.uint8;
|
||||
sock_addr_ctx->compartment_id = incoming_values[fields->compartment_id_field].value.uint32;
|
||||
sock_addr_ctx->interface_luid = *incoming_values[fields->interface_luid_field].value.uint64;
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -290,7 +290,8 @@ wfp_ale_layer_fields_t wfp_flow_established_fields[] = {
|
|||
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_REMOTE_PORT,
|
||||
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL,
|
||||
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_DIRECTION,
|
||||
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_COMPARTMENT_ID},
|
||||
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_COMPARTMENT_ID,
|
||||
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_LOCAL_INTERFACE},
|
||||
// EBPF_HOOK_ALE_FLOW_ESTABLISHED_V6
|
||||
{FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_LOCAL_ADDRESS,
|
||||
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_LOCAL_PORT,
|
||||
|
@ -298,13 +299,12 @@ wfp_ale_layer_fields_t wfp_flow_established_fields[] = {
|
|||
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_REMOTE_PORT,
|
||||
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_PROTOCOL,
|
||||
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_DIRECTION,
|
||||
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_COMPARTMENT_ID}};
|
||||
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_COMPARTMENT_ID,
|
||||
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_LOCAL_INTERFACE}};
|
||||
|
||||
static void
|
||||
_net_ebpf_extension_sock_ops_copy_wfp_connection_fields(
|
||||
_In_ const FWPS_INCOMING_VALUES* incoming_fixed_values,
|
||||
_Out_ bpf_sock_ops_t* sock_ops_context,
|
||||
_Out_ uint32_t* compartment_id)
|
||||
_In_ const FWPS_INCOMING_VALUES* incoming_fixed_values, _Out_ bpf_sock_ops_t* sock_ops_context)
|
||||
{
|
||||
uint16_t wfp_layer_id = incoming_fixed_values->layerId;
|
||||
net_ebpf_extension_hook_id_t hook_id = net_ebpf_extension_get_hook_id_from_wfp_layer_id(wfp_layer_id);
|
||||
|
@ -335,7 +335,8 @@ _net_ebpf_extension_sock_ops_copy_wfp_connection_fields(
|
|||
sock_ops_context->local_port = htons(incoming_values[fields->local_port_field].value.uint16);
|
||||
sock_ops_context->remote_port = htons(incoming_values[fields->remote_port_field].value.uint16);
|
||||
sock_ops_context->protocol = incoming_values[fields->protocol_field].value.uint8;
|
||||
*compartment_id = incoming_values[fields->compartment_id_field].value.uint32;
|
||||
sock_ops_context->compartment_id = incoming_values[fields->compartment_id_field].value.uint32;
|
||||
sock_ops_context->interface_luid = *incoming_values[fields->interface_luid_field].value.uint64;
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -360,7 +361,6 @@ net_ebpf_extension_sock_ops_flow_established_classify(
|
|||
net_ebpf_extension_sock_ops_wfp_flow_context_t* local_flow_context = NULL;
|
||||
bpf_sock_ops_t* sock_ops_context = NULL;
|
||||
uint32_t client_compartment_id = UNSPECIFIED_COMPARTMENT_ID;
|
||||
uint32_t compartment_id = UNSPECIFIED_COMPARTMENT_ID;
|
||||
net_ebpf_extension_hook_id_t hook_id =
|
||||
net_ebpf_extension_get_hook_id_from_wfp_layer_id(incoming_fixed_values->layerId);
|
||||
KIRQL irql;
|
||||
|
@ -396,11 +396,14 @@ net_ebpf_extension_sock_ops_flow_established_classify(
|
|||
local_flow_context->filter_context = filter_context;
|
||||
|
||||
sock_ops_context = &local_flow_context->context;
|
||||
_net_ebpf_extension_sock_ops_copy_wfp_connection_fields(incoming_fixed_values, sock_ops_context, &compartment_id);
|
||||
_net_ebpf_extension_sock_ops_copy_wfp_connection_fields(incoming_fixed_values, sock_ops_context);
|
||||
|
||||
client_compartment_id = filter_context->compartment_id;
|
||||
ASSERT((client_compartment_id == UNSPECIFIED_COMPARTMENT_ID) || (client_compartment_id == compartment_id));
|
||||
if (client_compartment_id != UNSPECIFIED_COMPARTMENT_ID && client_compartment_id != compartment_id) {
|
||||
ASSERT(
|
||||
(client_compartment_id == UNSPECIFIED_COMPARTMENT_ID) ||
|
||||
(client_compartment_id == sock_ops_context->compartment_id));
|
||||
if (client_compartment_id != UNSPECIFIED_COMPARTMENT_ID &&
|
||||
client_compartment_id != sock_ops_context->compartment_id) {
|
||||
// The client is not interested in this compartment Id.
|
||||
goto Exit;
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ static map_entry_t _maps[] = {
|
|||
{NULL,
|
||||
{
|
||||
BPF_MAP_TYPE_HASH, // Type of map.
|
||||
44, // Size in bytes of a map key.
|
||||
56, // Size in bytes of a map key.
|
||||
4, // Size in bytes of a map value.
|
||||
1, // Maximum number of entries allowed in the map.
|
||||
0, // Inner map index.
|
||||
|
@ -67,7 +67,7 @@ static map_entry_t _maps[] = {
|
|||
{NULL,
|
||||
{
|
||||
BPF_MAP_TYPE_HASH, // Type of map.
|
||||
44, // Size in bytes of a map key.
|
||||
56, // Size in bytes of a map key.
|
||||
4, // Size in bytes of a map value.
|
||||
1, // Maximum number of entries allowed in the map.
|
||||
0, // Inner map index.
|
||||
|
@ -101,129 +101,126 @@ static uint16_t authorize_connect4_maps[] = {
|
|||
#pragma code_seg(push, "cgroup~1")
|
||||
static uint64_t
|
||||
authorize_connect4(void* context)
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
{
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
// Prologue
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
uint64_t stack[(UBPF_STACK_SIZE + 7) / 8];
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r0 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r1 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r2 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r3 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r4 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r5 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r10 = 0;
|
||||
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
r1 = (uintptr_t)context;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
r10 = (uintptr_t)((uint8_t*)stack + sizeof(stack));
|
||||
|
||||
// EBPF_OP_MOV64_IMM pc=0 dst=r2 src=r0 offset=0 imm=0
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
r2 = IMMEDIATE(0);
|
||||
// EBPF_OP_STXW pc=1 dst=r10 src=r2 offset=-12 imm=0
|
||||
// EBPF_OP_STXDW pc=1 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=2 dst=r10 src=r2 offset=-16 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=2 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=3 dst=r10 src=r2 offset=-20 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=3 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=4 dst=r10 src=r2 offset=-24 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=4 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=5 dst=r10 src=r2 offset=-28 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=5 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=6 dst=r10 src=r2 offset=-32 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=6 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=7 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=8 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=9 dst=r10 src=r2 offset=-44 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-44)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=10 dst=r2 src=r1 offset=4 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=7 dst=r2 src=r1 offset=4 imm=0
|
||||
#line 37 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_STXW pc=11 dst=r10 src=r2 offset=-48 imm=0
|
||||
// EBPF_OP_STXW pc=8 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 37 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=12 dst=r2 src=r1 offset=20 imm=0
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=9 dst=r2 src=r1 offset=20 imm=0
|
||||
#line 38 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(20));
|
||||
// EBPF_OP_STXH pc=13 dst=r10 src=r2 offset=-32 imm=0
|
||||
// EBPF_OP_STXH pc=10 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 38 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=14 dst=r2 src=r1 offset=24 imm=0
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=11 dst=r2 src=r1 offset=24 imm=0
|
||||
#line 39 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(24));
|
||||
// EBPF_OP_STXW pc=15 dst=r10 src=r2 offset=-28 imm=0
|
||||
// EBPF_OP_STXW pc=12 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 39 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=16 dst=r2 src=r1 offset=40 imm=0
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=13 dst=r2 src=r1 offset=40 imm=0
|
||||
#line 40 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(40));
|
||||
// EBPF_OP_STXH pc=17 dst=r10 src=r2 offset=-12 imm=0
|
||||
// EBPF_OP_STXH pc=14 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 40 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=18 dst=r1 src=r1 offset=44 imm=0
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=15 dst=r2 src=r1 offset=44 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=19 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint32_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=20 dst=r2 src=r10 offset=0 imm=0
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=16 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXDW pc=17 dst=r1 src=r1 offset=56 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint64_t*)(uintptr_t)(r1 + OFFSET(56));
|
||||
// EBPF_OP_STXDW pc=18 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint64_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=19 dst=r2 src=r10 offset=0 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r2 = r10;
|
||||
// EBPF_OP_ADD64_IMM pc=21 dst=r2 src=r0 offset=0 imm=-48
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-48);
|
||||
// EBPF_OP_LDDW pc=22 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_ADD64_IMM pc=20 dst=r2 src=r0 offset=0 imm=-56
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-56);
|
||||
// EBPF_OP_LDDW pc=21 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r1 = POINTER(_maps[1].address);
|
||||
// EBPF_OP_CALL pc=24 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_CALL pc=23 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r0 = authorize_connect4_helpers[0].address
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
(r1, r2, r3, r4, r5);
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
if ((authorize_connect4_helpers[0].tail_call) && (r0 == 0))
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
return 0;
|
||||
// EBPF_OP_MOV64_REG pc=25 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_REG pc=24 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r1 = r0;
|
||||
// EBPF_OP_MOV64_IMM pc=26 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_IMM pc=25 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r0 = IMMEDIATE(1);
|
||||
// EBPF_OP_JEQ_IMM pc=27 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_JEQ_IMM pc=26 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
if (r1 == IMMEDIATE(0))
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
goto label_1;
|
||||
// EBPF_OP_LDXW pc=28 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_LDXW pc=27 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
r0 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(0));
|
||||
label_1:
|
||||
// EBPF_OP_EXIT pc=29 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_EXIT pc=28 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 70 "sample/cgroup_sock_addr.c"
|
||||
return r0;
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
#line 70 "sample/cgroup_sock_addr.c"
|
||||
}
|
||||
#pragma code_seg(pop)
|
||||
#line __LINE__ __FILE__
|
||||
|
@ -243,153 +240,162 @@ static uint16_t authorize_connect6_maps[] = {
|
|||
#pragma code_seg(push, "cgroup~2")
|
||||
static uint64_t
|
||||
authorize_connect6(void* context)
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
{
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
// Prologue
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
uint64_t stack[(UBPF_STACK_SIZE + 7) / 8];
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r0 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r1 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r2 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r3 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r4 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r5 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r10 = 0;
|
||||
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
r1 = (uintptr_t)context;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
r10 = (uintptr_t)((uint8_t*)stack + sizeof(stack));
|
||||
|
||||
// EBPF_OP_MOV64_IMM pc=0 dst=r2 src=r0 offset=0 imm=0
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
r2 = IMMEDIATE(0);
|
||||
// EBPF_OP_STXDW pc=1 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=2 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=3 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=4 dst=r2 src=r1 offset=8 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(8));
|
||||
// EBPF_OP_LSH64_IMM pc=5 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=6 dst=r3 src=r1 offset=4 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_OR64_REG pc=7 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=8 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=9 dst=r2 src=r1 offset=16 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(16));
|
||||
// EBPF_OP_LSH64_IMM pc=10 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=11 dst=r3 src=r1 offset=12 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(12));
|
||||
// EBPF_OP_OR64_REG pc=12 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=13 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXDW pc=4 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXH pc=14 dst=r2 src=r1 offset=20 imm=0
|
||||
// EBPF_OP_LDXW pc=5 dst=r2 src=r1 offset=8 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(8));
|
||||
// EBPF_OP_LSH64_IMM pc=6 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=7 dst=r3 src=r1 offset=4 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_OR64_REG pc=8 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=9 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=10 dst=r2 src=r1 offset=16 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(16));
|
||||
// EBPF_OP_LSH64_IMM pc=11 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=12 dst=r3 src=r1 offset=12 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(12));
|
||||
// EBPF_OP_OR64_REG pc=13 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=14 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXH pc=15 dst=r2 src=r1 offset=20 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(20));
|
||||
// EBPF_OP_STXH pc=15 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=16 dst=r2 src=r1 offset=24 imm=0
|
||||
// EBPF_OP_STXH pc=16 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=17 dst=r2 src=r1 offset=24 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(24));
|
||||
// EBPF_OP_STXW pc=17 dst=r10 src=r2 offset=-28 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=18 dst=r2 src=r1 offset=28 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=18 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=19 dst=r2 src=r1 offset=28 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(28));
|
||||
// EBPF_OP_STXW pc=19 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=20 dst=r2 src=r1 offset=32 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=20 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=21 dst=r2 src=r1 offset=32 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(32));
|
||||
// EBPF_OP_STXW pc=21 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=22 dst=r2 src=r1 offset=36 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=22 dst=r10 src=r2 offset=-28 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=23 dst=r2 src=r1 offset=36 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(36));
|
||||
// EBPF_OP_STXW pc=23 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=24 dst=r2 src=r1 offset=40 imm=0
|
||||
// EBPF_OP_STXW pc=24 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=25 dst=r2 src=r1 offset=40 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(40));
|
||||
// EBPF_OP_STXH pc=25 dst=r10 src=r2 offset=-12 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=26 dst=r1 src=r1 offset=44 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=27 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint32_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=28 dst=r2 src=r10 offset=0 imm=0
|
||||
// EBPF_OP_STXH pc=26 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=27 dst=r2 src=r1 offset=44 imm=0
|
||||
#line 58 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=28 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 58 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXDW pc=29 dst=r1 src=r1 offset=56 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint64_t*)(uintptr_t)(r1 + OFFSET(56));
|
||||
// EBPF_OP_STXDW pc=30 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint64_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=31 dst=r2 src=r10 offset=0 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r2 = r10;
|
||||
// EBPF_OP_ADD64_IMM pc=29 dst=r2 src=r0 offset=0 imm=-48
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-48);
|
||||
// EBPF_OP_LDDW pc=30 dst=r1 src=r0 offset=0 imm=0
|
||||
// EBPF_OP_ADD64_IMM pc=32 dst=r2 src=r0 offset=0 imm=-56
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-56);
|
||||
// EBPF_OP_LDDW pc=33 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r1 = POINTER(_maps[1].address);
|
||||
// EBPF_OP_CALL pc=32 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_CALL pc=35 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r0 = authorize_connect6_helpers[0].address
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
(r1, r2, r3, r4, r5);
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
if ((authorize_connect6_helpers[0].tail_call) && (r0 == 0))
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
return 0;
|
||||
// EBPF_OP_MOV64_REG pc=33 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_REG pc=36 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r1 = r0;
|
||||
// EBPF_OP_MOV64_IMM pc=34 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_IMM pc=37 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r0 = IMMEDIATE(1);
|
||||
// EBPF_OP_JEQ_IMM pc=35 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_JEQ_IMM pc=38 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
if (r1 == IMMEDIATE(0))
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
goto label_1;
|
||||
// EBPF_OP_LDXW pc=36 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_LDXW pc=39 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
r0 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(0));
|
||||
label_1:
|
||||
// EBPF_OP_EXIT pc=37 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_EXIT pc=40 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 77 "sample/cgroup_sock_addr.c"
|
||||
return r0;
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
#line 77 "sample/cgroup_sock_addr.c"
|
||||
}
|
||||
#pragma code_seg(pop)
|
||||
#line __LINE__ __FILE__
|
||||
|
@ -409,129 +415,126 @@ static uint16_t authorize_recv_accept4_maps[] = {
|
|||
#pragma code_seg(push, "cgroup~3")
|
||||
static uint64_t
|
||||
authorize_recv_accept4(void* context)
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
{
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
// Prologue
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
uint64_t stack[(UBPF_STACK_SIZE + 7) / 8];
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r0 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r1 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r2 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r3 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r4 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r5 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r10 = 0;
|
||||
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
r1 = (uintptr_t)context;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
r10 = (uintptr_t)((uint8_t*)stack + sizeof(stack));
|
||||
|
||||
// EBPF_OP_MOV64_IMM pc=0 dst=r2 src=r0 offset=0 imm=0
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
r2 = IMMEDIATE(0);
|
||||
// EBPF_OP_STXW pc=1 dst=r10 src=r2 offset=-12 imm=0
|
||||
// EBPF_OP_STXDW pc=1 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=2 dst=r10 src=r2 offset=-16 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=2 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=3 dst=r10 src=r2 offset=-20 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=3 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=4 dst=r10 src=r2 offset=-24 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=4 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=5 dst=r10 src=r2 offset=-28 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=5 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=6 dst=r10 src=r2 offset=-32 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=6 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=7 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=8 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=9 dst=r10 src=r2 offset=-44 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-44)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=10 dst=r2 src=r1 offset=4 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=7 dst=r2 src=r1 offset=4 imm=0
|
||||
#line 37 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_STXW pc=11 dst=r10 src=r2 offset=-48 imm=0
|
||||
// EBPF_OP_STXW pc=8 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 37 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=12 dst=r2 src=r1 offset=20 imm=0
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=9 dst=r2 src=r1 offset=20 imm=0
|
||||
#line 38 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(20));
|
||||
// EBPF_OP_STXH pc=13 dst=r10 src=r2 offset=-32 imm=0
|
||||
// EBPF_OP_STXH pc=10 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 38 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=14 dst=r2 src=r1 offset=24 imm=0
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=11 dst=r2 src=r1 offset=24 imm=0
|
||||
#line 39 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(24));
|
||||
// EBPF_OP_STXW pc=15 dst=r10 src=r2 offset=-28 imm=0
|
||||
// EBPF_OP_STXW pc=12 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 39 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=16 dst=r2 src=r1 offset=40 imm=0
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=13 dst=r2 src=r1 offset=40 imm=0
|
||||
#line 40 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(40));
|
||||
// EBPF_OP_STXH pc=17 dst=r10 src=r2 offset=-12 imm=0
|
||||
// EBPF_OP_STXH pc=14 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 40 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=18 dst=r1 src=r1 offset=44 imm=0
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=15 dst=r2 src=r1 offset=44 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=19 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint32_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=20 dst=r2 src=r10 offset=0 imm=0
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=16 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXDW pc=17 dst=r1 src=r1 offset=56 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint64_t*)(uintptr_t)(r1 + OFFSET(56));
|
||||
// EBPF_OP_STXDW pc=18 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint64_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=19 dst=r2 src=r10 offset=0 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r2 = r10;
|
||||
// EBPF_OP_ADD64_IMM pc=21 dst=r2 src=r0 offset=0 imm=-48
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-48);
|
||||
// EBPF_OP_LDDW pc=22 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_ADD64_IMM pc=20 dst=r2 src=r0 offset=0 imm=-56
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-56);
|
||||
// EBPF_OP_LDDW pc=21 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r1 = POINTER(_maps[0].address);
|
||||
// EBPF_OP_CALL pc=24 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_CALL pc=23 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r0 = authorize_recv_accept4_helpers[0].address
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
(r1, r2, r3, r4, r5);
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
if ((authorize_recv_accept4_helpers[0].tail_call) && (r0 == 0))
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
return 0;
|
||||
// EBPF_OP_MOV64_REG pc=25 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_REG pc=24 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r1 = r0;
|
||||
// EBPF_OP_MOV64_IMM pc=26 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_IMM pc=25 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r0 = IMMEDIATE(1);
|
||||
// EBPF_OP_JEQ_IMM pc=27 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_JEQ_IMM pc=26 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
if (r1 == IMMEDIATE(0))
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
goto label_1;
|
||||
// EBPF_OP_LDXW pc=28 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_LDXW pc=27 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
r0 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(0));
|
||||
label_1:
|
||||
// EBPF_OP_EXIT pc=29 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_EXIT pc=28 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 84 "sample/cgroup_sock_addr.c"
|
||||
return r0;
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
#line 84 "sample/cgroup_sock_addr.c"
|
||||
}
|
||||
#pragma code_seg(pop)
|
||||
#line __LINE__ __FILE__
|
||||
|
@ -551,153 +554,162 @@ static uint16_t authorize_recv_accept6_maps[] = {
|
|||
#pragma code_seg(push, "cgroup~4")
|
||||
static uint64_t
|
||||
authorize_recv_accept6(void* context)
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
{
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
// Prologue
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
uint64_t stack[(UBPF_STACK_SIZE + 7) / 8];
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r0 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r1 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r2 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r3 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r4 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r5 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r10 = 0;
|
||||
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
r1 = (uintptr_t)context;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
r10 = (uintptr_t)((uint8_t*)stack + sizeof(stack));
|
||||
|
||||
// EBPF_OP_MOV64_IMM pc=0 dst=r2 src=r0 offset=0 imm=0
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
r2 = IMMEDIATE(0);
|
||||
// EBPF_OP_STXDW pc=1 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=2 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=3 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=4 dst=r2 src=r1 offset=8 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(8));
|
||||
// EBPF_OP_LSH64_IMM pc=5 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=6 dst=r3 src=r1 offset=4 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_OR64_REG pc=7 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=8 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=9 dst=r2 src=r1 offset=16 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(16));
|
||||
// EBPF_OP_LSH64_IMM pc=10 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=11 dst=r3 src=r1 offset=12 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(12));
|
||||
// EBPF_OP_OR64_REG pc=12 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=13 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXDW pc=4 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXH pc=14 dst=r2 src=r1 offset=20 imm=0
|
||||
// EBPF_OP_LDXW pc=5 dst=r2 src=r1 offset=8 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(8));
|
||||
// EBPF_OP_LSH64_IMM pc=6 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=7 dst=r3 src=r1 offset=4 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_OR64_REG pc=8 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=9 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=10 dst=r2 src=r1 offset=16 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(16));
|
||||
// EBPF_OP_LSH64_IMM pc=11 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=12 dst=r3 src=r1 offset=12 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(12));
|
||||
// EBPF_OP_OR64_REG pc=13 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=14 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXH pc=15 dst=r2 src=r1 offset=20 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(20));
|
||||
// EBPF_OP_STXH pc=15 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=16 dst=r2 src=r1 offset=24 imm=0
|
||||
// EBPF_OP_STXH pc=16 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=17 dst=r2 src=r1 offset=24 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(24));
|
||||
// EBPF_OP_STXW pc=17 dst=r10 src=r2 offset=-28 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=18 dst=r2 src=r1 offset=28 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=18 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=19 dst=r2 src=r1 offset=28 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(28));
|
||||
// EBPF_OP_STXW pc=19 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=20 dst=r2 src=r1 offset=32 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=20 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=21 dst=r2 src=r1 offset=32 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(32));
|
||||
// EBPF_OP_STXW pc=21 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=22 dst=r2 src=r1 offset=36 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=22 dst=r10 src=r2 offset=-28 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=23 dst=r2 src=r1 offset=36 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(36));
|
||||
// EBPF_OP_STXW pc=23 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=24 dst=r2 src=r1 offset=40 imm=0
|
||||
// EBPF_OP_STXW pc=24 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=25 dst=r2 src=r1 offset=40 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(40));
|
||||
// EBPF_OP_STXH pc=25 dst=r10 src=r2 offset=-12 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=26 dst=r1 src=r1 offset=44 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=27 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint32_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=28 dst=r2 src=r10 offset=0 imm=0
|
||||
// EBPF_OP_STXH pc=26 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=27 dst=r2 src=r1 offset=44 imm=0
|
||||
#line 58 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=28 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 58 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXDW pc=29 dst=r1 src=r1 offset=56 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint64_t*)(uintptr_t)(r1 + OFFSET(56));
|
||||
// EBPF_OP_STXDW pc=30 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint64_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=31 dst=r2 src=r10 offset=0 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r2 = r10;
|
||||
// EBPF_OP_ADD64_IMM pc=29 dst=r2 src=r0 offset=0 imm=-48
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-48);
|
||||
// EBPF_OP_LDDW pc=30 dst=r1 src=r0 offset=0 imm=0
|
||||
// EBPF_OP_ADD64_IMM pc=32 dst=r2 src=r0 offset=0 imm=-56
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-56);
|
||||
// EBPF_OP_LDDW pc=33 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r1 = POINTER(_maps[0].address);
|
||||
// EBPF_OP_CALL pc=32 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_CALL pc=35 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r0 = authorize_recv_accept6_helpers[0].address
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
(r1, r2, r3, r4, r5);
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
if ((authorize_recv_accept6_helpers[0].tail_call) && (r0 == 0))
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
return 0;
|
||||
// EBPF_OP_MOV64_REG pc=33 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_REG pc=36 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r1 = r0;
|
||||
// EBPF_OP_MOV64_IMM pc=34 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_IMM pc=37 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r0 = IMMEDIATE(1);
|
||||
// EBPF_OP_JEQ_IMM pc=35 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_JEQ_IMM pc=38 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
if (r1 == IMMEDIATE(0))
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
goto label_1;
|
||||
// EBPF_OP_LDXW pc=36 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_LDXW pc=39 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
r0 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(0));
|
||||
label_1:
|
||||
// EBPF_OP_EXIT pc=37 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_EXIT pc=40 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 91 "sample/cgroup_sock_addr.c"
|
||||
return r0;
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
#line 91 "sample/cgroup_sock_addr.c"
|
||||
}
|
||||
#pragma code_seg(pop)
|
||||
#line __LINE__ __FILE__
|
||||
|
@ -714,7 +726,7 @@ static program_entry_t _programs[] = {
|
|||
1,
|
||||
authorize_connect4_helpers,
|
||||
1,
|
||||
30,
|
||||
29,
|
||||
&authorize_connect4_program_type_guid,
|
||||
&authorize_connect4_attach_type_guid,
|
||||
},
|
||||
|
@ -728,7 +740,7 @@ static program_entry_t _programs[] = {
|
|||
1,
|
||||
authorize_connect6_helpers,
|
||||
1,
|
||||
38,
|
||||
41,
|
||||
&authorize_connect6_program_type_guid,
|
||||
&authorize_connect6_attach_type_guid,
|
||||
},
|
||||
|
@ -742,7 +754,7 @@ static program_entry_t _programs[] = {
|
|||
1,
|
||||
authorize_recv_accept4_helpers,
|
||||
1,
|
||||
30,
|
||||
29,
|
||||
&authorize_recv_accept4_program_type_guid,
|
||||
&authorize_recv_accept4_attach_type_guid,
|
||||
},
|
||||
|
@ -756,7 +768,7 @@ static program_entry_t _programs[] = {
|
|||
1,
|
||||
authorize_recv_accept6_helpers,
|
||||
1,
|
||||
38,
|
||||
41,
|
||||
&authorize_recv_accept6_program_type_guid,
|
||||
&authorize_recv_accept6_attach_type_guid,
|
||||
},
|
||||
|
|
|
@ -17,7 +17,7 @@ static map_entry_t _maps[] = {
|
|||
{NULL,
|
||||
{
|
||||
BPF_MAP_TYPE_HASH, // Type of map.
|
||||
44, // Size in bytes of a map key.
|
||||
56, // Size in bytes of a map key.
|
||||
4, // Size in bytes of a map value.
|
||||
1, // Maximum number of entries allowed in the map.
|
||||
0, // Inner map index.
|
||||
|
@ -29,7 +29,7 @@ static map_entry_t _maps[] = {
|
|||
{NULL,
|
||||
{
|
||||
BPF_MAP_TYPE_HASH, // Type of map.
|
||||
44, // Size in bytes of a map key.
|
||||
56, // Size in bytes of a map key.
|
||||
4, // Size in bytes of a map value.
|
||||
1, // Maximum number of entries allowed in the map.
|
||||
0, // Inner map index.
|
||||
|
@ -63,129 +63,126 @@ static uint16_t authorize_connect4_maps[] = {
|
|||
#pragma code_seg(push, "cgroup~1")
|
||||
static uint64_t
|
||||
authorize_connect4(void* context)
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
{
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
// Prologue
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
uint64_t stack[(UBPF_STACK_SIZE + 7) / 8];
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r0 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r1 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r2 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r3 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r4 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r5 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r10 = 0;
|
||||
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
r1 = (uintptr_t)context;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
r10 = (uintptr_t)((uint8_t*)stack + sizeof(stack));
|
||||
|
||||
// EBPF_OP_MOV64_IMM pc=0 dst=r2 src=r0 offset=0 imm=0
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
r2 = IMMEDIATE(0);
|
||||
// EBPF_OP_STXW pc=1 dst=r10 src=r2 offset=-12 imm=0
|
||||
// EBPF_OP_STXDW pc=1 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=2 dst=r10 src=r2 offset=-16 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=2 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=3 dst=r10 src=r2 offset=-20 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=3 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=4 dst=r10 src=r2 offset=-24 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=4 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=5 dst=r10 src=r2 offset=-28 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=5 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=6 dst=r10 src=r2 offset=-32 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=6 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=7 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=8 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=9 dst=r10 src=r2 offset=-44 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-44)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=10 dst=r2 src=r1 offset=4 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=7 dst=r2 src=r1 offset=4 imm=0
|
||||
#line 37 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_STXW pc=11 dst=r10 src=r2 offset=-48 imm=0
|
||||
// EBPF_OP_STXW pc=8 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 37 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=12 dst=r2 src=r1 offset=20 imm=0
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=9 dst=r2 src=r1 offset=20 imm=0
|
||||
#line 38 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(20));
|
||||
// EBPF_OP_STXH pc=13 dst=r10 src=r2 offset=-32 imm=0
|
||||
// EBPF_OP_STXH pc=10 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 38 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=14 dst=r2 src=r1 offset=24 imm=0
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=11 dst=r2 src=r1 offset=24 imm=0
|
||||
#line 39 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(24));
|
||||
// EBPF_OP_STXW pc=15 dst=r10 src=r2 offset=-28 imm=0
|
||||
// EBPF_OP_STXW pc=12 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 39 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=16 dst=r2 src=r1 offset=40 imm=0
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=13 dst=r2 src=r1 offset=40 imm=0
|
||||
#line 40 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(40));
|
||||
// EBPF_OP_STXH pc=17 dst=r10 src=r2 offset=-12 imm=0
|
||||
// EBPF_OP_STXH pc=14 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 40 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=18 dst=r1 src=r1 offset=44 imm=0
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=15 dst=r2 src=r1 offset=44 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=19 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint32_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=20 dst=r2 src=r10 offset=0 imm=0
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=16 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXDW pc=17 dst=r1 src=r1 offset=56 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint64_t*)(uintptr_t)(r1 + OFFSET(56));
|
||||
// EBPF_OP_STXDW pc=18 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint64_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=19 dst=r2 src=r10 offset=0 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r2 = r10;
|
||||
// EBPF_OP_ADD64_IMM pc=21 dst=r2 src=r0 offset=0 imm=-48
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-48);
|
||||
// EBPF_OP_LDDW pc=22 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_ADD64_IMM pc=20 dst=r2 src=r0 offset=0 imm=-56
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-56);
|
||||
// EBPF_OP_LDDW pc=21 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r1 = POINTER(_maps[1].address);
|
||||
// EBPF_OP_CALL pc=24 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_CALL pc=23 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r0 = authorize_connect4_helpers[0].address
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
(r1, r2, r3, r4, r5);
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
if ((authorize_connect4_helpers[0].tail_call) && (r0 == 0))
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
return 0;
|
||||
// EBPF_OP_MOV64_REG pc=25 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_REG pc=24 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r1 = r0;
|
||||
// EBPF_OP_MOV64_IMM pc=26 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_IMM pc=25 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r0 = IMMEDIATE(1);
|
||||
// EBPF_OP_JEQ_IMM pc=27 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_JEQ_IMM pc=26 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
if (r1 == IMMEDIATE(0))
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
goto label_1;
|
||||
// EBPF_OP_LDXW pc=28 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_LDXW pc=27 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
r0 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(0));
|
||||
label_1:
|
||||
// EBPF_OP_EXIT pc=29 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_EXIT pc=28 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 70 "sample/cgroup_sock_addr.c"
|
||||
return r0;
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
#line 70 "sample/cgroup_sock_addr.c"
|
||||
}
|
||||
#pragma code_seg(pop)
|
||||
#line __LINE__ __FILE__
|
||||
|
@ -205,153 +202,162 @@ static uint16_t authorize_connect6_maps[] = {
|
|||
#pragma code_seg(push, "cgroup~2")
|
||||
static uint64_t
|
||||
authorize_connect6(void* context)
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
{
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
// Prologue
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
uint64_t stack[(UBPF_STACK_SIZE + 7) / 8];
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r0 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r1 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r2 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r3 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r4 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r5 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r10 = 0;
|
||||
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
r1 = (uintptr_t)context;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
r10 = (uintptr_t)((uint8_t*)stack + sizeof(stack));
|
||||
|
||||
// EBPF_OP_MOV64_IMM pc=0 dst=r2 src=r0 offset=0 imm=0
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
r2 = IMMEDIATE(0);
|
||||
// EBPF_OP_STXDW pc=1 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=2 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=3 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=4 dst=r2 src=r1 offset=8 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(8));
|
||||
// EBPF_OP_LSH64_IMM pc=5 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=6 dst=r3 src=r1 offset=4 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_OR64_REG pc=7 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=8 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=9 dst=r2 src=r1 offset=16 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(16));
|
||||
// EBPF_OP_LSH64_IMM pc=10 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=11 dst=r3 src=r1 offset=12 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(12));
|
||||
// EBPF_OP_OR64_REG pc=12 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=13 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXDW pc=4 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXH pc=14 dst=r2 src=r1 offset=20 imm=0
|
||||
// EBPF_OP_LDXW pc=5 dst=r2 src=r1 offset=8 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(8));
|
||||
// EBPF_OP_LSH64_IMM pc=6 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=7 dst=r3 src=r1 offset=4 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_OR64_REG pc=8 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=9 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=10 dst=r2 src=r1 offset=16 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(16));
|
||||
// EBPF_OP_LSH64_IMM pc=11 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=12 dst=r3 src=r1 offset=12 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(12));
|
||||
// EBPF_OP_OR64_REG pc=13 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=14 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXH pc=15 dst=r2 src=r1 offset=20 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(20));
|
||||
// EBPF_OP_STXH pc=15 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=16 dst=r2 src=r1 offset=24 imm=0
|
||||
// EBPF_OP_STXH pc=16 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=17 dst=r2 src=r1 offset=24 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(24));
|
||||
// EBPF_OP_STXW pc=17 dst=r10 src=r2 offset=-28 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=18 dst=r2 src=r1 offset=28 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=18 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=19 dst=r2 src=r1 offset=28 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(28));
|
||||
// EBPF_OP_STXW pc=19 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=20 dst=r2 src=r1 offset=32 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=20 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=21 dst=r2 src=r1 offset=32 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(32));
|
||||
// EBPF_OP_STXW pc=21 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=22 dst=r2 src=r1 offset=36 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=22 dst=r10 src=r2 offset=-28 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=23 dst=r2 src=r1 offset=36 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(36));
|
||||
// EBPF_OP_STXW pc=23 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=24 dst=r2 src=r1 offset=40 imm=0
|
||||
// EBPF_OP_STXW pc=24 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=25 dst=r2 src=r1 offset=40 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(40));
|
||||
// EBPF_OP_STXH pc=25 dst=r10 src=r2 offset=-12 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=26 dst=r1 src=r1 offset=44 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=27 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint32_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=28 dst=r2 src=r10 offset=0 imm=0
|
||||
// EBPF_OP_STXH pc=26 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=27 dst=r2 src=r1 offset=44 imm=0
|
||||
#line 58 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=28 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 58 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXDW pc=29 dst=r1 src=r1 offset=56 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint64_t*)(uintptr_t)(r1 + OFFSET(56));
|
||||
// EBPF_OP_STXDW pc=30 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint64_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=31 dst=r2 src=r10 offset=0 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r2 = r10;
|
||||
// EBPF_OP_ADD64_IMM pc=29 dst=r2 src=r0 offset=0 imm=-48
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-48);
|
||||
// EBPF_OP_LDDW pc=30 dst=r1 src=r0 offset=0 imm=0
|
||||
// EBPF_OP_ADD64_IMM pc=32 dst=r2 src=r0 offset=0 imm=-56
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-56);
|
||||
// EBPF_OP_LDDW pc=33 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r1 = POINTER(_maps[1].address);
|
||||
// EBPF_OP_CALL pc=32 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_CALL pc=35 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r0 = authorize_connect6_helpers[0].address
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
(r1, r2, r3, r4, r5);
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
if ((authorize_connect6_helpers[0].tail_call) && (r0 == 0))
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
return 0;
|
||||
// EBPF_OP_MOV64_REG pc=33 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_REG pc=36 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r1 = r0;
|
||||
// EBPF_OP_MOV64_IMM pc=34 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_IMM pc=37 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r0 = IMMEDIATE(1);
|
||||
// EBPF_OP_JEQ_IMM pc=35 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_JEQ_IMM pc=38 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
if (r1 == IMMEDIATE(0))
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
goto label_1;
|
||||
// EBPF_OP_LDXW pc=36 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_LDXW pc=39 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
r0 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(0));
|
||||
label_1:
|
||||
// EBPF_OP_EXIT pc=37 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_EXIT pc=40 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 77 "sample/cgroup_sock_addr.c"
|
||||
return r0;
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
#line 77 "sample/cgroup_sock_addr.c"
|
||||
}
|
||||
#pragma code_seg(pop)
|
||||
#line __LINE__ __FILE__
|
||||
|
@ -371,129 +377,126 @@ static uint16_t authorize_recv_accept4_maps[] = {
|
|||
#pragma code_seg(push, "cgroup~3")
|
||||
static uint64_t
|
||||
authorize_recv_accept4(void* context)
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
{
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
// Prologue
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
uint64_t stack[(UBPF_STACK_SIZE + 7) / 8];
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r0 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r1 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r2 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r3 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r4 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r5 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r10 = 0;
|
||||
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
r1 = (uintptr_t)context;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
r10 = (uintptr_t)((uint8_t*)stack + sizeof(stack));
|
||||
|
||||
// EBPF_OP_MOV64_IMM pc=0 dst=r2 src=r0 offset=0 imm=0
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
r2 = IMMEDIATE(0);
|
||||
// EBPF_OP_STXW pc=1 dst=r10 src=r2 offset=-12 imm=0
|
||||
// EBPF_OP_STXDW pc=1 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=2 dst=r10 src=r2 offset=-16 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=2 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=3 dst=r10 src=r2 offset=-20 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=3 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=4 dst=r10 src=r2 offset=-24 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=4 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=5 dst=r10 src=r2 offset=-28 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=5 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=6 dst=r10 src=r2 offset=-32 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=6 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=7 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=8 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=9 dst=r10 src=r2 offset=-44 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-44)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=10 dst=r2 src=r1 offset=4 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=7 dst=r2 src=r1 offset=4 imm=0
|
||||
#line 37 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_STXW pc=11 dst=r10 src=r2 offset=-48 imm=0
|
||||
// EBPF_OP_STXW pc=8 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 37 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=12 dst=r2 src=r1 offset=20 imm=0
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=9 dst=r2 src=r1 offset=20 imm=0
|
||||
#line 38 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(20));
|
||||
// EBPF_OP_STXH pc=13 dst=r10 src=r2 offset=-32 imm=0
|
||||
// EBPF_OP_STXH pc=10 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 38 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=14 dst=r2 src=r1 offset=24 imm=0
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=11 dst=r2 src=r1 offset=24 imm=0
|
||||
#line 39 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(24));
|
||||
// EBPF_OP_STXW pc=15 dst=r10 src=r2 offset=-28 imm=0
|
||||
// EBPF_OP_STXW pc=12 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 39 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=16 dst=r2 src=r1 offset=40 imm=0
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=13 dst=r2 src=r1 offset=40 imm=0
|
||||
#line 40 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(40));
|
||||
// EBPF_OP_STXH pc=17 dst=r10 src=r2 offset=-12 imm=0
|
||||
// EBPF_OP_STXH pc=14 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 40 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=18 dst=r1 src=r1 offset=44 imm=0
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=15 dst=r2 src=r1 offset=44 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=19 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint32_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=20 dst=r2 src=r10 offset=0 imm=0
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=16 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXDW pc=17 dst=r1 src=r1 offset=56 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint64_t*)(uintptr_t)(r1 + OFFSET(56));
|
||||
// EBPF_OP_STXDW pc=18 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint64_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=19 dst=r2 src=r10 offset=0 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r2 = r10;
|
||||
// EBPF_OP_ADD64_IMM pc=21 dst=r2 src=r0 offset=0 imm=-48
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-48);
|
||||
// EBPF_OP_LDDW pc=22 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_ADD64_IMM pc=20 dst=r2 src=r0 offset=0 imm=-56
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-56);
|
||||
// EBPF_OP_LDDW pc=21 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r1 = POINTER(_maps[0].address);
|
||||
// EBPF_OP_CALL pc=24 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_CALL pc=23 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r0 = authorize_recv_accept4_helpers[0].address
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
(r1, r2, r3, r4, r5);
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
if ((authorize_recv_accept4_helpers[0].tail_call) && (r0 == 0))
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
return 0;
|
||||
// EBPF_OP_MOV64_REG pc=25 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_REG pc=24 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r1 = r0;
|
||||
// EBPF_OP_MOV64_IMM pc=26 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_IMM pc=25 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r0 = IMMEDIATE(1);
|
||||
// EBPF_OP_JEQ_IMM pc=27 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_JEQ_IMM pc=26 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
if (r1 == IMMEDIATE(0))
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
goto label_1;
|
||||
// EBPF_OP_LDXW pc=28 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_LDXW pc=27 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
r0 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(0));
|
||||
label_1:
|
||||
// EBPF_OP_EXIT pc=29 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_EXIT pc=28 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 84 "sample/cgroup_sock_addr.c"
|
||||
return r0;
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
#line 84 "sample/cgroup_sock_addr.c"
|
||||
}
|
||||
#pragma code_seg(pop)
|
||||
#line __LINE__ __FILE__
|
||||
|
@ -513,153 +516,162 @@ static uint16_t authorize_recv_accept6_maps[] = {
|
|||
#pragma code_seg(push, "cgroup~4")
|
||||
static uint64_t
|
||||
authorize_recv_accept6(void* context)
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
{
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
// Prologue
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
uint64_t stack[(UBPF_STACK_SIZE + 7) / 8];
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r0 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r1 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r2 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r3 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r4 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r5 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r10 = 0;
|
||||
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
r1 = (uintptr_t)context;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
r10 = (uintptr_t)((uint8_t*)stack + sizeof(stack));
|
||||
|
||||
// EBPF_OP_MOV64_IMM pc=0 dst=r2 src=r0 offset=0 imm=0
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
r2 = IMMEDIATE(0);
|
||||
// EBPF_OP_STXDW pc=1 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=2 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=3 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=4 dst=r2 src=r1 offset=8 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(8));
|
||||
// EBPF_OP_LSH64_IMM pc=5 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=6 dst=r3 src=r1 offset=4 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_OR64_REG pc=7 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=8 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=9 dst=r2 src=r1 offset=16 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(16));
|
||||
// EBPF_OP_LSH64_IMM pc=10 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=11 dst=r3 src=r1 offset=12 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(12));
|
||||
// EBPF_OP_OR64_REG pc=12 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=13 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXDW pc=4 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXH pc=14 dst=r2 src=r1 offset=20 imm=0
|
||||
// EBPF_OP_LDXW pc=5 dst=r2 src=r1 offset=8 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(8));
|
||||
// EBPF_OP_LSH64_IMM pc=6 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=7 dst=r3 src=r1 offset=4 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_OR64_REG pc=8 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=9 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=10 dst=r2 src=r1 offset=16 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(16));
|
||||
// EBPF_OP_LSH64_IMM pc=11 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=12 dst=r3 src=r1 offset=12 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(12));
|
||||
// EBPF_OP_OR64_REG pc=13 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=14 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXH pc=15 dst=r2 src=r1 offset=20 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(20));
|
||||
// EBPF_OP_STXH pc=15 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=16 dst=r2 src=r1 offset=24 imm=0
|
||||
// EBPF_OP_STXH pc=16 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=17 dst=r2 src=r1 offset=24 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(24));
|
||||
// EBPF_OP_STXW pc=17 dst=r10 src=r2 offset=-28 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=18 dst=r2 src=r1 offset=28 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=18 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=19 dst=r2 src=r1 offset=28 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(28));
|
||||
// EBPF_OP_STXW pc=19 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=20 dst=r2 src=r1 offset=32 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=20 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=21 dst=r2 src=r1 offset=32 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(32));
|
||||
// EBPF_OP_STXW pc=21 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=22 dst=r2 src=r1 offset=36 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=22 dst=r10 src=r2 offset=-28 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=23 dst=r2 src=r1 offset=36 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(36));
|
||||
// EBPF_OP_STXW pc=23 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=24 dst=r2 src=r1 offset=40 imm=0
|
||||
// EBPF_OP_STXW pc=24 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=25 dst=r2 src=r1 offset=40 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(40));
|
||||
// EBPF_OP_STXH pc=25 dst=r10 src=r2 offset=-12 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=26 dst=r1 src=r1 offset=44 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=27 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint32_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=28 dst=r2 src=r10 offset=0 imm=0
|
||||
// EBPF_OP_STXH pc=26 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=27 dst=r2 src=r1 offset=44 imm=0
|
||||
#line 58 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=28 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 58 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXDW pc=29 dst=r1 src=r1 offset=56 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint64_t*)(uintptr_t)(r1 + OFFSET(56));
|
||||
// EBPF_OP_STXDW pc=30 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint64_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=31 dst=r2 src=r10 offset=0 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r2 = r10;
|
||||
// EBPF_OP_ADD64_IMM pc=29 dst=r2 src=r0 offset=0 imm=-48
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-48);
|
||||
// EBPF_OP_LDDW pc=30 dst=r1 src=r0 offset=0 imm=0
|
||||
// EBPF_OP_ADD64_IMM pc=32 dst=r2 src=r0 offset=0 imm=-56
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-56);
|
||||
// EBPF_OP_LDDW pc=33 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r1 = POINTER(_maps[0].address);
|
||||
// EBPF_OP_CALL pc=32 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_CALL pc=35 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r0 = authorize_recv_accept6_helpers[0].address
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
(r1, r2, r3, r4, r5);
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
if ((authorize_recv_accept6_helpers[0].tail_call) && (r0 == 0))
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
return 0;
|
||||
// EBPF_OP_MOV64_REG pc=33 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_REG pc=36 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r1 = r0;
|
||||
// EBPF_OP_MOV64_IMM pc=34 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_IMM pc=37 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r0 = IMMEDIATE(1);
|
||||
// EBPF_OP_JEQ_IMM pc=35 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_JEQ_IMM pc=38 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
if (r1 == IMMEDIATE(0))
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
goto label_1;
|
||||
// EBPF_OP_LDXW pc=36 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_LDXW pc=39 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
r0 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(0));
|
||||
label_1:
|
||||
// EBPF_OP_EXIT pc=37 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_EXIT pc=40 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 91 "sample/cgroup_sock_addr.c"
|
||||
return r0;
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
#line 91 "sample/cgroup_sock_addr.c"
|
||||
}
|
||||
#pragma code_seg(pop)
|
||||
#line __LINE__ __FILE__
|
||||
|
@ -676,7 +688,7 @@ static program_entry_t _programs[] = {
|
|||
1,
|
||||
authorize_connect4_helpers,
|
||||
1,
|
||||
30,
|
||||
29,
|
||||
&authorize_connect4_program_type_guid,
|
||||
&authorize_connect4_attach_type_guid,
|
||||
},
|
||||
|
@ -690,7 +702,7 @@ static program_entry_t _programs[] = {
|
|||
1,
|
||||
authorize_connect6_helpers,
|
||||
1,
|
||||
38,
|
||||
41,
|
||||
&authorize_connect6_program_type_guid,
|
||||
&authorize_connect6_attach_type_guid,
|
||||
},
|
||||
|
@ -704,7 +716,7 @@ static program_entry_t _programs[] = {
|
|||
1,
|
||||
authorize_recv_accept4_helpers,
|
||||
1,
|
||||
30,
|
||||
29,
|
||||
&authorize_recv_accept4_program_type_guid,
|
||||
&authorize_recv_accept4_attach_type_guid,
|
||||
},
|
||||
|
@ -718,7 +730,7 @@ static program_entry_t _programs[] = {
|
|||
1,
|
||||
authorize_recv_accept6_helpers,
|
||||
1,
|
||||
38,
|
||||
41,
|
||||
&authorize_recv_accept6_program_type_guid,
|
||||
&authorize_recv_accept6_attach_type_guid,
|
||||
},
|
||||
|
|
|
@ -184,7 +184,7 @@ static map_entry_t _maps[] = {
|
|||
{NULL,
|
||||
{
|
||||
BPF_MAP_TYPE_HASH, // Type of map.
|
||||
44, // Size in bytes of a map key.
|
||||
56, // Size in bytes of a map key.
|
||||
4, // Size in bytes of a map value.
|
||||
1, // Maximum number of entries allowed in the map.
|
||||
0, // Inner map index.
|
||||
|
@ -196,7 +196,7 @@ static map_entry_t _maps[] = {
|
|||
{NULL,
|
||||
{
|
||||
BPF_MAP_TYPE_HASH, // Type of map.
|
||||
44, // Size in bytes of a map key.
|
||||
56, // Size in bytes of a map key.
|
||||
4, // Size in bytes of a map value.
|
||||
1, // Maximum number of entries allowed in the map.
|
||||
0, // Inner map index.
|
||||
|
@ -230,129 +230,126 @@ static uint16_t authorize_connect4_maps[] = {
|
|||
#pragma code_seg(push, "cgroup~1")
|
||||
static uint64_t
|
||||
authorize_connect4(void* context)
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
{
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
// Prologue
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
uint64_t stack[(UBPF_STACK_SIZE + 7) / 8];
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r0 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r1 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r2 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r3 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r4 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r5 = 0;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r10 = 0;
|
||||
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
r1 = (uintptr_t)context;
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
r10 = (uintptr_t)((uint8_t*)stack + sizeof(stack));
|
||||
|
||||
// EBPF_OP_MOV64_IMM pc=0 dst=r2 src=r0 offset=0 imm=0
|
||||
#line 66 "sample/cgroup_sock_addr.c"
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
r2 = IMMEDIATE(0);
|
||||
// EBPF_OP_STXW pc=1 dst=r10 src=r2 offset=-12 imm=0
|
||||
// EBPF_OP_STXDW pc=1 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=2 dst=r10 src=r2 offset=-16 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=2 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=3 dst=r10 src=r2 offset=-20 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=3 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=4 dst=r10 src=r2 offset=-24 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=4 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=5 dst=r10 src=r2 offset=-28 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=5 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=6 dst=r10 src=r2 offset=-32 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=6 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=7 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=8 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=9 dst=r10 src=r2 offset=-44 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-44)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=10 dst=r2 src=r1 offset=4 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=7 dst=r2 src=r1 offset=4 imm=0
|
||||
#line 37 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_STXW pc=11 dst=r10 src=r2 offset=-48 imm=0
|
||||
// EBPF_OP_STXW pc=8 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 37 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=12 dst=r2 src=r1 offset=20 imm=0
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=9 dst=r2 src=r1 offset=20 imm=0
|
||||
#line 38 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(20));
|
||||
// EBPF_OP_STXH pc=13 dst=r10 src=r2 offset=-32 imm=0
|
||||
// EBPF_OP_STXH pc=10 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 38 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=14 dst=r2 src=r1 offset=24 imm=0
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=11 dst=r2 src=r1 offset=24 imm=0
|
||||
#line 39 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(24));
|
||||
// EBPF_OP_STXW pc=15 dst=r10 src=r2 offset=-28 imm=0
|
||||
// EBPF_OP_STXW pc=12 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 39 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=16 dst=r2 src=r1 offset=40 imm=0
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=13 dst=r2 src=r1 offset=40 imm=0
|
||||
#line 40 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(40));
|
||||
// EBPF_OP_STXH pc=17 dst=r10 src=r2 offset=-12 imm=0
|
||||
// EBPF_OP_STXH pc=14 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 40 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=18 dst=r1 src=r1 offset=44 imm=0
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=15 dst=r2 src=r1 offset=44 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=19 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint32_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=20 dst=r2 src=r10 offset=0 imm=0
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=16 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXDW pc=17 dst=r1 src=r1 offset=56 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint64_t*)(uintptr_t)(r1 + OFFSET(56));
|
||||
// EBPF_OP_STXDW pc=18 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint64_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=19 dst=r2 src=r10 offset=0 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r2 = r10;
|
||||
// EBPF_OP_ADD64_IMM pc=21 dst=r2 src=r0 offset=0 imm=-48
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-48);
|
||||
// EBPF_OP_LDDW pc=22 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_ADD64_IMM pc=20 dst=r2 src=r0 offset=0 imm=-56
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-56);
|
||||
// EBPF_OP_LDDW pc=21 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r1 = POINTER(_maps[1].address);
|
||||
// EBPF_OP_CALL pc=24 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_CALL pc=23 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r0 = authorize_connect4_helpers[0].address
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
(r1, r2, r3, r4, r5);
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
if ((authorize_connect4_helpers[0].tail_call) && (r0 == 0))
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
return 0;
|
||||
// EBPF_OP_MOV64_REG pc=25 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_REG pc=24 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r1 = r0;
|
||||
// EBPF_OP_MOV64_IMM pc=26 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_IMM pc=25 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r0 = IMMEDIATE(1);
|
||||
// EBPF_OP_JEQ_IMM pc=27 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_JEQ_IMM pc=26 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
if (r1 == IMMEDIATE(0))
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
goto label_1;
|
||||
// EBPF_OP_LDXW pc=28 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_LDXW pc=27 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
r0 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(0));
|
||||
label_1:
|
||||
// EBPF_OP_EXIT pc=29 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_EXIT pc=28 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 70 "sample/cgroup_sock_addr.c"
|
||||
return r0;
|
||||
#line 68 "sample/cgroup_sock_addr.c"
|
||||
#line 70 "sample/cgroup_sock_addr.c"
|
||||
}
|
||||
#pragma code_seg(pop)
|
||||
#line __LINE__ __FILE__
|
||||
|
@ -372,153 +369,162 @@ static uint16_t authorize_connect6_maps[] = {
|
|||
#pragma code_seg(push, "cgroup~2")
|
||||
static uint64_t
|
||||
authorize_connect6(void* context)
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
{
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
// Prologue
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
uint64_t stack[(UBPF_STACK_SIZE + 7) / 8];
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r0 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r1 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r2 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r3 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r4 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r5 = 0;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r10 = 0;
|
||||
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
r1 = (uintptr_t)context;
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
r10 = (uintptr_t)((uint8_t*)stack + sizeof(stack));
|
||||
|
||||
// EBPF_OP_MOV64_IMM pc=0 dst=r2 src=r0 offset=0 imm=0
|
||||
#line 73 "sample/cgroup_sock_addr.c"
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
r2 = IMMEDIATE(0);
|
||||
// EBPF_OP_STXDW pc=1 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=2 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=3 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=4 dst=r2 src=r1 offset=8 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(8));
|
||||
// EBPF_OP_LSH64_IMM pc=5 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=6 dst=r3 src=r1 offset=4 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_OR64_REG pc=7 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=8 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=9 dst=r2 src=r1 offset=16 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(16));
|
||||
// EBPF_OP_LSH64_IMM pc=10 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=11 dst=r3 src=r1 offset=12 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(12));
|
||||
// EBPF_OP_OR64_REG pc=12 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=13 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXDW pc=4 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXH pc=14 dst=r2 src=r1 offset=20 imm=0
|
||||
// EBPF_OP_LDXW pc=5 dst=r2 src=r1 offset=8 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(8));
|
||||
// EBPF_OP_LSH64_IMM pc=6 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=7 dst=r3 src=r1 offset=4 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_OR64_REG pc=8 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=9 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=10 dst=r2 src=r1 offset=16 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(16));
|
||||
// EBPF_OP_LSH64_IMM pc=11 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=12 dst=r3 src=r1 offset=12 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(12));
|
||||
// EBPF_OP_OR64_REG pc=13 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=14 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXH pc=15 dst=r2 src=r1 offset=20 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(20));
|
||||
// EBPF_OP_STXH pc=15 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=16 dst=r2 src=r1 offset=24 imm=0
|
||||
// EBPF_OP_STXH pc=16 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=17 dst=r2 src=r1 offset=24 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(24));
|
||||
// EBPF_OP_STXW pc=17 dst=r10 src=r2 offset=-28 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=18 dst=r2 src=r1 offset=28 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=18 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=19 dst=r2 src=r1 offset=28 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(28));
|
||||
// EBPF_OP_STXW pc=19 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=20 dst=r2 src=r1 offset=32 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=20 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=21 dst=r2 src=r1 offset=32 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(32));
|
||||
// EBPF_OP_STXW pc=21 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=22 dst=r2 src=r1 offset=36 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=22 dst=r10 src=r2 offset=-28 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=23 dst=r2 src=r1 offset=36 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(36));
|
||||
// EBPF_OP_STXW pc=23 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=24 dst=r2 src=r1 offset=40 imm=0
|
||||
// EBPF_OP_STXW pc=24 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=25 dst=r2 src=r1 offset=40 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(40));
|
||||
// EBPF_OP_STXH pc=25 dst=r10 src=r2 offset=-12 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=26 dst=r1 src=r1 offset=44 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=27 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint32_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=28 dst=r2 src=r10 offset=0 imm=0
|
||||
// EBPF_OP_STXH pc=26 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=27 dst=r2 src=r1 offset=44 imm=0
|
||||
#line 58 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=28 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 58 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXDW pc=29 dst=r1 src=r1 offset=56 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint64_t*)(uintptr_t)(r1 + OFFSET(56));
|
||||
// EBPF_OP_STXDW pc=30 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint64_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=31 dst=r2 src=r10 offset=0 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r2 = r10;
|
||||
// EBPF_OP_ADD64_IMM pc=29 dst=r2 src=r0 offset=0 imm=-48
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-48);
|
||||
// EBPF_OP_LDDW pc=30 dst=r1 src=r0 offset=0 imm=0
|
||||
// EBPF_OP_ADD64_IMM pc=32 dst=r2 src=r0 offset=0 imm=-56
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-56);
|
||||
// EBPF_OP_LDDW pc=33 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r1 = POINTER(_maps[1].address);
|
||||
// EBPF_OP_CALL pc=32 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_CALL pc=35 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r0 = authorize_connect6_helpers[0].address
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
(r1, r2, r3, r4, r5);
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
if ((authorize_connect6_helpers[0].tail_call) && (r0 == 0))
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
return 0;
|
||||
// EBPF_OP_MOV64_REG pc=33 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_REG pc=36 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r1 = r0;
|
||||
// EBPF_OP_MOV64_IMM pc=34 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_IMM pc=37 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r0 = IMMEDIATE(1);
|
||||
// EBPF_OP_JEQ_IMM pc=35 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_JEQ_IMM pc=38 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
if (r1 == IMMEDIATE(0))
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
goto label_1;
|
||||
// EBPF_OP_LDXW pc=36 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_LDXW pc=39 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
r0 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(0));
|
||||
label_1:
|
||||
// EBPF_OP_EXIT pc=37 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_EXIT pc=40 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 77 "sample/cgroup_sock_addr.c"
|
||||
return r0;
|
||||
#line 75 "sample/cgroup_sock_addr.c"
|
||||
#line 77 "sample/cgroup_sock_addr.c"
|
||||
}
|
||||
#pragma code_seg(pop)
|
||||
#line __LINE__ __FILE__
|
||||
|
@ -538,129 +544,126 @@ static uint16_t authorize_recv_accept4_maps[] = {
|
|||
#pragma code_seg(push, "cgroup~3")
|
||||
static uint64_t
|
||||
authorize_recv_accept4(void* context)
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
{
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
// Prologue
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
uint64_t stack[(UBPF_STACK_SIZE + 7) / 8];
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r0 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r1 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r2 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r3 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r4 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r5 = 0;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r10 = 0;
|
||||
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
r1 = (uintptr_t)context;
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
r10 = (uintptr_t)((uint8_t*)stack + sizeof(stack));
|
||||
|
||||
// EBPF_OP_MOV64_IMM pc=0 dst=r2 src=r0 offset=0 imm=0
|
||||
#line 80 "sample/cgroup_sock_addr.c"
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
r2 = IMMEDIATE(0);
|
||||
// EBPF_OP_STXW pc=1 dst=r10 src=r2 offset=-12 imm=0
|
||||
// EBPF_OP_STXDW pc=1 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=2 dst=r10 src=r2 offset=-16 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=2 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=3 dst=r10 src=r2 offset=-20 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=3 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=4 dst=r10 src=r2 offset=-24 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=4 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=5 dst=r10 src=r2 offset=-28 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=5 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=6 dst=r10 src=r2 offset=-32 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=6 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=7 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=8 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint32_t)r2;
|
||||
// EBPF_OP_STXW pc=9 dst=r10 src=r2 offset=-44 imm=0
|
||||
#line 34 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-44)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=10 dst=r2 src=r1 offset=4 imm=0
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=7 dst=r2 src=r1 offset=4 imm=0
|
||||
#line 37 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_STXW pc=11 dst=r10 src=r2 offset=-48 imm=0
|
||||
// EBPF_OP_STXW pc=8 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 37 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=12 dst=r2 src=r1 offset=20 imm=0
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=9 dst=r2 src=r1 offset=20 imm=0
|
||||
#line 38 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(20));
|
||||
// EBPF_OP_STXH pc=13 dst=r10 src=r2 offset=-32 imm=0
|
||||
// EBPF_OP_STXH pc=10 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 38 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=14 dst=r2 src=r1 offset=24 imm=0
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=11 dst=r2 src=r1 offset=24 imm=0
|
||||
#line 39 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(24));
|
||||
// EBPF_OP_STXW pc=15 dst=r10 src=r2 offset=-28 imm=0
|
||||
// EBPF_OP_STXW pc=12 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 39 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=16 dst=r2 src=r1 offset=40 imm=0
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=13 dst=r2 src=r1 offset=40 imm=0
|
||||
#line 40 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(40));
|
||||
// EBPF_OP_STXH pc=17 dst=r10 src=r2 offset=-12 imm=0
|
||||
// EBPF_OP_STXH pc=14 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 40 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=18 dst=r1 src=r1 offset=44 imm=0
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=15 dst=r2 src=r1 offset=44 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=19 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint32_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=20 dst=r2 src=r10 offset=0 imm=0
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=16 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXDW pc=17 dst=r1 src=r1 offset=56 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint64_t*)(uintptr_t)(r1 + OFFSET(56));
|
||||
// EBPF_OP_STXDW pc=18 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint64_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=19 dst=r2 src=r10 offset=0 imm=0
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r2 = r10;
|
||||
// EBPF_OP_ADD64_IMM pc=21 dst=r2 src=r0 offset=0 imm=-48
|
||||
#line 41 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-48);
|
||||
// EBPF_OP_LDDW pc=22 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_ADD64_IMM pc=20 dst=r2 src=r0 offset=0 imm=-56
|
||||
#line 42 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-56);
|
||||
// EBPF_OP_LDDW pc=21 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r1 = POINTER(_maps[0].address);
|
||||
// EBPF_OP_CALL pc=24 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_CALL pc=23 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r0 = authorize_recv_accept4_helpers[0].address
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
(r1, r2, r3, r4, r5);
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
if ((authorize_recv_accept4_helpers[0].tail_call) && (r0 == 0))
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
return 0;
|
||||
// EBPF_OP_MOV64_REG pc=25 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_REG pc=24 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r1 = r0;
|
||||
// EBPF_OP_MOV64_IMM pc=26 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 43 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_IMM pc=25 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 44 "sample/cgroup_sock_addr.c"
|
||||
r0 = IMMEDIATE(1);
|
||||
// EBPF_OP_JEQ_IMM pc=27 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_JEQ_IMM pc=26 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
if (r1 == IMMEDIATE(0))
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
goto label_1;
|
||||
// EBPF_OP_LDXW pc=28 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 45 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_LDXW pc=27 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 46 "sample/cgroup_sock_addr.c"
|
||||
r0 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(0));
|
||||
label_1:
|
||||
// EBPF_OP_EXIT pc=29 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_EXIT pc=28 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 84 "sample/cgroup_sock_addr.c"
|
||||
return r0;
|
||||
#line 82 "sample/cgroup_sock_addr.c"
|
||||
#line 84 "sample/cgroup_sock_addr.c"
|
||||
}
|
||||
#pragma code_seg(pop)
|
||||
#line __LINE__ __FILE__
|
||||
|
@ -680,153 +683,162 @@ static uint16_t authorize_recv_accept6_maps[] = {
|
|||
#pragma code_seg(push, "cgroup~4")
|
||||
static uint64_t
|
||||
authorize_recv_accept6(void* context)
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
{
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
// Prologue
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
uint64_t stack[(UBPF_STACK_SIZE + 7) / 8];
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r0 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r1 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r2 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r3 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r4 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r5 = 0;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
register uint64_t r10 = 0;
|
||||
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
r1 = (uintptr_t)context;
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
r10 = (uintptr_t)((uint8_t*)stack + sizeof(stack));
|
||||
|
||||
// EBPF_OP_MOV64_IMM pc=0 dst=r2 src=r0 offset=0 imm=0
|
||||
#line 87 "sample/cgroup_sock_addr.c"
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
r2 = IMMEDIATE(0);
|
||||
// EBPF_OP_STXDW pc=1 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=2 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint64_t)r2;
|
||||
// EBPF_OP_STXDW pc=3 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=4 dst=r2 src=r1 offset=8 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(8));
|
||||
// EBPF_OP_LSH64_IMM pc=5 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=6 dst=r3 src=r1 offset=4 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_OR64_REG pc=7 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=8 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=9 dst=r2 src=r1 offset=16 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(16));
|
||||
// EBPF_OP_LSH64_IMM pc=10 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=11 dst=r3 src=r1 offset=12 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(12));
|
||||
// EBPF_OP_OR64_REG pc=12 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=13 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 53 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXDW pc=4 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXH pc=14 dst=r2 src=r1 offset=20 imm=0
|
||||
// EBPF_OP_LDXW pc=5 dst=r2 src=r1 offset=8 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(8));
|
||||
// EBPF_OP_LSH64_IMM pc=6 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=7 dst=r3 src=r1 offset=4 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(4));
|
||||
// EBPF_OP_OR64_REG pc=8 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=9 dst=r10 src=r2 offset=-56 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-56)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXW pc=10 dst=r2 src=r1 offset=16 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(16));
|
||||
// EBPF_OP_LSH64_IMM pc=11 dst=r2 src=r0 offset=0 imm=32
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 <<= IMMEDIATE(32);
|
||||
// EBPF_OP_LDXW pc=12 dst=r3 src=r1 offset=12 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r3 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(12));
|
||||
// EBPF_OP_OR64_REG pc=13 dst=r2 src=r3 offset=0 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
r2 |= r3;
|
||||
// EBPF_OP_STXDW pc=14 dst=r10 src=r2 offset=-48 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-48)) = (uint64_t)r2;
|
||||
// EBPF_OP_LDXH pc=15 dst=r2 src=r1 offset=20 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(20));
|
||||
// EBPF_OP_STXH pc=15 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 54 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=16 dst=r2 src=r1 offset=24 imm=0
|
||||
// EBPF_OP_STXH pc=16 dst=r10 src=r2 offset=-40 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-40)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=17 dst=r2 src=r1 offset=24 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(24));
|
||||
// EBPF_OP_STXW pc=17 dst=r10 src=r2 offset=-28 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=18 dst=r2 src=r1 offset=28 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=18 dst=r10 src=r2 offset=-36 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-36)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=19 dst=r2 src=r1 offset=28 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(28));
|
||||
// EBPF_OP_STXW pc=19 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=20 dst=r2 src=r1 offset=32 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=20 dst=r10 src=r2 offset=-32 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-32)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=21 dst=r2 src=r1 offset=32 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(32));
|
||||
// EBPF_OP_STXW pc=21 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=22 dst=r2 src=r1 offset=36 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_STXW pc=22 dst=r10 src=r2 offset=-28 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-28)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXW pc=23 dst=r2 src=r1 offset=36 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(36));
|
||||
// EBPF_OP_STXW pc=23 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 55 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=24 dst=r2 src=r1 offset=40 imm=0
|
||||
// EBPF_OP_STXW pc=24 dst=r10 src=r2 offset=-24 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-24)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXH pc=25 dst=r2 src=r1 offset=40 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint16_t*)(uintptr_t)(r1 + OFFSET(40));
|
||||
// EBPF_OP_STXH pc=25 dst=r10 src=r2 offset=-12 imm=0
|
||||
#line 56 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-12)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=26 dst=r1 src=r1 offset=44 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=27 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint32_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=28 dst=r2 src=r10 offset=0 imm=0
|
||||
// EBPF_OP_STXH pc=26 dst=r10 src=r2 offset=-20 imm=0
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-20)) = (uint16_t)r2;
|
||||
// EBPF_OP_LDXW pc=27 dst=r2 src=r1 offset=44 imm=0
|
||||
#line 58 "sample/cgroup_sock_addr.c"
|
||||
r2 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(44));
|
||||
// EBPF_OP_STXW pc=28 dst=r10 src=r2 offset=-16 imm=0
|
||||
#line 58 "sample/cgroup_sock_addr.c"
|
||||
*(uint32_t*)(uintptr_t)(r10 + OFFSET(-16)) = (uint32_t)r2;
|
||||
// EBPF_OP_LDXDW pc=29 dst=r1 src=r1 offset=56 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r1 = *(uint64_t*)(uintptr_t)(r1 + OFFSET(56));
|
||||
// EBPF_OP_STXDW pc=30 dst=r10 src=r1 offset=-8 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
*(uint64_t*)(uintptr_t)(r10 + OFFSET(-8)) = (uint64_t)r1;
|
||||
// EBPF_OP_MOV64_REG pc=31 dst=r2 src=r10 offset=0 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r2 = r10;
|
||||
// EBPF_OP_ADD64_IMM pc=29 dst=r2 src=r0 offset=0 imm=-48
|
||||
#line 57 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-48);
|
||||
// EBPF_OP_LDDW pc=30 dst=r1 src=r0 offset=0 imm=0
|
||||
// EBPF_OP_ADD64_IMM pc=32 dst=r2 src=r0 offset=0 imm=-56
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
r2 += IMMEDIATE(-56);
|
||||
// EBPF_OP_LDDW pc=33 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r1 = POINTER(_maps[0].address);
|
||||
// EBPF_OP_CALL pc=32 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_CALL pc=35 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r0 = authorize_recv_accept6_helpers[0].address
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
(r1, r2, r3, r4, r5);
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
if ((authorize_recv_accept6_helpers[0].tail_call) && (r0 == 0))
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
return 0;
|
||||
// EBPF_OP_MOV64_REG pc=33 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_REG pc=36 dst=r1 src=r0 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r1 = r0;
|
||||
// EBPF_OP_MOV64_IMM pc=34 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 59 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_MOV64_IMM pc=37 dst=r0 src=r0 offset=0 imm=1
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
r0 = IMMEDIATE(1);
|
||||
// EBPF_OP_JEQ_IMM pc=35 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_JEQ_IMM pc=38 dst=r1 src=r0 offset=1 imm=0
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
if (r1 == IMMEDIATE(0))
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
goto label_1;
|
||||
// EBPF_OP_LDXW pc=36 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 61 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_LDXW pc=39 dst=r0 src=r1 offset=0 imm=0
|
||||
#line 63 "sample/cgroup_sock_addr.c"
|
||||
r0 = *(uint32_t*)(uintptr_t)(r1 + OFFSET(0));
|
||||
label_1:
|
||||
// EBPF_OP_EXIT pc=37 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
// EBPF_OP_EXIT pc=40 dst=r0 src=r0 offset=0 imm=0
|
||||
#line 91 "sample/cgroup_sock_addr.c"
|
||||
return r0;
|
||||
#line 89 "sample/cgroup_sock_addr.c"
|
||||
#line 91 "sample/cgroup_sock_addr.c"
|
||||
}
|
||||
#pragma code_seg(pop)
|
||||
#line __LINE__ __FILE__
|
||||
|
@ -843,7 +855,7 @@ static program_entry_t _programs[] = {
|
|||
1,
|
||||
authorize_connect4_helpers,
|
||||
1,
|
||||
30,
|
||||
29,
|
||||
&authorize_connect4_program_type_guid,
|
||||
&authorize_connect4_attach_type_guid,
|
||||
},
|
||||
|
@ -857,7 +869,7 @@ static program_entry_t _programs[] = {
|
|||
1,
|
||||
authorize_connect6_helpers,
|
||||
1,
|
||||
38,
|
||||
41,
|
||||
&authorize_connect6_program_type_guid,
|
||||
&authorize_connect6_attach_type_guid,
|
||||
},
|
||||
|
@ -871,7 +883,7 @@ static program_entry_t _programs[] = {
|
|||
1,
|
||||
authorize_recv_accept4_helpers,
|
||||
1,
|
||||
30,
|
||||
29,
|
||||
&authorize_recv_accept4_program_type_guid,
|
||||
&authorize_recv_accept4_attach_type_guid,
|
||||
},
|
||||
|
@ -885,7 +897,7 @@ static program_entry_t _programs[] = {
|
|||
1,
|
||||
authorize_recv_accept6_helpers,
|
||||
1,
|
||||
38,
|
||||
41,
|
||||
&authorize_recv_accept6_program_type_guid,
|
||||
&authorize_recv_accept6_attach_type_guid,
|
||||
},
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -213,16 +213,16 @@ TEST_CASE("show sections cgroup_sock_addr.sys", "[netsh][sections]")
|
|||
" Size\n"
|
||||
" Section Type (bytes)\n"
|
||||
"==================== ========= =======\n"
|
||||
" cgroup/connect4 sock_addr 594\n"
|
||||
" cgroup/connect6 sock_addr 728\n"
|
||||
" cgroup/recv_accept4 sock_addr 594\n"
|
||||
" cgroup/recv_accept6 sock_addr 728\n"
|
||||
" cgroup/connect4 sock_addr 598\n"
|
||||
" cgroup/connect6 sock_addr 770\n"
|
||||
" cgroup/recv_accept4 sock_addr 598\n"
|
||||
" cgroup/recv_accept6 sock_addr 770\n"
|
||||
"\n"
|
||||
" Key Value Max\n"
|
||||
" Map Type Size Size Entries Name\n"
|
||||
"================== ==== ===== ======= ========\n"
|
||||
" Hash 44 4 1 ingress_connection_policy_map\n"
|
||||
" Hash 44 4 1 egress_connection_policy_map\n");
|
||||
" Hash 56 4 1 ingress_connection_policy_map\n"
|
||||
" Hash 56 4 1 egress_connection_policy_map\n");
|
||||
}
|
||||
|
||||
TEST_CASE("show verification nosuchfile.o", "[netsh][verification]")
|
||||
|
|
|
@ -39,6 +39,7 @@ authorize_v4(bpf_sock_addr_t* ctx, struct bpf_map_def* connection_policy_map)
|
|||
tuple_key.dst_ip.ipv4 = ctx->user_ip4;
|
||||
tuple_key.dst_port = ctx->user_port;
|
||||
tuple_key.protocol = ctx->protocol;
|
||||
tuple_key.interface_luid = ctx->interface_luid;
|
||||
|
||||
verdict = bpf_map_lookup_elem(connection_policy_map, &tuple_key);
|
||||
|
||||
|
@ -55,6 +56,7 @@ authorize_v6(bpf_sock_addr_t* ctx, struct bpf_map_def* connection_policy_map)
|
|||
__builtin_memcpy(tuple_key.dst_ip.ipv6, ctx->user_ip6, sizeof(ctx->user_ip6));
|
||||
tuple_key.dst_port = ctx->user_port;
|
||||
tuple_key.protocol = ctx->protocol;
|
||||
tuple_key.interface_luid = ctx->interface_luid;
|
||||
|
||||
verdict = bpf_map_lookup_elem(connection_policy_map, &tuple_key);
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@ handle_v4(bpf_sock_ops_t* ctx, bool outbound, bool connected)
|
|||
audit_entry.tuple.dst_ip.ipv4 = (outbound) ? ctx->remote_ip4 : ctx->local_ip4;
|
||||
audit_entry.tuple.dst_port = (outbound) ? ctx->remote_port : ctx->local_port;
|
||||
audit_entry.tuple.protocol = ctx->protocol;
|
||||
audit_entry.tuple.interface_luid = ctx->interface_luid;
|
||||
audit_entry.outbound = outbound;
|
||||
audit_entry.connected = connected;
|
||||
|
||||
|
@ -50,6 +51,7 @@ handle_v6(bpf_sock_ops_t* ctx, bool outbound, bool connected)
|
|||
__builtin_memcpy(audit_entry.tuple.dst_ip.ipv6, ip6, sizeof(uint32_t) * 4);
|
||||
audit_entry.tuple.dst_port = (outbound) ? ctx->remote_port : ctx->local_port;
|
||||
audit_entry.tuple.protocol = ctx->protocol;
|
||||
audit_entry.tuple.interface_luid = ctx->interface_luid;
|
||||
audit_entry.outbound = outbound;
|
||||
audit_entry.connected = connected;
|
||||
|
||||
|
|
|
@ -26,8 +26,8 @@ using namespace std::chrono_literals;
|
|||
void
|
||||
connection_test(
|
||||
ADDRESS_FAMILY address_family,
|
||||
sender_socket_t& sender_socket,
|
||||
receiver_socket_t& receiver_socket,
|
||||
_In_ sender_socket_t& sender_socket,
|
||||
_In_ receiver_socket_t& receiver_socket,
|
||||
uint32_t protocol)
|
||||
{
|
||||
struct bpf_object* object;
|
||||
|
@ -60,6 +60,9 @@ connection_test(
|
|||
tuple.src_port = INETADDR_PORT(local_address);
|
||||
tuple.dst_port = htons(SOCKET_TEST_PORT);
|
||||
tuple.protocol = protocol;
|
||||
NET_LUID net_luid = {};
|
||||
net_luid.Info.IfType = IF_TYPE_SOFTWARE_LOOPBACK;
|
||||
tuple.interface_luid = net_luid.Value;
|
||||
|
||||
bpf_map* ingress_connection_policy_map = bpf_object__find_map_by_name(object, "ingress_connection_policy_map");
|
||||
REQUIRE(ingress_connection_policy_map != nullptr);
|
||||
|
@ -196,8 +199,8 @@ TEST_CASE("attach_sock_addr_programs", "[sock_addr_tests]")
|
|||
void
|
||||
connection_monitor_test(
|
||||
ADDRESS_FAMILY address_family,
|
||||
sender_socket_t& sender_socket,
|
||||
receiver_socket_t& receiver_socket,
|
||||
_In_ sender_socket_t& sender_socket,
|
||||
_In_ receiver_socket_t& receiver_socket,
|
||||
uint32_t protocol,
|
||||
bool disconnect)
|
||||
{
|
||||
|
@ -229,6 +232,9 @@ connection_monitor_test(
|
|||
tuple.src_port = INETADDR_PORT(local_address);
|
||||
tuple.dst_port = htons(SOCKET_TEST_PORT);
|
||||
tuple.protocol = protocol;
|
||||
NET_LUID net_luid = {};
|
||||
net_luid.Info.IfType = IF_TYPE_SOFTWARE_LOOPBACK;
|
||||
tuple.interface_luid = net_luid.Value;
|
||||
|
||||
std::vector<std::vector<char>> audit_entry_list;
|
||||
audit_entry_t audit_entries[3] = {0};
|
||||
|
|
|
@ -24,6 +24,7 @@ typedef struct _connection_tuple
|
|||
ip_address_t dst_ip;
|
||||
uint16_t dst_port;
|
||||
uint32_t protocol;
|
||||
uint64_t interface_luid;
|
||||
} connection_tuple_t;
|
||||
|
||||
typedef struct _audit_entry
|
||||
|
|
Загрузка…
Ссылка в новой задаче