Inclus în suita de compilare GCC
Pe lângă un backend pentru generarea de bytecode, GCC include un port libgcc pentru eBPF și instrumente pentru generarea de fișiere ELF care fac posibilă executarea codului în mașina virtuală eBPF folosind încărcătoare furnizate de kernel. Patch-uri pentru a susține eBPF în GCC au fost pregătite de inginerii de la Oracle, care deja au făcut-o
Programele pentru eBPF pot fi definite într-un subset al limbajului C, compilate și încărcate în nucleu. Înainte de execuție, interpretul eBPF verifică bytecode-ul pentru utilizarea instrucțiunilor permise și impune anumite reguli asupra codului (de exemplu, fără bucle).
Inițial, instrumentele bazate pe LLVM au fost folosite pentru a compila eBPF pe Linux. Suportul eBPF în GCC este interesant, deoarece vă permite să utilizați un set de instrumente pentru a construi nucleul Linux și programele eBPF, fără a instala dependențe suplimentare.
Sub formă de programe eBPF, puteți crea gestionatori de operațiuni de rețea, filtra traficul, gestionați lățimea de bandă, monitoriza sistemele, interceptați apelurile de sistem, controlați accesul, numărați frecvența și timpul operațiunilor și efectuați urmărirea folosind kprobes/uprobes/tracepoints.
Sursa: opennet.ru