GithubHelp home page GithubHelp logo

leodido / gobpf Goto Github PK

View Code? Open in Web Editor NEW

This project forked from iovisor/gobpf

0.0 2.0 0.0 374 KB

Go bindings for creating BPF programs.

License: Apache License 2.0

Go 76.10% C 22.51% Shell 1.39%

gobpf's Introduction

gobpf

Build Status GoDoc

This repository provides go bindings for the bcc framework as well as low-level routines to load and use eBPF programs from .elf files.

gobpf is in early stage, but usable. Input and contributions are very much welcome.

We recommend to vendor gobpf and pin its version as the API probably undergoes change during development.

Requirements

eBPF requires a recent Linux kernel. A good feature list can be found here: https://github.com/iovisor/bcc/blob/master/docs/kernel-versions.md

github.com/iovisor/gobpf/bcc

Install the latest released version of libbcc (either by package or source).

github.com/iovisor/gobpf/elf

Building ELF object files

To build ELF object files for usage with the elf package, you must use distinct sections (SEC("...")). Currently supported are:

  • kprobe/...
  • cgroup/skb
  • cgroup/sock
  • maps/...
  • socket...
  • tracepoint...
  • uprobe/... and uretprobe/...

Map definitions must correspond to bpf_map_def from the elf package Otherwise you will encounter an error like only one map with size 280 bytes allowed per section (check bpf_map_def).

The Cilium BPF docs contain helpful info for using clang/LLVM to compile programs into elf object files: https://cilium.readthedocs.io/en/latest/bpf/#llvm

See tests/dummy.c for a minimal dummy and https://github.com/weaveworks/tcptracer-bpf for a real world example.

Examples

Example code can be found in the examples/ directory, e.g.

sudo -E go run examples/bcc/perf/perf.go

Tests

The semaphore.sh script can be used to run the tests in rkt stage1-kvm containers on different kernel versions. To run all tests on the host system, use go test as follows:

go test -tags integration -v ./...

gobpf's People

Contributors

schu avatar iaguis avatar alban avatar tuxology avatar bobrik avatar safchain avatar tklauser avatar drzaeus77 avatar calavera avatar pryz avatar higebu avatar gustavokatel avatar dmitrivereshchagin avatar bhiggins avatar wofanli avatar chenlingpeng avatar photoszzt avatar stantheman avatar sangyun-han avatar sfluor avatar mkfsn avatar nplanel avatar nathanfrench avatar moolen avatar vadorovsky avatar mauriciovasquezbernal avatar louism517 avatar lmb avatar kevinconaway avatar choo-stripe avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.