25 Nov, 2016

1 commit

  • since llvm commit "Do not expand UNDEF SDNode during insn selection lowering"
    llvm will generate code that uses uninitialized registers for cases
    where C code is actually uses uninitialized data.
    So this sockex2 example is technically broken.
    Fix it by initializing on the stack variable fully.
    Also increase verifier buffer limit, since verifier output
    may not fit in 64k for this sockex2 code depending on llvm version.

    Signed-off-by: Alexei Starovoitov
    Acked-by: Daniel Borkmann
    Signed-off-by: David S. Miller

    Alexei Starovoitov
     

27 Sep, 2016

1 commit


16 Mar, 2015

1 commit


06 Dec, 2014

1 commit

  • sockex2_kern.c is purposefully large eBPF program in C.
    llvm compiles ~200 lines of C code into ~300 eBPF instructions.

    It's similar to __skb_flow_dissect() to demonstrate that complex packet parsing
    can be done by eBPF.
    Then it uses (struct flow_keys)->dst IP address (or hash of ipv6 dst) to keep
    stats of number of packets per IP.
    User space loads eBPF program, attaches it to loopback interface and prints
    dest_ip->#packets stats every second.

    Usage:
    $sudo samples/bpf/sockex2
    ip 127.0.0.1 count 19
    ip 127.0.0.1 count 178115
    ip 127.0.0.1 count 369437
    ip 127.0.0.1 count 559841
    ip 127.0.0.1 count 750539

    Signed-off-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Alexei Starovoitov