mirror of
https://github.com/varun-r-mallya/Python-BPF.git
synced 2025-12-31 21:06:25 +00:00
format chore
This commit is contained in:
@ -3,16 +3,19 @@ import logging
|
||||
from pythonbpf import compile, bpf, section, bpfglobal, compile_to_ir
|
||||
from ctypes import c_void_p, c_int64, c_int32
|
||||
|
||||
|
||||
@bpf
|
||||
@bpfglobal
|
||||
def somevalue() -> c_int32:
|
||||
return c_int32(42)
|
||||
|
||||
|
||||
@bpf
|
||||
@bpfglobal
|
||||
def somevalue2() -> c_int64:
|
||||
return c_int64(69)
|
||||
|
||||
|
||||
@bpf
|
||||
@bpfglobal
|
||||
def somevalue1() -> c_int32:
|
||||
@ -21,12 +24,14 @@ def somevalue1() -> c_int32:
|
||||
|
||||
# --- Passing examples ---
|
||||
|
||||
|
||||
# Simple constant return
|
||||
@bpf
|
||||
@bpfglobal
|
||||
def g1() -> c_int64:
|
||||
return c_int64(42)
|
||||
|
||||
|
||||
# Constructor with one constant argument
|
||||
@bpf
|
||||
@bpfglobal
|
||||
@ -62,15 +67,17 @@ def g2() -> c_int64:
|
||||
# def g6() -> c_int64:
|
||||
# return c_int64(CONST)
|
||||
|
||||
|
||||
# Constructor with multiple args
|
||||
#TODO: this is not working. should it work ?
|
||||
# TODO: this is not working. should it work ?
|
||||
@bpf
|
||||
@bpfglobal
|
||||
def g7() -> c_int64:
|
||||
return c_int64(1)
|
||||
|
||||
|
||||
# Dataclass call
|
||||
#TODO: fails with dataclass
|
||||
# TODO: fails with dataclass
|
||||
# @dataclass
|
||||
# class Point:
|
||||
# x: c_int64
|
||||
@ -91,6 +98,7 @@ def sometag(ctx: c_void_p) -> c_int64:
|
||||
print(f"{somevalue}")
|
||||
return c_int64(1)
|
||||
|
||||
|
||||
@bpf
|
||||
@bpfglobal
|
||||
def LICENSE() -> str:
|
||||
|
||||
@ -11,6 +11,7 @@ from ctypes import c_void_p, c_int64
|
||||
# We cannot allocate space for the intermediate type now.
|
||||
# We probably need to track the ref/deref chain for each variable.
|
||||
|
||||
|
||||
@bpf
|
||||
@map
|
||||
def count() -> HashMap:
|
||||
|
||||
@ -3,6 +3,7 @@ import logging
|
||||
from pythonbpf import compile, bpf, section, bpfglobal, compile_to_ir
|
||||
from ctypes import c_void_p, c_int64
|
||||
|
||||
|
||||
# This should not pass as somevalue is not declared at all.
|
||||
@bpf
|
||||
@section("tracepoint/syscalls/sys_enter_execve")
|
||||
@ -11,6 +12,7 @@ def sometag(ctx: c_void_p) -> c_int64:
|
||||
print(f"{somevalue}") # noqa: F821
|
||||
return c_int64(1)
|
||||
|
||||
|
||||
@bpf
|
||||
@bpfglobal
|
||||
def LICENSE() -> str:
|
||||
|
||||
@ -2,6 +2,8 @@ from pythonbpf import bpf, map, section, bpfglobal, compile, compile_to_ir
|
||||
from pythonbpf.maps import HashMap
|
||||
from pythonbpf.helper import XDP_PASS
|
||||
from vmlinux import struct_xdp_md
|
||||
from vmlinux import struct_ring_buffer_per_cpu # noqa: F401
|
||||
from vmlinux import struct_xdp_buff # noqa: F401
|
||||
from ctypes import c_int64
|
||||
|
||||
# Instructions to how to run this program
|
||||
@ -11,6 +13,7 @@ from ctypes import c_int64
|
||||
# 4. Attach object file to any network device with something like ./check.sh xdp examples/xdp_pass.o tailscale0
|
||||
# 5. send traffic through the device and observe effects
|
||||
|
||||
|
||||
@bpf
|
||||
@map
|
||||
def count() -> HashMap:
|
||||
@ -39,5 +42,6 @@ def hello_world(ctx: struct_xdp_md) -> c_int64:
|
||||
def LICENSE() -> str:
|
||||
return "GPL"
|
||||
|
||||
|
||||
compile_to_ir("xdp_pass.py", "xdp_pass.ll")
|
||||
compile()
|
||||
|
||||
@ -6,8 +6,8 @@ from ctypes import c_void_p, c_int32
|
||||
@section("tracepoint/syscalls/sys_enter_execve")
|
||||
def hello_world(ctx: c_void_p) -> c_int32:
|
||||
print("Hello, World!")
|
||||
a = 1 # int64
|
||||
return c_int32(a) # typecast to int32
|
||||
a = 1 # int64
|
||||
return c_int32(a) # typecast to int32
|
||||
|
||||
|
||||
@bpf
|
||||
|
||||
Reference in New Issue
Block a user